Labsco
MCP SERVER

MCP Orchestrator

by rupinder2

Put many MCP servers behind one connection: search across all their tools in natural language, and call the one you found — without every tool definition sitting in context.

MCP Plumbing: Proxies, Registries & InspectorsVerified
Summary
One connection in front of many servers, and a search instead of a tool list.

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.

What it is

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.

What you get
  • 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
Requirements

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.

Setup effort

One command — pip install mcp-orchestrator