Web Search MCP
Web Search MCP
Многоисточниковый MCP-сервер для веб-поиска с RRF-фузией, 4-уровневым извлечением URL и отслеживанием работоспособности провайдеров.
Статус
Фаза 2: 5 провайдеров (SearXNG/ddgr/Tavily/Exa/opencli-zh), RRF-фузия, очистка сниппетов (правила + опциональное LLM-сжатие), инструменты search/extract/doctor, отслеживание работоспособности провайдеров с автоматической деградацией.
Related MCP server: Prism
Установка
Добавьте в конфигурацию 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"
}
}После публикации в npm замените command: "node" + абсолютный путь на command: "npx" + args: ["-y", "@thehappyboy/web-search-mcp@latest"].
Конфигурация
Переменные окружения (или .env в текущей рабочей директории или ~/.agents/skills/web-search/.env):
Var | По умолчанию | Обязательная | Описание |
|
| нет | Базовый URL SearXNG |
| — | нет | Включает провайдер Tavily |
| — | нет | Включает провайдер Exa |
| — | нет | Включает Firecrawl в конвейере извлечения (уровень 3) |
|
| нет |
|
| — | нет | Требуется, когда |
| — | нет | Требуется, когда |
|
| нет | Максимальное количество результатов по умолчанию |
|
| нет | Глобальный таймаут поиска |
Провайдеры без ключей автоматически отключаются. Инструмент поиска по-прежнему работает с тем, что доступно. ddgr, opencli, defuddle автоматически обнаруживаются через which.
Инструменты
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)
}Возвращает:
{
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: Когда запрос содержит ключевые слова, такие как 知乎, 小红书, 雪球, B站, 微博, или шаблоны вроде 600519.SH, провайдер opencli-zh направляет запрос к соответствующему адаптеру. Принудительно укажите конкретный сайт с помощью opencli_sites (передается через расширение провайдеров, см. оркестратор).
extract
{
url: string, // required
timeout?: number, // 5-60 seconds, default 20
}Пытается использовать 4 уровня по порядку, пока один не сработает:
defuddle — самый быстрый, сайты с чистым текстом
адаптер opencli — для известных сайтов (zhihu/xiaohongshu/xueqiu/bilibili/weibo)
Firecrawl — страницы с JS-рендерингом (требуется
FIRECRAWL_API_KEY)браузер opencli — крайняя мера, запускает реальный Chrome
Возвращает:
{
content: string, // markdown
source: 'defuddle'|'opencli'|'firecrawl'|'opencli-browser'|'none',
took_ms: number,
error?: string, // only when source === 'none'
}doctor
{} // no argumentsВозвращает доступность провайдеров + статистику работоспособности во время выполнения:
{
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",
}Когда success_rate провайдера падает ниже 0,5 при наличии не менее 20 образцов, он автоматически пропускается (рекомендация: degraded). Статистика работоспособности хранится в памяти и сбрасывается при перезапуске.
Разработка
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 serverАрхитектура
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)История фаз
Фаза 1 (15 задач): 4 провайдера (searxng/ddgr/tavily/exa), RRF-фузия, очистка на основе правил, stdio MCP, только инструмент
searchФаза 2 (8 задач): провайдер opencli-zh, режим качества LLM, 4-уровневое
extract,doctor+ автоматическая деградация работоспособности
Лицензия
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