· kaynak dev.to (home feed)
MCP Python SDK, client bağlantılarında origin'ler arası HTTP yönlendirmelerini engelliyor
MCP Python SDK v2.2.0, HTTP yönlendirmelerini yalnızca yapılandırılmış endpoint'in origin'i içinde kaldıkları sürece takip ediyor; böylece kimlik doğrulamalı agent oturumlarının ve OAuth akışlarının yapılandırılmamış sunuculara ulaşabileceği bir yol kapatılıyor.

MCP Python SDK artık, konuşmak üzere yapılandırıldığı sunucunun origin'inden uzaklaşan HTTP yönlendirmelerini takip etmeyi reddediyor. Bu değişiklik 7 Eylül'de yayımlanan 2.2.0 sürümüyle geldi ve endpoint URL'sini agent client bağlantıları için açık bir güvenlik sınırı olarak yeniden tanımlıyor.
Sürüm notlarını inceleyen Ben Greenberg'nin dev.to yazısına göre bu kural, SDK'nın standart client bağlantılarını ve Streamable HTTP ile SSE transportlarını kapsıyor.
Yeni yönlendirme kuralı nasıl çalışıyor
Standart Client constructor'ı, streamable_http_client veya sse_client üzerinden oluşturulan bir client, artık bir yönlendirmeyi yalnızca şema, host ve port aynı kaldığında takip ediyor. Aynı host üzerinde http'den https'ye yükseltmeye izin veriliyor. Başka bir origin'e yapılan yönlendirme başarısız oluyor ve oturum ardından kullanılabilir kalıyor. Reddedilen yönlendirmenin bir MCPError yükselttiğini, SSE bağlantısının ise bunun yerine httpx2.HTTPStatusError ile başarısız olduğunu yazıda belirtiliyor.
Aynı kısıtlama artık OAuth sağlayıcı isteklerine de uygulanıyor. Gönderiye göre bu, MCP transportunun bir origin kuralını uygularken kimlik doğrulama akışının kendi daha gevşek yönlendirme politikasını izlediği bir boşluğu kapatıyor.
Pratik bir yan etki de var: /mcp'den /mcp/'ye yönlendirme gibi aynı origin içindeki yol değişiklikleri artık bir httpx.AsyncClient'ı follow_redirects ile yapılandırmaya gerek kalmadan çalışıyor.
Yönlendirmeler neden sınırı aşıyordu
Genel amaçlı bir HTTP client, mcp.example.com/mcp adresinden other.example.net/mcp adresine yapılan bir yönlendirmeyi sorunsuzca takip eder. Bir MCP client için bu cevap artık kabul edilemez: other.example.net, kullanıcının yapılandırdığı sunucu değil. Client kimlik doğrulamalı bir oturum, OAuth durumu veya tool-discovery istekleri taşıyorsa, yönlendirmeyi takip etmek bu verileri alabilecek endpoint kümesini sessizce genişletir. Yani yapılandırılmış endpoint, bir oturumun nerede kurulabileceğini ve kimlik doğrulamalı isteklerin nereye gönderilebileceğini belirler; bir yönlendirme bu kararı sunucu adına verememelidir.
Dağıtımlar için anlamı
Aynı origin içindeki yönlendirmeler, şema, host ve port korunarak sondaki eğik çizginin eklenmesi veya yolun yeniden şekillendirilmesi gibi yönlendirme temizliği için geçerliliğini koruyor. Origin'ler arası taşınmalar ise ayrı bir konu. Yazının maintainer'lara önerisi, endpoint değişikliklerini güvenlik incelemesinin bir parçası olarak ele almak ve bir yönlendirme göndermeden önce şu soruyu sormak: Son URL, kullanıcıların yapılandırdığı URL ile aynı şema, host ve port bilgisini paylaşıyor mu? Paylaşmıyorsa, client'ların bilinçli olarak geçiş yapabilmesi için yeni endpoint'i yayımlayın; çünkü taşınma bir origin sınırını aştığında yönlendirme yanlış bir geçiş yöntemidir.
Client maintainer'ları için bir kontrol listesi
Yazı, MCP bağlantı yönetimini değiştirecek herkese yönelik bir inceleme kontrol listesi sunuyor: origin kontrolünü her desteklenen transportta uygula, birini daha gevşek bir politikayla bırakma; aynı kuralı, çoğu zaman ayrı bir HTTP client kullanan OAuth authorization, token ve metadata isteklerine de uygula; yönlendirme reddedildikten sonra oturum durumunu kullanılabilir tut; kimlik bilgilerini veya oturuma bağlı header'ları, tool-discovery istekleri dahil, açıkça yapılandırılmamış bir origin'e asla gönderme; ve hata mesajlarında bir yönlendirmenin endpoint'in origin'inden çıktığı için reddedildiğini açıkça belirt. Önerilen testler şunları kapsıyor: aynı origin'de bir yol yönlendirmesi, aynı host üzerinde http'den https'ye yükseltme, farklı bir host'a yönlendirme ve transport isteklerinden ayrı olarak test edilen OAuth istekleri.
Neden önemli
MCP sunucuları, kullanıcıların ve agent'ların üzerinde hareket etmesi beklenen tool ve prompt'ları ortaya koyar; dolayısıyla bir client bağlantısı yalnızca bir ağ ayarı değil, bir güven ilişkisidir. OAuth akışlarının içinde dahil origin'ler arası yönlendirmeleri reddederek SDK, ele geçirilmiş veya yeniden yapılandırılmış bir sunucunun kimlik doğrulamalı agent trafiğini operatörün hiç onaylamadığı bir endpoint'e çekebileceği gerçekçi bir saldırı vektörünü kapatıyor. Bu değişiklik aynı zamanda ekosistemi, protokol sınırlarında öngörülebilir davranışa, yani Agentic AI Foundation'ın agent'ların tool'lar ve framework'ler arasında çalışmasının temeli olarak gösterdiği türden bir uzlaşmaya doğru itiyor. Geliştiriciler için pratik çıkarım basit: ihtiyacınız olan sunucu başka bir origin'deyse, o URL'yi doğrudan yapılandırın ve kararı bir yönlendirmeye bırakmayın.
- #model-context-protocol
- #python
- #security
- #http
- #ai-agents
İlgili yazılar
- 4.951 MCP sunucusunun analizi, yaklaşık 30 tool'dan sonra tanımların ayırt ediciliğini yitirdiğini ortaya koydu
- Solon'un Claude Code sandbox'unun Java portu, yapay zeka ajanı komutlarını işletim sistemi düzeyinde hapsediyor
- DeepMind'ın matematik deneyi, yapay zeka ajanlarının hile yapan akranlarını ihbar etmesiyle sona erdi