web-search-mcp
Provides web search functionality via the Brave Search engine.
Provides web search functionality via DuckDuckGo.
Allows extraction and parsing of RSS feed content.
Provides web search functionality via a self-hosted SearXNG instance.
Allows retrieval of YouTube video transcripts.
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., "@web-search-mcpsearch for latest AI news"
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.
web-search-mcp
Best-in-class web search MCP server for grounded agent retrieval.
Features
Multi-provider search (
tavily,brave,exa,serper,searxng,duckduckgo)Provider fallback chain and optional ensembling
Optional local semantic rerank (
RERANKER=local) with@xenova/transformersSSRF-safe URL fetching with robots policy support
Injection defense:
<untrusted_content>wrapping, hidden-char stripping, heuristic detectionHTML, PDF, RSS, and YouTube transcript extraction
Reranking, dedupe/canonicalization, chunk anchors for citation
Persistent search/page memory with SQLite (
STATE_BACKEND=sqlite)MCP-native capabilities: tools, resources, prompts, completions, sampling, elicitation
Evaluation harness (
Recall@5,MRR@10) and provider A/B compare CLIProduction endpoints:
/livez,/readyz,/metrics,/health
Related MCP server: Search MCP Server
Install
npm i
npm run buildConfigure via .env
Copy and fill the template:
cp .env.example .envSupported keys:
SEARCH_PROVIDER=tavily|brave|exa|serper|duckduckgoTAVILY_API_KEY,BRAVE_API_KEY,EXA_API_KEY,SERPER_API_KEYSEARCH_PROVIDER_FALLBACK=brave,duckduckgoHOST=127.0.0.1STATE_BACKEND=memory|sqlite|redisSQLITE_PATH=.cache/web-search-mcp.sqliteDOMAIN_ALLOWLIST=*.gov,*.eduDOMAIN_BLOCKLIST=internal.example.comHTTP_RATE_LIMIT_RPS=30FETCH_MAX_BODY_BYTES=5000000PORT=8080MCP_BASE_PATH=/mcp(set/mcp/searchif desired)CORS_ORIGIN=*(or a specific origin)MCP_AUTH_TOKEN=<secret>(optional bearer token for MCP endpoint)DEBUG=0|1
Run locally (default streamable MCP)
npm run devThis auto-loads .env and starts a streamable MCP endpoint at:
http://127.0.0.1:8080/mcp(orHOST/PORT+MCP_BASE_PATHfrom.env)
If you need stdio mode explicitly:
npm run dev:stdioMCP client configuration
Streamable MCP (recommended)
Use URL-based config:
{
"mcpServers": {
"web-search": {
"url": "http://127.0.0.1:8080/mcp"
}
}
}If you set MCP_BASE_PATH=/mcp/search, use:
{
"mcpServers": {
"web-search": {
"url": "http://127.0.0.1:8080/mcp/search"
}
}
}If MCP_AUTH_TOKEN is enabled, include:
Authorization: Bearer <token>
Stdio fallback (.cursor/mcp.json)
If your client requires command/stdio mode, use:
{
"mcpServers": {
"web-search": {
"command": "npx",
"args": ["-y", "web-search-mcp", "--stdio"],
"env": {
"SEARCH_PROVIDER": "tavily",
"TAVILY_API_KEY": "YOUR_KEY",
"SEARCH_PROVIDER_FALLBACK": "brave,duckduckgo"
}
}
}
}Claude Desktop (stdio fallback)
{
"mcpServers": {
"web-search": {
"command": "npx",
"args": ["-y", "web-search-mcp", "--stdio"],
"env": {
"SEARCH_PROVIDER": "tavily",
"TAVILY_API_KEY": "YOUR_KEY"
}
}
}
}VS Code MCP (stdio fallback)
{
"servers": {
"web-search": {
"command": "npx",
"args": ["-y", "web-search-mcp", "--stdio"],
"env": {
"SEARCH_PROVIDER": "duckduckgo"
}
}
}
}Tools
searchfetch_urlsearch_and_extractnews_searchacademic_searchget_youtube_transcriptextract_pdfcheck_config
Prompts
research_topicfact_checklatest_news
Resources
web-search://page/{id}web-search://history/{id}
CLI
npm run compare -- --query "model context protocol"
npm run evalInspector validation
npx @modelcontextprotocol/inspector npm run devSmoke test
curl -s http://127.0.0.1:8080/health
curl -s http://127.0.0.1:8080/livez
curl -s http://127.0.0.1:8080/readyz
curl -s http://127.0.0.1:8080/metricsExpected:
{ "status": "ok", "version": "0.1.0", "provider": "..." }With auth enabled:
curl -i http://127.0.0.1:8080/mcp
# 401 unauthorized (without Bearer token)Docker
Build:
docker build -t web-search-mcp .Run with env file:
docker run --env-file .env -p 8080:8080 web-search-mcpThen validate each tool:
searchfetch_urlsearch_and_extractnews_searchacademic_searchget_youtube_transcriptextract_pdfcheck_config
For nginx/Kubernetes deployment guidance see docs/NGINX.md and manifests in deploy/k8s plus Helm chart in charts/web-search-mcp.
Build and release
npm test
npm run buildPublish:
npm publish --provenanceThis server cannot be deployed
Maintenance
Related MCP Connectors
LLM-ready web search + instant answers + URL-to-clean-text fetch for agents and RAG.
Web research for agents: quality-scored Google search, webpage extraction, and deep research.
Web search for AI agents — one tool across 6 engines, routed to the cheapest + cached.
Agent-native search engine with live web research optimized for AI agents.
Related MCP Servers
- AlicenseAqualityCmaintenanceProvides unified web search across multiple providers (Google, Tavily, DuckDuckGo, Brave) with automatic fallback, maximizing free API quota usage for AI workflows.112 npm7MIT
- AlicenseAqualityBmaintenanceEnables AI agents to perform unified web searches, GitHub, and GitLab searches with caching, reranking, and fallback across multiple providers.425 npm18MIT
- AlicenseNot gradedqualityBmaintenanceProvides web search and content extraction for AI agents.MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to perform web searches, extract webpage content, and conduct end-to-end search-and-extract operations using multiple search providers and content extraction methods.-