The point is context, not convenience: connect ten servers directly and their definitions travel with every turn, whereas here the model carries a search call and pulls a definition only when it needs one. That trade has a cost — a step of searching before acting, and results only as good as the descriptions the downstream servers wrote. Redis as the storage backend is what makes the tool index survive a restart rather than being rebuilt.
A hub that registers downstream MCP servers from a config file, indexes their tools, and exposes two calls of its own: one to find a tool, one to invoke it. Tool names are namespaced as server_name__tool_name, so collisions between servers cannot happen.
- Search across every registered server's tool names, descriptions and argument names, ranked by BM25 for natural language — or by Python regex when you know the pattern you want
- Direct invocation of any downstream tool by its namespaced name, with arguments passed through and the raw result returned unchanged
- Deferred loading: the client holds the search tool rather than every definition from every server, which is what keeps a large fleet from filling the context window
- Downstream servers registered from JSON, over stdio or HTTP, each with its own command or URL
- Per-server authentication as saved static headers or as a token forwarded on the call
- Cached tool definitions with a TTL you set, backed by memory for development or Redis for production
- Its own transport either way — stdio for desktop clients, or HTTP at /mcp with CORS enabled
Pip install mcp-orchestrator, then run mcp-orchestrator; nothing to authorize for the hub itself, and credentials for downstream servers live in their entries in server_config.json, whose path SERVER_CONFIG_PATH overrides. STORAGE_BACKEND selects memory or redis, with REDIS_URL pointing at the instance. ORCHESTRATOR_TRANSPORT=http and ORCHESTRATOR_PORT switch it to HTTP, serving at http://localhost:8080/mcp by default. MCP_ORCHESTRATOR_TOOL_CACHE_TTL defaults to 300 seconds, MCP_ORCHESTRATOR_CONNECTION_TIMEOUT to 30.0 and MCP_ORCHESTRATOR_MAX_RETRIES to 3. MIT.
One command — pip install mcp-orchestrator
