aggregate-search
Provides an optional self-hosted SearXNG search backend for the web_search tool, allowing the server to query a SearXNG instance configured via SEARXNG_BASE_URL and include its results in aggregated, deduplicated, weighted RRF search results.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@aggregate-searchsearch the web for the latest LLM benchmark papers and dedupe the results"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
aggregate-search โ Multi-Engine Search MCP Server
Overview
aggregate-search turns multiple search backends โ Bocha / Zhipu (China-friendly), Tavily / Serper (overseas) and an optional self-hosted SearXNG โ into a single MCP tool pair (web_search, engine_status) served over stdio with FastMCP. Chinese queries automatically boost domestic engines (weight 1.3) and English queries boost overseas ones; when an overseas engine is unreachable it lands in a 300 s health blacklist and the request falls back to domestic sources instead of timing out.
๐จ๐ณ ไธญๆ็่ฏดๆ่ง README_CN.md
Related MCP server: evo-scry
Highlights
๐ Weighted RRF fusion โ
score = ฮฃ w/(60+rank)with a cross-engine hit bonus (+0.25), so results confirmed by multiple engines rank higher; each result carries anenginesfield listing its sources๐ฉบ Health blacklist & failure taxonomy โ failing engines are benched for 300 s; every failure is classified (
quota_exhausted/auth_failed/network_unreachable/timeout/rate_limited/server_error) with an actionable hint inengine_errors๐ Proxy auto-negotiation โ overseas engines go through
AGG_PROXY(env โ common Clash ports โ Windows registry proxy), validated by a real CONNECT + TLS handshake before use, with automatic direct-retry fallback; domestic engines always connect directly๐งช 35 offline tests + stdio E2E + real-quota check โ pytest suite (fusion / engines / orchestrator / failure classification) runs without network or quota;
verify_e2e.pydrives the server through a real MCP stdio client;real_check.pyexercises live keys๐งฉ Pluggable engines โ add one adapter file + one
config.SPECSregistration; per-engine kill switch viaAGG_ENABLE_<NAME>=0
Tech Stack
Architecture
query (zh/en auto-detected)
โ
โโโโโโโโโ orchestrator โโโโโโโโโ
โ parallel dispatch + timeoutsโ
โผ โผ
domestic engines overseas engines
Bocha ยท Zhipu Tavily ยท Serper (optional SearXNG)
always direct via validated proxy or direct
โ โ
โโโโโโโโโโโ fusion โโโโโโโโโโโโโ
URL normalization โ dedup โ weighted RRF (k=60)
+ cross-engine bonus โ top-K + engine_errors
โ
โผ
MCP tools: web_search / engine_status (stdio)Getting Started
bash setup.sh # uv venv (Python 3.12) + deps
cp .env.example .env # fill at least one engine key
.venv/Scripts/python.exe -m pytest -q # 35 offline tests (no network)
.venv/Scripts/python.exe verify_e2e.py # stdio end-to-end (mocked)
.venv/Scripts/python.exe real_check.py # live quota checkRegister with any MCP client (ZCode / Claude Code etc.):
"aggregate-search": {
"type": "stdio",
"command": "<abs-path>/.venv/Scripts/python.exe",
"args": ["<abs-path>/server.py"],
"cwd": "<abs-path>"
}No key ships with this repository โ obtain your own: Bocha https://open.bochaai.com (CN, 1000 free), Zhipu https://open.bigmodel.cn, Tavily https://app.tavily.com (1000/month free), Serper https://serper.dev, or point SEARXNG_BASE_URL at a self-hosted instance (no key). See .env.example.
Configuration
BOCHA_API_KEY/ZHIPU_API_KEY/TAVILY_API_KEY/SERPER_API_KEY/SEARXNG_BASE_URLโ all optional; whichever is set gets usedAGG_PROXYโ egress proxy for overseas engines only; empty = env โ probe ports 7897/7890/10809 โ Windows registry proxyAGG_ENABLE_<NAME>=0โ force-disable an engine;AGG_TIMEOUT_S(20) /AGG_CONNECT_TIMEOUT_S(10) /AGG_UNHEALTHY_TTL_S(300)ZHIPU_SEARCH_ENGINEโsearch_std(default) /search_pro/search_pro_sogou/search_pro_quark
Repository Layout
server.py MCP entry (stdio): web_search / engine_status
aggregate_search/
config.py engine registry + zh/en weights + key detection
models.py unified SearchResult model
fusion.py URL normalization, dedup, weighted RRF, cross-source bonus
orchestrator.py parallel dispatch, health blacklist, failure taxonomy, proxy probing
engines/ per-engine adapters (add file + register in config.SPECS)
tests/ 35 mocked tests (fusion / engines / orchestrator / failures)
verify_e2e.py stdio E2E via a real MCP client
real_check.py live-key verification (spends quota, prints failure kinds)
HANDOFF_ๆฅ็ฎก่ฏๆญ.md engineering diagnosis report (CN)
.env.example key templateKnown Limitations
Engine adapters follow official docs; after API changes only the adapter file needs updating
Fusion is weighted RRF + cross-source bonus in v1; LLM re-ranking is planned
Overseas engines need a working egress proxy; on machines without one, disable them via
AGG_ENABLE_<NAME>=0to skip cold-start timeouts
License
MIT ยฉ 2026 TZH-user โ see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Multi-engine search for AI agents. Trust scoring, local corpus, MCP-native. Self-hostable, BYOK.
MCP server for Google search results via SERP API
One MCP server over 253 data sources: Reddit, LinkedIn, YouTube, G2, search and AI answers.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enables web search capabilities by integrating with a SearXNG instance to aggregate results from over 130 engines. It allows users to perform filtered searches across categories like news, science, and social media while supporting advanced parameters for language and time range.14MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for internet search via direct Google and DuckDuckGo HTML scraping with AI-powered result normalization and optional summarization, requiring no API keys for search.MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that aggregates web search results from multiple engines and optionally renders pages to Markdown, providing a unified search interface.3 npm3ISC
- AlicenseAqualityCmaintenanceMulti-source web search MCP server with RRF fusion, 4-layer URL extraction, and provider health tracking.65 npmMIT