deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

31 MCP sunucusunda yapılan hata enjeksiyonu taraması, yalnızca %3'ünde zorunlu kılınabilir output schema buldu

31 MCP sunucusu üzerinde yapılan bağımsız bir hata enjeksiyonu çalışması, 265 aracın yalnızca 7'sinde bozuk bir yanıtı reddedebilecek bir output schema tanımlı olduğunu ortaya koydu; bu da agent'ları kötü sonuçlara karşı otomatik bir korumasız bırakıyor.

31 MCP sunucusunda yapılan hata enjeksiyonu taraması, yalnızca %3'ünde zorunlu kılınabilir output schema buldu

Test edilen araçların yalnızca %3'ünde anlamlı bir output sözleşmesi var

Popüler 31 MCP sunucusu üzerinde yapılan bir hata enjeksiyonu denetimi, incelenen 265 aracın yalnızca %3'ünün bozuk bir yanıtı reddedecek kadar katı bir output schema tanımladığını ortaya koydu. Çalışmayı, testi çalıştırmak için kullanılan mcp-drill test aracını da geliştiren Timur Rakhmatullin, dev.to üzerinde kendi imkanlarıyla yayınladı.

Tarama; Microsoft Learn, Hugging Face, Cloudflare ve DeepWiki gibi bilinen sağlayıcıların uzak uç noktalarının yanı sıra yerel referans sunucularını da kapsıyordu. Ölçülen araçların %56'sı hiç outputSchema tanımlamıyordu; bu da istemcilerin doğrulayabileceği bir şey bırakmıyordu. Bir diğer %42'si ise çalışmanın fiilen işe yaramaz olarak sınıflandırdığı bir schema tanımlıyordu: bir yanıttaki tüm yaprak (leaf) değerler bozuk veya aralık dışı verilerle değiştirildiğinde bile schema doğrulamadan geçiyordu. 265 aracın yalnızca 7'si, yani %3'ü, değiştirilmiş payload'u reddetti.

Test nasıl çalışıyor

MCP sunucuları, bir aracın sonucunun nasıl görünmesi gerektiğini açıklayan bir outputSchema yayınlayabilir ve istemcilere yanıtları kontrol etmenin otomatik bir yolunu sunar. Test aracı, bir yanıtın yapısını ve tiplerini bozmadan içerini bozar — string'ler string olarak kalır, objeler obje olarak — ve ardından tanımlı schemanın bu bozulmayı yakalayıp yakalamadığını kontrol eder. Bozuk verileri kabul eden schemalar anlamsız (vacuous), reddedenler ise zorunlu kılınabilir (enforceable) olarak sınıflandırılır.

Tarama deterministiktir ve hiçbir dil modeli içermez; bu nedenle yazara göre her puan, hangi agent'ın çağırdığından bağımsız olarak sunucunun kendisini yansıtır. İkinci bir sonda seti, bilinmeyen metotlar, bilinmeyen araç adları ve zorunlu argümanları eksik çağrılar göndererek hata işlemeyi test eder. Bu açıdan ekosistem iyi performans gösterdi: 31 sunucudan 30'u düzgün bir JSON-RPC veya araç hatası döndürdü. Zayıflık yalnızca başarı yolunda (success path) yoğunlaşıyor.

Öne çıkan skorlar

Sunucu bazındaki sonuçlar büyük farklılık gösterdi. git-mcp-server %18 zorunlu kılınabilir oranla en iyi skoru aldı. Hugging Face'in uzak sunucusu %12'ye ulaştı ve zorunlu kılınabilir schemaya sahip tek markalı uzak uç nokta oldu. Dosya sistemi referans sunucusu %7 başardı. Öteki uçta, everything referans sunucusu, Microsoft Learn, DeepWiki, Playwright ve desktop-commander %0 skor aldı; son ikisi hiç schema tanımlamadıkları için. Yazar, örneklem 18 sunucudan 31'e büyürken geçiş oranının %2 ile %3 arasında sabit kaldığını bildiriyor; bu da sonucun küçük örneklem kaynaklı bir sapma olmadığını gösteriyor.

Gönderide öne çıkan yapısal bir neden de şu: MCP için baskın Python SDK olarak tanımlanan FastMCP'nin varsayılan davranışı, bir aracın dönüş değerini tek bir string içeren jenerik bir obje olarak otomatik sarmalıyor. Böyle bir schema neredeyse her çıktıyı doğrular ve varsayılanı koruyan her sunucu bu zayıflığı miras alır.

Neden önemli

Agent iş akışları routinely bir aracın çıktısını, aracı sonucu inceleyen bir insan olmadan doğrudan bir sonraki araca besler. "Transport başarılı oldu" ile "payload gerçekten doğru" arasındaki tek otomatik kontrol noktası schema doğrulamasıdır. Schemalar anlamsız olduğunda, yarım bir JSON dokümanı veya başarısız bir sorguda başarı işareti gibi kesik veya sessizce hatalı bir yanıt, sorgusuz sualsiz bir sonraki adıma akar.

Yazar bunu, bir sunucunun suistimal edilip edilemediğini soran mcp-scan gibi güvenlik denetim araçlarından dikkatle ayırıyor. Bu çalışma ters soruyu soruyor: bir sunucunun normal çalışırken sonuçlarına güvenilip güvenilemeyeceği. Belirtmeye değer uyarılar var — bu tek başına kendi kendine yayımlanmış bir çalışma ve yazarı, metodolojinin çevresinde kurulmuş açık kaynak aracın geliştiricisi. Ama belgelediği hata modu mekanik olarak kontrol edilebilir: mcp-drill, Apache-2.0 lisanslı, pip ile kurulabilir ve bir GitHub Action aracılığıyla CI kapısı olarak dahil, herhangi bir yerel veya uzak sunucuyu tarayabilir.

Çalışma neyi öneriyor

Sunucu yazarlarına yalnızca şekilleri değil değerleri de kısıtlamaları tavsiye ediliyor: bir schemanın kötü verileri reddetmesini sağlayan şeyler enum'lar, regex pattern'leri, formatlar ve sayısal sınırlardır. additionalProperties'i false olarak ayarlamak yardımcı olur ama tek başına yeterli değildir, çünkü bozuk bir string yine de string olarak geçer. Araç tüketicileri, bir outputSchema'nın varlığını tek başına bir güvenlik özelliği olarak görmemeli ve sonuçları akışın aşağısında semantik olarak doğrulamalıdır. Ve MCP entegrasyonlarını inceleyen herkes özellikle zorunlu kılınabilirlik (enforceability) hakkında sormalı, çünkü otomatik üretilen schemalar kapsama sayılarını %100'e doğru iterken yanlış cevapları yakalamakta pek bir şey yapmaz.

  • #mcp
  • #ai-agents
  • #testing
  • #open-source
  • #developer-tools

İlgili yazılar