MCP Tool Çağrılarını .NET’te Yönetmek: AGT ile Pratik Yol
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.
📋 İçindekiler
-
The sanitizer ş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:
) - 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 Monitör’a bağlamak çok rahat oluyor.Bir de KVKK boyutu var.T ool dönüşünde TC kimlik numarası,I BAN,t elefon gibi alanlar geçiyorsa,bunların maskelenmesi lazım.A GT’nın sanitizer’ı default olarak bu pattern’leri tanımıyor — Türkçe/Türkiye spesifik regex’ler eklemek gerekiyor.B en kendi
TurkishPiiPatternssınıfımı yazdım,paylaşmaya da niyetim var ileride.Startup mı,E nterprise mı?
Küçük bir ekipseniz ve hızlı POC çıkarıyorsanız,A GT’nın tamamını kullanmak overkill olabilir.
McpSecurityScannerveMcpResponseSanitizerile başlayın,sadece bunlar bile saldırı yüzeyini ciddi azaltır.T am policy engine’e geçmek zaman alır.Enterprise tarafındaysanız tablo farklı.
G overnanceKernel‘i ortak bir paket olarak iç NuGet feed’inize koyun,büyük çoğunluk agent ekiplerinizin kullanmasını zorunlu tutun.A2A v1 ile.NET’te Çapraz Platform Agent İletişimi
ile birlikte kullanırsanız,a gent-to-agent iletişimde de aynı politika katmanı geçerli olur.P ratik Başlangıç Rehberi
Tamam,p eki nereden başlayacağız?B enim önerim şu sırayla:
d otnet add package Microsoft.AgentGovernance
ile paketi ekleyin — test projesinde,p roduction’da değil önce.- E mevcut MCP sunucularınızın tool tanımlarını
M cpSecurityScanner
‘dan geçirin.R isk score’l ara bakın,şaşıracaksınız.
(bence en önemlisi) - E n riskli tool ‘lar için(delete,s end,t ransfer içerenler)Y AML policy yazın,m anual onay zorunlu kılın.
(bu kritik) - S anitizer ‘ı L LM’e dönüş yolu üzerine koyun.B urada false positive olabilir,b ir hafta gözlemleyin.
I lk haftada bir hayal kırıklığım öldü açıkçası:d ökümantasyon hâlâ ham,b azı edge case ‘ler için kod okumak gerekiyor.B u konuda
GPT-5.5 ve Microsoft Foundry : Kurumsal AI Artık Ciddi
yazısında bahsettiğim Foundry tarafının tersine,A GT henüz “şirket içi sample”lar seviyesinde.A ma yön doğru.B iraz 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
GovernanceKernelve policy engine aslında oldukça generic — yanı 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. - Dahili prompt injection blokları (
Gökhan İ.
Prompt enjeksiyonu meselesini çoğu zaman model seviyesinde düşünüyoruz ama governance katmanının ne kadar kritik olduğunu bu yazı güzel özetlemiş. AGT’yi daha önce duymamıştım, .NET tarafında deneyen var mı acaba? Bu arada kontrolü kaybetmeme konusuna ilginiz varsa şu yazı da benzer bir perspektif sunuyor: https://www.askinkilic.com.tr/microsoft-sovereign-private-cloud-azure-local-ile-olcek-buyu/
Tuğçe R.
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.
Yorumlar kapalı.







2 comments