Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

Model Context Protocol (MCP) Nedir? Derinlemesine Değerlendirelim…

Merhaba,

Bu içeriğimizde, yapay zeka modellerinin context’lerini yönetmek ve işlemek için tasarlanmış bir protokol olan Model Context Protocol (MCP)‘ü inceleyecek, önceki içeriklerimizde değerlendirdiğimiz Semantic Kernel‘la mukayesesini gerçekleştirecek ve pratik dokunuşlarla bu protokolü deneyimleyeceğiz. O halde fazla uzatmaksızın buyurun başlayalım…

Model Context Protocol (MCP) Nedir?

Model Context Protocol (MCP), bir AI modeliyle gerçekleştirilen görev ya da etkileşim sürecinde ihtiyaç duyulan bilgileri organize etmek, saklamak ve akıllıca kullanmak için kullanılan bir protokoldür. Bu protokol sayesinde, sohbet botları ya da dil modelleri gibi yapay zeka modellerinin bağlamı rahatlıkla yönetilebilmektedir.

Bağlamdan(Context) kastedilen nedir?
Bağlam(context), modelin karar vermesine yardımcı olan tüm geçici bilgileri ifade etmektedir. Misal olarak; sohbet geçmişi, kullanıcı tercihleri, işlem durumları ve bunlar gibi ekstradan harici veriler o an ki yapay zekayla olan iletişimin verisel havuzunu yani bir başka deyişle bağlamını oluşturmaktadır.

Bağlamı yönetmekten kastedilen nedir?
Bağlamı yönetmekten kastedilen ise bu bilgilerin verimli, tutarlı ve güvenli bir şekilde işlenmesini sağlamaktır. Biraz daha detaylandırmamız gerekirse eğer; AI modeliyle kullanıcı etkileşimi sırasında kredi kartı numarası, şifre vs. gibi gereksiz veya hassas bilgilerin cereyan etmesi söz konusu olabilir. İşte böyle bir durumda bağlama müdahale ederek filtreleme gerçekleştirebilir ve istenmeyen bilgileri ayıklayabilirsiniz. Benzer mantıkla, modelin belirli bir süre veya görev boyunca bazı bilgileri hatırlamasını isteyebilir ya da iletişim sürecindeki bilgileri JSON, XML vs. gibi AI modelinin anlayabileceği standartta bir formata dönüştürebilir ve verisel yapılandırmada bulunabilirsiniz. Tüm bunların dışında, uzun bağlamları sıkıştırarak modelin işlem sınırlarını aşmasını engelleyerek token limitini optimize edebilir ve işlenen bir bağlamı farklı modeller veya sistemler arasında taşınabilir hale getirebilirsiniz.

Bağlam yönetiminde MCP’nin rolü nedir?
MCP, farklı sistemlerin context’i aynı şekilde anlamasını sağlayıp standartlaştırarak bu süreçleri daha kontrol edilebilir hale getirmektedir. Haliyle yapay zeka açısından insan gibi akıllı davranması için gerekli olan geçici hafıza ve durum bilgisi gibi yetenekleri daha efektif bir şekilde organize etmemizi sağlayan bir klavuz görevi görmektedir.

MCP’nin Temel İşlevleri Nelerdir?

Yukarıdaki satırlardan yola çıkarak MCP’nin bağlam yönetimi, veri yapısı standardizasyonu, güvenlik/kontrol işlemleri ve çoklu model entegrasyonu olmak üzere dört temel işlevi olduğunu söyleyebiliriz;

  • Bağlam Yönetimi (Context Management)
    AI modelinin, işlev sürecinde hatırladığı önceki mesajlar, kullanıcı tercihleri, geçmiş etkileşimler vs. gibi bilgileri düzenler ve böylece uzun diyaloglarda bağlam kaybını önlemeye yardımcı olur.
  • Veri Yapısı Standardizasyonu
    İletişim sürecinde girdi ve çıktıların JSON ya da XML gibi belirli bir formatta yapılandırmasını sağlar ve böylece farklı modeller ve sistemler arasında uyumluluğu artırır.
  • Güvenlik ve Kontrol
    Modelin hassas bilgileri sızdırmasını engellemek için filtreleme imkanı sunar.
  • Çoklu Model Entegrasyonu
    Birden fazla AI modelinin aynı bağlamı paylaşarak işbirliği yapmasını kolaylaştırır.

MCP, henüz yaygın bir standart olmasa da, AI sistemlerinde bağlam yönetimini iyileştirmek için geliştirilen yenilikçi bir yaklaşımdır.

Semantic Kernel (SK) vs Model Context Protocol (MCP)

MCP deyince akla Semantic Kernel geliyor olabilir. Evet, her ikisi de yapay zeka sistemlerinde bağlam yönetimi ve işlemine yönelik araçlar olsa da esasında farklı amaç ve kapsamlar doğrultusunda geliştirilmiş yapılardır. Şimdi gelin her ikisinin mukayesesini yaparak ilerleyelim;

Semantic Kernel (SK) Model Context Protocol (MCP)
Microsoft tarafından geliştirilmiştir. .NET ekosistemine AI modellerini entegre etmek için kullanılan bir araç takımıdır. Bağlamın standardize edilmesi ve yönetilmesi için üretilmiş bir protokoldür.
İkisi de AI modelle olan iletişim sürecindeki bağlam yönetimiyle ilgilenir.
Çoklu model entegrasyonunu destekler.
Yapay zeka uygulamalarında tutarlılık ve verimlilik sağlamayı hedefler.
Amaç

Uygulama ve ürün odaklı yapay zeka desteğini amaç edinir.

Amaç

Yapay zekayla olan iletişim sürecindeki bağlamın kontrolünü amaç edinir.

AI tabanlı uygulama geliştirilirken kullanılır. Farklı AI modelleri arasında bir çalışma yapılacaksa bağlam paylaşımı, veri güvenliği ve standardizasyon amaçlı tercih edilebilir.
Özet

Bir yapı iskelesidir.
Developer odaklıdır.

Özet

İletişim protokolüdür.
Mimari bir standart sunar.

MCP, LLM’lerin üzerine agent’lar ve karmaşık iş akışları oluşturmamıza yardımcı olan bir protokoldür.

MCP Hangi Alanlarda ya da Gereksinimlerde Tercih Edilmelidir?

MCP, yapısı itibariyle bağlam yönetiminin kritik arz ettiği, standartlaştırılmış ve güvenli bir iletişim protokolüne ihtiyaç duyulan tüm senaryolarda tercih edilebilir. Bunu daha net bir şekilde ifade edebilmek için MCP’nin öne çıktığı kullanım alanlarını ve gereksinim durumlarını şöyle sıralayabiliriz;

  • Çoklu Model Entegrasyonu Gerektiren Sistemler
    Bir LLM ile birlikte birer görsel model ve veri analiz modellerinin aynı anda kullanılacağı bir uygulama olduğunu düşünelim. Böyle farklı AI modellerinin aynı bağlamı paylaşması gerektiren durumlarda MCP’den istifade edebilir ve çoklu modeller arası işbirliği sağlayabiliriz. Hocam burada MCP ne gibi rol üstlenebilir ki? şeklinde sorunuzu duyar gibiyim. Misal olarak MCP bu tarz bir senaryoda, bağlamı standardize ederek JSON formatı üzerinden modeller arası veri kaybını önleyebilir.

    Örnek Durum
    Müşteri hizmeti görevi gören bir chatbot, kullanıcının geçmiş sorgularını bir veritabanı modeliyle paylaşırken MCP formatından istifade edebilir.

  • Uzun Diyalog Zincirlerinde Bağlam Tutarlılığı Gerektiği Durumlar
    Terapist botları, teknik destek gibi uzun konuşmaların olduğu çalışmalarda AI modelinin önceki mesajları unutmaması gerekmektedir. Bu tarz durumlarda geniş hacimli bağlamlar AI modelini zorlayabilir ya da maliyeti artırabilir. İşte bu taktirde MCP ile bağlamı sıkıştırabilir veya yapılandırılmış bir formata büründürebilir ve böylece performansı optimize edebiliriz.
  • Güvenlik ve Veri Kontrolünün Öncelikli Olduğu Alanlar
    Hasta kayıtları, bankacılık sorguları gibi tıbbi, finansal yahut gizli verilerin söz konusu olduğu diğer sistemlerde MCP aracılığıyla bağlamdaki hassas veriler otomatik filtrelenebilir ve böylece daha güvenli bir AI hizmeti sağlanabilir.
  • Edge Cihazların veya Düşük Kaynaklı Ortamların Olduğu Durumlar
    IoT cihazlarında veya yerel(local) ortamlarda kullanılan AI modellerinde bağlamın hafif bir formatta iletilmesi gerekmektedir. Bu durumlarda MCP sayesinde bağlamdan gereksiz meta veriler çıkarılarak minimize edilebilmekte ya da binary protobuf formatında serileştirmeler neticesinde sıkıştırmalar yapılarak yüksek performans elde edilebilmektedir.
  • Standartlaştırılmış API İletişiminin Söz Konusu Olduğu Durumlar
    Özellikle farklı ekipler tarafından geliştirilen mikroservislerin AI modelleriyle iletişim kurması gerektiği durumlarda, MCP sayesinde tüm servislerin anlayacağı bir bağlam şeması oluşturulabilir.
  • Gerçek Zamanlı(Real-Time) Sistemlerde
    Sohbet sistemleri ya da oyunlar gibi düşük gecikmeli uygulamalarda bağlamın hızla iletilebilmesi gerekmektedir. Bu tarz durumlarda MCP, binary serialization gibi yöntemlerle veri boyutunu küçültebilir.

Yani anlaşılan; yazılımlarda AI modellerinin kullanım süreçlerinde farklı modeller/sistemler arasında bağlam paylaşımı gerekiyorsa (modülerlik), veri sızıntısı riski yüksekse (güvenlik), bağlamın optimize edilmesi gereken düşük kaynaklı ortamlarda çalışılıyorsa (performans) ve distributed ekiplerin uyumlu çalışması için ortak bir protokol gerekiyorsa (standart ihtiyaçlar) işte bu şartlarda MCP’den istifade edilebilmektedir.

MCP’nin Genel Mimarisi Nasıldır?

Şimdi de MCP’nin genel mimarisini ele alalım. MCP özünde, bir ana uygulamanın(host application) birden fazla sunucuya(server) bağlanabildiği bir istemci-sunucu mimarisini(client-server architecture) takip etmektedir.Model Context Protocol (MCP) Nedir? Derinlemesine Değerlendirelim...Yukarıdaki görselden yola çıkarak MCP’nin çalışma mimarisini inceleyebilirsiniz. Buradaki aktörleri daha da netleştirmemiz gerekirse eğer;

  • MCP Hosts : MCP aracılığıyla verilere erişmek isteyen Claude Desktop, IDE’ler veya AI araçları gibi programlara karşılık gelmektedir.
  • MCP Clients : Sunucularla birebir (1:1) bağlantılar sağlayan protokol istemcileridir.
  • MCP Servers : Her biri standartlaştırılmış MCP aracılığıyla belirli yetenekleri ortaya koyan lightweight programlardır.
  • Local Data Sources : MCP sunucularının güvenli bir şekilde erişebileceği bilgisayarınızdaki dosyalar, veritabanları ve servislerdir.
  • Remote Services : MCP sunucularının bağlanabileceği, internet üzerinden API’ler aracılığıyla erişilebilen harici sistemlerdir.

şeklinde açıklayabiliriz.

Örnek Senaryo
MCP mimarisindeki bu terimleri, bir hastane otomasyon sistemi üzerinden somutlaştırırsak eğer şöyle bir senaryo üzerinden seyirde bulunabiliriz : Bir hastanede, herhangi bir hastanın yapay zeka asistanıyla (başka bir deyişle doktor botuyla) konuştuğunu varsayalım ve geçmiş tedavi bilgileri ve tahlil sonuçlarını konuşmanın bağlamında tutulması gereken veri olarak yorumlayalım.

Her şeyden önce bu hastanenin bağlamın işleneceği, depolanacağı ve yönetileceği bir veri merkezi olması gerekecektir. Bu MCP Host‘a karşılık gelen merkezi birim yani ana sunucudur. Bu sunucuda; hasta bilgileri şifrelenerek güvenlik kuralları uygulanacak ve bir yandan da eski tahlil verileri tutularak, özetlenecektir. Bunların dışında diğer bileşenler arasında trafiği de bu sunucu yönetecektir.

Hastanenin, hastalarla iletişim kuran yapay zeka asistanı (yani doktor botu) ise MCP Client olacaktır. Bu bir hasta mobil uygulaması olabileceği gibi herhangi bir laboratuvar AI görevi gören uygulamada olabilir. Bu client, host’tan bağlamı çekecek ve hastaya dair bilgi sürecini yürütecektir. Yani MCP Host‘a bağlanarak bağlamı kullanan uygulamalar ve yapay zekalar MCP Client olarak nitelendirilmektedir. Misal olarak; ‘hastanın alerjisi var mı?’ sorusunun cevabını host’tan elde ettiği bağlamdan edinecektir. Bir yandan da bağlama hastayla olan etkileşim neticesinde yeni veriler ekleyebilecektir. Buna da örnek vermemiz gerekirse eğer gerçekleştirilen muayene neticesinde yapılan teşhisin ‘Yüksek CPR’ olduğunu düşünürsek eğer bu veri host’ta ki bağlama eklenecektir.

Tabi bu süreçte, doktor botuna hastaya dair bilgileri sunabilmek için client ile hastanenin ara birimleri arasında bir köprü kurulması gerekecektir. İşte bunun için MCP Server olarak nitelendirdiğimiz hastanenin acil servis, laboratuvar gibi bölümlerindeki yerel sunucuları devreye girecektir. Bu server’lar üzerinde, laboratuvar sonuçları standart formata çevrilerek veri ön işlenmekte ve hastaya dair local’de ki ya da remote’da ki kaynaklara erişim gösterilip güncel veriler elde edilmektedir. Ayrıca acil servisteki yoğun istekler dengelenerek yük dağıtımı gibi ekstradan manevralar da yapılabilmektedir.

Nihai olarak; hastanın alerjileri, geçmiş ameliyatları, kronik rahatsızlıkları vs. gibi tüm tıbbi geçmişi ve kan tahlilleri, MR görüntüleri gibi de resmi laboratuvar sonuçları hastane veri merkezinde (host) tutulur. Ancak muayene sırasında alınan geçici notlar ise veri merkezinden ziyade o anki muayeneye yardımcı aracı olan Local Data Source‘da tutulur. Böylece, doktor botuyla hasta arasındaki anlık iletişimde hızlı cevabın üretilebilmesi için sürekli veri merkezine sorgu atmaktansa server’da ki local veri kaynakları kullanılır.

Diyagram Üzerinden MCP Mimarisini Özetleyelim

Yukarıdaki satırlara alternatif olarak MCP’nin teknik boyutunu aşağıdaki diyagram üzerinden de izah etmeye çalışalım.

Model Context Protocol (MCP) Nedir? Derinlemesine Değerlendirelim...

MCP’nin teknik boyuttaki diyagramı…

Görüldüğü üzere MCP ile ilgili tüm kavramları bu diyagramda daha net bir şekilde ele almış bulunuyoruz. Detaylı bir şekilde incelemenizi tavsiye ediyorum.

Ayrıca MCP’nin akış mantığını da aşağıdaki diyagramdan inceleyebilirsiniz;

Model Context Protocol (MCP) Nedir Derinlemesine Değerlendirelim...

MCP’nin akış mantığı diyagramı…

MCP’yi Pratik Olarak İnceleyelim

Evet… Artık MCP’yi pratiksel olarak .NET ekosisteminde ele alabiliriz. Bunun için boş bir solution’da MCP.CLient ve MCP.Server isimlerinde iki adet proje oluşturalım ve aşağıdaki yönergeleri adım adım uygulayarak deneyimsel yolculuğumuza başlayalım.

İlk olarak MCP.Server projesine odaklanalım. Malum, bu projeyi MCP Server olarak tasarlarken bir yandan da içerisine belli başlı tool(araç) geliştirip ekliyor olacağız.

  • Adım 1 (MCP Server İçin Gerekli Kütüphanelerin Yüklenmesi)
    Her şeyden önce MCP Server için aşağıdaki kütüphanelerin yüklenmesi gerekmektedir;

    • Microsoft.Extensions.Hosting
      Console Application projesini uzun süreli arka plan işlemleri için kullanmak istediğimizde bize bir host sağlayan kütüphanedir. Uygulamaya bir yaşam döngüsü sağlarken bir yandan da dependency injection, konfigürasyon, logging vs. altyapısı sunmaktadır.
    • Serilog
      MCP Server, arka planda çalışacağı için MCP Host ve MCP Client’larla olan etkileşimler neticesinde hangi aksiyonların gerçekleştirildiğini tutacağımız detaylı log’lar üzerinden takip edeceğiz. Serilog, gelişmiş loglama için tercihimiz olacaktır.
    • Serilog.Sinks.Console
      Serilog tarafından atılan log’un bir yandan da Console’a çıktı vermesi için bu kütüphaneden istifade edeceğiz.
    • Serilog.Sinks.Debug
      Aynı şekilde kullandığımız Visual Studio IDE’sinin Debug penceresine log yazmak istiyorsak bu kütüphaneden istifade edeceğiz.
    • Serilog.Sinks.File
      En önemlisi de, uygulama arka planda çalışırken log’ların bir dosyaya yazılması olacaktır. Bunun için bu kütüphane elzemdir.
    • ModelContextProtocol
      Bu kütüphanede, içeriğimizin esas öznesi olan MCP’nin temel yapılandırma metotlarını barındırmaktadır.
  • Adım 2 (MCP Server’ın Temel Yapılandırmasında Bulunma)
    Kütüphaneleri yükledikten sonra aşağıdaki geliştirmede bulunarak MCP Server’ı yapılandıralım;

    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.Hosting;
    using Microsoft.Extensions.Logging;
    using Serilog;
    
    Log.Logger = new LoggerConfiguration()
        .MinimumLevel.Verbose()
        .WriteTo.File(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "logs", "MCP.Server.Log"))
        .WriteTo.Debug()
        .WriteTo.Console()
        .CreateLogger();
    
    Log.Information("Server başlatılıyor...");
    
    var builder = Host.CreateApplicationBuilder(args);
    builder.Logging.AddConsole(consoleLogOptions =>
    {
        consoleLogOptions.LogToStandardErrorThreshold = LogLevel.Trace;
    });
    
    builder.Services
        .AddMcpServer()
        .WithStdioServerTransport()
        .WithToolsFromAssembly();
    
    await builder.Build().RunAsync();
    

    Bu yapılandırmaya göz atarsak eğer; 6 ile 11. satır aralığında log’lama koşulları belirlenmekte ve uygulamanın Debug edildiği dizinde, ‘logs’ klasörü içerisindeki ‘MCP.Server.Log’ dosyasında log’lar tutulmaktadır. 15 ile 19. satır aralığında ise gerekli hosting çalışması yapılmakta ve 21 ile 24. satır aralığında da MCP için özel metotlar çağrılarak temel yapılandırma gerçekleştirilmektedir. Bu metotları izah etmemiz gerekirse eğer; AddMcpServer, MCP Server için gerekli olan servisleri IoC Container’a eklemekte ve böylece temel yapılandırmayı sağlanmaktadır. WithStdioServerTransport metodu ile oluşturulan bu MCP Server’ın standart I/O(stdio) üzerinden iletişim kurması sağlanmış olacaktır. WithToolsFromAssembly metoduyla ise bu uygulamanın bulunduğu assembly’de derlenmiş olan tüm MCP ile ilgili tool’ları otomatik olarak reflection(bknz : Derinlemesine Reflection) ile bulup sisteme dinamik olarak entegre etmektedir.

  • Adım 3 (MCP Server’a Tool Ekleme)
    MCP Server’a bir tool eklemek için aşağıdaki gibi bir tanımlamanın yapılması yeterlidir;

        [McpServerToolType]
        public static class EchoTool
        {
            [McpServerTool, Description("Girilen metni geri döndürür...")]
            public static string Echo(string message)
            {
                Log.Information("Echo tool'u çalıştırılıyor...");
    
                return $"Yankı : {message}";
            }
        }
    

    Dikkat ederseniz tool dediğimiz özünde bir sınıf içerisindeki normal metottur. Bu metodun tool olarak algılanabilmesi için, öncelikle McpServerToolType attribute’u ile işaretlenmiş bir sınıf içerisinde tanımlanması gerekmektedir. Bu attribute, ilgili sınıfın MCP Server tarafından WithToolsFromAssembly yapılandırması aracılığıyla taranacak tool’ların hangi sınıf altında olduğunu ifade edecektir. Sınıf içerisindeki metotlar ise esas/gerçek tool’ları ifade etmektedir ve McpServerTool attribute’u ile işaretlenmektedirler. Misal olarak yukarıdaki Echo metodu bizim için gerçek bir tool’dur. Tool’ları işaretlediğimiz bir diğer attribute olan Description attribute’u ise ilgili işlevlerin ne yaptığını client tarafından görüntülenebilir şekilde dokümantasyon amaçlı izah görevi görmektedir.

    Tool kavramını daha da netleştirebilmek için aşağıdaki ekstradan çalışmaya göz atabilirsiniz;

        [McpServerToolType]
        public static class CalculatorTool
        {
            [McpServerTool, Description("İki sayının toplamını döndürür...")]
            public static int Sum(int number1, int number2)
            {
                Log.Information($"'{number1}' ve '{number2}' değerleri toplanıyor...");
    
                return number1 + number2;
            }
    
            [McpServerTool, Description("İki sayının çarpımını döndürür...")]
            public static int Multiply(int number1, int number2)
            {
                Log.Information($"'{number1}' ve '{number2}' değerleri toplanıyor...");
    
                return number1 * number2;
            }
        }
    

MCP Server uygulaması için yapacağımız geliştirmeler bunlardan ibarettir. Bu minvalde istediğiniz kadar farklı işlevselliklere/tool sahip MCP Server oluşturabilirsiniz.

Şimdi sıra MCP Client projesine odaklanmaya gelmiştir. Bunun için aşağıdaki yönergelere sırasıyla devam edelim;

  • Adım 4 (MCP Client İçin Gerekli Kütüphanelerin Yüklenmesi)
    MCP Client için sadece ModelContextProtocol kütüphanesinin yüklenmesi yeterli olacaktır.
  • Adım 5 (Temel MCP Client Nesnesinin Yapılandırılması)
    MCP Client’ta en temel husus, MCP Server ile etkileşim kuracak bir client nesnesi oluşturmaktır. Bunun için aşağıdaki gibi McpClientFactory‘den istifade edebiliriz;

    IMcpClient client = await McpClientFactory.CreateAsync(serverConfig: new McpServerConfig()
    {
        Id = "MCPServer",
        Name = "MCP Server",
        TransportType = TransportTypes.StdIo,
        TransportOptions = new()
        {
            ["command"] = "C:\\*********\\Model_Context_Protocol_Example\\MCP.Server\\bin\\Debug\\net9.0\\MCP.Server.exe"
        }
    });
    

    Burada görüldüğü üzere McpServerConfig üzerinden MCP Server bilgileri verilen bir client nesnesi oluşturulmuştur. İşte bizler bu client nesnesini kullanarak ilgili MCP Server’dan tool’ları çekebilir ve çalıştırabiliriz. Bunun için bağlı olduğu MCP Server’dan aşağıdaki metot aracılığıyla mevcut olan tüm tool’ları talep edebilir;

    var tools = await client.ListToolsAsync();
    foreach (var tool in tools.Select((tool, index) => new { Tool = tool, Index = index }))
    {
        Console.WriteLine($"\tTool {tool.Index + 1} : {tool.Tool.Name} ({tool.Tool.Description})");
    }
    

    ve herhangi bir tool’u aşağıdaki gibi çalıştırabiliriz;

    var result = await client.CallToolAsync(
        "Echo",
        new Dictionary<string, object?>() { ["message"] = "Merhaba, naaptın müdür?" });
    
    Console.WriteLine($"Result : {result.Content.First(c => c.Type == "text").Text}");
    
  • Adım 6 (Test)
    Evet, geliştirdiğimiz bu çalışmada her iki projeyi de derleyip test edersek eğer nihai olarak aşağıdaki gibi bir neticeyle karşılaşacağız.
    Model Context Protocol (MCP) Nedir Derinlemesine Değerlendirelim...

    MCP Client uygulamasının neticesi…

    Görüldüğü üzere özel olarak geliştirdiğimiz MCP Client uygulaması, yine özel olarak geliştirdiğimiz ve belirli tool’ları barındıran MCP Server uygulamasına bağlanmakta, tüm tool’ları çekmekte ve Echo tool’unu çalıştırıp neticeyi console’a yansıtmaktadır.

    Ayrıca MCP Server içerisinde yapılandırdığımız log çıktılarına da göz atarsak eğer;Model Context Protocol (MCP) Nedir Derinlemesine Değerlendirelim...şeklinde süreci takip edebilmekteyiz.

Eee hoca! Peki bu çalışmada LLM nerede? diye sorduğunuzu duyar gibiyim… Elbette ki bizler, MCP Client’ta bir LLM çalışması yapacak ve bu client üzerinden LLM’e gönderilen prompt’ların içeriğine uygun olan tool’ları MCP Server’da tetikleyip, nihai cevabı LLM’den alıyor olacağız. Ama bu içeriğimizde baştan beri ortaya koymaya çalıştığımız husus, MCP’nin ilkeleri eşliğinde nasıl yapılandırıldığı olduğu için bu detayı hemen akabinde bir sonraki içeriğe bırakıyor olacağız.

Şimdi hazır sıcağı sıcağına test demişken, MCP Server’ları hızlıca test ve debug edebilmek için geliştirilmiş MCP Inspector aracını da inceleyelim istiyorum.

MCP Inspector Aracı İle MCP Server’ları Test Etme

MCP Inspector, yukarıdaki satırlarda bahsedildiği gibi MCP Server’ları test ve debug edebilmek için tasarlanmış etkileşimli bir test aracıdır. Bu araç ile geliştirilen MCP Server’lara istekler atılabilmekte, bu istekler neticesinde gelen yanıtlar değerlendirilebilmekte ve AI modeli ile MCP Server arasındaki etkileşim görselleştirilebilmektedir. Böylece bizler, bu araç sayesinde geliştirdiğimiz MCP Server’ları test edebilmek için illa bir MCP Client oluşturmak mecburiyetinde kalmamakta ve hızlıca test ve doğrulama işlemlerini gerçekleştirebilmekteyiz.

MCP Inspector’ı bilgisayara yükleyebilmek ve geliştirilen MCP Server’ı test edebilmek için MCP Server uygulamasının dizininde aşağıdaki talimatın verilmesi bu aracın yüklenip ayağa kaldırılması için yeterli olacaktır.

npx @modelcontextprotocol/inspector dotnet run

Model Context Protocol (MCP) Nedir Derinlemesine Değerlendirelim...Evet, yukarıdaki ekran alıntısından da anlaşılacağı üzere belirtilen talimatı çalıştırdıktan sonra tarayıcı üzerinden 127.0.0.1:6274 adresine istekte bulunarak ilgili aracı açabiliriz.Model Context Protocol (MCP) Nedir? Derinlemesine Değerlendirelim...Aracı kullanabilmek için de yukarıdaki görselde olduğu gibi önce Connect butonuna tıklayarak bulunulan dizindeki MCP Server’a bağlanılmalı, ardından Tools kısmındaki List Tools butonuna tıklayarak MCP Server’da ki tüm tool’lar talep edilmelidir. Bu aşamadan sonra istenilen tool’u seçerek testi gerçekleştirebilirsiniz.

İşte bu kadar 🙂

Evet, artık MCP ile ilgili temellere vakıf olduğumuza göre son olarak geliştirdiğimiz bir MCP Server’ı, AI Code Editor olan Cursor IDE’sinde nasıl kullanabileceğimize değinerek içeriğimizi noktalayalım.

Geliştirdiğimiz MCP Server’ı Cursor IDE’sinde Kullanalım

Model Context Protocol (MCP) Nedir Derinlemesine DeğerlendirelimBunun için yukarıdaki görselde olduğu gibi Cursor’ın sağ üst köşedeki ayarlar iconuna tıklayarak MCP sekmesine gelinmeli ve Add new global MCP server butonu aracılığıyla oluşturulan MCP Server uygulamasının dizini görseldeki gibi bildirilmelidir. Tabi bildirimin nasıl yapılacağını daha rahat inceleyebilmeniz için görseldeki yapılandırmayı aşağıya almakta fayda görmekteyim;

{
    "mcpServers": {
        "MCPServer": {
            "command": "cmd",
            "args": [
                "/c",
                "C:\\*********\\Model_Context_Protocol_Example\\MCP.Server\\bin\\Debug\\net9.0\\MCP.Server.exe"
            ]
        }
    }
}

Bu yapılandırmadan sonra Cursor’a MCP Server eklenmekte ve aşağıdaki görselden de net görüleceği üzere bu server’ın tool’ları otomatik olarak algılanarak, listelenmektedir.
Model Context Protocol (MCP) Nedir Derinlemesine Değerlendirelim...Şimdi bizler, bu tool’lara uygun sualleri LLM modeline gönderelim ve böylece nasıl tepkiler alınacağını ve sürecin MCP Server’larımıza yönlendirilip yönlendirilmeyeceğini hep beraber aşağıdaki görseller üzerinden inceleyelim…

Model Context Protocol (MCP) Nedir Derinlemesine Değerlendirelim

Sum tool’unun testi…

Model Context Protocol (MCP) Nedir Derinlemesine Değerlendirelim

Echo tool’unun testi…

Evet, görüldüğü üzere Cursor’da girilen prompt’un mahiyetine göre MCP Server’da ki tool’lar devreye girmekte ve beklenen işlevsellikler gösterilmektedir 🙂

Nihai olarak;
Anlayacağınız, MCP sayesinde çalışmalarımızda kullandığımız AI modelinin bilgilerini farklı yazılımlar üzerinde organize edebilmekte ve akıllıca kullanabilmekteyiz. Sonraki içeriklerimizde, bu protokol ile Semantic Kernel eşliğinde AI modelleriyle etkileşim sürecini ele alacak ve konuyu daha da sahadaki ihtiyaçlara odaklı bir konuma getirip değerlendiriyor olacağız. Dolayısıyla sizler bu makaleyi okurken, ben de bahse konu olan içeriklerin zeminini oluşturmaya gidiyor ve bir yandan da bu noktaya kadar okuyup eşlik ettiğiniz için teşekkür ediyorum 🙂

İlgilenenlerin faydalanması dileğiyle…
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Not : Örnek çalışmaya aşağıdaki GitHub adresinden erişebilirsiniz.
https://github.com/gncyyldz/Model_Context_Protocol_Example

Bunlar da hoşunuza gidebilir...

6 Cevaplar

  1. Emre Can dedi ki:

    harikasın gene

  2. öncelikle şunu söylemem gerek üstadım yine formundasın

    bu yazıyı okurken hem önce korktum sonra da senin bahsettigin noktaları iyicene özümseyince aslında korkunun sadece bir duygu oldugunu hatırladım. yapay zekayı korkarak değil cesurca karşılamak anca sizin saygıdeger takipçilerinize yakışır zaten. kısa lafın özü, bence bu mcp yi anlamak ve kullanmak bu sonu bitmez yapay’ların zekasını evcilleştirmek için iyi bir araç.

    bende senin yaptıgın gibi yapıcam üstad, her zaman ve her yerde dedigin gibi. sonuna kadar ay yıldız

  3. Undefined dedi ki:

    Hocam merhabalar, benim tam olarak ayırt edemediğim nokta bu mcp lerin function calling ten tam olarak farklarının ne olduğu. Tek artısı funciton calling teki gibi projeye fonksiyonları gömmektense dışarıdan ulaşılabilir bir hale getiriyoruz gibi. Bunun dışında ne gibi farkları vardır?

  4. Cem dedi ki:

    Harika bir analiz olmuş, MCP’nin nasıl yapılandığını ve uygulama alanlarını çok net açıklamışsınız – elinize sağlık!

    Biz de Plugged.in adlı bir platform üzerinde çalışıyoruz. Amacımız, açık kaynak MCP sunucularını keşfetmek, entegre etmek ve hatta kendi projelerinizde kullanmanıza olanak sağlamak. Hem ortak repository’ler hem de özel kaynaklar üzerinden geliştiricilerin kendi komut setlerini ya da veri araçlarını paylaşabilmelerini hedefliyoruz. Bu yönüyle Plugged.in – bir MCP discovery & execution hub olarak öne çıkıyor.

    Platformun teknik detaylarını da kısaca paylaşmak gerekirse:
    • Açık ve özelleştirilmiş MCP sunucu desteği
    • JSON‑RPC protokolüyle MCP uyumlu iletişim
    • Geliştiricilerin kendi sunucu altyapısını “claim ederek” yönetebilmesi
    • Merkezi olmayan, ancak güçlü bir araç ve bilgi ağı oluşturabilme

    Sizce MCP ekosistemi böyle bir yaklaşımı, yani açık kaynak keşif+paylaşım hub’ını nasıl karşılar? Görüşlerinizi çok merak ediyorum—Plugged.in’i incelemekten veya birlikte keşfetme/değerlendirme fırsatından memnuniyet duyarım!

    Link: https://plugged.in

    Saygılar,
    Cem

Undefined için bir yanıt yazın Yanıtı iptal et

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir