The first MCP server you add to an agent is a config line. The fifth is a problem. Each client has to know every server's URL, hold every server's credential, and re-discover every server's tools — and when a server moves or rotates a token, you edit it in every client that points at it. This is the moment you want a gateway: one endpoint in front of many MCP servers, so clients connect once and the fan-out, the auth, and the discovery happen behind it.

Good news — the self-hostable, open-source options are now genuinely production-grade. The more useful news is that they don't all solve the same problem, and one of them is optimizing for something the 2026-07-28 spec is about to delete. Here's the map.

The complete one#

Open-source registry and proxy that federates MCP, A2A, and REST/gRPC APIs behind one endpoint; wraps non-MCP services as virtual MCP servers with automatic schema extraction; ships an admin UI, OpenTelemetry tracing, JWT/OAuth/RBAC, Redis-backed caching, and 40+ plugins. Apache-2.0.

ContextForge is the broadest and most-adopted of the set, and the one to reach for if your MCP servers aren't the whole picture. The virtual-server trick — presenting a plain REST or gRPC service to agents as an MCP tool with an auto-extracted schema — means the gateway doubles as an adapter for the services you already run. It's FastAPI under the hood, deploys via Docker or Helm, and federates across clusters. If you want one thing that governs both your MCP and your legacy APIs, start here.

The simple one#

Self-hosted MCP gateway and registry — "run all your MCP servers behind one endpoint." Register a server once and every client connects through a single URL; supports stdio and streamable-HTTP transports, tool grouping to expose selective subsets, enterprise-mode access control, and Prometheus-compatible OpenTelemetry metrics. MPL-2.0.

MCPJungle is the pick when you want a gateway, not a platform. A single Go binary, a clean registry model, and enough access control and metrics to run as shared team infrastructure without standing up a stack around it. The tool-grouping feature is quietly the best part: you can expose a curated subset of tools to a given client instead of the full firehose, which is the cheapest real defense against an over-armed agent.

The identity one#

Enterprise MCP Gateway & Registry centered on identity: OAuth 2.0 with Keycloak, Entra ID, Okta, Auth0, Cognito, and PingFederate; Dynamic Client Registration for one-command onboarding; semantic (hybrid keyword + vector) tool discovery; A2A support; per-user egress auth for third-party SaaS MCP servers; audit logging toward SOC 2 / GDPR. Apache-2.0.

If your blocker isn't routing but who's allowed to call what, this is the one. It treats SSO, per-user egress credentials, and auditable access as the primary job and the aggregation as table stakes. The semantic discovery layer — search your whole tool catalog by natural language — is a real answer to the "my agent has 300 tools and picks the wrong one" problem.

The traffic one#

Agent-native MCP gateway pairing Lunar Proxy (an API gateway with live traffic visibility, rate limits, retries, priority queues, and circuit breakers) with MCPX, a zero-code MCP aggregator; adds AI-aware policy enforcement and cost controls over agentic traffic. MIT.
★ 470TypeScriptTheLunarCompany/lunar

Lunar comes at the gateway from the API-management side. If you've ever watched an agent hammer a paid API in a retry loop, the circuit breakers and cost policies are the reason to look here — it treats MCP traffic as traffic to be metered, not just calls to be routed.

The one betting against the spec#

Reverse proxy and management layer for MCP servers built for Kubernetes, using StatefulSets and headless services for "session-aware stateful routing" and lifecycle management of server instances. MIT.

Microsoft's gateway is well-built and Kubernetes-native, and its headline feature is the one to think hardest about. "Session-aware stateful routing" exists to keep a client's follow-up requests landing on the instance that holds its session. The 2026-07-28 spec removes the MCP session precisely so that any instance can serve any request — which is the problem sticky routing was invented to solve.

As MCP goes stateless, a gateway's value moves from routing the session to governing the fleet.

That's the real selection criterion. Statelessness makes the transport-level job — keep-the-session-on-the-right-box — mostly disappear. It does nothing to the jobs the other four gateways are built around: aggregating many servers, centralizing identity, discovering tools, and enforcing policy. So don't pick a gateway on routing cleverness that the protocol is about to make free. Pick it on the problem that survives the spec: ContextForge for breadth, MCPJungle for simplicity, the agentic-community registry for identity, Lunar for traffic. Those are the parts of "gateway" that MCP is not absorbing into the core.