Skip to main content

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

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.

Metadata

Release files for universal-vibet-search-mcp 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for universal-vibet-search-mcp 0.1.1
File Size Uploaded
universal_vibet_search_mcp-0.1.1.tar.gz 4.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for universal-vibet-search-mcp 0.1.1
File Interpreter ABI Platform
universal_vibet_search_mcp-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 10.3 kB

Release files / universal_vibet_search_mcp-0.1.1.tar.gz

Download URL universal_vibet_search_mcp-0.1.1.tar.gz
Size 4.5 kB
Tags Source
SHA-256 checksum
How to use checksums
846ca11daa7fed2f012aa1db60274a8bcd6f02d02de5049a2c7e62eef6216626
BLAKE2b-256 checksum
How to use checksums
e779e95009943572a57f7e6d846675ae6f41700b48536502a0be9e9ef3663980
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Release files / universal_vibet_search_mcp-0.1.1-py3-none-any.whl

Download URL universal_vibet_search_mcp-0.1.1-py3-none-any.whl
Size 5.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5ec3b13374419c559568b437640f06d03bcb9318e420a79abd7bc60fbfdb7b37
BLAKE2b-256 checksum
How to use checksums
61028a3ce5b327ff6660e5bd00120a9cbfedce720eafe7f9a0d84101b5c50598
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page