mcp-pool
Pools multiple API keys for the Brave Search MCP server to distribute rate limits and provide failover on rate limiting or transport errors.
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., "@mcp-poolsearch the web for quantum computing breakthroughs"
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.
mcp-pool
MCP Key Pool Proxy — pool multiple API keys across upstream MCP servers to distribute rate limits.
How it works
mcp-pool is itself an MCP server. You configure one or more "pools" — each pool represents one upstream MCP server type (e.g. Brave Search) with N API keys.
1 subprocess per pool at a time, not per key. No warm standby processes.
On rate-limit or transport error, the current upstream is closed and a new one spawns with the next key (~1-2s failover).
Tools are exposed with
{poolName}__prefix to avoid name collisions.Route calls are serialized via a promise-chain mutex to prevent state races.
Related MCP server: tavily-proxy-mcp
Config
pools:
brave-search:
command: bunx
args: ["-y", "@brave/brave-search-mcp-server"]
keys:
- {BRAVE_API_KEY: "sk-first"}
- {BRAVE_API_KEY: "sk-second"}
rateLimitPatterns:
- "rate_limit_exceeded"
- "too many requests"Field | Description |
| Executable to spawn (required) |
| CLI arguments |
| Array of environment-variable objects, one per key (at least 1); values may be literal strings or |
| Regex patterns matched against tool error text (required, at least 1 — safety gate) |
| Seconds a rate-limited key is skipped; defaults to 300 |
| Working directory for the upstream process |
Config paths (first found wins): --config <path>, ./mcp-pool.yaml, ./.mcp-pool.yaml, ~/.config/mcp-pool/mcp-pool.yaml.
Values support ${VAR} expansion from environment variables. An undefined reference is a configuration error.
Usage
{
"mcpServers": {
"mcp-pool": {
"command": "bunx",
"args": ["mcp-pool@0.1.4", "--config", "/path/to/mcp-pool.yaml"]
}
}
}Tool names are prefixed: brave-search__brave_web_search. The client calls the prefixed name; mcp-pool strips the prefix and routes to the correct upstream.
Pass --verbose for per-request trace logs.
Logging
All logs are JSON lines on stderr (stdout is reserved for MCP protocol):
{"ts":"...","level":"info","pool":"brave-search","event":"upstream_start","keyIndex":0}
{"ts":"...","level":"warn","pool":"brave-search","event":"rate_limited","upstream":0}
{"ts":"...","level":"error","pool":"brave-search","event":"upstream_error","upstream":0,"error":"..."}Design
Lazy failover: 1 process per pool. Rate-limited/crashed keys are closed and replaced with the next key on demand; rate-limited keys are skipped for
cooldownSeconds(300 seconds by default).Serialized calls: promise-chain mutex prevents races on shared state across
awaitpoints.Tool validation: each spawned upstream's tools are validated against the cached set (by name→schema map, order-independent).
rateLimitPatternsis required: without explicit patterns, allisErrorresults are terminal — no retries. Use[".*"]for blanket retry on read-only pools.Stdio upstreams only: upstream MCP servers are spawned as subprocesses.
Development
bun install --frozen-lockfile
bun run typecheck
bun run test
bun run smoke
bun run build
bun run check:packageThis server cannot be installed
Maintenance
Related MCP Servers
- AlicenseBqualityDmaintenanceA multi-API key load balancing MCP server for Tavily that automatically rotates between multiple API keys to provide high availability and increased request limits.669MIT
- AlicenseAqualityAmaintenanceA proxy MCP server that connects to Tavily's official Streamable HTTP MCP, managing multiple API keys and automatically switching to the next one when the current key's quota is exhausted.5171MIT
- Flicense-qualityDmaintenanceA Cloudflare Worker that proxies requests to the Tavily API with automatic key rotation from a pool, providing search, extract, crawl, and map tools via MCP.22
- FlicenseCqualityCmaintenanceMCP server that transparently routes Ollama Cloud API requests across multiple user-owned accounts, handling quota exhaustion, rate limits, and failures via automatic account rotation.5
Related MCP Connectors
the-committee MCP — wraps StupidAPIs (requires X-API-Key)
Riot Games API MCP.
APIs.guru MCP — keyless directory of 2,500+ public APIs and their OpenAPI specs.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/yuzu-octopus/mcp-pool'
If you have feedback or need assistance with the MCP directory API, please join our Discord server