Designing Uber's MCP Gateway Uber built an internal MCP Gateway that now hosts over 800 MCP servers and more than 5,000 tools, centralizing how AI agents reach the company's back-end services, Uber engineers reported. The platform pairs an MCP Registry control plane, which catalogs servers and tools, with a Proxy Gateway data plane that translates MCP calls into HTTP, gRPC or TChannel requests and converts responses back to MCP format. Uber said the gateway was needed because ad-hoc MCP integrations across hundreds of teams produced fragmented tooling, poor tool discoverability and duplicated infrastructure, and its AutoCrawler component continuously scans Uber's IDL registry to translate APIs into MCP tools automatically. Designing MCP Gateway Uber's MCP Management Platform Principal Engineer Senior Staff Engineer Sr. Software Engineer Introduction Uber’s rapid adoption of AI agents has fundamentally changed how teams interact with code, data, and operational systems. Early ad-hoc integrations with the MCP Model Context Protocol showed clear value: agents became dramatically more capable when they could access live business context, query internal services, and take meaningful actions on behalf of users. These early wins validated MCP as a powerful abstraction for building agentic systems inside Uber. However, as adoption accelerated, significant challenges emerged. Individual teams independently built integrations, leading to fragmentation in tooling and duplicated infrastructure. MCP tools were hard to discover, difficult to operate reliably, and tightly coupled to specific services or agent implementations. While these approaches worked at a small scale, they didn’t meet Uber’s needs as hundreds of teams began exploring agentic workflows. Without a unified architecture, scaling MCP would increase operational complexity, security risk, and developer friction, ultimately limiting its impact. To unlock MCP’s full potential at Uber’s scale, we needed a centralized, scalable solution to standardize how AI agents interact with existing back-end systems while preserving flexibility for teams. This solution needed to abstract protocol differences HTTP, gRPC ™ , TChannel , enforce consistent security and observability guarantees, and make MCP tools easy to create, discover, and reuse across the company. We built the MCP Gateway to address this need. It’s a foundational microservice that powers all MCP interactions at Uber, serving as an orchestration and routing layer between AI agents and existing back-end services and native MCP servers. By centralizing MCP logic into a single gateway, we provide a consistent execution model for agent-to-service interactions while eliminating the need for teams to reinvent core infrastructure. Existing APIs can be seamlessly exposed as MCP tools, governed and operated in one place, and consumed by multiple agents in a uniform way. MCP Gateway unlocked a scalable, fast, and consistent path to building AI agents within Uber and is currently hosting over 800 MCP servers and over 5000 tools. The Gateway MCP Gateway follows a microservice-based architecture, with the gateway acting as the central integration point between AI-enabled systems and Uber’s back-end services. The platform comprises two primary components: the MCP Registry, which serves as the control plane, and the Proxy Gateway, which forms the data plane. The MCP Registry maintains a catalog of hundreds of MCP servers backed by internal services, along with thousands of MCP tools. These tools range from no-code definitions that expose existing APIs as MCP tools to fully native implementations built explicitly against the MCP specification. The registry provides a single source of truth for discovery, ownership, and enablement across the ecosystem. The Proxy Gateway is responsible for executing MCP requests at runtime. It translates MCP protocol calls into HTTP, gRPC, or TChannel requests, forwards them to the appropriate back-end service, and converts the responses back into MCP-compatible results. This translation layer allows AI agents to interact with existing systems through a consistent MCP interface, without requiring changes to the underlying services. Control Plane Uber has a microservice architecture and operates with thousands of internal services that expose APIs over HTTP, gRPC, and TChannel. These APIs provide valuable context to an AI system, but asking teams to manually author an MCP server would be slow and painful. To solve this problem, we built AutoCrawler, which continuously scans Uber’s IDL registry for APIs, translates them, and updates them in the registry. It also queries native MCP servers and adds them to the registry. AutoCrawler: Discovery Engine Autocrawler is a Cadence https://cadenceworkflow.io/ -powered distributed workflow system subscribed to Uber’s IDL registry and internal service signals. On a fixed schedule, a cron job triggers a Cadence workflow that scans for newly added services, APIs, and schema changes. For every discovered entity, AutoCrawler is responsible for: - Creating or updating MCP server representations - Generating or fetching tool definitions and schemas - Registering tools in the MCP Registry in a disabled-by-default state This shared foundation enables MCP discovery to scale across thousands of services while keeping service teams off the critical path. Discovery for IDL-Backed Services For traditional back-end services defined through Protobuf or Thrift IDLs, AutoCrawler derives MCP servers and tools directly from the IDL Registry. For each service:API group, AutoCrawler performs the following steps: - Upsert MCP server: Creates or updates a virtual MCP server corresponding to the discovered service. - Parse IDL definitions: Parses the associated protobuf or Thrift files to extract method names, request and response schemas, and documentation comments. - Generate tool descriptions: Uses an LLM to generate enriched, agent-friendly MCP tool descriptions based on the extracted schemas and comments. - Schema translation: Translates protobuf or Thrift schemas into MCP-compatible JSON-RPC 2.0 schemas. - Upsert MCP tools: Registers or updates the generated MCP tools in the MCP Registry in a disabled-by-default state. Discovery for Native Servers In addition to IDL-backed services, the MCP Gateway also supports native MCP servers—services that implement the MCP protocol directly and expose agent-optimized tools. MCPFx is the framework Uber uses to build native MCP servers. Each native MCP server emits a heartbeat metric that signals its presence and readiness. AutoCrawler continuously monitors these heartbeat signals to automatically discover new native MCP servers. When a native MCP server is discovered, AutoCrawler follows a different discovery path: 1. It makes a listTools call to the native MCP server to retrieve the tools it explicitly exposes, along with their schemas. 2. It creates a virtual proxy MCP server in the MCP Registry that contains all discovered tools and their schemas, in a disabled-by-default state. 3P MCP Servers The MCP Gateway serves as the centralized orchestration layer for all MCP interactions across Uber, extending seamless support to third-party integrations such as Jira and Google. Provisioning third-party MCP servers relies on the co-operation of two key components: 1. MCP Gateway: Relays the caller's user token downstream while enforcing essential gateway capabilities, including authorization, rate limiting, and sensitive data redaction. 2. Third-Party MCP Service: Exchanges the internal user token for a corresponding third-party authentication token before dispatching the request to the external MCP server. Authoring and Enablement While we may create MCP servers without involving the service team, ownership and control of the MCP server must reside with the service team. A core design principle of the MCP Gateway is that discovery doesn’t imply exposure. Every MCP server and tool starts in a disabled state and must be explicitly reviewed and enabled by the owning team. Service owners can review and refine the generated tool definitions before enabling them. Every change to the tool description triggers a config change diff, which must be approved by server owners. Owners can approve and deploy the config change, and, if needed, roll back to a previous known version. Data Plane The MCP Gateway data plane is the core runtime service responsible for executing MCP requests. It continuously consumes server and tool configurations from the control plane and refreshes its in-memory state at a fixed cadence, allowing configuration changes, such as tool updates or enablement changes, to take effect in real time without service restarts or redeployments. Based on this configuration, the data plane dynamically materializes virtual MCP servers. For each virtual server, the Gateway exposes a single /