Şimdi yükleniyor

MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?

MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?

Geçen ay bir müşteride, AI ajanının sadece metin döndürmesi yetmedi; kullanıcıya küçük bir panel, birkaç buton ve kontrollü bir kopyala-yapıştır alanı da lazımdı. Tam orada MCP Apps konusu açıldı. İlk bakışta, “birkaç satırla app olur mu yahu?” dedim. Sonra Azure Functions’ın yeni fluent yaklaşımı devreye girince işin rengi baya değişti.

İlginç olan şu ki, Ben bu tarz işlere hep iki açıdan bakarım: biri mimarı gözü, diğeri operasyon gözü. Mimarı tarafta temiz mi, sade mi? Operasyon tarafında ekip yarın sabah bunu debug edebilecek mi? MCP Apps için gelen yeni Fluent API ikisine de fena değil cevap veriyor. Özellikle.NET isolated worker kullanan ekiplerde, o protocol detayıyla boğuşmadan ilerlemek baya rahatlatıcı oluyor.

Peki neden?

Mesele aslında ne?

Şunu söyleyeyim, MCP’yi çoğu kişi “AI araç çağırma protokolü” diye özetliyor, ama işin aslı biraz daha geniş (bu beni çok şaşırttı). Artık sadece text output veren tool’lardan bahsetmiyoruz; UI gösterebilen, statik dosya servis eden, güvenlik politikasını sıkı tutan araçlar da var. Yanı basitçe söyleyeyim: eskiden komut satırı gibiydi, şimdi küçük bir mini uygulama katmanı ekleniyor. Evet.

Bu yeni yaklaşım bana 2019’da kendi lab ortamımda denediğim bazı workflow’ları hatırlattı. O zamanlar Azure Functions ile kullanıcıya HTML döndürmeye çalışırken her şeyi elle bağlardık; mime type ayrı dertti, metadata ayrı dertti, güvenlik politikası ayrı dertti… Şimdi Fluent API bunların çoğunu senin yerine toparlıyor (buna dikkat edin). İyi tarafı bu. Bu ne anlama geliyor? Kötü tarafı da şu: soyutlama arttıkça alttaki mekanizmayı unutursan, hata ayıklarken biraz terliyorsun.

Tool’dan app’e geçmek neden önemli?

Çünkü her AI aracını aynı kefeye koymak pek doğru değil. Bazen sadece JSON dönersin, biter. Bazen kullanıcıya bir form gösterirsin, clipboard erişimi istersin ya da belirli kaynaklara izin verirsin; işte MCP Apps burada devreye giriyor ve tool’u küçük bir uygulamaya çeviriyor — itiraf edeyim, beklentimin üstündeydi —. Peki neden?

Logosoft’ta geçen sene bir finans kuruluşu için yaptığımız PoC’de benzer bir ihtiyaç vardı: model doğru cevabı veriyordu. Kullanıcının karar vermesi için görsel kanıt gerekiyordu. Salt metin yetmediği anda insanlar “tamam ama bunu nasıl doğrulayacağım?” diye soruyor. UI olan tool tam burada işe yarıyor.

MCP App fikri güzel çünkü AI aracını yalnızca cevap veren bir kutu olmaktan çıkarıp kontrollü bir deneyime dönüştürüyor; ama bunu yaparken güvenliği gevşetirseniz iş ters teper.

Fluent API neyi sadeleştiriyor?

Aslında — hayır dur, daha doğrusu, İşin can alıcı kısmı burada. Normalde MCP spec tarafında resource endpoint, ui:// URI’si, özel mime type ve _meta.ui gibi parçalar var. Bunların her biri mantıklı şeyler; sorun şu ki hepsini elle kurmak ekipleri yoruyor. Hele hızlı iterasyon yapan ürün takımlarında bu tür protocol detayları bazen gereksiz sürtünme yaratıyor.

Ve işler burada ilginçleşiyor. Daha fazla bilgi için GitHub Code Scanning’de Toplu Düzeltme: PR’lar Hızlandı yazımıza bakabilirsiniz.

Fluent API bu koordinasyonu üstleniyor. Sen “bu tool app gibi davransın” diyorsun; gerisini extension hallediyor. Synthetic resource function oluşturuyor, doğru mime type’ı atıyor ve view ile tool arasındaki bağlantıyı kuruyor. Bak şimdi… normalde insanın üç dosyada yapacağı işi tek akışta toplamak ufak görünüyor ama pratikte baya zaman kazandırıyor.

Birkaç satır kodla neler geliyor?

Aşağıdaki yapı kaba hatlarıyla fikri anlatıyor: Daha fazla bilgi için ASP.NET Core 2.3 İçin Saat İşliyor: Ne Yapmalı? yazımıza bakabilirsiniz.

builder.Services.AddAzureFunctionsWorker()
.AddMcp()
.AddMcpApp("hello-app", app =>
{
app.WithView("wwwroot/hello.html");
app.WithPermissions(permissions => permissions.AllowClipboard());
app.WithCsp(csp => csp
.AllowSelf()
.AllowConnect("https://api.contoso.com"));
});

Tabii gerçek dünyada bunun etrafına auth katmanı, logging ve policy kontrolü de koyuyorsun. Sadece örnek olsun diye yazdım; yoksa üretimde “copy-paste ettim oldu” kafası genelde kısa sürüyor… sonra gece alarm çalıyor.

💡 Bilgi: Fluent API’nın en büyük faydası protokol ayrıntısını görünmez hâle getirmesi değil sadece; aynı zamanda ekip içi standartlaşmayı da kolaylaştırmasıdır. Her geliştirici kendi kafasına göre metadata dizmesin diye güzel bir zemin sunuyor.

Güvenlik kısmı boş geçilmiyor

E tabii en can alıcı yer burası. UI açıyorsun diye her şeyi serbest bırakamazsın. Clipboard erişimi mesela çok hassas; dışarıdan masum görünür ama kurumsal ortamda veri sızıntısına kapı aralayabilir (bizzat test ettim). CSP işe zaten bildiğimiz hikâye: hangi kaynak yüklenebilir, hangi domain’e çıkılabilir, ne engellenecek… bunları sıkı tutmazsan iş büyür. SQL Yazarken İki Dünyayı Birleştiren Küçük Ama Güçlü Hamle yazımızda bu konuya da değinmiştik.

2024 başında bir telekom müşterisinde yaptığımız değerlendirmede şunu net gördüm: geliştirici ekip hız istiyor, güvenlik ekibi fren istiyor. İkisini barıştırmanın yolu “her şeyi yasakla” ya da “hepsine izin ver” değil; ince ayar yapmak. MCP Apps tam burada işe yarayabilir çünkü permission ve policy katmanını tool’un yanında tanımlatıyor.

Konu Klasik Tool MCP App
Kullanıcı arayüzü Yok veya harici Dahili view desteği var
Statik dosyalar Ayrı servis gerekir Aynı yapı içinde taşınabilir
CSP / izinler Dışarıda yönetilir Tool ile birlikte tanımlanabilir
Ekip hızı Daha fazla el işi Daha az tekrar eden kurulum
Sürtünme noktası Daha yüksek Daha düşük ama soyutlama var

Küçük startup ile enterprise arasında fark ne?

Küçük startup tarafında bu özellik resmen ilaç gibi gelebilir çünkü ekip azdır, süre kısadır. Herkes aynı anda hem backend hem frontend hem DevOps bakıyordur (evet o klasik durum). Bir-iki gün kazanmak bile önemli.

Enterprise tarafta işe başka dertler var: onay süreçleri uzun sürer, security review ağırdır, uyumluluk isterler… Bu yüzden Fluent API’nın sağladığı standart yapı değerli olabilir ama yine de preview olmasını hafife almamak lazım. Copilot Code Review Metrikleri: Aktif mi Pasif mi? yazımızda bu konuya da değinmiştik.

Neden preview olduğu halde dikkat çekici?

Açıkçası preview olması beni biraz temkinli yaptı — haklı olarak yaptı yanı. Çünkü stabil olmayan API’ye dayalı mimarı kurmak istemezsin. Ama Microsoft’un burada verdiği sinyal net: yön belli oldu ve ekip geri bildirim toplayarak bunu oturtmak istiyor. Bu konuyla ilgili Azure SDK’da Node.js 20 Desteği Bitiyor: Hazır mısınız? yazımıza da göz atmanızı tavsiye ederim.

Bak şimdi, Bence en iyi kullanım şekli şimdilik pilot projeler veya internal tooling senaryoları olacak gibi dürüyor. Mesela Azure Functions üzerinde çalışan operasyon — itiraz edebilirsiniz tabii — paneli benzeri araçlar için ideal olabilir. 2025’in başlarında AZ-305’e hazırlanırken benzer tasarım sorularını çok düşünmüştüm: hizmeti basitleştirirken kontrolü kaybetmemek… işte burada da aynı mantık var.

Beni heyecanlandıran şey ne?

MCP spektrumunda asıl zor olan şey yalnızca teknik entegrasyon değil; standardizasyonu korurken geliştirici deneyimini düşürmemekti.
Neyse, fluent API bu çizgide iyi gidiyor.
Ama dürüst olayım,
henüz ham tarafları olabilir.
Hele bir de dokümantasyon derinleşmeden ekiplerin yanlış beklentiye girmesi mümkün (evet, doğru duydunuz)

Neyse uzatmayalım:
iyi haber şu ki artık “tool + view + policy” üçlüsü için daha temiz bir başlangıç var.
Kötü haber işe şu:
soyutlama arttıkça platform bağımlılığı hissi de artabiliyor.
Bunu görmezden gelirsek kendimizi kandırmış oluruz.

Sahada nasıl konumlandırırım?

Ben olsam bunu doğrudan müşteri yüzlü hayatı uygulamada ilk gün koymam.
Önce destekleyici senaryolarda denerim:
iç operasyon ekranları,
AI destekli admin paneller,
kontrollü aksiyon ekranları…
Bir süredir Copilot Code Review metrikleriyle uğraşan ekiplerde gördüğüm şey şu:
görselleştirme varsa kabul daha hızlı oluyor.
İnsanlar ne olduğunu görüyor çünkü.

  • Ne zaman mantıklı?: Kullanıcı etkileşimi olan AI araçlarında. — ciddi fark yaratıyor
  • Ne zaman temkinli olmalı?: Regülasyonlu sektörlerde ilk üretim yayını öncesi genelde inceleme gerekirken. — ciddi fark yaratıyor
  • Ne zaman fazla gelir?: Sadece düz metin dönen basit otomasyonlarda. (bu kritik)

Eğer mevcut sisteminiz Azure Functions üzerine kuruluysa geçiş eşiği düşük görünüyor.
Bu hoşuma gitti.
Ama şu da var:
UI tarafına fazla güvenip backend validasyonu zayıflatırsanız,
gösterişli ama kırılgan bir yapı elde edersiniz.
Kağıt üstünde iyi,
pratikte göreceğiz artık!

Sıkça Sorulan Sorular

MCP App nedir?

MCP App, normal bir MCP aracının UI view, statik asset ve güvenlik politikalarıyla birlikte çalışan uygulama hâline gelmiş versiyonudur. Yanı sadece çıktı veren araç değil, kontrollü etkileşim sunan küçük bir uygulama gibi davranır.

Fluent API kullanmak zorunlu mu?

Zorunlu değil ama işleri belirgin biçimde sadeleştiriyor.
En çok da.NET isolated worker kullanan Azure Functions projelerinde protokol detaylarını elle bağlamak yerine daha temiz ilerliyorsunuz.CSP neden önemli?

CSP hangi kaynakların yüklenebileceğini sınırlar.
Bu şekilde kötü niyetli ya da yanlış konfigüre edilmiş içerikler uygulamanın içine sızamaz.
Kurumsal ortamlarda bence olmazsa olmazlardan biri bu.MCP Apps production için hazır mı?

Paket preview olduğu için temkinli olmak lazım.
Pilot ve iç kullanım senaryolarında denenebilir ama kritik production sistemlerinde stabil sürümü beklemek daha doğru olabilir.
Ben şahsen önce lab ortamında ölçer biçerim demeyi tercih ederim.Kaynaklar ve İleri Okuma

Microsoft Azure SDK Blog Yazısı — Orijinal DuyuruAzure Functions Resmî DokümantasyonuModel Context Protocol Resmî SitesiASP.NET Core ve.NET DI Rehberi

İçeriği paylaş:

📬 Bu yazıyı faydalı buldunuz mu?

Azure, DevOps ve bulut teknolojileri hakkında güncel içerikler için beni takip edin!

4 comments

comments user
Serkan D.

Azure Functions’ın bu Fluent API yaklaşımını çok merak ettim, özellikle buton ve panel gibi UI elementlerini MCP üzerinden bu kadar az kodla yönetmek gerçekten işleri kolaylaştırıyor mu acaba? Deneyen biri varsa deneyimlerini duymak isterim.

comments user
Oğuz L.

Azure Functions tarafında Fluent API ile bu tür UI ihtiyaçlarını karşılamak gerçekten işleri kolaylaştırıyor mu merak ettim, daha önce hep manuel yollarla uğraşmak zorunda kaldım. Pratikte nasıl bir fark yarattığını gösteren küçük bir örnek olsa çok daha iyi anlaşılırdı.

comments user
Koray M.

Azure Functions tarafında Fluent API’nin bu kadar işi kolaylaştıracağını beklemiyordum açıkçası. Peki gerçek projelerde buton ve panel gibi UI bileşenlerini entegre ederken performans tarafında sıkıntı yaşıyor musunuz, deneyiminiz nasıl?

comments user
Aslı S.

Azure Functions tarafında Fluent API’nin bu kadar işleri kolaylaştırdığını bilmiyordum açıkçası. Şimdiye kadar MCP entegrasyonlarında UI tarafı hep can sıkıcı bir yük gibi gelirdi, buton ve panel işleri özellikle. Bir projeye uygulamayı deneyeceğim, bakalım sahada gerçekten söylendiği kadar mı akıcı.

Yorum gönder

Microsoft Azure Çözüm Uzmanı | Bulut Bilişim, Yapay Zekâ, DevOps ve Kurumsal Güvenlik alanlarında 15+ yıl deneyim. Azure, Kubernetes, AI/ML ve modern altyapı mimarileri üzerine yazılar yazıyorum.

SİZİN İÇİN DERLEDİK

📬 Haftalık Bülten

Azure, DevOps ve Yapay Zeka dünyasındaki son gelişmeleri doğrudan e-postanıza alın.