Universal VibeT Search MCP
Free multi-engine web search MCP server — no API keys required.
Acknowledgment: The multi-engine search logic is based on the
web_searchtool 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.
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)
| File | Size | Uploaded | |
|---|---|---|---|
| universal_vibet_search_mcp-0.1.1.tar.gz | 4.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|