websearch
Enables web search through Brave Search as a paid provider, configured with an X-Subscription-Token key and integrated into aggregated search queries with quota-error handling.
Enables web search through Google as a free search engine backend, usable in combos and merged with other sources via the router.
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., "@websearchsearch the web for latest AI research papers"
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.
websearch-router
A local websearch aggregation routing service. Combines multiple search backends via a combo→provider→engine three-layer architecture, with normalized merge (URL dedup + RRF), a React dashboard, and a tray/autostart CLI.
Install
npm i -g websearch-router
websearch start --trayThe server runs on http://127.0.0.1:8787 by default. The dashboard is served at /.
Related MCP server: MetaSearchMCP
API
POST /search{query, provider, accountId?, limit?, mode?}→{results, partialFailures, meta}POST /fetch{url}→{title, text, mode}(SSRF-protected)GET /health→ service + provider health + versionPOST /mcp→ MCP Streamable HTTP endpoint (stateless, JSON-only); exposes onewebsearchtool, see MCP
provider param
provider is required on /search and /mcp (there is no built-in default combo). Its value resolves as:
a saved combo id or name — wins on name clash (add/edit combos in the dashboard Combos page);
an engine id —
bing|ddg|google(free) ortavily|brave|exa(paid, needs an account) — desugared to a single-source inline combo;an inline combo JSON object or JSON string —
{"sources":[{"provider":"bing"},{"provider":"ddg"}],"mode":"concurrent","merge":{"dedupe":"url-normalized","rank":"rrf","cap":20},"fallback":{"on":["timeout","error","empty"],"min_results":5}}.
The built-in WEB combo (id web) is seeded on every database and covers the general web-search default: concurrent bing + ddg with RRF merge. It is protected on the dashboard (cannot be deleted or renamed) but its sources/mode/merge/fallback stay editable.
On /search (the dashboard test page) the optional accountId and mode are also accepted; /mcp exposes only {query, provider?, limit}.
Configure paid providers
Add accounts via the dashboard (Providers page) or directly into the connections store. Tavily needs a tvly- key; Brave needs an X-Subscription-Token key. Quota exhaustion returns {error:{kind:"quota", provider, resetAt}} (HTTP 429), not 500.
MCP
The server exposes one MCP tool websearch over Streamable HTTP at POST /mcp (same port, stateless, JSON-only). inputSchema: { query?: string (required in-handler), provider?: "WEB", limit?: number }.
provider is an optional enum — currently the only value is "WEB", and omitting it defaults to WEB. This pins the MCP surface to the built-in category combo (decision: MCP is the default search entry, not a strategy selector); a future MEDIA/ACADEMIC/SOCIAL category just adds an enum value + a built-in combo. Because the value is enum-validated by the SDK, an illegal provider (e.g. an engine id like "google") is rejected before the handler runs and surfaces as an isError:true tool result (HTTP 200) — external callers cannot bypass the WEB default via an engine id or inline JSON. /search remains the full-parameter interface and still accepts any provider (combo name/id, engine id, inline JSON).
Connect Claude Code (restart the session afterward so it loads the tool):
claude mcp add --transport http --scope user websearch http://127.0.0.1:8787/mcpWith an API key configured (--apiKey / apiKey), pass the header:
claude mcp add --transport http --scope user websearch http://127.0.0.1:8787/mcp \
--header "x-api-key: <your-key>"Development
npm install # workspaces: packages/server + packages/cli
npm test # vitest (offline, no real network)
npm --workspace @websearch/router-internal run build
npm --workspace @websearch/router-dashboard-ui run build # SPA -> dashboard-dist/Build the publish tarball (bundles CLI + server + dashboard into one package):
npm run pack # -> websearch-router-<version>.tgzSource
Repository: https://github.com/siyu77/websearch-router — issues and PRs welcome. Released under the MIT License.
This server cannot be deployed
Maintenance
Related MCP Connectors
Multi-engine search for AI agents. Trust scoring, local corpus, MCP-native. Self-hostable, BYOK.
Agent-driven search: build, import, tune, search, and score result quality — all over MCP.
MCP server for Google search results via SERP API
Live AI-native web search with citations. One tool for every MCP client. Flat per-request pricing.
Related MCP Servers
- AlicenseBqualityFmaintenanceAggregated search API service that provides real-time web search capabilities for AI assistants via MCP.210 npm45GPL 3.0
- AlicenseBqualityBmaintenanceAggregates search results from multiple providers (web, academic, code, finance) with a unified JSON schema, providing both an HTTP API and an MCP server for AI agent tooling.1459MIT
- AlicenseAqualityBmaintenanceMulti-source web search MCP server with RRF fusion, 4-layer URL extraction, and provider health tracking.65 npmMIT
- AlicenseNot gradedqualityAmaintenanceMulti-engine aggregated search MCP server that combines results from 7 search engines with deduplication, relevance ranking, and web page content extraction.1MIT