MetaSearchMCP
Metasearch for agents: one MCP server and HTTP API merge results from many search providers into unified JSON with deduplication.
- 58 ★ on the repository
- Last commit
- MIT
Extended access
Why this level
- Queries go to outside search services, and the direct Google scraper may violate the engine rules
Install
- Works in
Manual install
python scripts/install.pyRun it in a cloned repository. The stdio MCP server starts with the `metasearchmcp-mcp` command.
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- Queries go to outside search services, and the direct Google scraper may violate the engine rules
This is third-party code. Review the repository files before installing.
What it does
MetaSearchMCP queries several search providers in parallel, normalizes answers into one JSON schema and removes duplicates. It serves results over HTTP with OpenAPI docs and as an MCP server over stdio for Claude Desktop, Cline, Continue and similar clients. Agents need predictable fields, tolerance of partial failures and per-provider details rather than pages built for a browser. The MCP tools are `search_web`, `search_google`, `search_academic`, `search_github`, `search_code`, `search_news`, `search_social`, `search_images`, `search_videos`, `search_finance`, `search_bio`, `compare_engines`, `list_providers` and `provider_health`. Providers are chosen by name or by tags `web`, `academic`, `code` and `google`, and `max_total_results` caps the payload size. For Google there is a built-in direct scraper plus the paid APIs of serpbase.dev and serper.dev.
Who it is for. People building research agents and LLM pipelines who want one search source across the web, science, code and news.
Good fit when
- An agent compares answers from several search engines for one query and looks for disagreements
- A study needs scientific papers and repositories and general web search gets in the way
- One provider timed out but the answer must still arrive from the rest
- The agent context is limited and the result size must be held with `max_total_results`
Not a fit when
- Stable Google search is needed with no risk of blocking, since the direct scraper works on a best-effort basis
- Queries cannot be sent to third-party search services
- A ready cloud service is needed without running Python yourself
Example request
Find scientific papers and repositories for this question, merge the results without duplicates and show which providers answered.MCP
- Transport
- stdio, http
- Authentication
- key is optional
Environment variables
SERPER_API_KEYsecret- serper.dev key for Google search, optional
ALLOW_UNSTABLE_PROVIDERS- Enables unstable providers, including the direct Google scraper
Limitations
Python and your own launch are required: the installer `python scripts/install.py`, the `metasearchmcp-mcp` command for MCP over stdio, or a Docker container for HTTP. Some providers need API keys (`SERPBASE_API_KEY`, `SERPER_API_KEY`, `BRAVE_API_KEY` and others) and are bound by quotas. The direct Google scraper is enabled with `ALLOW_UNSTABLE_PROVIDERS=true`, works on a best-effort basis and may be blocked from datacenter addresses. Automated retrieval of search results can violate engines’ rules, and the decision is yours. Queries go to the chosen outside services.
How to disable. Remove the `MetaSearchMCP` entry from the MCP client settings and stop the HTTP server or container. Delete or clear the `.env` file with keys by hand.
FAQ
How do I connect it to Claude Desktop?
Add a `MetaSearchMCP` server to the configuration with the command `metasearchmcp-mcp` and the keys you need under `env`, for example `SERPER_API_KEY`.
How do I narrow a search?
The `tags` parameter of `search_web` limits categories such as `academic` or `code`. With `tag_match="all"` a provider must match every tag.
What does provider_health do?
It checks provider configuration, and a separate live probe sends a minimal query to each and shows who actually answers.
How do I run it without MCP?
With `metasearchmcp` or `python -m metasearchmcp.server`, and in Docker run `docker build -t metasearchmcp .` then start with `--env-file .env`.
What is ALLOW_UNSTABLE_PROVIDERS for?
It enables unstable providers, including the direct Google scraper. Without it Google search goes through paid APIs when keys are set.
Discussion
No questions or reviews yet.
Related
MCP serversA web search MCP server that gives the agent full page text at once: Stack Overflow answers, GitHub threads, arXiv papers
A unified search MCP server: one interface to Tavily, Brave, Kagi, Exa, Linkup, Firecrawl and GitHub search
Official SerpApi MCP server: the agent gets results from Google, Bing, YouTube, Amazon and other engines as JSON or Markdown
A local MCP server with no API keys: multi-engine web search, page fetching and document reading tuned for LLMs.
The official Search1API MCP: web search, news, page crawling, sitemaps and trends with OAuth sign-in or an API key.
MCP server for real-time web search: general and vertical search, batch queries and page content extraction
README in short
The project is designed as search for machines rather than people: stable field names, provider timeout isolation and execution metadata for each request.