web_searchLABSCO SUMMARY
The providers have different strengths, and this lets you use them that way.
Exact-operator work like filetype:pdf belongs on Brave or Kagi; "find me things that mean roughly this" belongs on Exa; a cited answer belongs on Kagi FastGPT or Linkup. Running seven servers to get that choice is not worth it, and picking one provider forever gives up the difference. Registering only the keyed providers is the design decision that makes this practical — you can start with the one subscription you already pay for and add the rest later without changing anything.
What it is
One MCP server in front of Tavily, Brave, Kagi, Exa, GitHub, Linkup and Firecrawl. It registers only the providers whose keys you configured and skips the rest, so you get a working server without signing up for all seven — and the model picks a provider per call instead of you picking one per server.
What you get
- web_search — Tavily, Brave, Kagi, Exa or Kagi Enrichment, with depth, topic, time range, safe search and domain filters applied where the provider supports them
- ai_search — a sourced answer rather than a result list, from Kagi FastGPT, Exa Answer, Linkup or Tavily Research; Tavily returns a task id you pass back as research_id to collect the report
- github_search — code, repositories or users, with GitHub qualifiers such as filename:, path:, repo:, user:, language: and in:file
- web_extract — extract, crawl, map, scrape, summarize, fetch contents or find similar pages, through Tavily, Kagi, Firecrawl or Exa
- Operator handling differs by provider and the server translates for you: Brave merges include_domains and exclude_domains into site: and -site: clauses, Tavily converts them into API fields, and Kagi maps filetype: and before:/after: onto request parameters
- Kagi's summarize mode covers pages, videos and podcasts; Firecrawl adds structured extraction and browser actions
Requirements
At least one provider key, supplied through the environment: TAVILY_API_KEY, BRAVE_API_KEY, KAGI_API_KEY, EXA_API_KEY, GITHUB_API_KEY, LINKUP_API_KEY or FIRECRAWL_API_KEY. Providers without a key are skipped and everything else keeps working. Install with npx -y mcp-omnisearch, or build from source with pnpm and run the built entry point. Each provider bills you directly under its own plan.
Setup effort
One command plus a key — npx mcpick add --name mcp-omnisearch --command npx --args=-y,mcp-omnisearch, then supply credentials
USE CASES
Researching a topic properly rather than skimming a result page
Get a sourced answer with citations, then pull the full text of the pages it leaned on.
Finding a specific document type or a page from before a date
Use a provider that passes native operators through, so filetype: and before: actually filter.
Finding how other people solved this in code
Search GitHub code with qualifiers for filename, language or repository.
Reading a whole documentation site, not one page
Map the site, crawl the sections you want, and extract the content as markdown.
Finding more sources like the one good one you already found
Ask for semantically similar pages instead of running another keyword query.
Summarising something you cannot read right now
Point the summarize mode at a long article, a video or a podcast.
4 tools
Listed in project docs. Your client may show a different list.
ai_searchgithub_searchweb_extractBEFORE YOU INSTALL
What to know first
Tools you get
4 tools named in the project's documentation.
Requires
- npx on PATH
- At least one provider key in your environment — any of TAVILY_API_KEY, BRAVE_API_KEY, KAGI_API_KEY, EXA_API_KEY, GITHUB_API_KEY, LINKUP_API_KEY or FIRECRAWL_API_KEY; providers without a key are skipped
INSTALLATION
Connect your client
Server setup
Claude Code
npx mcpick add --name mcp-omnisearch --command npx --args=-y,mcp-omnisearchMCP Clients
VS Code
npx mcpick add --name mcp-omnisearch --command npx --args=-y,mcp-omnisearch --client vscode --scope projectCursor
npx mcpick add --name mcp-omnisearch --command npx --args=-y,mcp-omnisearch --client cursorWindsurf
npx mcpick add --name mcp-omnisearch --command npx --args=-y,mcp-omnisearch --client windsurfGemini CLI
npx mcpick add --name mcp-omnisearch --command npx --args=-y,mcp-omnisearch --client gemini-cliOpenCode
npx mcpick add --name mcp-omnisearch --command npx --args=-y,mcp-omnisearch --client opencodePi
npx mcpick add --name mcp-omnisearch --command npx --args=-y,mcp-omnisearch --client piAny MCP client
git clone https://github.com/spences10/mcp-omnisearch.git
cd mcp-omnisearch
pnpm install
pnpm run buildAdd this to your client. Keep only the keys you have — providers without a key are skipped — and set FIRECRAWL_BASE_URL only if you run a self-hosted Firecrawl:
{
"mcpServers": {
"mcp-omnisearch": {
"command": "node",
"args": [
"<YOUR_PATH_TO_MCP_OMNISEARCH>/dist/index.js"
],
"env": {
"TAVILY_API_KEY": "<YOUR_TAVILY_API_KEY>",
"KAGI_API_KEY": "<YOUR_KAGI_API_KEY>",
"BRAVE_API_KEY": "<YOUR_BRAVE_API_KEY>",
"GITHUB_API_KEY": "<YOUR_GITHUB_API_KEY>",
"EXA_API_KEY": "<YOUR_EXA_API_KEY>",
"LINKUP_API_KEY": "<YOUR_LINKUP_API_KEY>",
"FIRECRAWL_API_KEY": "<YOUR_FIRECRAWL_API_KEY>",
"FIRECRAWL_BASE_URL": "http://localhost:3002"
}
}
}
}Claude Desktop — WSL
Inside WSL, clone the repository and build it:
git clone https://github.com/spences10/mcp-omnisearch.git
cd mcp-omnisearch && pnpm install && pnpm run buildStill inside WSL, create a shell script (for example start-mcp-omnisearch.sh) that exports the provider keys you use and then runs node <YOUR_PATH_TO_MCP_OMNISEARCH>/dist/index.js, and make it executable.
Then add this to your Claude Desktop configuration; <YOUR_PATH_TO_START_MCP_OMNISEARCH> is that script's path inside WSL:
{
"mcpServers": {
"mcp-omnisearch": {
"command": "wsl.exe",
"args": [
"bash",
"-lc",
"<YOUR_PATH_TO_START_MCP_OMNISEARCH>"
]
}
}
}