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 "Install 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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/charley-forey/web-search-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server