Multi-provider web search MCP server with intelligent auto-routing (Serper, Tavily, Exa)
Project description
web-search-plus-mcp
A Model Context Protocol (MCP) server that gives AI assistants access to multi-provider web search with intelligent auto-routing. Automatically selects the best search provider based on query intent — no manual switching needed.
Features
- 🔍 Intelligent auto-routing — picks the right provider per query
- ⚡ Zero config —
uvx web-search-plus-mcpand you're done - 🔌 MCP-native — works with Claude Desktop, NanoBot, and any MCP host
- 🔑 Bring your own keys — use whichever providers you have
Quick Start
# Run directly with uvx (no install needed)
uvx web-search-plus-mcp
# Or install globally
pip install web-search-plus-mcp
web-search-plus-mcp
Provider Routing
| Provider | Best For | Required Key |
|---|---|---|
| Serper (Google) | General search, news, current events | SERPER_API_KEY |
| Tavily | Research, deep content extraction | TAVILY_API_KEY |
| Exa | Neural / semantic / discovery search | EXA_API_KEY |
Auto-routing picks Serper for news/general queries, Tavily for research/analysis, and Exa for discovery-style or semantic queries. Falls back gracefully if a provider key is missing.
Claude Desktop Config
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"web-search-plus": {
"command": "uvx",
"args": ["web-search-plus-mcp"],
"env": {
"SERPER_API_KEY": "your_serper_key",
"TAVILY_API_KEY": "your_tavily_key",
"EXA_API_KEY": "your_exa_key"
}
}
}
}
NanoBot Config
Add to your NanoBot config.json under mcp_servers:
{
"mcp_servers": [
{
"name": "web-search-plus",
"command": "uvx",
"args": ["web-search-plus-mcp"],
"env": {
"SERPER_API_KEY": "your_serper_key",
"TAVILY_API_KEY": "your_tavily_key",
"EXA_API_KEY": "your_exa_key"
}
}
]
}
API Keys
| Provider | Free Tier | Get Key |
|---|---|---|
| Serper | 2,500 free searches/month | serper.dev |
| Tavily | 1,000 free searches/month | tavily.com |
| Exa | 1,000 free searches/month | exa.ai |
At least one provider key is required. All three recommended for best routing.
You can also drop a .env file next to the server script:
SERPER_API_KEY=xxx
TAVILY_API_KEY=xxx
EXA_API_KEY=xxx
Tool Reference
web_search
| Parameter | Type | Default | Description |
|---|---|---|---|
query |
string | required | Search query |
provider |
string | "auto" |
Force provider: auto, serper, tavily, exa |
count |
integer | 5 |
Number of results to return |
Credits
Built on the web-search-plus OpenClaw skill — a multi-provider search skill with intelligent auto-routing for AI assistants. The underlying search.py engine is extracted from that skill.
License
MIT © 2026 robbyczgw-cla
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file web_search_plus_mcp-0.1.0.tar.gz.
File metadata
- Download URL: web_search_plus_mcp-0.1.0.tar.gz
- Upload date:
- Size: 29.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d1c442f7644d2bbf26f7d096ab90af1353607d3fb394deb1bac1dc6c0ca34bed
|
|
| MD5 |
3b2a59692e96bcff321351445345d1b2
|
|
| BLAKE2b-256 |
f06df0457b5ef46928afd47ac84b93722c508436c41892dd9d418c69bf075fe1
|
File details
Details for the file web_search_plus_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: web_search_plus_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 31.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b9fca6b31bfa035922a95ce53907f822722f34a7c5ed424b9e9bc696f5a807d
|
|
| MD5 |
d55fe60740b79f3d0375993439f6b608
|
|
| BLAKE2b-256 |
5b52b29fe83314ec7b8b017bacc7797cf7b81b66f0e1d86e3d84454f54a7dec2
|