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
MCP server

Extended access

Why this level

  • Queries go to outside search services, and the direct Google scraper may violate the engine rules
All reasons and checks

gefsikatsinelou/metasearchmcp

Install

Manual install

python scripts/install.py

Run it in a cloned repository. The stdio MCP server starts with the `metasearchmcp-mcp` command.

Access and checks

How we review

Extended 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_KEY secret
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.

A web search MCP server that gives the agent full page text at once: Stack Overflow answers, GitHub threads, arXiv papers

MCP serverExtended access404Repository stars

A unified search MCP server: one interface to Tavily, Brave, Kagi, Exa, Linkup, Firecrawl and GitHub search

MCP serverExtended access358Repository stars
Official

Official SerpApi MCP server: the agent gets results from Google, Bing, YouTube, Amazon and other engines as JSON or Markdown

MCP serverExtended access184Repository stars

A local MCP server with no API keys: multi-engine web search, page fetching and document reading tuned for LLMs.

MCP serverExtended access179Repository stars
Official

The official Search1API MCP: web search, news, page crawling, sitemaps and trends with OAuth sign-in or an API key.

MCP serverExtended access175Repository stars

MCP server for real-time web search: general and vertical search, batch queries and page content extraction

MCP serverExtended access2.1KRepository stars

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.

README badge

Report a problem