mcp-omnisearch
mcp-omnisearch lets you discover and run configured search/extraction provider APIs through two MCP tools.
Use
searchto list configured provider functions or retrieve TypeScript declarations by exact name or keywords; only providers with keys appear.Use
executeto run JavaScript in a Pi QuickJS sandbox against discovered native functions viaawait tools.<name>(args).Compose provider calls with
awaitandPromise.all, filter/transform results, and return only needed output withreturn,text(), orconsole.log().Access native Tavily, Brave, Kagi, Exa, GitHub, Linkup, and Firecrawl functions; results are raw provider JSON.
Limits: no filesystem/network/Node APIs/modules/timers, credentials stay host-side, max 20 provider calls, 64 MiB heap, default 60s deadline/up to 180s timeout, no retries/rollback/state persistence.
Handle oversized results with inline or file mode; async jobs return IDs to check later.
Provides privacy-focused web search capabilities through the Brave Search API, with good coverage of technical topics
Offers high-quality search results with minimal advertising influence, as well as FastGPT for quick AI-generated answers, Universal Summarizer for content summarization, and Enrichment API for supplementary content from specialized indexes
Provides AI-powered response generation with real-time web search integration, combining web search with GPT-4 Omni and Claude 3
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-omnisearch search for recent TypeScript updates on GitHub using filetype:md"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-omnisearch
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+.
Quick start
Install the published server with MCPick:
npx mcpick add \
--name mcp-omnisearch \
--command npx \
--args=-y,mcp-omnisearchMCPick 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 projectSee Deployment for supported clients and provider credential storage options.
To run from source instead:
pnpm install
pnpm run build
node ./dist/index.jsProviders 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.
Related MCP server: MCP Search Server
Tools
search
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_KEYKAGI_API_KEYBRAVE_API_KEYGITHUB_API_KEYEXA_API_KEYLINKUP_API_KEYFIRECRAWL_API_KEYFIRECRAWL_BASE_URLoptional, for self-hosted FirecrawlOMNISEARCH_LARGE_RESULT_MODEoptional,filedefault orinline
Development
pnpm install
pnpm run build
pnpm testPlease 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.
Available Tools
2 toolsexecuteRun JavaScript in an isolated Pi QuickJS sandbox. Discover native provider functions with search, then call await tools.<name>(args). Use return, text() or console.log() for output. Promise.all supports parallel requests. Only final output reaches the client. No filesystem, network, Node APIs, modules or timers. Credentials stay on the host. At most 20 provider calls; 64 MiB heap; default deadline 60 seconds. Results are raw provider JSON. Async jobs return IDs: retrieve their status in a later call. No automatic retries. Calls already made are not undone on failure. State is not persisted between executions.ADestructive
Run JavaScript in an isolated Pi QuickJS sandbox. Discover native provider functions with search, then call await tools.(args). Use return, text() or console.log() for output. Promise.all supports parallel requests. Only final output reaches the client. No filesystem, network, Node APIs, modules or timers. Credentials stay on the host. At most 20 provider calls; 64 MiB heap; default deadline 60 seconds. Results are raw provider JSON. Async jobs return IDs: retrieve their status in a later call. No automatic retries. Calls already made are not undone on failure. State is not persisted between executions.
Inputs: code (required), timeout_ms, large_result_mode.
searchDiscover configured provider API functions for Code Mode. Omit query to list names and descriptions. Supply a function name or space-separated keywords to get matching TypeScript declarations. Call this before execute; arguments and results use native provider formats, not the consolidated tool formats.ARead-onlyIdempotent
Discover configured provider API functions for Code Mode. Omit query to list names and descriptions. Supply a function name or space-separated keywords to get matching TypeScript declarations. Call this before execute; arguments and results use native provider formats, not the consolidated tool formats.
Inputs: query.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 2 tools
Search is for discovering provider function signatures, while execute runs JavaScript in the sandbox; the descriptions clearly separate these phases and explicitly link them. However, the bare name 'search' could initially be mistaken for a provider-level search action rather than meta-discovery, and there is no distinct 'list' tool since search doubles as listing when the query is omitted.
Both tools use a consistent single-verb convention with no mixing of camelCase or snake_case. The names are generic and lack an object (e.g., search_tools or execute_code), but the style is predictable across the set.
Two tools exactly match the two-phase Code Mode workflow: discover available provider functions, then execute a program that calls them. It is on the thin side of the typical 3-15 range, but each tool clearly earns its place and there is no redundancy.
The core lifecycle is covered: search handles both listing and keyword lookup, and execute supports provider invocation, parallelism, and output. Minor gaps exist around explicit job-status polling, cancellation, and provider configuration management, though these may be reachable through execute calls.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Jina AI Reader/Search MCP — turn any URL into clean LLM-ready markdown, plus web search.
Multi-engine search for AI agents. Trust scoring, local corpus, MCP-native. Self-hostable, BYOK.
Unified 15-tool SEO, SERP, clean Markdown & GEO (LLM citation Share-of-Voice) MCP server.
Related MCP Servers
- AlicenseAqualityDmaintenanceA Model Context Protocol server that enables web search, scraping, crawling, and content extraction through multiple engines including SearXNG, Firecrawl, and Tavily.4332 npm148MIT
- -licenseNot gradedqualityNot gradedmaintenanceA unified Model Context Protocol server that integrates multiple search providers including Brave, Tavily, Exa, Semantic Scholar, and arXiv. It enables users to perform web, news, and image searches alongside academic research and citation analysis through a single interface.-
- AlicenseAqualityBmaintenanceA Model Context Protocol server that gives AI assistants access to 7 search providers with intelligent auto-routing. Analyzes query intent and picks the best provider automatically — no manual switching needed. Install, configure your keys, and go.2219 PyPI5MIT
- AlicenseNot gradedqualityDmaintenanceA unified MCP server aggregating 15 web search and extraction tools across 5 providers (Jina, Tavily, Exa, Firecrawl, Bocha) with automatic API key validation and plugin architecture.MIT