Giriş
Uber'in AI agent'larını hızla benimsemesi, ekiplerin kod, veri ve operasyonel sistemlerle etkileşim biçimini kökten değiştirdi. MCP (Model Context Protocol) ile yapılan ilk geçici entegrasyonlar net bir değer ortaya koydu: Agent'lar canlı iş bağlamına erişebildiğinde, dahili servisleri sorgulayabildiğinde ve kullanıcılar adına anlamlı işlemler gerçekleştirebildiğinde yetenekleri dramatik ölçüde arttı. Bu erken başarılar, MCP'nin Uber içinde agent tabanlı sistemler kurmak için güçlü bir soyutlama katmanı olduğunu kanıtladı.
Ancak benimsenme hızlandıkça önemli zorluklar da su yüzüne çıktı. Ekipler entegrasyonları bağımsız olarak geliştirdi; bu da araçlarda parçalanmaya ve altyapı tekrarlarına yol açtı. MCP araçlarını keşfetmek zordu, güvenilir şekilde çalıştırmak güçtü ve belirli servislere ya da agent uygulamalarına sıkı sıkıya bağlıydı. Bu yaklaşımlar küçük ölçekte işe yarasa da yüzlerce ekip agent tabanlı iş akışlarını keşfetmeye başladığında Uber'in ihtiyaçlarını karşılayamadı. Birleşik bir mimari olmadan MCP'yi ölçeklendirmek operasyonel karmaşıklığı, güvenlik riskini ve geliştirici sürtünmesini artırarak nihayetinde etkisini sınırlayacaktı.
MCP'nin Uber ölçeğindeki tam potansiyelini ortaya çıkarmak için, ekiplere esneklik sağlarken AI agent'larının mevcut arka uç sistemleriyle nasıl etkileşime gireceğini standartlaştıracak merkezi ve ölçeklenebilir bir çözüme ihtiyacımız vardı. Bu çözümün protokol farklılıklarını (HTTP, gRPC™, TChannel) soyutlaması, tutarlı güvenlik ve gözlemlenebilirlik garantileri uygulaması ve MCP araçlarını şirket genelinde oluşturmayı, keşfetmeyi ve yeniden kullanmayı kolaylaştırması gerekiyordu.
Bu ihtiyacı karşılamak için MCP Gateway'i geliştirdik. Uber'deki tüm MCP etkileşimlerini destekleyen temel bir mikroservis olan bu yapı, AI agent'ları ile mevcut arka uç servisleri ve yerel MCP sunucuları arasında bir orkestrasyon ve yönlendirme katmanı görevi görüyor. MCP mantığını tek bir ağ geçidinde merkezileştirerek, agent-servis etkileşimleri için tutarlı bir yürütme modeli sunuyor ve ekiplerin temel altyapıyı yeniden icat etme ihtiyacını ortadan kaldırıyoruz. Mevcut API'ler sorunsuz bir şekilde MCP aracı olarak sunulabiliyor, tek bir yerden yönetilip işletilebiliyor ve birden fazla agent tarafından standart bir biçimde tüketilebiliyor. MCP Gateway, Uber içinde AI agent'ları oluşturmak için ölçeklenebilir, hızlı ve tutarlı bir yol açtı ve şu anda 800'den fazla MCP sunucusu ile 5000'den fazla araca ev sahipliği yapıyor.

Şekil 1: MCP Gateway (Araç olarak API'ler).
Bu blog yazısında, Proxy Katmanı (MCP'nin mevcut protokollere ve geri çevrilmesi), Keşif Katmanı (MCP Registry ve API tarama) ve kontrol düzlemi (yazım/oluşturma) dahil olmak üzere MCP Gateway'in tasarımını inceliyoruz.
Gateway
MCP Gateway, ağ geçidinin AI destekli sistemler ile Uber'in arka uç servisleri arasındaki merkezi entegrasyon noktası olarak hareket ettiği mikroservis tabanlı bir mimari izliyor. Platform iki ana bileşenden oluşuyor: kontrol düzlemi görevi gören MCP Registry ve veri düzlemini oluşturan Proxy Gateway.
MCP Registry, dahili servisler tarafından desteklenen yüzlerce MCP sunucusunun ve binlerce MCP aracının kataloğunu tutar. Bu araçlar, mevcut API'leri MCP aracı olarak sunan kodsuz tanımlamalardan, doğrudan MCP spesifikasyonuna göre geliştirilmiş tamamen yerel uygulamalara kadar uzanır. Kayıt defteri, ekosistem genelinde keşif, sahiplik ve etkinleştirme için tek doğruluk kaynağını sağlar.
Proxy Gateway, çalışma zamanında MCP isteklerini yürütmekten sorumludur. MCP protokol çağrılarını HTTP, gRPC veya TChannel isteklerine çevirir, bunları uygun arka uç servisine iletir ve yanıtları tekrar MCP uyumlu sonuçlara dönüştürür. Bu çeviri katmanı, AI agent'larının altta yatan servislerde herhangi bir değişiklik gerektirmeden, tutarlı bir MCP arayüzü üzerinden mevcut sistemlerle etkileşime girmesini sağlar.
Kontrol Düzlemi
Uber bir mikroservis mimarisi kullanıyor ve HTTP, gRPC ile TChannel üzerinden API sunan binlerce dahili servis çalıştırıyor. Bu API'ler bir AI sistemi için değerli bağlam sağlar, ancak ekiplerden manuel olarak bir MCP sunucusu yazmalarını istemek yavaş ve zahmetli olurdu. Bu sorunu çözmek için AutoCrawler'ı geliştirdik. AutoCrawler, Uber'in IDL kayıt defterini sürekli olarak API'ler için tarar, bunları çevirir ve kayıt defterinde günceller. Ayrıca yerel MCP sunucularını sorgular ve bunları kayıt defterine ekler.
AutoCrawler: Keşif Motoru
Autocrawler, Uber'in IDL kayıt defterine ve dahili servis sinyallerine abone olan, Cadence destekli dağıtık bir iş akışı sistemidir. Belirli bir takvimde, bir cron işi yeni eklenen servisleri, API'leri ve şema değişikliklerini tarayan bir Cadence iş akışını tetikler.
Keşfedilen her varlık için AutoCrawler şunlardan sorumludur:
- MCP sunucu temsillerini oluşturma veya güncelleme
- Araç tanımlamalarını ve şemalarını oluşturma veya getirme
- Araçları varsayılan olarak devre dışı bırakılmış durumda MCP Registry'ye kaydetme
Bu ortak temel, MCP keşfinin binlerce servise ölçeklenmesini sağlarken servis ekiplerini kritik yolun dışında tutar.

Şekil 2: Auto Crawler.
IDL Destekli Servisler İçin Keşif
Protobuf veya Thrift IDL'leri aracılığıyla tanımlanan geleneksel arka uç servisleri için AutoCrawler, MCP sunucularını ve araçlarını doğrudan IDL Registry'den türetir. Her servis: API grubu için AutoCrawler şu adımları gerçekleştirir:
- MCP sunucusunu upsert etme: Keşfedilen servise karşılık gelen sanal bir MCP sunucusu oluşturur veya günceller.
- IDL tanımlamalarını ayrıştırma: Metod adlarını, istek ve yanıt şemalarını ve dokümantasyon yorumlarını çıkarmak için ilişkili protobuf veya Thrift dosyalarını ayrıştırır.
- Araç açıklamaları oluşturma: Çıkarılan şemalara ve yorumlara dayanarak, zenginleştirilmiş ve agent dostu MCP araç açıklamaları oluşturmak için bir LLM kullanır.
- Şema çevirisi: Protobuf veya Thrift şemalarını MCP uyumlu JSON-RPC 2.0 şemalarına çevirir.
- MCP araçlarını upsert etme: Oluşturulan MCP araçlarını varsayılan olarak devre dışı bırakılmış durumda MCP Registry'ye kaydeder veya günceller.
Yerel Sunucular İçin Keşif
IDL destekli servislere ek olarak MCP Gateway, MCP protokolünü doğrudan uygulayan ve agent'lar için optimize edilmiş araçlar sunan yerel MCP sunucularını da destekler.
MCPFx, Uber'in yerel MCP sunucuları oluşturmak için kullandığı framework'tür. Her yerel MCP sunucusu, varlığını ve hazır olma durumunu bildiren bir heartbeat metriği yayar. AutoCrawler, yeni yerel MCP sunucularını otomatik olarak keşfetmek için bu heartbeat sinyallerini sürekli olarak izler. Yerel bir MCP sunucusu keşfedildiğinde, AutoCrawler farklı bir keşif yolu izler:
- Açıkça sunduğu araçları ve şemalarını almak için yerel MCP sunucusuna bir listTools çağrısı yapar.
- MCP Registry'de, keşfedilen tüm araçları ve şemalarını içeren, varsayılan olarak devre dışı bırakılmış durumda sanal bir proxy MCP sunucusu oluşturur.
3P MCP Sunucuları
MCP Gateway, Uber genelindeki tüm MCP etkileşimleri için merkezi orkestrasyon katmanı görevi görerek Jira ve Google gibi üçüncü taraf entegrasyonlarına sorunsuz destek sunar.
Üçüncü taraf MCP sunucularının sağlanması, iki temel bileşenin işbirliğine dayanır:
- MCP Gateway: Yetkilendirme, hız sınırlama ve hassas veri maskeleme gibi temel ağ geçidi yeteneklerini uygularken, çağıranın kullanıcı token'ını aşağı akışa iletir.
- Üçüncü Taraf MCP Servisi: İsteği harici MCP sunucusuna göndermeden önce dahili kullanıcı token'ını ilgili üçüncü taraf kimlik doğrulama token'ıyla değiştirir.
Oluşturma ve Etkinleştirme
Servis ekibini dahil etmeden MCP sunucuları oluşturabilsek de MCP sunucusunun sahipliği ve kontrolü servis ekibinde olmalıdır. MCP Gateway'in temel tasarım ilkelerinden biri, keşfin maruz kalma anlamına gelmemesidir. Her MCP sunucusu ve aracı devre dışı bir durumda başlar ve sahip ekip tarafından açıkça incelenip etkinleştirilmelidir. Servis sahipleri, oluşturulan araç tanımlamalarını etkinleştirmeden önce inceleyebilir ve iyileştirebilir.
Araç açıklamasındaki her değişiklik, sunucu sahipleri tarafından onaylanması gereken bir yapılandırma değişikliği farkı (diff) tetikler. Sahipler yapılandırma değişikliğini onaylayıp dağıtabilir ve gerekirse önceki bilinen bir sürüme geri dönebilir.

Şekil 3: MCP Registry kullanıcı arayüzü.

Şekil 4: MCP aracı kullanıcı arayüzü.
Veri Düzlemi
MCP Gateway veri düzlemi, MCP isteklerini yürütmekten sorumlu temel çalışma zamanı servisidir. Kontrol düzleminden sürekli olarak sunucu ve araç yapılandırmalarını tüketir ve bellek içi durumunu sabit bir periyotta yeniler; böylece araç güncellemeleri veya etkinleştirme değişiklikleri gibi yapılandırma değişikliklerinin servis yeniden başlatmaları veya yeniden dağıtımları olmadan gerçek zamanlı olarak etkili olması sağlanır.
Bu yapılandırmaya dayanarak, veri düzlemi sanal MCP sunucularını dinamik olarak somutlaştırır. Her sanal sunucu için Gateway, AI agent yürütmesi için giriş noktası görevi gören tek bir /<service-name>/mcp uç noktası sunar. Gelen istekler, yerleşik bir proxy sunucusu aracılığıyla ilgili sunucu işleyicilerine çözülür.

Şekil 5: MCP Gateway Veri Düzlemi.
Protokol Çevirisi ve Yürütme
MCP Gateway'deki protokol çevirisi, Proxy Gateway içindeki sunucu işleyicileri tarafından gerçekleştirilir. Her sunucu işleyicisi hem araçların hem de aşağı akışın farkındadır; bu da çalışma zamanında MCP isteklerini doğru şekilde yönlendirmesine ve yürütmesine olanak tanır.
Güvenlik
MCP Gateway, araç düzeyinde ayrıntıya sahip tüm sunucular için yerleşik yetkilendirme ve maskeleme sağlar. MCP Gateway, tespit edilen çağıran aktörler (insanlar, servisler ve agent'lar) üzerinde yapılandırılmış farklı charter politikalarını uygulamak için Uber'in dahili Erişim Kontrol Sistemini kullanır. Charter politikaları sunucu düzeyinde oluşturulur ve gerekirse araç düzeyinde isteğe bağlı geçersiz kılmalar uygulanabilir.
MCP Gateway ayrıca, araç yanıtlarındaki herhangi bir PII veya hassas veriyi kutudan çıktığı haliyle maskeler.
IDL Destekli Aşağı Akış Servisleri
Mevcut arka uç servisleri tarafından desteklenen araçlar için sunucu işleyicisi, HTTP uç nokta yapılandırması veya gRPC/TChannel prosedürleri gibi aşağı akış hedefini tanımlayan bellek içi bir eşleme tutar.
Bir MCP isteği geldiğinde işleyici şunları yapar:
- Gelen JSON yükünü uygun tel formatına çevirir.
- İsteği Protobuf veya Thrift baytlarına serileştirir.
- İsteği aşağı akış servisine iletir.
- Protobuf veya Thrift bayt yanıtlarını tekrar MCP uyumlu JSON'a çevirir ve çağıran agent'a döndürür.
Gerçek aşağı akış isteği, tüm arka uç servislerinin yanında çalışan Uber'in servis ağı sidecar'ı Muttley aracılığıyla yürütülür. İstek yürütmeyi Muttley'e devrederek MCP Gateway, mevcut servisten servise yönlendirme yeteneklerinden otomatik olarak yararlanır.
Yerel MCP Sunucuları
Yerel MCP sunucuları da orijinal sunucuya proxy görevi gören MCP kayıt defterine sanal sunucular olarak kaydedilir. Çalışma zamanında, yerel MCP istekleri şeffaf bir şekilde aşağı akış sunucusuna proxy'lenir ve yanıtlar çağıran kişiye geri proxy'lenir.
Gateway'in Faydaları
MCP-Gateway'i inşa ederek Uber, agent tabanlı sistemler kurmaya yönelik ölçeklenebilir ve birleşik bir yaklaşım elde etti; en etkili faydalar ise şunlardan geldi:
- Kolay keşif ve kurulum
- Mevcut API'lere yönelik kodsuz yaklaşım
- Yerleşik gözlemlenebilirlik ve güvenlik
- Merkezi sahiplik ve yönetim
Gateway'i Genişletmek
MCP Gateway'i yüzlerce sunucuya ve binlerce araca ölçeklendirmek, küçük ölçekte var olmayan sorunları ortaya çıkardı. Bağlam Şişkinliği ve Aşırı Maliyet
Çalışma Zamanı Keşfi
MCP'nin sunucular arası arama için yerel bir kavramı yoktur. Bir agent, hangi araçların mevcut olduğunu sorabilmesi için zaten hangi sunucuyla konuşacağını bilmek zorundadır. Bir agent'ı MCP sunucusu kullanacak şekilde yapılandırmak, sunucu URL'sinin, kimlik bilgilerinin ve araç listesinin açıkça bağlanmasını gerektirir. Bunu yüzlerce sunucu için yapmak ölçeklenmez, çünkü tüm bu bağlam modelin bağlam sınırını tüketir. Bu sorunu aşağıdakilerle çözdük:
- Omni MCP - MCP istemcilerinin kademeli bir keşif modeliyle MCP Gateway'in sunucularından herhangi birine erişmesini sağlayan tek bir proxy sunucusu. Bu aynı zamanda artımlı keşif yoluyla bağlam/token optimizasyonunun önünü açar. Omni MCP şu araçları sunar:
- discover_server - sorgu niyetine dayalı olarak MCP sunucusunu keşfetme
- discover_tools - bir sunucu için araçları listeleme
- get_tool_schema - bir araç için json şemasını alma
- invoke_tool - bir aracı çağırma
Bu araçlar birlikte, yerleşik erişim kontrolü ve diğer ağ geçidi özellikleriyle tüm MCP sunucularına artımlı keşif ve erişim sağlar.
- Response Projection - MCP Gateway ayrıca MCP araçları için GraphQL benzeri bir çağrı deseni olan Response Projection (Yanıt Projeksiyonu) sunar. Araç istek şemasına yeni bir alan ekleyerek çalışır ve bu alan ağ geçidine tüm alanları değil yalnızca gerekli alanları talep etmesini söyler. LLM, yalnızca gerekli alanların iç içe geçmiş yollarından oluşan bir diziyle alanları okur ve enjekte eder. Ardından Gateway, yalnızca projeksiyonlanan alanları tutarak yanıtı çalışma zamanında budar. Bu, API şema uyumluluğunu MCP için kurumsal düzeyde ölçeklendirmemize olanak tanıdı.
- Code Mode - Kodlama agent'ları genellikle araç çıktısını doğrudan dosyalara yazmanın, tam yanıtları model bağlamına yüklemekten daha verimli olduğu kabuk ortamlarında çalışır. Code Mode, Uber'in agent işlemleri için CLI'ı olan aifx aracılığıyla bu desene hizmet eder ve herhangi bir MCP sunucusunun kurulmasını gerektirmeden MCP çağrılarını ağ geçidi üzerinden yönlendirir. Agent'ların, MCP tanımı bağlamda bulunmadan iş için doğru MCP araçlarını keşfetmesine yardımcı olur. aifx üç komut sunar:
- aifx mcp list - kullanılabilir MCP sunucularını listeleme
- aifx mcp search - tüm MCP sunucularında araç arama
- aifx mcp call - MCP Gateway üzerinden bir MCP aracını çağırma
Agent'lar bunları tek bir komutta zincirleyebilir ve çıktıyı dosyalara yazabilir; dosya sistemi agent'ları ise bu dosyaları seçici olarak grep ile tarayarak yalnızca ihtiyaç duyduklarını bağlama yükler. Code Mode artık kodlama agent'larında MCP araç kullanımı için şirket genelinde varsayılan yöntemdir.

Sonuç
MCP Gateway'i inşa etmek, AI agent'larının Uber'de çalışma biçimini kökten değiştirdi. Onlarca ekibin tutarsız araçlarla, paylaşılan güvenlik garantileri olmadan ve yinelenen altyapılarla bağımsız olarak MCP entegrasyonları kurduğu bir parçalanma sorunu olarak başlayan süreç, artık herhangi bir ekibin dakikalar içinde bağlanabileceği birleşik ve ölçeklenebilir bir platforma dönüştü.
Tasarımımızı yönlendiren temel içgörü basitti: mevcut API'ler bir agent'a araç sağlamanın en hızlı yoludur. Ekiplerden servislerini agent tabanlı bir dünya için yeniden yazmalarını istemek yerine, MCP Gateway onları oldukları yerde karşılar; HTTP, gRPC ve TChannel çağrılarını Muttley aracılığıyla şeffaf bir şekilde MCP uyumlu etkileşimlere çevirir ve aşağı akış servislerinde sıfır değişiklik gerektirir.
Büyük ölçekte agent tabanlı sistemler inşa ediyorsanız, en zor kısım AI değildir. Asıl zor olan, agent'ları üretim ortamında gerçek kullanıcılar adına hareket edecek kadar güvenilir kılan bağ dokusunu — keşfi, güvenliği, güvenilirliği — inşa etmektir. MCP Gateway bizim bu zorluğa verdiğimiz yanıttır ve burada belgelenen tasarım kararlarının aynı sorunla karşılaşan başkalarına da faydalı olmasını umuyoruz.
Teşekkürler
Kapak Fotoğrafı Atıf: OpenAI tarafından ChatGPT ile oluşturulmuştur; harici görüntü, logo veya üçüncü taraf varlık kullanılmamıştır.
gRPC, The Linux Foundation'ın ticari markasıdır.
Uber Engineering'den en son gelişmelerden haberdar olmak için en yeni blog yazılarımız ve içgörülerimiz adına bizi LinkedIn'de takip edin.





