- MCP(Model Context Protocol), LLM'lerin dış dünyayla etkileşim kurması için standartlaştırılmış bir entegrasyon yöntemi sunar
- Son dönemde IBM'in ACP'si ve Google'ın A2A'sı gibi benzer standartlar ortaya çıkarken, MCP uygulamaları ve ilgili araçlar da hızla artıyor
- Ancak tasarımdaki kafa karışıklığı, yetersiz dokümantasyon ve fiili protokol belirtiminin eksikliği gibi olgunlaşmamış mühendislik pratikleri sorun olarak gösteriliyor
- HTTP+SSE ve Streamable HTTP gibi şu anda önerilen taşıma yöntemleri, karmaşıklığı ve güvenlik sorunlarını artırıyor; alternatif olarak WebSocket öneriliyor
- En güncel protokol, yetkilendirme ve oturum yönetimi tarafında tutarsız ve aşırı karmaşıklık ekliyor
MCP ve son gelişmelere bakış
- MCP, uygulamaların büyük dil modellerine (LLM) bağlam sağlamasının yolunu standartlaştırmak için oluşturulmuş açık bir protokoldür
- Son bir ayda MCP, LLM'leri ajanlara dönüştüren temel standart olarak öne çıktı ve kullanımıyla uygulamaları hızla yayılıyor
- IBM'in ACP'si veya Google'ın A2A'sı gibi, benzer amaçlara sahip daha ortodoks standartlar da hızla ortaya çıkıyor
Mühendislik pratikleri ve protokol belirtimi sorunları
- Gerçek uygulama ve dokümantasyon seviyesinin düşük olduğu birçok yerde görülüyor
- Büyük teknoloji şirketleri model eğitimine devasa yatırımlar yaparken, SDK'lar ve dokümantasyon düşük seviyede kalıyor ve bu da kullanıcıların kafasını karıştırıyor
- MCP de benzer sorunlar gösteriyor; bazı tasarımlar mantıksız ve belirtim, örnekler ile kılavuzlar yetersiz durumda
Taşıma protokolü tartışması
stdio taşıma yöntemi
- Stdio, MCP sunucusu ile istemcisini yerelde pipe(
stdout, stdin) üzerinden doğrudan bağlayan geleneksel bir yöntemdir
- Karmaşık soket işlemleri veya işletim sistemine özgü sorunlar daha azdır ve ortam değişkenleriyle giriş/çıkış akışları gibi sade bir ortam yapılandırması sağlar
HTTP+SSE / Streamable HTTP yöntemi
- Web çağına uyum sağlamak amacıyla HTTP tabanını da destekleme niyetiyle HTTP+SSE ve Streamable HTTP yöntemleri benimsendi
- Ancak bu yaklaşım, WebSocket'in yerine geçmeyi hedeflerken tersine daha fazla belirsizlik, tasarımsal kafa karışıklığı ve karmaşıklık yaratıyor
- Tek bir oturum ve bağlantı birden fazla yolla oluşturulup sonlandırılabildiği için, sunucunun durum yönetimi ve güvenlik tarafında büyük bir yük oluşturuyor
MCP sunucu/istemci uygulama örneklerinde yaşanan zorluklar
- Resmî Go SDK eksikliği gibi, birçok dilde desteğin yetersiz olması belirgin bir sorun olarak öne çıkıyor
- Dokümantasyon ve belirtim net olmadığı için, uygulamayı gerçekte tersine mühendislik yoluyla yapmak gereken durumlar sık görülüyor
- Örnek sunucuların çoğu Python, JavaScript tabanlı olsa da, bağımlılık ve taşınabilirlik sorunları yüzünden bunları üretim ortamında uygulamak zor
- Sunucu geliştirirken SSE/Streamable HTTP soketmiş gibi davranıyor; ancak gerçekte oturum ve bağlantı durumunu tutarlı şekilde korumak zor ve mesaj kuyruğu gibi ek altyapılar gerekiyor
HTTP+SSE ve Streamable HTTP'nin yapısı ile sorunları
HTTP+SSE modu
- İstemci sunucuyla bir SSE oturumu açar; ayrı bir endpoint'e yazma isteği gönderdiğinde sunucu 202 yanıtı döner ve cevabı mevcut SSE bağlantısı üzerinden iletir
- Oturum bağlantısını ve durum eşzamanını korumak gerekir; ancak bu süreç hem yetersiz belgelenmiş durumda hem de işletim karmaşıklığı çok yüksektir
Streamable HTTP modu
- Oturum oluşturma, SSE açma ve yanıt iletimi için birden çok yöntem birlikte kullanıldığı için tek bir istek-yanıt akışı tutarlı değildir
- Birden fazla durum yönetimi, çeşitli endpoint'ler ve header yöntemlerinin iç içe geçmesi, fiili uygulama ve ölçeklenebilirlik açısından ciddi engeller yaratır
Genel etkiler
- Teknik karmaşıklık arttıkça, geliştiricinin bilişsel yükü ve bakım maliyeti büyür; ayrıca farklı sunucu ve istemci uygulamaları arasında uyumluluk tutarsızlıkları ve öngörülemez davranışlar ortaya çıkar
- Sunucunun tüm durumları ve bağlantı koşullarını takip etmesi gerekir; dağıtık ortamlarda ise verimli ölçekleme ve durum eşzamanı daha da zorlaşır
Güvenlik etkileri
- İnce parçalı ve çeşitli bağlantı/oturum yöntemleri, oturum ele geçirme, yeniden oynatma saldırıları ve hizmet reddi (DoS) gibi durum yönetimi kaynaklı güvenlik açıklarını artırır
- Birden çok giriş noktası ve yanıt yöntemi saldırı yüzeyini genişletir, ayrıca istenmeyen akışlar üzerinden kötü niyetli faaliyetlerin gizlenmesini mümkün kılar
Yetkilendirme protokolündeki kafa karışıklığı
- Mevcut belirtim, yalnızca HTTP taşımada OAuth2 gibi yöntemleri zorunlu kılarken, STDIO taşımada ise keyfî biçimde ortam değişkeni kullanımı gibi tutarsız kurallar uyguluyor
- Neden yalnızca HTTP taşımasının karmaşık OAuth2 uygulamasını zorunlu kıldığı gibi kafa karıştırıcı ve mantıksız noktalar var
İyileştirme önerileri
- Tek bir JSON RPC protokolü üzerinde, taşıma yöntemlerinin fiilen yalnızca Stdio ve WebSocket etrafında sadeleştirilmesi gerekir
- Stdio ortamındaki değişkenlerin HTTP ortamındaki header'lara, giriş ve çıkışların ise sırasıyla WebSocket'in çift yönlü akışlarına eşlenmesi daha uygun olacaktır
- Böylece gereksiz oturum takibi, durum yönetimi ve sayısız istisna işleme ihtiyacı ortadan kaldırılabilir
- WebSocket, tüm HTTP tabanlı taşımalar için standart seçenek hâline gelmeli; karmaşık durum eşzamanı sorunlarını da çözebilir
Alternatif protokollerle karşılaştırma ve pazar eğilimleri
- IBM'in ACP'si ve Google'ın A2A'sı, ajanlar arası birlikte çalışabilirlik açısından daha sade bir taşıma tasarımı ve ajan keşif özellikleri sunuyor
- Ancak özünde bunların çoğu, MCP kurulum ekosistemi içinde ayrı araçlar olarak entegre edilebilecek düzeyde
- Yeni protokollerin sürekli ortaya çıkması standartların çoğalması riskini doğurduğundan, taşıma tarafındaki sadeliğe öncelik vermek sektörün büyümesi için önemlidir
1 yorum
Hacker News görüşleri
agents.jsondosyası koyup semantik bir diyalog üzerinden agent'ların işi kendi kendine çözmesi daha sezgisel olabilirdi. Sonuçta HTTP, agent'ların standart giriş/çıkışı olurdu.glama.ai/mcp/servers) işletmecisiyim. Yazarın görüşlerine kısmen katılıyorum ama protokol hâlâ çok erken aşamada ve önümüzde ciddi değişiklikler olabilir. Beklenenden çok daha fazla ilgi gördü; en başta birkaç düzine sunucu varken bir anda binlerce sunucu ortaya çıktı ama gerçekten çalışanlar bunların yalnızca bir kısmı olduğu için ayıklamaya çok zaman harcıyoruz. Bu, MCP olgunlaşmadan önce kamuoyunun dikkatini çekmesinin sonucu. Buna rağmen son dönemde kod çatıları, kayıt dizinleri, MCP destekleyen istemciler gibi ekosistem bileşenleri şaşırtıcı derecede hızlı büyüdü. Daha altı ay önceye kıyasla bu ölçekte değişim benzeri görülmemiş bir şey. Bu hız sürerse görünümün parlak olduğunu düşünüyorum. Yeni başlayanlar için yararlı bir kaynak derlemesi de sunuyorum.