Skip to main content

Free multi-engine web search MCP server — no API keys required

Project description

Universal VibeT Search MCP

Free multi-engine web search MCP server — no API keys required.

Built with FastMCP and ddgs.

Acknowledgment: The multi-engine search logic is based on the web_search tool from Vibe-Trading (MIT License) — an open-source AI trading research workspace by HKUDS.

Features

  • Zero API keys — queries DuckDuckGo, Google, Bing, Brave, Mojeek, Yahoo directly
  • Retry with backoff — 3 attempts with exponential backoff for transient failures
  • News search — dedicated tool for recent news results
  • Lightweight — single file, minimal dependencies

Quick Start

Install

From GitHub:

pip install git+https://github.com/hdworker/universal-vibet-search-mcp.git

From source:

git clone https://github.com/hdworker/universal-vibet-search-mcp.git
cd universal-vibet-search-mcp
pip install -e .

Run as MCP Server

universal-vibet-search-mcp

Or directly:

python -m src.server

Add to Claude Desktop / OpenCode / Cursor

Add to your MCP config:

{
  "mcpServers": {
    "web-search": {
      "command": "universal-vibet-search-mcp",
      "transport": "stdio"
    }
  }
}

Or with Python module:

{
  "mcpServers": {
    "web-search": {
      "command": "python",
      "args": ["-m", "src.server"],
      "cwd": "/path/to/universal-vibet-search-mcp",
      "transport": "stdio"
    }
  }
}

Tools

web_search

Search the web across free engines.

Parameters:

Name Type Default Description
query string required Search query
max_results int 5 Max results (1-10)

Returns: JSON with status, query, and results array.

web_search_news

Search recent news across free engines.

Parameters:

Name Type Default Description
query string required News search query
max_results int 5 Max results (1-10)

Returns: JSON with status, query, and results array (includes date and source).

Example Output

User query
    │
    ▼
┌─────────────────────────────────────────┐
│  ddgs (DuckDuckGo Search library)       │
│                                         │
│  Queries multiple search engines        │
│  (DuckDuckGo, Google, Bing, etc.)       │
│                                         │
│  If rate-limited → retry (3x)           │
│  If transient error → exponential backoff
└─────────────────────────────────────────┘
    │
    ▼
  JSON results

The ddgs library is a metasearch aggregator that queries multiple search engines without requiring API keys. It works by scraping public search results pages.

Example Output

{
  "status": "ok",
  "query": "Python MCP server tutorial",
  "results": [
    {
      "title": "Building an MCP Server with FastMCP",
      "url": "https://example.com/fastmcp-tutorial",
      "snippet": "Learn how to build a Model Context Protocol server..."
    }
  ]
}

Limitations

  • Rate limits — Free engines rate-limit aggressively from cloud/shared IPs (~100 req/hour per engine). The multi-engine fallback mitigates this.
  • No guaranteed uptime — Engines may change their scraping targets.
  • CAPTCHA — Occasionally engines may present CAPTCHAs; the retry logic handles most transient cases.

Credits

  • Vibe-Trading (MIT License) — Original multi-engine search implementation by HKUDS at HKU
  • ddgs — DuckDuckGo Search library
  • FastMCP — FastMCP framework for building MCP servers

License

MIT License — see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

universal_vibet_search_mcp-0.1.0.tar.gz (4.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

universal_vibet_search_mcp-0.1.0-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

File details

Details for the file universal_vibet_search_mcp-0.1.0.tar.gz.

File metadata

File hashes

Hashes for universal_vibet_search_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4ae4915d68bc34d14b51c33524bc5c938263189eef6bf5e8577f7d38e7ce107f
MD5 8d6bc0c649e766034354b68360221a11
BLAKE2b-256 4552edd6d84c74b7b9675a5496f5d3813cb3ad6059cf43a28eefd2b3bf396641

See more details on using hashes here.

File details

Details for the file universal_vibet_search_mcp-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for universal_vibet_search_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a9a9e7f321ca8c907bfe1b56e6e7c391f40c23531d7fb03b1a70f3295b0844c9
MD5 604aa7532f8d98e553adf480cb4e0497
BLAKE2b-256 7ecff1b315474342372271a939158321c9540df8891574b04779484883ca90e8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page