SearchHub normalizes Serper, Tavily, Exa, AnySearch, and other search APIs behind one HTTP, CLI, and MCP interface. It manages provider keys, quotas, rate limits, circuit breakers, logs, and failover so an AI agent does not lose web search when one key or provider fails.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add searchhub --env SEARCHHUB_SECRET='<SEARCHHUB_SECRET>' -- npx -y searchhub~/.codex/config.toml
[mcp_servers.searchhub]
command = "npx"
args = ["-y", "searchhub"]
env = { SEARCHHUB_SECRET = "<SEARCHHUB_SECRET>" }
# codex mcp add searchhub --env SEARCHHUB_SECRET='<SEARCHHUB_SECRET>' -- npx -y searchhub~/.cursor/mcp.json
{
"mcpServers": {
"searchhub": {
"command": "npx",
"args": [
"-y",
"searchhub"
],
"env": {
"SEARCHHUB_SECRET": "<SEARCHHUB_SECRET>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"searchhub": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"searchhub"
],
"env": {
"SEARCHHUB_SECRET": "<SEARCHHUB_SECRET>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"searchhub": {
"command": "npx",
"args": [
"-y",
"searchhub"
],
"env": {
"SEARCHHUB_SECRET": "<SEARCHHUB_SECRET>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"searchhub": {
"command": "npx",
"args": [
"-y",
"searchhub"
],
"env": {
"SEARCHHUB_SECRET": "<SEARCHHUB_SECRET>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"searchhub": {
"command": "npx",
"args": [
"-y",
"searchhub"
],
"env": {
"SEARCHHUB_SECRET": "<SEARCHHUB_SECRET>"
}
}
}
}Environment variables
SEARCHHUB_SECRET
Replace the placeholders with your own credentials and keep them out of version control.