Web Search MCP
Web Search MCP
Multi-Source-Websuche MCP-Server mit RRF-Fusion, 4-schichtiger URL-Extraktion und Provider-Statusüberwachung.
Status
Phase 2: 5 Provider (SearXNG/ddgr/Tavily/Exa/opencli-zh), RRF-Fusion, Snippet-Bereinigung (Regeln + optionale LLM-Kompression), search/extract/doctor-Tools, Provider-Statusüberwachung mit automatischer Degradierung.
Related MCP server: Prism
Installation
In Claude Desktop 3P-Konfiguration hinzufügen (~/Library/Application Support/Claude-3p/configLibrary/<uuid>.json):
{
"name": "web-search",
"source": "user",
"transport": "stdio",
"command": "node",
"args": ["/Users/hades/projects/web-search-mcp/bin/cli.js"],
"env": {
"SEARXNG_URL": "http://localhost:18443",
"TAVILY_API_KEY": "...",
"EXA_API_KEY": "...",
"FIRECRAWL_API_KEY": "...",
"WSM_LLM_PROVIDER": "haiku",
"ANTHROPIC_API_KEY": "..."
},
"toolPolicy": {
"search": "allow",
"extract": "allow",
"doctor": "allow"
}
}Nach der Veröffentlichung auf npm ersetzen Sie command: "node" + absoluten Pfad durch command: "npx" + args: ["-y", "@thehappyboy/web-search-mcp@latest"].
Konfiguration
Umgebungsvariablen (oder .env im aktuellen Arbeitsverzeichnis oder unter ~/.agents/skills/web-search/.env):
Variable | Standard | Erforderlich | Beschreibung |
|
| nein | SearXNG-Basis-URL |
| — | nein | Aktiviert den Tavily-Provider |
| — | nein | Aktiviert den Exa-Provider |
| — | nein | Aktiviert Firecrawl in der Extract-Pipeline (Schicht 3) |
|
| nein |
|
| — | nein | Erforderlich, wenn |
| — | nein | Erforderlich, wenn |
|
| nein | Standard-Maximalergebnisse |
|
| nein | Globales Such-Timeout |
Provider ohne Schlüssel werden automatisch deaktiviert. Das Such-Tool funktioniert weiterhin mit dem, was verfügbar ist. ddgr, opencli, defuddle werden automatisch über which erkannt.
Tools
search
{
query: string, // required
max_results?: number, // 1-30, default 10
category?: 'general'|'news'|'science',
mode?: 'fast'|'quality', // quality = LLM compression (top-5 results)
providers?: string[], // override default list (replace semantics)
}Gibt zurück:
{
count: number,
took_ms: number,
providers_used: string[], // providers that returned ≥1 result
providers_failed: string[], // providers that errored OR returned []
results: [{
title, url, snippet,
providers: string[], // which sources surfaced this URL (multi-source corroboration)
rrf_score: number, // reciprocal rank fusion score
}]
}opencli-zh automatische Weiterleitung: Wenn die Abfrage Schlüsselwörter wie 知乎, 小红书, 雪球, B站, 微博 oder Muster wie 600519.SH enthält, leitet der opencli-zh-Provider an den entsprechenden Adapter weiter. Erzwingen Sie eine bestimmte Seite mit opencli_sites (über die Provider-Erweiterung übergeben, siehe Orchestrator).
extract
{
url: string, // required
timeout?: number, // 5-60 seconds, default 20
}Versucht nacheinander 4 Schichten, bis eine erfolgreich ist:
defuddle — schnellste, reine Textseiten
opencli-Adapter — für bekannte Seiten (zhihu/xiaohongshu/xueqiu/bilibili/weibo)
Firecrawl — JS-gerenderte Seiten (erfordert
FIRECRAWL_API_KEY)opencli-Browser — letzter Ausweg, startet echten Chrome
Gibt zurück:
{
content: string, // markdown
source: 'defuddle'|'opencli'|'firecrawl'|'opencli-browser'|'none',
took_ms: number,
error?: string, // only when source === 'none'
}doctor
{} // no argumentsGibt Provider-Verfügbarkeit + Laufzeit-Statusstatistiken zurück:
{
providers: {
searxng: { available: true, url: "http://localhost:18443" },
ddgr: { available: true },
tavily: { available: true },
exa: { available: true },
opencli_zh: { available: true },
firecrawl: { available: true },
llm: { available: true, provider: "haiku" },
},
health: {
tavily: {
total: 24,
success: 15,
fail: 9,
success_rate: 0.625,
last_failure: "2026-07-06T...",
last_failure_reason: "timeout",
recommendation: "healthy" | "insufficient" | "degraded",
},
// ...
},
version: "0.2.0",
}Wenn die success_rate eines Providers unter 0,5 fällt und mindestens 20 Stichproben vorliegen, wird er automatisch übersprungen (Empfehlung: degraded). Die Statusstatistiken befinden sich im Arbeitsspeicher und werden beim Neustart zurückgesetzt.
Entwicklung
npm test # all tests (unit + integration, 158 total)
npm run test:unit # unit only
npm run test:integration # integration only (needs searxng at SEARXNG_URL)
npm start # start stdio serverArchitektur
MCP client (Claude/Cowork)
│ JSON-RPC over stdio
▼
server.js ───┬── search tool ──→ search.js (orchestrator)
├── extract tool ─→ extract/index.js (4-layer pipeline)
└── doctor tool ──→ health tracker snapshot
search.js:
Provider layer (parallel, isolated failure)
searxng | ddgr | tavily | exa | opencli-zh
▼
Merger layer: normalize → dedup(URL) → RRF(k=60)
▼
Cleaner layer: rules (default) | LLM compression (quality mode, top-5)
▼
Health tracker records success/failure per provider
extract/index.js:
defuddle → opencli adapter → Firecrawl → opencli browser
(each layer returns null on failure, falls through to next)Phasenverlauf
Phase 1 (15 Aufgaben): 4 Provider (searxng/ddgr/tavily/exa), RRF-Fusion, regelbasierte Bereinigung, stdio MCP, nur
search-ToolPhase 2 (8 Aufgaben): opencli-zh-Provider, LLM-Qualitätsmodus, 4-schichtiges
extract,doctor+ automatische Gesundheitsdegradierung
Lizenz
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server for web search with LLM-optimized results and anti-detection mechanisms.328MIT
- Alicense-qualityCmaintenanceMulti-level web search MCP server that wraps Claude, Gemini, Perplexity, and Tavily behind a unified interface, enabling multi-depth searches with session management and provider selection.MIT
- Alicense-qualityAmaintenanceMulti-engine aggregated search MCP server that combines results from 7 search engines with deduplication, relevance ranking, and web page content extraction.1MIT
- Alicense-qualityBmaintenanceMCP server for multi-engine web search and web page fetching, supporting parallel search, content extraction, and optional LLM-powered search summarization and deep search.2MIT
Related MCP Connectors
MCP server for Google search results via SERP API
Multi-engine search for AI agents. Trust scoring, local corpus, MCP-native. Self-hostable, BYOK.
Fast, intelligent web search and web crawling. New mcp tool: Exa-code is a context tool for coding
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/thehappyboy/web-search-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server