﻿
{"id":27715,"date":"2025-04-10T04:22:26","date_gmt":"2025-04-10T04:22:26","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=27715"},"modified":"2025-04-10T04:22:26","modified_gmt":"2025-04-10T04:22:26","slug":"model-context-protocol-mcp-nedir-derinlemesine-degerlendirelim","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/model-context-protocol-mcp-nedir-derinlemesine-degerlendirelim\/","title":{"rendered":"Model Context Protocol (MCP) Nedir? Derinlemesine De\u011ferlendirelim&#8230;"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bu i\u00e7eri\u011fimizde, yapay zeka modellerinin context&#8217;lerini y\u00f6netmek ve i\u015flemek i\u00e7in tasarlanm\u0131\u015f bir protokol olan <em>Model Context Protocol (MCP)<\/em>&#8216;\u00fc inceleyecek, \u00f6nceki i\u00e7eriklerimizde de\u011ferlendirdi\u011fimiz <a href=\"https:\/\/www.gencayyildiz.com\/blog\/semantic-kernel-nedir-deepseek-r1-esliginde-net-acisindan-derinlemesine-degerlendirelim\/\" target=\"_blank\">Semantic Kernel<\/a>&#8216;la mukayesesini ger\u00e7ekle\u015ftirecek ve pratik dokunu\u015flarla bu protokol\u00fc deneyimleyece\u011fiz. O halde fazla uzatmaks\u0131z\u0131n buyurun ba\u015flayal\u0131m&#8230;<\/p>\n<h4>Model Context Protocol (MCP) Nedir?<\/h4>\n<p>Model Context Protocol (MCP), bir AI modeliyle ger\u00e7ekle\u015ftirilen g\u00f6rev ya da etkile\u015fim s\u00fcrecinde ihtiya\u00e7 duyulan bilgileri organize etmek, saklamak ve ak\u0131ll\u0131ca kullanmak i\u00e7in kullan\u0131lan bir protokold\u00fcr. Bu protokol sayesinde, sohbet botlar\u0131 ya da dil modelleri gibi yapay zeka modellerinin ba\u011flam\u0131 rahatl\u0131kla y\u00f6netilebilmektedir.<\/p>\n<p><strong><em>Ba\u011flamdan(Context) kastedilen nedir?<\/em><\/strong><br \/>\nBa\u011flam(context), modelin karar vermesine yard\u0131mc\u0131 olan t\u00fcm ge\u00e7ici bilgileri ifade etmektedir. Misal olarak; sohbet ge\u00e7mi\u015fi, kullan\u0131c\u0131 tercihleri, i\u015flem durumlar\u0131 ve bunlar gibi ekstradan harici veriler o an ki yapay zekayla olan ileti\u015fimin verisel havuzunu yani bir ba\u015fka deyi\u015fle ba\u011flam\u0131n\u0131 olu\u015fturmaktad\u0131r.<\/p>\n<p><strong><em>Ba\u011flam\u0131 y\u00f6netmekten kastedilen nedir?<\/em><\/strong><br \/>\nBa\u011flam\u0131 y\u00f6netmekten kastedilen ise bu bilgilerin verimli, tutarl\u0131 ve g\u00fcvenli bir \u015fekilde i\u015flenmesini sa\u011flamakt\u0131r. Biraz daha detayland\u0131rmam\u0131z gerekirse e\u011fer; AI modeliyle kullan\u0131c\u0131 etkile\u015fimi s\u0131ras\u0131nda kredi kart\u0131 numaras\u0131, \u015fifre vs. gibi gereksiz veya hassas bilgilerin cereyan etmesi s\u00f6z konusu olabilir. \u0130\u015fte b\u00f6yle bir durumda ba\u011flama m\u00fcdahale ederek filtreleme ger\u00e7ekle\u015ftirebilir ve istenmeyen bilgileri ay\u0131klayabilirsiniz. Benzer mant\u0131kla, modelin belirli bir s\u00fcre veya g\u00f6rev boyunca baz\u0131 bilgileri hat\u0131rlamas\u0131n\u0131 isteyebilir ya da ileti\u015fim s\u00fcrecindeki bilgileri JSON, XML vs. gibi AI modelinin anlayabilece\u011fi standartta bir formata d\u00f6n\u00fc\u015ft\u00fcrebilir ve verisel yap\u0131land\u0131rmada bulunabilirsiniz. T\u00fcm bunlar\u0131n d\u0131\u015f\u0131nda, uzun ba\u011flamlar\u0131 s\u0131k\u0131\u015ft\u0131rarak modelin i\u015flem s\u0131n\u0131rlar\u0131n\u0131 a\u015fmas\u0131n\u0131 engelleyerek token limitini optimize edebilir ve i\u015flenen bir ba\u011flam\u0131 farkl\u0131 modeller veya sistemler aras\u0131nda ta\u015f\u0131nabilir hale getirebilirsiniz.<\/p>\n<p><strong><em>Ba\u011flam y\u00f6netiminde MCP&#8217;nin rol\u00fc nedir?<\/em><\/strong><br \/>\nMCP, farkl\u0131 sistemlerin context&#8217;i ayn\u0131 \u015fekilde anlamas\u0131n\u0131 sa\u011flay\u0131p standartla\u015ft\u0131rarak bu s\u00fcre\u00e7leri daha kontrol edilebilir hale getirmektedir. Haliyle yapay zeka a\u00e7\u0131s\u0131ndan insan gibi ak\u0131ll\u0131 davranmas\u0131 i\u00e7in gerekli olan ge\u00e7ici haf\u0131za ve durum bilgisi gibi yetenekleri daha efektif bir \u015fekilde organize etmemizi sa\u011flayan bir klavuz g\u00f6revi g\u00f6rmektedir.<\/p>\n<h5>MCP&#8217;nin Temel \u0130\u015flevleri Nelerdir?<\/h5>\n<p>Yukar\u0131daki sat\u0131rlardan yola \u00e7\u0131karak MCP&#8217;nin ba\u011flam y\u00f6netimi, veri yap\u0131s\u0131 standardizasyonu, g\u00fcvenlik\/kontrol i\u015flemleri ve \u00e7oklu model entegrasyonu olmak \u00fczere d\u00f6rt temel i\u015flevi oldu\u011funu s\u00f6yleyebiliriz;<\/p>\n<ul style=\"font-size:12px;\">\n<li><em><strong>Ba\u011flam Y\u00f6netimi (Context Management)<\/strong><\/em><br \/>\nAI modelinin, i\u015flev s\u00fcrecinde hat\u0131rlad\u0131\u011f\u0131 \u00f6nceki mesajlar, kullan\u0131c\u0131 tercihleri, ge\u00e7mi\u015f etkile\u015fimler vs. gibi bilgileri d\u00fczenler ve b\u00f6ylece uzun diyaloglarda ba\u011flam kayb\u0131n\u0131 \u00f6nlemeye yard\u0131mc\u0131 olur.\n<\/li>\n<li><em><strong>Veri Yap\u0131s\u0131 Standardizasyonu<\/strong><\/em><br \/>\n\u0130leti\u015fim s\u00fcrecinde girdi ve \u00e7\u0131kt\u0131lar\u0131n JSON ya da XML gibi belirli bir formatta yap\u0131land\u0131rmas\u0131n\u0131 sa\u011flar ve b\u00f6ylece farkl\u0131 modeller ve sistemler aras\u0131nda uyumlulu\u011fu art\u0131r\u0131r.\n<\/li>\n<li><em><strong>G\u00fcvenlik ve Kontrol<\/strong><\/em><br \/>\nModelin hassas bilgileri s\u0131zd\u0131rmas\u0131n\u0131 engellemek i\u00e7in filtreleme imkan\u0131 sunar.\n<\/li>\n<li><em><strong>\u00c7oklu Model Entegrasyonu<\/strong><\/em><br \/>\nBirden fazla AI modelinin ayn\u0131 ba\u011flam\u0131 payla\u015farak i\u015fbirli\u011fi yapmas\u0131n\u0131 kolayla\u015ft\u0131r\u0131r.\n<\/li>\n<\/ul>\n<blockquote><p><em>MCP, hen\u00fcz yayg\u0131n bir standart olmasa da, AI sistemlerinde ba\u011flam y\u00f6netimini iyile\u015ftirmek i\u00e7in geli\u015ftirilen yenilik\u00e7i bir yakla\u015f\u0131md\u0131r.<\/em><\/p><\/blockquote>\n<h4>Semantic Kernel (SK) vs  Model Context Protocol (MCP)<\/h4>\n<p>MCP deyince akla Semantic Kernel geliyor olabilir. Evet, her ikisi de yapay zeka sistemlerinde ba\u011flam y\u00f6netimi ve i\u015flemine y\u00f6nelik ara\u00e7lar olsa da esas\u0131nda farkl\u0131 ama\u00e7 ve kapsamlar do\u011frultusunda geli\u015ftirilmi\u015f yap\u0131lard\u0131r. \u015eimdi gelin her ikisinin mukayesesini yaparak ilerleyelim;<\/p>\n<table style=\"font-size:12px;\">\n<thead>\n<tr>\n<th style=\"width:50%;\">Semantic Kernel (SK)<\/th>\n<th>Model Context Protocol (MCP)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Microsoft taraf\u0131ndan geli\u015ftirilmi\u015ftir. .NET ekosistemine AI modellerini entegre etmek i\u00e7in kullan\u0131lan bir ara\u00e7 tak\u0131m\u0131d\u0131r.<\/td>\n<td>Ba\u011flam\u0131n standardize edilmesi ve y\u00f6netilmesi i\u00e7in \u00fcretilmi\u015f bir protokold\u00fcr.<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\">\u0130kisi de AI modelle olan ileti\u015fim s\u00fcrecindeki ba\u011flam y\u00f6netimiyle ilgilenir.<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\">\u00c7oklu model entegrasyonunu destekler.<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\">Yapay zeka uygulamalar\u0131nda tutarl\u0131l\u0131k ve verimlilik sa\u011flamay\u0131 hedefler.<\/td>\n<\/tr>\n<tr>\n<td>\n<div style=\"text-align:left;\"><em><strong>Ama\u00e7<\/strong><\/em><\/div>\n<p>Uygulama ve \u00fcr\u00fcn odakl\u0131 yapay zeka deste\u011fini ama\u00e7 edinir.<\/td>\n<td>\n<div style=\"text-align:left;\"><em><strong>Ama\u00e7<\/strong><\/em><\/div>\n<p>Yapay zekayla olan ileti\u015fim s\u00fcrecindeki ba\u011flam\u0131n kontrol\u00fcn\u00fc ama\u00e7 edinir.\n<\/td>\n<\/tr>\n<tr>\n<td>AI tabanl\u0131 uygulama geli\u015ftirilirken kullan\u0131l\u0131r.<\/td>\n<td>Farkl\u0131 AI modelleri aras\u0131nda bir \u00e7al\u0131\u015fma yap\u0131lacaksa ba\u011flam payla\u015f\u0131m\u0131, veri g\u00fcvenli\u011fi ve standardizasyon ama\u00e7l\u0131 tercih edilebilir.<\/td>\n<\/tr>\n<tr>\n<td>\n<div style=\"text-align:left;\"><em><strong>\u00d6zet<\/strong><\/em><\/div>\n<p>Bir yap\u0131 iskelesidir.<br \/>\nDeveloper odakl\u0131d\u0131r.\n<\/td>\n<td>\n<div style=\"text-align:left;\"><em><strong>\u00d6zet<\/strong><\/em><\/div>\n<p>\u0130leti\u015fim protokol\u00fcd\u00fcr.<br \/>\nMimari bir standart sunar.\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<blockquote><p><em>MCP, LLM&#8217;lerin \u00fczerine agent&#8217;lar ve karma\u015f\u0131k i\u015f ak\u0131\u015flar\u0131 olu\u015fturmam\u0131za yard\u0131mc\u0131 olan bir protokold\u00fcr.<\/em><\/p><\/blockquote>\n<h4>MCP Hangi Alanlarda ya da Gereksinimlerde Tercih Edilmelidir?<\/h4>\n<p>MCP, yap\u0131s\u0131 itibariyle ba\u011flam y\u00f6netiminin kritik arz etti\u011fi, standartla\u015ft\u0131r\u0131lm\u0131\u015f ve g\u00fcvenli bir ileti\u015fim protokol\u00fcne ihtiya\u00e7 duyulan t\u00fcm senaryolarda tercih edilebilir. Bunu daha net bir \u015fekilde ifade edebilmek i\u00e7in MCP&#8217;nin \u00f6ne \u00e7\u0131kt\u0131\u011f\u0131 kullan\u0131m alanlar\u0131n\u0131 ve gereksinim durumlar\u0131n\u0131 \u015f\u00f6yle s\u0131ralayabiliriz;<\/p>\n<ul style=\"font-size:12px;\">\n<li><strong style=\"color:purple;\"><em>\u00c7oklu Model Entegrasyonu Gerektiren Sistemler<\/em><\/strong><br \/>\nBir LLM ile birlikte birer g\u00f6rsel model ve veri analiz modellerinin ayn\u0131 anda kullan\u0131laca\u011f\u0131 bir uygulama oldu\u011funu d\u00fc\u015f\u00fcnelim. B\u00f6yle farkl\u0131 AI modellerinin ayn\u0131 ba\u011flam\u0131 payla\u015fmas\u0131 gerektiren durumlarda MCP&#8217;den istifade edebilir ve \u00e7oklu modeller aras\u0131 i\u015fbirli\u011fi sa\u011flayabiliriz. <em><strong>Hocam burada MCP ne gibi rol \u00fcstlenebilir ki?<\/strong><\/em> \u015feklinde sorunuzu duyar gibiyim. Misal olarak MCP bu tarz bir senaryoda, ba\u011flam\u0131 standardize ederek JSON format\u0131 \u00fczerinden modeller aras\u0131 veri kayb\u0131n\u0131 \u00f6nleyebilir.<\/p>\n<p><strong><em>\u00d6rnek Durum<\/em><\/strong><br \/>\nM\u00fc\u015fteri hizmeti g\u00f6revi g\u00f6ren bir chatbot, kullan\u0131c\u0131n\u0131n ge\u00e7mi\u015f sorgular\u0131n\u0131 bir veritaban\u0131 modeliyle payla\u015f\u0131rken MCP format\u0131ndan istifade edebilir.\n<\/li>\n<li><strong style=\"color:purple;\"><em>Uzun Diyalog Zincirlerinde Ba\u011flam Tutarl\u0131l\u0131\u011f\u0131 Gerekti\u011fi Durumlar<\/em><\/strong><br \/>\nTerapist botlar\u0131, teknik destek gibi uzun konu\u015fmalar\u0131n oldu\u011fu \u00e7al\u0131\u015fmalarda AI modelinin \u00f6nceki mesajlar\u0131 unutmamas\u0131 gerekmektedir. Bu tarz durumlarda geni\u015f hacimli ba\u011flamlar AI modelini zorlayabilir ya da maliyeti art\u0131rabilir. \u0130\u015fte bu taktirde MCP ile ba\u011flam\u0131 s\u0131k\u0131\u015ft\u0131rabilir veya yap\u0131land\u0131r\u0131lm\u0131\u015f bir formata b\u00fcr\u00fcnd\u00fcrebilir ve b\u00f6ylece performans\u0131 optimize edebiliriz.\n<\/li>\n<li><strong style=\"color:purple;\"><em>G\u00fcvenlik ve Veri Kontrol\u00fcn\u00fcn \u00d6ncelikli Oldu\u011fu Alanlar<\/em><\/strong><br \/>\nHasta kay\u0131tlar\u0131, bankac\u0131l\u0131k sorgular\u0131 gibi t\u0131bbi, finansal yahut gizli verilerin s\u00f6z konusu oldu\u011fu di\u011fer sistemlerde MCP arac\u0131l\u0131\u011f\u0131yla ba\u011flamdaki hassas veriler otomatik filtrelenebilir ve b\u00f6ylece daha g\u00fcvenli bir AI hizmeti sa\u011flanabilir.\n<\/li>\n<li><strong style=\"color:purple;\"><em>Edge Cihazlar\u0131n veya D\u00fc\u015f\u00fck Kaynakl\u0131 Ortamlar\u0131n Oldu\u011fu Durumlar<\/em><\/strong><br \/>\nIoT cihazlar\u0131nda veya yerel(local) ortamlarda kullan\u0131lan AI modellerinde ba\u011flam\u0131n hafif bir formatta iletilmesi gerekmektedir. Bu durumlarda MCP sayesinde ba\u011flamdan gereksiz meta veriler \u00e7\u0131kar\u0131larak minimize edilebilmekte ya da binary protobuf format\u0131nda serile\u015ftirmeler neticesinde s\u0131k\u0131\u015ft\u0131rmalar yap\u0131larak y\u00fcksek performans elde edilebilmektedir.\n<\/li>\n<li><strong style=\"color:purple;\"><em>Standartla\u015ft\u0131r\u0131lm\u0131\u015f API \u0130leti\u015fiminin S\u00f6z Konusu Oldu\u011fu Durumlar<\/em><\/strong><br \/>\n\u00d6zellikle farkl\u0131 ekipler taraf\u0131ndan geli\u015ftirilen mikroservislerin AI modelleriyle ileti\u015fim kurmas\u0131 gerekti\u011fi durumlarda, MCP sayesinde t\u00fcm servislerin anlayaca\u011f\u0131 bir ba\u011flam \u015femas\u0131 olu\u015fturulabilir.\n<\/li>\n<li><strong style=\"color:purple;\"><em>Ger\u00e7ek Zamanl\u0131(Real-Time) Sistemlerde<\/em><\/strong><br \/>\nSohbet sistemleri ya da oyunlar gibi d\u00fc\u015f\u00fck gecikmeli uygulamalarda ba\u011flam\u0131n h\u0131zla iletilebilmesi gerekmektedir. Bu tarz durumlarda MCP, binary serialization gibi y\u00f6ntemlerle veri boyutunu k\u00fc\u00e7\u00fcltebilir.\n<\/li>\n<\/ul>\n<p>Yani anla\u015f\u0131lan; yaz\u0131l\u0131mlarda AI modellerinin kullan\u0131m s\u00fcre\u00e7lerinde farkl\u0131 modeller\/sistemler aras\u0131nda ba\u011flam payla\u015f\u0131m\u0131 gerekiyorsa <em style=\"font-size:12px;\"><strong>(mod\u00fclerlik)<\/strong><\/em>, veri s\u0131z\u0131nt\u0131s\u0131 riski y\u00fcksekse <em style=\"font-size:12px;\"><strong>(g\u00fcvenlik)<\/strong><\/em>, ba\u011flam\u0131n optimize edilmesi gereken d\u00fc\u015f\u00fck kaynakl\u0131 ortamlarda \u00e7al\u0131\u015f\u0131l\u0131yorsa <em style=\"font-size:12px;\"><strong>(performans)<\/strong><\/em> ve distributed ekiplerin uyumlu \u00e7al\u0131\u015fmas\u0131 i\u00e7in ortak bir protokol gerekiyorsa <em style=\"font-size:12px;\"><strong>(standart ihtiya\u00e7lar)<\/strong><\/em> i\u015fte bu \u015fartlarda MCP&#8217;den istifade edilebilmektedir.<\/p>\n<h4>MCP&#8217;nin Genel Mimarisi Nas\u0131ld\u0131r?<\/h4>\n<p>\u015eimdi de MCP&#8217;nin genel mimarisini ele alal\u0131m. MCP \u00f6z\u00fcnde, bir ana uygulaman\u0131n(host application) birden fazla sunucuya(server) ba\u011flanabildi\u011fi bir istemci-sunucu mimarisini(client-server architecture) takip etmektedir.<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim.png\" alt=\"Model Context Protocol (MCP) Nedir? Derinlemesine De\u011ferlendirelim...\" width=\"663\" height=\"453\" class=\"aligncenter size-full wp-image-27722\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim.png 663w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-300x205.png 300w\" sizes=\"auto, (max-width: 663px) 100vw, 663px\" \/><\/a>Yukar\u0131daki g\u00f6rselden yola \u00e7\u0131karak MCP&#8217;nin \u00e7al\u0131\u015fma mimarisini inceleyebilirsiniz. Buradaki akt\u00f6rleri daha da netle\u015ftirmemiz gerekirse e\u011fer;<\/p>\n<ul style=\"font-size:12px;\">\n<li><strong><em>MCP Hosts<\/em><\/strong> : MCP arac\u0131l\u0131\u011f\u0131yla verilere eri\u015fmek isteyen Claude Desktop, IDE&#8217;ler veya AI ara\u00e7lar\u0131 gibi programlara kar\u015f\u0131l\u0131k gelmektedir.<\/li>\n<li><strong><em>MCP Clients<\/em><\/strong> : Sunucularla birebir (1:1) ba\u011flant\u0131lar sa\u011flayan protokol istemcileridir.<\/li>\n<li><strong><em>MCP Servers<\/em><\/strong> : Her biri standartla\u015ft\u0131r\u0131lm\u0131\u015f MCP arac\u0131l\u0131\u011f\u0131yla belirli yetenekleri ortaya koyan lightweight programlard\u0131r.<\/li>\n<li><strong><em>Local Data Sources<\/em><\/strong> : MCP sunucular\u0131n\u0131n g\u00fcvenli bir \u015fekilde eri\u015febilece\u011fi bilgisayar\u0131n\u0131zdaki dosyalar, veritabanlar\u0131 ve servislerdir.<\/li>\n<li><strong><em>Remote Services<\/em><\/strong> : MCP sunucular\u0131n\u0131n ba\u011flanabilece\u011fi, internet \u00fczerinden API&#8217;ler arac\u0131l\u0131\u011f\u0131yla eri\u015filebilen harici sistemlerdir.<\/li>\n<\/ul>\n<p>\u015feklinde a\u00e7\u0131klayabiliriz. <\/p>\n<div style=\"font-size:12px;background-color:#e9e8e1;\">\n<div style=\"text-align:center;\">\n<h6>\u00d6rnek Senaryo<\/h6>\n<\/div >\nMCP mimarisindeki bu terimleri, bir hastane otomasyon sistemi \u00fczerinden somutla\u015ft\u0131r\u0131rsak e\u011fer \u015f\u00f6yle bir senaryo \u00fczerinden seyirde bulunabiliriz : Bir hastanede, herhangi bir hastan\u0131n yapay zeka asistan\u0131yla (ba\u015fka bir deyi\u015fle doktor botuyla) konu\u015ftu\u011funu varsayal\u0131m ve ge\u00e7mi\u015f tedavi bilgileri ve tahlil sonu\u00e7lar\u0131n\u0131 konu\u015fman\u0131n ba\u011flam\u0131nda tutulmas\u0131 gereken veri olarak yorumlayal\u0131m.<\/p>\n<p>Her \u015feyden \u00f6nce bu hastanenin ba\u011flam\u0131n i\u015flenece\u011fi, depolanaca\u011f\u0131 ve y\u00f6netilece\u011fi bir veri merkezi olmas\u0131 gerekecektir. Bu <strong><em>MCP Host<\/em><\/strong>&#8216;a kar\u015f\u0131l\u0131k gelen merkezi birim yani ana sunucudur. Bu sunucuda; hasta bilgileri \u015fifrelenerek g\u00fcvenlik kurallar\u0131 uygulanacak ve bir yandan da eski tahlil verileri tutularak, \u00f6zetlenecektir. Bunlar\u0131n d\u0131\u015f\u0131nda di\u011fer bile\u015fenler aras\u0131nda trafi\u011fi de bu sunucu y\u00f6netecektir.<\/p>\n<p>Hastanenin, hastalarla ileti\u015fim kuran yapay zeka asistan\u0131 (yani doktor botu) ise <strong><em>MCP Client<\/em><\/strong> olacakt\u0131r. Bu bir hasta mobil uygulamas\u0131 olabilece\u011fi gibi herhangi bir laboratuvar AI g\u00f6revi g\u00f6ren uygulamada olabilir. Bu client, host&#8217;tan ba\u011flam\u0131 \u00e7ekecek ve hastaya dair bilgi s\u00fcrecini y\u00fcr\u00fctecektir. Yani <strong><em>MCP Host<\/em><\/strong>&#8216;a ba\u011flanarak ba\u011flam\u0131 kullanan uygulamalar ve yapay zekalar <strong><em>MCP Client<\/em><\/strong> olarak nitelendirilmektedir. Misal olarak; &#8216;hastan\u0131n alerjisi var m\u0131?&#8217; sorusunun cevab\u0131n\u0131 host&#8217;tan elde etti\u011fi ba\u011flamdan edinecektir. Bir yandan da ba\u011flama hastayla olan etkile\u015fim neticesinde yeni veriler ekleyebilecektir. Buna da \u00f6rnek vermemiz gerekirse e\u011fer ger\u00e7ekle\u015ftirilen muayene neticesinde yap\u0131lan te\u015fhisin &#8216;Y\u00fcksek CPR&#8217; oldu\u011funu d\u00fc\u015f\u00fcn\u00fcrsek e\u011fer bu veri host&#8217;ta ki ba\u011flama eklenecektir.<\/p>\n<p>Tabi bu s\u00fcre\u00e7te, doktor botuna hastaya dair bilgileri sunabilmek i\u00e7in client ile hastanenin ara birimleri aras\u0131nda bir k\u00f6pr\u00fc kurulmas\u0131 gerekecektir. \u0130\u015fte bunun i\u00e7in <strong><em>MCP Server<\/em><\/strong> olarak nitelendirdi\u011fimiz hastanenin acil servis, laboratuvar gibi b\u00f6l\u00fcmlerindeki yerel sunucular\u0131 devreye girecektir. Bu server&#8217;lar \u00fczerinde, laboratuvar sonu\u00e7lar\u0131 standart formata \u00e7evrilerek veri \u00f6n i\u015flenmekte ve hastaya dair local&#8217;de ki ya da remote&#8217;da ki kaynaklara eri\u015fim g\u00f6sterilip g\u00fcncel veriler elde edilmektedir. Ayr\u0131ca acil servisteki yo\u011fun istekler dengelenerek y\u00fck da\u011f\u0131t\u0131m\u0131 gibi ekstradan manevralar da yap\u0131labilmektedir.<\/p>\n<p>Nihai olarak; hastan\u0131n alerjileri, ge\u00e7mi\u015f ameliyatlar\u0131, kronik rahats\u0131zl\u0131klar\u0131 vs. gibi t\u00fcm t\u0131bbi ge\u00e7mi\u015fi ve kan tahlilleri, MR g\u00f6r\u00fcnt\u00fcleri gibi de resmi laboratuvar sonu\u00e7lar\u0131 hastane veri merkezinde (host) tutulur. Ancak muayene s\u0131ras\u0131nda al\u0131nan ge\u00e7ici notlar ise veri merkezinden ziyade o anki muayeneye yard\u0131mc\u0131 arac\u0131 olan <strong><em>Local Data Source<\/em><\/strong>&#8216;da tutulur. B\u00f6ylece, doktor botuyla hasta aras\u0131ndaki anl\u0131k ileti\u015fimde h\u0131zl\u0131 cevab\u0131n \u00fcretilebilmesi i\u00e7in s\u00fcrekli veri merkezine sorgu atmaktansa server&#8217;da ki local veri kaynaklar\u0131 kullan\u0131l\u0131r.\n<\/div>\n<h5>Diyagram \u00dczerinden MCP Mimarisini \u00d6zetleyelim<\/h5>\n<p>Yukar\u0131daki sat\u0131rlara alternatif olarak MCP&#8217;nin teknik boyutunu a\u015fa\u011f\u0131daki diyagram \u00fczerinden de izah etmeye \u00e7al\u0131\u015fal\u0131m.<div id=\"attachment_27728\" style=\"width: 781px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-1.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-27728\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-1.png\" alt=\"Model Context Protocol (MCP) Nedir? Derinlemesine De\u011ferlendirelim...\" width=\"771\" height=\"575\" class=\"size-full wp-image-27728\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-1.png 771w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-1-300x224.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-1-768x573.png 768w\" sizes=\"auto, (max-width: 771px) 100vw, 771px\" \/><\/a><p id=\"caption-attachment-27728\" class=\"wp-caption-text\">MCP&#8217;nin teknik boyuttaki diyagram\u0131&#8230;<\/p><\/div>G\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere MCP ile ilgili t\u00fcm kavramlar\u0131 bu diyagramda daha net bir \u015fekilde ele alm\u0131\u015f bulunuyoruz. Detayl\u0131 bir \u015fekilde incelemenizi tavsiye ediyorum.<\/p>\n<p>Ayr\u0131ca MCP&#8217;nin ak\u0131\u015f mant\u0131\u011f\u0131n\u0131 da a\u015fa\u011f\u0131daki diyagramdan inceleyebilirsiniz;<div id=\"attachment_27729\" style=\"width: 888px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-2.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-27729\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-2.png\" alt=\"Model Context Protocol (MCP) Nedir Derinlemesine De\u011ferlendirelim...\" width=\"878\" height=\"572\" class=\"size-full wp-image-27729\" \/><\/a><p id=\"caption-attachment-27729\" class=\"wp-caption-text\">MCP&#8217;nin ak\u0131\u015f mant\u0131\u011f\u0131 diyagram\u0131&#8230;<\/p><\/div><\/p>\n<h4>MCP&#8217;yi Pratik Olarak \u0130nceleyelim<\/h4>\n<p>Evet&#8230; Art\u0131k MCP&#8217;yi pratiksel olarak .NET ekosisteminde ele alabiliriz. Bunun i\u00e7in bo\u015f bir solution&#8217;da <code>MCP.CLient<\/code> ve <code>MCP.Server<\/code> isimlerinde iki adet proje olu\u015ftural\u0131m ve a\u015fa\u011f\u0131daki y\u00f6nergeleri ad\u0131m ad\u0131m uygulayarak deneyimsel yolculu\u011fumuza ba\u015flayal\u0131m.<\/p>\n<p>\u0130lk olarak <code>MCP.Server<\/code> projesine odaklanal\u0131m. Malum, bu projeyi MCP Server olarak tasarlarken bir yandan da i\u00e7erisine belli ba\u015fl\u0131 tool(ara\u00e7) geli\u015ftirip ekliyor olaca\u011f\u0131z.<\/p>\n<ul>\n<li><em style=\"color:green;\"><strong>Ad\u0131m 1<\/strong> <span style=\"font-size:12px;\">(MCP Server \u0130\u00e7in Gerekli K\u00fct\u00fcphanelerin Y\u00fcklenmesi)<\/span><\/em><br \/>\nHer \u015feyden \u00f6nce MCP Server i\u00e7in a\u015fa\u011f\u0131daki k\u00fct\u00fcphanelerin y\u00fcklenmesi gerekmektedir;<\/p>\n<ul style=\"font-size:12px;\">\n<li><a href=\"https:\/\/www.nuget.org\/packages\/microsoft.extensions.hosting\" target=\"_blank\">Microsoft.Extensions.Hosting<\/a><br \/>\nConsole Application projesini uzun s\u00fcreli arka plan i\u015flemleri i\u00e7in kullanmak istedi\u011fimizde bize bir host sa\u011flayan k\u00fct\u00fcphanedir. Uygulamaya bir ya\u015fam d\u00f6ng\u00fcs\u00fc sa\u011flarken bir yandan da dependency injection, konfig\u00fcrasyon, logging vs. altyap\u0131s\u0131 sunmaktad\u0131r.\n<\/li>\n<li><a href=\"https:\/\/www.nuget.org\/packages\/Serilog\" target=\"_blank\">Serilog<\/a><br \/>\nMCP Server, arka planda \u00e7al\u0131\u015faca\u011f\u0131 i\u00e7in MCP Host ve MCP Client&#8217;larla olan etkile\u015fimler neticesinde hangi aksiyonlar\u0131n ger\u00e7ekle\u015ftirildi\u011fini tutaca\u011f\u0131m\u0131z detayl\u0131 log&#8217;lar \u00fczerinden takip edece\u011fiz. <a href=\"https:\/\/www.gencayyildiz.com\/blog\/asp-net-core-serilog-ile-veri-loglama-ve-seq-ile-gorsellestirme\/\" target=\"_blank\">Serilog<\/a>, geli\u015fmi\u015f loglama i\u00e7in tercihimiz olacakt\u0131r.\n<\/li>\n<li><a href=\"https:\/\/www.nuget.org\/packages\/Serilog.Sinks.Console\" target=\"_blank\">Serilog.Sinks.Console<\/a><br \/>\nSerilog taraf\u0131ndan at\u0131lan log&#8217;un bir yandan da Console&#8217;a \u00e7\u0131kt\u0131 vermesi i\u00e7in bu k\u00fct\u00fcphaneden istifade edece\u011fiz.\n<\/li>\n<li><a href=\"https:\/\/www.nuget.org\/packages\/Serilog.Sinks.Debug\" target=\"_blank\">Serilog.Sinks.Debug<\/a><br \/>\nAyn\u0131 \u015fekilde kulland\u0131\u011f\u0131m\u0131z Visual Studio IDE&#8217;sinin Debug penceresine log yazmak istiyorsak bu k\u00fct\u00fcphaneden istifade edece\u011fiz.\n<\/li>\n<li><a href=\"https:\/\/www.nuget.org\/packages\/Serilog.Sinks.File\" target=\"_blank\">Serilog.Sinks.File<\/a><br \/>\nEn \u00f6nemlisi de, uygulama arka planda \u00e7al\u0131\u015f\u0131rken log&#8217;lar\u0131n bir dosyaya yaz\u0131lmas\u0131 olacakt\u0131r. Bunun i\u00e7in bu k\u00fct\u00fcphane elzemdir.\n<\/li>\n<li><a href=\"https:\/\/www.nuget.org\/packages\/ModelContextProtocol\" target=\"_blank\">ModelContextProtocol<\/a><br \/>\nBu k\u00fct\u00fcphanede, i\u00e7eri\u011fimizin esas \u00f6znesi olan MCP&#8217;nin temel yap\u0131land\u0131rma metotlar\u0131n\u0131 bar\u0131nd\u0131rmaktad\u0131r.\n<\/li>\n<\/ul>\n<\/li>\n<li><em style=\"color:green;\"><strong>Ad\u0131m 2<\/strong> <span style=\"font-size:12px;\">(MCP Server&#8217;\u0131n Temel Yap\u0131land\u0131rmas\u0131nda Bulunma)<\/span><\/em><br \/>\nK\u00fct\u00fcphaneleri y\u00fckledikten sonra a\u015fa\u011f\u0131daki geli\u015ftirmede bulunarak MCP Server&#8217;\u0131 yap\u0131land\u0131ral\u0131m;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nusing Microsoft.Extensions.DependencyInjection;\r\nusing Microsoft.Extensions.Hosting;\r\nusing Microsoft.Extensions.Logging;\r\nusing Serilog;\r\n\r\nLog.Logger = new LoggerConfiguration()\r\n    .MinimumLevel.Verbose()\r\n    .WriteTo.File(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, &quot;logs&quot;, &quot;MCP.Server.Log&quot;))\r\n    .WriteTo.Debug()\r\n    .WriteTo.Console()\r\n    .CreateLogger();\r\n\r\nLog.Information(&quot;Server ba\u015flat\u0131l\u0131yor...&quot;);\r\n\r\nvar builder = Host.CreateApplicationBuilder(args);\r\nbuilder.Logging.AddConsole(consoleLogOptions =&gt;\r\n{\r\n    consoleLogOptions.LogToStandardErrorThreshold = LogLevel.Trace;\r\n});\r\n\r\nbuilder.Services\r\n    .AddMcpServer()\r\n    .WithStdioServerTransport()\r\n    .WithToolsFromAssembly();\r\n\r\nawait builder.Build().RunAsync();\r\n<\/pre>\n<\/div>\n<p>Bu yap\u0131land\u0131rmaya g\u00f6z atarsak e\u011fer; 6 ile 11. sat\u0131r aral\u0131\u011f\u0131nda log&#8217;lama ko\u015fullar\u0131 belirlenmekte ve uygulaman\u0131n Debug edildi\u011fi dizinde, &#8216;logs&#8217; klas\u00f6r\u00fc i\u00e7erisindeki &#8216;MCP.Server.Log&#8217; dosyas\u0131nda log&#8217;lar tutulmaktad\u0131r. 15 ile 19. sat\u0131r aral\u0131\u011f\u0131nda ise gerekli hosting \u00e7al\u0131\u015fmas\u0131 yap\u0131lmakta ve 21 ile 24. sat\u0131r aral\u0131\u011f\u0131nda da MCP i\u00e7in \u00f6zel metotlar \u00e7a\u011fr\u0131larak temel yap\u0131land\u0131rma ger\u00e7ekle\u015ftirilmektedir. Bu metotlar\u0131 izah etmemiz gerekirse e\u011fer; <code style=\"color:purple;\">AddMcpServer<\/code>, MCP Server i\u00e7in gerekli olan servisleri IoC Container&#8217;a eklemekte ve b\u00f6ylece temel yap\u0131land\u0131rmay\u0131 sa\u011flanmaktad\u0131r. <code style=\"color:purple;\">WithStdioServerTransport<\/code> metodu ile olu\u015fturulan bu MCP Server&#8217;\u0131n standart I\/O(stdio) \u00fczerinden ileti\u015fim kurmas\u0131 sa\u011flanm\u0131\u015f olacakt\u0131r. <code style=\"color:purple;\">WithToolsFromAssembly<\/code> metoduyla ise bu uygulaman\u0131n bulundu\u011fu assembly&#8217;de derlenmi\u015f olan t\u00fcm MCP ile ilgili tool&#8217;lar\u0131 otomatik olarak reflection<span style=\"font-size:12px;\">(bknz : <a href=\"https:\/\/www.youtube.com\/watch?v=5SiAm7PlOOU&#038;list=PLQVXoXFVVtp1yha_meMc706hDgz4WAvHH&#038;index=5\" target=\"_blank\">Derinlemesine Reflection<\/a>)<\/span> ile bulup sisteme dinamik olarak entegre etmektedir.\n<\/li>\n<li><em style=\"color:green;\"><strong>Ad\u0131m 3<\/strong> <span style=\"font-size:12px;\">(MCP Server&#8217;a Tool Ekleme)<\/span><\/em><br \/>\nMCP Server&#8217;a bir tool eklemek i\u00e7in a\u015fa\u011f\u0131daki gibi bir tan\u0131mlaman\u0131n yap\u0131lmas\u0131 yeterlidir;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    &#x5B;McpServerToolType]\r\n    public static class EchoTool\r\n    {\r\n        &#x5B;McpServerTool, Description(&quot;Girilen metni geri d\u00f6nd\u00fcr\u00fcr...&quot;)]\r\n        public static string Echo(string message)\r\n        {\r\n            Log.Information(&quot;Echo tool'u \u00e7al\u0131\u015ft\u0131r\u0131l\u0131yor...&quot;);\r\n\r\n            return $&quot;Yank\u0131 : {message}&quot;;\r\n        }\r\n    }\r\n<\/pre>\n<\/div>\n<p>Dikkat ederseniz tool dedi\u011fimiz \u00f6z\u00fcnde bir s\u0131n\u0131f i\u00e7erisindeki normal metottur. Bu metodun tool olarak alg\u0131lanabilmesi i\u00e7in, \u00f6ncelikle <code style=\"color:orange;\">McpServerToolType<\/code> attribute&#8217;u ile i\u015faretlenmi\u015f bir s\u0131n\u0131f i\u00e7erisinde tan\u0131mlanmas\u0131 gerekmektedir. Bu attribute, ilgili s\u0131n\u0131f\u0131n MCP Server taraf\u0131ndan <code style=\"color:purple;\">WithToolsFromAssembly<\/code> yap\u0131land\u0131rmas\u0131 arac\u0131l\u0131\u011f\u0131yla taranacak tool&#8217;lar\u0131n hangi s\u0131n\u0131f alt\u0131nda oldu\u011funu ifade edecektir. S\u0131n\u0131f i\u00e7erisindeki metotlar ise esas\/ger\u00e7ek tool&#8217;lar\u0131 ifade etmektedir ve <code style=\"color:orange;\">McpServerTool<\/code> attribute&#8217;u ile i\u015faretlenmektedirler. Misal olarak yukar\u0131daki <code>Echo<\/code> metodu bizim i\u00e7in ger\u00e7ek bir tool&#8217;dur. Tool&#8217;lar\u0131 i\u015faretledi\u011fimiz bir di\u011fer attribute olan <code style=\"color:orange;\">Description<\/code> attribute&#8217;u ise ilgili i\u015flevlerin ne yapt\u0131\u011f\u0131n\u0131 client taraf\u0131ndan g\u00f6r\u00fcnt\u00fclenebilir \u015fekilde dok\u00fcmantasyon ama\u00e7l\u0131 izah g\u00f6revi g\u00f6rmektedir.<\/p>\n<p>Tool kavram\u0131n\u0131 daha da netle\u015ftirebilmek i\u00e7in a\u015fa\u011f\u0131daki ekstradan \u00e7al\u0131\u015fmaya g\u00f6z atabilirsiniz;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    &#x5B;McpServerToolType]\r\n    public static class CalculatorTool\r\n    {\r\n        &#x5B;McpServerTool, Description(&quot;\u0130ki say\u0131n\u0131n toplam\u0131n\u0131 d\u00f6nd\u00fcr\u00fcr...&quot;)]\r\n        public static int Sum(int number1, int number2)\r\n        {\r\n            Log.Information($&quot;'{number1}' ve '{number2}' de\u011ferleri toplan\u0131yor...&quot;);\r\n\r\n            return number1 + number2;\r\n        }\r\n\r\n        &#x5B;McpServerTool, Description(&quot;\u0130ki say\u0131n\u0131n \u00e7arp\u0131m\u0131n\u0131 d\u00f6nd\u00fcr\u00fcr...&quot;)]\r\n        public static int Multiply(int number1, int number2)\r\n        {\r\n            Log.Information($&quot;'{number1}' ve '{number2}' de\u011ferleri toplan\u0131yor...&quot;);\r\n\r\n            return number1 * number2;\r\n        }\r\n    }\r\n<\/pre>\n<\/div>\n<\/li>\n<\/ul>\n<p>MCP Server uygulamas\u0131 i\u00e7in yapaca\u011f\u0131m\u0131z geli\u015ftirmeler bunlardan ibarettir. Bu minvalde istedi\u011finiz kadar farkl\u0131 i\u015flevselliklere\/tool sahip MCP Server olu\u015fturabilirsiniz.<\/p>\n<p>\u015eimdi s\u0131ra <code>MCP Client<\/code> projesine odaklanmaya gelmi\u015ftir. Bunun i\u00e7in a\u015fa\u011f\u0131daki y\u00f6nergelere s\u0131ras\u0131yla devam edelim;<\/p>\n<ul>\n<li><em style=\"color:green;\"><strong>Ad\u0131m 4<\/strong> <span style=\"font-size:12px;\">(MCP Client \u0130\u00e7in Gerekli K\u00fct\u00fcphanelerin Y\u00fcklenmesi)<\/span><\/em><br \/>\nMCP Client i\u00e7in sadece <a href=\"https:\/\/www.nuget.org\/packages\/ModelContextProtocol\" target=\"_blank\">ModelContextProtocol<\/a> k\u00fct\u00fcphanesinin y\u00fcklenmesi yeterli olacakt\u0131r.\n<\/li>\n<li><em style=\"color:green;\"><strong>Ad\u0131m 5<\/strong> <span style=\"font-size:12px;\">(Temel MCP Client Nesnesinin Yap\u0131land\u0131r\u0131lmas\u0131)<\/span><\/em><br \/>\nMCP Client&#8217;ta en temel husus, MCP Server ile etkile\u015fim kuracak bir client nesnesi olu\u015fturmakt\u0131r. Bunun i\u00e7in a\u015fa\u011f\u0131daki gibi <code>McpClientFactory<\/code>&#8216;den istifade edebiliriz;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nIMcpClient client = await McpClientFactory.CreateAsync(serverConfig: new McpServerConfig()\r\n{\r\n    Id = &quot;MCPServer&quot;,\r\n    Name = &quot;MCP Server&quot;,\r\n    TransportType = TransportTypes.StdIo,\r\n    TransportOptions = new()\r\n    {\r\n        &#x5B;&quot;command&quot;] = &quot;C:\\\\*********\\\\Model_Context_Protocol_Example\\\\MCP.Server\\\\bin\\\\Debug\\\\net9.0\\\\MCP.Server.exe&quot;\r\n    }\r\n});\r\n<\/pre>\n<\/div>\n<p>Burada g\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere <code>McpServerConfig<\/code> \u00fczerinden MCP Server bilgileri verilen bir client nesnesi olu\u015fturulmu\u015ftur. \u0130\u015fte bizler bu client nesnesini kullanarak ilgili MCP Server&#8217;dan tool&#8217;lar\u0131 \u00e7ekebilir ve \u00e7al\u0131\u015ft\u0131rabiliriz. Bunun i\u00e7in ba\u011fl\u0131 oldu\u011fu MCP Server&#8217;dan a\u015fa\u011f\u0131daki metot arac\u0131l\u0131\u011f\u0131yla mevcut olan t\u00fcm tool&#8217;lar\u0131 talep edebilir;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nvar tools = await client.ListToolsAsync();\r\nforeach (var tool in tools.Select((tool, index) =&gt; new { Tool = tool, Index = index }))\r\n{\r\n    Console.WriteLine($&quot;\\tTool {tool.Index + 1} : {tool.Tool.Name} ({tool.Tool.Description})&quot;);\r\n}\r\n<\/pre>\n<\/div>\n<p>ve herhangi bir tool&#8217;u a\u015fa\u011f\u0131daki gibi \u00e7al\u0131\u015ft\u0131rabiliriz;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nvar result = await client.CallToolAsync(\r\n    &quot;Echo&quot;,\r\n    new Dictionary&lt;string, object?&gt;() { &#x5B;&quot;message&quot;] = &quot;Merhaba, naapt\u0131n m\u00fcd\u00fcr?&quot; });\r\n\r\nConsole.WriteLine($&quot;Result : {result.Content.First(c =&gt; c.Type == &quot;text&quot;).Text}&quot;);\r\n<\/pre>\n<\/div>\n<\/li>\n<li><em style=\"color:green;\"><strong>Ad\u0131m 6<\/strong> <span style=\"font-size:12px;\">(Test)<\/span><\/em><br \/>\nEvet, geli\u015ftirdi\u011fimiz bu \u00e7al\u0131\u015fmada her iki projeyi de derleyip test edersek e\u011fer nihai olarak a\u015fa\u011f\u0131daki gibi bir neticeyle kar\u015f\u0131la\u015faca\u011f\u0131z.<div id=\"attachment_27734\" style=\"width: 568px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-3.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-27734\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-3.png\" alt=\"Model Context Protocol (MCP) Nedir Derinlemesine De\u011ferlendirelim...\" width=\"558\" height=\"119\" class=\"size-full wp-image-27734\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-3.png 558w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-3-300x64.png 300w\" sizes=\"auto, (max-width: 558px) 100vw, 558px\" \/><\/a><p id=\"caption-attachment-27734\" class=\"wp-caption-text\">MCP Client uygulamas\u0131n\u0131n neticesi&#8230;<\/p><\/div>G\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere \u00f6zel olarak geli\u015ftirdi\u011fimiz MCP Client uygulamas\u0131, yine \u00f6zel olarak geli\u015ftirdi\u011fimiz ve belirli tool&#8217;lar\u0131 bar\u0131nd\u0131ran MCP Server uygulamas\u0131na ba\u011flanmakta, t\u00fcm tool&#8217;lar\u0131 \u00e7ekmekte ve <code>Echo<\/code> tool&#8217;unu \u00e7al\u0131\u015ft\u0131r\u0131p neticeyi console&#8217;a yans\u0131tmaktad\u0131r.<\/p>\n<p>Ayr\u0131ca MCP Server i\u00e7erisinde yap\u0131land\u0131rd\u0131\u011f\u0131m\u0131z log \u00e7\u0131kt\u0131lar\u0131na da g\u00f6z atarsak e\u011fer;<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-4.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-4.png\" alt=\"Model Context Protocol (MCP) Nedir Derinlemesine De\u011ferlendirelim...\" width=\"608\" height=\"54\" class=\"aligncenter size-full wp-image-27735\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-4.png 608w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-4-300x27.png 300w\" sizes=\"auto, (max-width: 608px) 100vw, 608px\" \/><\/a>\u015feklinde s\u00fcreci takip edebilmekteyiz.<\/p>\n<\/li>\n<\/ul>\n<p><strong><em>Eee hoca! Peki bu \u00e7al\u0131\u015fmada LLM nerede?<\/em><\/strong> diye sordu\u011funuzu duyar gibiyim&#8230; Elbette ki bizler, MCP Client&#8217;ta bir LLM \u00e7al\u0131\u015fmas\u0131 yapacak ve bu client \u00fczerinden LLM&#8217;e g\u00f6nderilen prompt&#8217;lar\u0131n i\u00e7eri\u011fine uygun olan tool&#8217;lar\u0131 MCP Server&#8217;da tetikleyip, nihai cevab\u0131 LLM&#8217;den al\u0131yor olaca\u011f\u0131z. Ama bu i\u00e7eri\u011fimizde ba\u015ftan beri ortaya koymaya \u00e7al\u0131\u015ft\u0131\u011f\u0131m\u0131z husus, MCP&#8217;nin ilkeleri e\u015fli\u011finde nas\u0131l yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131 oldu\u011fu i\u00e7in bu detay\u0131 hemen akabinde bir sonraki i\u00e7eri\u011fe b\u0131rak\u0131yor olaca\u011f\u0131z.<\/p>\n<p>\u015eimdi haz\u0131r s\u0131ca\u011f\u0131 s\u0131ca\u011f\u0131na test demi\u015fken, MCP Server&#8217;lar\u0131 h\u0131zl\u0131ca test ve debug edebilmek i\u00e7in geli\u015ftirilmi\u015f <em>MCP Inspector<\/em> arac\u0131n\u0131 da inceleyelim istiyorum.<\/p>\n<h4>MCP Inspector Arac\u0131 \u0130le MCP Server&#8217;lar\u0131 Test Etme<\/h4>\n<p>MCP Inspector, yukar\u0131daki sat\u0131rlarda bahsedildi\u011fi gibi MCP Server&#8217;lar\u0131 test ve debug edebilmek i\u00e7in tasarlanm\u0131\u015f etkile\u015fimli bir test arac\u0131d\u0131r. Bu ara\u00e7 ile geli\u015ftirilen MCP Server&#8217;lara istekler at\u0131labilmekte, bu istekler neticesinde gelen yan\u0131tlar de\u011ferlendirilebilmekte ve AI modeli ile MCP Server aras\u0131ndaki etkile\u015fim g\u00f6rselle\u015ftirilebilmektedir. B\u00f6ylece bizler, bu ara\u00e7 sayesinde geli\u015ftirdi\u011fimiz MCP Server&#8217;lar\u0131 test edebilmek i\u00e7in illa bir MCP Client olu\u015fturmak mecburiyetinde kalmamakta ve h\u0131zl\u0131ca test ve do\u011frulama i\u015flemlerini ger\u00e7ekle\u015ftirebilmekteyiz.<\/p>\n<p>MCP Inspector&#8217;\u0131 bilgisayara y\u00fckleyebilmek ve geli\u015ftirilen MCP Server&#8217;\u0131 test edebilmek i\u00e7in MCP Server uygulamas\u0131n\u0131n dizininde a\u015fa\u011f\u0131daki talimat\u0131n verilmesi bu arac\u0131n y\u00fcklenip aya\u011fa kald\u0131r\u0131lmas\u0131 i\u00e7in yeterli olacakt\u0131r.<\/p>\n<div style=\"color:red;text-align:center;\">\n<code>npx @modelcontextprotocol\/inspector dotnet run<\/code>\n<\/div>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-5.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-5.png\" alt=\"Model Context Protocol (MCP) Nedir Derinlemesine De\u011ferlendirelim...\" width=\"1078\" height=\"162\" class=\"aligncenter size-full wp-image-27738\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-5.png 1078w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-5-300x45.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-5-1024x154.png 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-5-768x115.png 768w\" sizes=\"auto, (max-width: 1078px) 100vw, 1078px\" \/><\/a>Evet, yukar\u0131daki ekran al\u0131nt\u0131s\u0131ndan da anla\u015f\u0131laca\u011f\u0131 \u00fczere belirtilen talimat\u0131 \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra taray\u0131c\u0131 \u00fczerinden <a href=\"http:\/\/127.0.0.1:6274\/#resources\" target=\"_blank\">127.0.0.1:6274<\/a> adresine istekte bulunarak ilgili arac\u0131 a\u00e7abiliriz.<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim.gif\" alt=\"Model Context Protocol (MCP) Nedir? Derinlemesine De\u011ferlendirelim...\" width=\"800\" height=\"504\" class=\"aligncenter size-full wp-image-27739\" \/><\/a>Arac\u0131 kullanabilmek i\u00e7in de yukar\u0131daki g\u00f6rselde oldu\u011fu gibi \u00f6nce <em>Connect<\/em> butonuna t\u0131klayarak bulunulan dizindeki MCP Server&#8217;a ba\u011flan\u0131lmal\u0131, ard\u0131ndan <em>Tools<\/em> k\u0131sm\u0131ndaki <em>List Tools<\/em> butonuna t\u0131klayarak MCP Server&#8217;da ki t\u00fcm tool&#8217;lar talep edilmelidir. Bu a\u015famadan sonra istenilen tool&#8217;u se\u00e7erek testi ger\u00e7ekle\u015ftirebilirsiniz.<\/p>\n<p>\u0130\u015fte bu kadar \ud83d\ude42<\/p>\n<p>Evet, art\u0131k MCP ile ilgili temellere vak\u0131f oldu\u011fumuza g\u00f6re son olarak geli\u015ftirdi\u011fimiz bir MCP Server&#8217;\u0131, AI Code Editor olan Cursor IDE&#8217;sinde nas\u0131l kullanabilece\u011fimize de\u011finerek i\u00e7eri\u011fimizi noktalayal\u0131m.<\/p>\n<h4>Geli\u015ftirdi\u011fimiz MCP Server&#8217;\u0131 Cursor IDE&#8217;sinde Kullanal\u0131m<\/h4>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-1.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-1.gif\" alt=\"Model Context Protocol (MCP) Nedir Derinlemesine De\u011ferlendirelim\" width=\"800\" height=\"431\" class=\"aligncenter size-full wp-image-27742\" \/><\/a>Bunun i\u00e7in yukar\u0131daki g\u00f6rselde oldu\u011fu gibi Cursor&#8217;\u0131n sa\u011f \u00fcst k\u00f6\u015fedeki ayarlar iconuna t\u0131klayarak <em>MCP<\/em> sekmesine gelinmeli ve <em>Add new global MCP server<\/em> butonu arac\u0131l\u0131\u011f\u0131yla olu\u015fturulan MCP Server uygulamas\u0131n\u0131n dizini g\u00f6rseldeki gibi bildirilmelidir. Tabi bildirimin nas\u0131l yap\u0131laca\u011f\u0131n\u0131 daha rahat inceleyebilmeniz i\u00e7in g\u00f6rseldeki yap\u0131land\u0131rmay\u0131 a\u015fa\u011f\u0131ya almakta fayda g\u00f6rmekteyim;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n{\r\n    &quot;mcpServers&quot;: {\r\n        &quot;MCPServer&quot;: {\r\n            &quot;command&quot;: &quot;cmd&quot;,\r\n            &quot;args&quot;: &#x5B;\r\n                &quot;\/c&quot;,\r\n                &quot;C:\\\\*********\\\\Model_Context_Protocol_Example\\\\MCP.Server\\\\bin\\\\Debug\\\\net9.0\\\\MCP.Server.exe&quot;\r\n            ]\r\n        }\r\n    }\r\n}\r\n<\/pre>\n<\/div>\n<p>Bu yap\u0131land\u0131rmadan sonra Cursor&#8217;a MCP Server eklenmekte ve a\u015fa\u011f\u0131daki g\u00f6rselden de net g\u00f6r\u00fclece\u011fi \u00fczere bu server&#8217;\u0131n tool&#8217;lar\u0131 otomatik olarak alg\u0131lanarak, listelenmektedir.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-6.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-6.png\" alt=\"Model Context Protocol (MCP) Nedir Derinlemesine De\u011ferlendirelim...\" width=\"641\" height=\"143\" class=\"aligncenter size-full wp-image-27743\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-6.png 641w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-6-300x67.png 300w\" sizes=\"auto, (max-width: 641px) 100vw, 641px\" \/><\/a>\u015eimdi bizler, bu tool&#8217;lara uygun sualleri LLM modeline g\u00f6nderelim ve b\u00f6ylece nas\u0131l tepkiler al\u0131naca\u011f\u0131n\u0131 ve s\u00fcrecin MCP Server&#8217;lar\u0131m\u0131za y\u00f6nlendirilip y\u00f6nlendirilmeyece\u011fini hep beraber a\u015fa\u011f\u0131daki g\u00f6rseller \u00fczerinden inceleyelim&#8230;<div id=\"attachment_27746\" style=\"width: 340px\" class=\"wp-caption alignleft\"><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-2.gif\"><img decoding=\"async\" aria-describedby=\"caption-attachment-27746\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-2.gif\" alt=\"Model Context Protocol (MCP) Nedir Derinlemesine De\u011ferlendirelim\" width=\"330\" class=\"size-full wp-image-27746\" \/><\/a><p id=\"caption-attachment-27746\" class=\"wp-caption-text\">Sum tool&#8217;unun testi&#8230;<\/p><\/div><div id=\"attachment_27747\" style=\"width: 340px\" class=\"wp-caption alignright\"><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-3.gif\"><img decoding=\"async\" aria-describedby=\"caption-attachment-27747\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/04\/Model-Context-Protocol-MCP-Nedir-Derinlemesine-Degerlendirelim-3.gif\" alt=\"Model Context Protocol (MCP) Nedir Derinlemesine De\u011ferlendirelim\" width=\"330\" class=\"size-full wp-image-27747\" \/><\/a><p id=\"caption-attachment-27747\" class=\"wp-caption-text\">Echo tool&#8217;unun testi&#8230;<\/p><\/div>Evet, g\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere Cursor&#8217;da girilen prompt&#8217;un mahiyetine g\u00f6re MCP Server&#8217;da ki tool&#8217;lar devreye girmekte ve beklenen i\u015flevsellikler g\u00f6sterilmektedir \ud83d\ude42<\/p>\n<p>Nihai olarak;<br \/>\nAnlayaca\u011f\u0131n\u0131z, MCP sayesinde \u00e7al\u0131\u015fmalar\u0131m\u0131zda kulland\u0131\u011f\u0131m\u0131z AI modelinin bilgilerini farkl\u0131 yaz\u0131l\u0131mlar \u00fczerinde organize edebilmekte ve ak\u0131ll\u0131ca kullanabilmekteyiz. Sonraki i\u00e7eriklerimizde, bu protokol ile Semantic Kernel e\u015fli\u011finde AI modelleriyle etkile\u015fim s\u00fcrecini ele alacak ve konuyu daha da sahadaki ihtiya\u00e7lara odakl\u0131 bir konuma getirip de\u011ferlendiriyor olaca\u011f\u0131z. Dolay\u0131s\u0131yla sizler bu makaleyi okurken, ben de bahse konu olan i\u00e7eriklerin zeminini olu\u015fturmaya gidiyor ve bir yandan da bu noktaya kadar okuyup e\u015flik etti\u011finiz i\u00e7in te\u015fekk\u00fcr ediyorum \ud83d\ude42<\/p>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<br \/>\nSonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<p>Not : \u00d6rnek \u00e7al\u0131\u015fmaya a\u015fa\u011f\u0131daki GitHub adresinden eri\u015febilirsiniz.<br \/>\n<a href=\"https:\/\/github.com\/gncyyldz\/Model_Context_Protocol_Example\" target=\"_blank\">https:\/\/github.com\/gncyyldz\/Model_Context_Protocol_Example<\/a><\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Bu i\u00e7eri\u011fimizde, yapay zeka modellerinin context&#8217;lerini y\u00f6netmek ve i\u015flemek i\u00e7in tasarlanm\u0131\u015f bir protokol olan Model Context Protocol (MCP)&#8216;\u00fc inceleyecek, \u00f6nceki i\u00e7eriklerimizde de\u011ferlendirdi\u011fimiz Semantic Kernel&#8216;la mukayesesini ger\u00e7ekle\u015ftirecek ve pratik dokunu\u015flarla bu protokol\u00fc deneyimleyece\u011fiz. O&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":27728,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5206,5222,5220],"tags":[5293,5296,5291,5294,5295,5292,5290,5289,5225],"class_list":["post-27715","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-net","category-llm","category-yapay-zeka-ai","tag-ai","tag-cursor-mcp","tag-mcp","tag-mcp-inspector","tag-mcp-inspector-nedir","tag-mcp-nedir","tag-model-context-protocol","tag-model-context-protocol-nedir","tag-yapay-zeka"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/27715","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=27715"}],"version-history":[{"count":19,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/27715\/revisions"}],"predecessor-version":[{"id":27750,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/27715\/revisions\/27750"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/27728"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=27715"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=27715"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=27715"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}