Web Search MCP
Web Search MCP
Servidor MCP de búsqueda web multi-fuente con fusión RRF, extracción de URL de 4 capas y seguimiento de salud del proveedor.
Estado
Fase 2: 5 proveedores (SearXNG/ddgr/Tavily/Exa/opencli-zh), fusión RRF, limpieza de fragmentos (reglas + compresión LLM opcional), herramientas search/extract/doctor, seguimiento de salud del proveedor con degradación automática.
Related MCP server: Prism
Instalación
Añadir a la configuración de Claude Desktop 3P (~/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"
}
}Una vez publicado en npm, reemplazar command: "node" + ruta absoluta con command: "npx" + args: ["-y", "@thehappyboy/web-search-mcp@latest"].
Configuración
Variables de entorno (o .env en el directorio de trabajo o ~/.agents/skills/web-search/.env):
Variable | Por defecto | Requerido | Descripción |
|
| no | URL base de SearXNG |
| — | no | Habilita el proveedor Tavily |
| — | no | Habilita el proveedor Exa |
| — | no | Habilita Firecrawl en el pipeline de extracción (capa 3) |
|
| no |
|
| — | no | Requerido cuando |
| — | no | Requerido cuando |
|
| no | Máximo de resultados por defecto |
|
| no | Tiempo de espera global de búsqueda |
Los proveedores sin claves se deshabilitan automáticamente. La herramienta de búsqueda sigue funcionando con lo que esté disponible. ddgr, opencli, defuddle se detectan automáticamente mediante which.
Herramientas
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)
}Devuelve:
{
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
}]
}Enrutamiento automático de opencli-zh: Cuando la consulta contiene palabras clave como 知乎, 小红书, 雪球, B站, 微博, o patrones como 600519.SH, el proveedor opencli-zh enruta al adaptador correspondiente. Forzar un sitio específico con opencli_sites (pasado a través de la extensión de proveedores, ver orquestador).
extract
{
url: string, // required
timeout?: number, // 5-60 seconds, default 20
}Intenta 4 capas en orden hasta que una tenga éxito:
defuddle — más rápido, sitios de texto puro
adaptador opencli — para sitios conocidos (zhihu/xiaohongshu/xueqiu/bilibili/weibo)
Firecrawl — páginas renderizadas con JS (requiere
FIRECRAWL_API_KEY)navegador opencli — último recurso, utiliza Chrome real
Devuelve:
{
content: string, // markdown
source: 'defuddle'|'opencli'|'firecrawl'|'opencli-browser'|'none',
took_ms: number,
error?: string, // only when source === 'none'
}doctor
{} // no argumentsDevuelve disponibilidad del proveedor + estadísticas de salud en tiempo de ejecución:
{
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",
}Cuando la success_rate de un proveedor cae por debajo de 0.5 con al menos 20 muestras, se omite automáticamente (recomendación: degraded). Las estadísticas de salud están en memoria y se restablecen al reiniciar.
Desarrollo
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 serverArquitectura
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)Historial de fases
Fase 1 (15 tareas): 4 proveedores (searxng/ddgr/tavily/exa), fusión RRF, limpieza basada en reglas, stdio MCP, solo herramienta
searchFase 2 (8 tareas): proveedor opencli-zh, modo de calidad LLM,
extractde 4 capas,doctor+ degradación automática de salud
Licencia
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