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

pip install universal-vibet-search-mcp

Or 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 universal_vibet_search_mcp.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", "universal_vibet_search_mcp.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.1.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.1-py3-none-any.whl (5.8 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for universal_vibet_search_mcp-0.1.1.tar.gz
Algorithm Hash digest
SHA256 846ca11daa7fed2f012aa1db60274a8bcd6f02d02de5049a2c7e62eef6216626
MD5 954c7d2ed09c493a5cc88fc7f5e2d1f8
BLAKE2b-256 e779e95009943572a57f7e6d846675ae6f41700b48536502a0be9e9ef3663980

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for universal_vibet_search_mcp-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5ec3b13374419c559568b437640f06d03bcb9318e420a79abd7bc60fbfdb7b37
MD5 4b13e163e7e678455070cb6f21053f74
BLAKE2b-256 61028a3ce5b327ff6660e5bd00120a9cbfedce720eafe7f9a0d84101b5c50598

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