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.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
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 --provenanceTool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Web search, Google SERP, page extraction to markdown and cited answers for AI agents.
LLM-ready web search + instant answers + URL-to-clean-text fetch for agents and RAG.
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
- AlicenseAqualityDmaintenanceProvides unified web search across multiple providers (Google, Tavily, DuckDuckGo, Brave) with automatic fallback, maximizing free API quota usage for AI workflows.152 npm7MIT
- AlicenseAqualityBmaintenanceEnables AI agents to perform unified web searches, GitHub, and GitLab searches with caching, reranking, and fallback across multiple providers.4176 npm20MIT
- AlicenseNot gradedqualityDmaintenanceProvides web search and content extraction for AI agents.MIT
- FlicenseNot gradedqualityDmaintenanceEnables 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.-