MCP Omnisearch README

The full upstream README, mirrored for reference. Install config, tool schemas, adoption signals and our own overview live on the MCP Omnisearch listing page.

mcp-omnisearch

built with vite+ tested with vitest

A Model Context Protocol (MCP) server that provides unified access to Tavily, Brave, Kagi, Exa AI, GitHub, Linkup, and Firecrawl through four consolidated tools.

Glama badge

Quick start

Install the published server with MCPick:

Terminal
npx mcpick add \
  --name mcp-omnisearch \
  --command npx \
  --args=-y,mcp-omnisearch

MCPick defaults to Claude Code. Use --client and --scope to target another client or add the server to the current repository:

Terminal
npx mcpick add \
  --name mcp-omnisearch \
  --command npx \
  --args=-y,mcp-omnisearch \
  --client vscode \
  --scope project

See Deployment for supported clients and provider credential storage options.

To run from source instead:

bash
pnpm install
pnpm run build
node ./dist/index.js

Providers without keys are skipped and the rest keep working. If your client supports environment-variable expansion, reference keys instead of storing their values in the MCP configuration:

config.json
{
	"mcpServers": {
		"mcp-omnisearch": {
			"command": "npx",
			"args": ["-y", "mcp-omnisearch"],
			"env": {
				"TAVILY_API_KEY": "${TAVILY_API_KEY}",
				"EXA_API_KEY": "${EXA_API_KEY}"
			}
		}
	}
}

Add only the provider keys you use. Expansion syntax and secret storage are client-specific; see Deployment for secure options and plaintext fallback guidance.

Tools

web_search

Search the web with Tavily, Brave, Kagi, or Exa.

config.json
{
	"query": "latest SvelteKit releases",
	"provider": "tavily",
	"limit": 10,
	"search_depth": "advanced",
	"topic": "news",
	"time_range": "month",
	"safe_search": true,
	"include_raw_content": false,
	"auto_parameters": false
}

Search controls apply when supported by the selected provider.

ai_search

Get sourced AI answers with Exa Answer, Linkup, or Tavily Research. Tavily Research returns a task ID first; pass it back as research_id to retrieve the report.

config.json
{
	"query": "Explain the differences between REST and GraphQL",
	"provider": "exa_answer"
}

github_search

Search GitHub code, repositories, or users.

config.json
{
	"query": "filename:remote.ts @sveltejs/kit",
	"search_type": "code",
	"limit": 5
}

web_extract

Extract, crawl, scrape, or find similar content with Tavily, Firecrawl, or Exa.

config.json
{
	"url": "https://example.com/long-article",
	"provider": "tavily",
	"mode": "extract",
	"extract_depth": "advanced",
	"query": "installation requirements",
	"chunks_per_source": 3,
	"format": "markdown"
}

Documentation

Environment variables

  • TAVILY_API_KEY
  • KAGI_API_KEY
  • BRAVE_API_KEY
  • GITHUB_API_KEY
  • EXA_API_KEY
  • LINKUP_API_KEY
  • FIRECRAWL_API_KEY
  • FIRECRAWL_BASE_URL optional, for self-hosted Firecrawl
  • OMNISEARCH_LARGE_RESULT_MODE optional, file default or inline

Development

bash
pnpm install
pnpm run build
pnpm test

Please read CONTRIBUTING.md before opening a PR.

License

MIT License - see LICENSE.

Acknowledgments

Built on Model Context Protocol, Tavily, Kagi, Brave Search, Exa AI, Linkup, and Firecrawl.