README

mcp-omnisearch

built with vite+ tested with vitest

A Model Context Protocol (MCP) server for Tavily, Brave, Kagi, Exa, GitHub, Linkup, and Firecrawl. Two tools, search and execute, expose schema-generated native provider functions through Pi’s local QuickJS sandbox. Requires Node.js 22.19+.

Glama badge

Quick start

Install the published server with MCPick:

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:

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:

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:

{
	"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

Discover available functions and their compact TypeScript declarations. A provider-scoped lookup returns names and schemas together:

{ "query": "tavily" }

Use an exact name such as tavily_search for a smaller lookup, or {} for a catalog without declarations. Only configured providers appear.

execute

Run JavaScript against the discovered native provider functions:

{
	"code": "const r = await tools.tavily_search({ query: 'MCP code mode', max_results: 3 }); return r.results.map(({ title, url }) => ({ title, url }));"
}

Compose calls with await and Promise.all, filter intermediate data, and return only what the client needs. Credentials stay on the host; the sandbox has no filesystem or arbitrary network access. Arguments and responses use native provider formats, not a normalized search contract. See Code Mode for functions, limits and benchmark findings.

Upgrading

The consolidated web_search, ai_search, web_extract and github_search tools have been removed. Provider keys stay the same, but existing tool calls and client instructions need migration. See the breaking-change migration guide.

Documentation

  • Migration — move from consolidated tools to Code Mode.
  • Code Mode — native provider functions, schema generation, local testing, and benchmark findings.
  • Provider selection — choose providers by task, key, mode, and capability.
  • Search operators — native query syntax and provider-specific filters.
  • Large results — inline vs file response behavior and remote deployment caveats.
  • Deployment — MCP client, WSL, and Firecrawl setup.
  • Troubleshooting — keys, access, validation, rate limits, and common failures.

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

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.

评论

暂无评论