MCP Mimarisi: Diyagramlarla Kapsamlı Teknik İnceleme

Host'ları, istemcileri ve sunucuları, JSON-RPC veri katmanını, taşıma seçeneklerini, çok kiracılı kurulumları, güvenlik risklerini ve diyagramlarla sekiz adımlı bir istek akışını ele alan kapsamlı bir MCP mimarisi teknik incelemesi.

Diagram of MCP architecture: an AI application exchanges requests with an MCP server, which provides tools, resources, and prompts.

MCP mimarisi, MCP'yi (Model Context Protocol) mümkün kılan temel bileşenler ve iletişim kuralları bütünüdür. MCP açık kaynaklı bir standarttır; MCP mimarisi ise bu standardın üzerinde çalıştığı altyapıdır.

Her MCP mimarisi üç temel bileşen içerir ve bu bileşenler etrafında inşa edilir: bir host (ana uygulama), bir istemci ve bir sunucu. MCP'nin iletişim çerçevesinin genellikle bir veri katmanı ile bir taşıma katmanından oluştuğu belirtilir. Veri katmanı, mesajların nasıl biçimlendirileceğine ilişkin kurallar bütünüdür (MCP istekleri JSON-RPC 2.0 biçiminde gönderilir). Taşıma katmanı ise bu mesajları iletir ve harici bağlantılar için Streaming HTTP kullanır.

MCP mimarisi nedir?

MCP mimarisi, açık bir standart olan Model Context Protocol'ü uygulayan bir sunucu çerçevesidir. Bu standart, yapay zeka modellerini araçlara bağlamanın yanı sıra onları veritabanları gibi kaynaklara ve girdi bağlamını genişleten istemlere de bağlar. Bunlar topluca “temel öğeler” (primitives) olarak adlandırılır. Sonuç olarak MCP mimarisi, LLM'lerin hangi araçların kullanılabilir olduğunu keşfetmesine ve iş akışlarını yürütmesine olanak tanır; üstelik istemci tarafında düzenli güncellemeler gerektirmez.

Anthropic tarafından tanıtılmasından bu yana MCP mimarisi, yapay zeka iş akışlarında yaygın olarak kullanılır hale geldi. Bunun başlıca nedeni, birden fazla API bağlantısı etrafında kurulan sistemler gibi bakımı daha zahmetli sistemlerin yerini performanstan ödün vermeden almasıdır. Kullanılabilir tüm işlevler MCP sunucusunun arkasında yer aldığından yalnızca tek bir bağlantı gerekir; güncellemeler ve eklemeler de istemci uygulamasında anında kullanılabilir hale gelir.

MCP mimarisi bileşenleri: Host'lar, istemciler ve sunucular

MCP, LLM'lere host uygulamanın yerel sisteminde veya harici bir sağlayıcıda kendilerine sunulan araçları, istemleri ve kaynakları keşfetme ve çağırma imkânı verir.

Harici işlevlere erişim sağlayan araçlar söz konusu olduğunda keşif, host'un hangi araçların kullanılabilir olduğunu bulmak için MCP sunucusuna bir tools/list çağrısı yapmasını kapsar. Ardından LLM (veya bazı durumlarda host) kullanılabilir araçların açıklamalarını okuyabilir ve gerektiğinde bu araçları talep edebilir. İstemler ve kaynaklar için de benzer bir süreç izlenir.

Bu yaklaşım, yazılım geliştirmede uzun süredir norm olan ve uygulamanın dışındaki işlevlerin özel bağlantılar ve tam olarak biçimlendirilmiş isteklerle çağrılmasını gerektiren, ihtiyaca özel API tabanlı mimariden farklıdır.

Host

Host uygulama, merkezi orkestrasyon platformudur ve bir LLM'ye bağlanır. Perplexity ve Claude Desktop gibi tanınmış araçlar, bir MCP sisteminde host görevi görebilir.

Basit bir iş akışında kullanıcı, sohbet arayüzü üzerinden bir soru sorar. Ardından host'un orkestratör bileşeni soruya bağlam ekleyerek LLM'ye hangi MCP temel öğelerinin kullanılabilir olduğunu ve bunların yeteneklerine ilişkin bir açıklamayı iletir.

İstemci

İstemci, yapay zeka uygulamasındaki bir yazılım bileşenidir. MCP, istemcinin host'un veya LLM'nin talimatlarına göre dahili ve harici MCP sunucularıyla iletişim kurması için standart bir arayüz sağlar. İstemcinin görevi bağlantı kurmak, JSON-RPC mesajlarını biçimlendirmek, istek göndermek ve yanıt almaktır.

“MCP host” ve “MCP istemcisi” terimleri bazen birbirinin yerine kullanılır. Ancak bu ayrım faydalıdır; çünkü Perplexity gibi bir host aynı anda birden fazla MCP istemcisini yönetebilir. Karmaşık bir yapay zeka iş akışı, düzinelerce hatta yüzlerce ayrı MCP sunucusuna erişim gerektirebilir ve bunların her biri ayrı bir bağlantı kullanır.

Sunucu

Sunucu, yapay zeka tabanlı aracın kullanabileceği tüm araçları sunar. Mimari açıdan MCP sunucusu gelen isteği yorumlar ve gerektiğinde talep edilen temel öğelere bağlanır.

MCP sunucuları üç temel öğe kategorisine erişim sağlayabilir:

  • Araçlar: Bunlar esasen harici yazılım işlevleridir. Geleneksel API tabanlı bir yaklaşımı düşünürseniz, bir web analitiği uygulaması harici bir sunucuya biçimlendirilmiş bir istek göndererek veri alabilir. MCP mimarisinde ise bir sağlayıcının tüm üçüncü taraf işlevleri tek bir bağlantı üzerinden kullanılabilir ve istekler standart biçimlendirme kurallarına göre oluşturulur.
  • Kaynaklar: Kaynaklar, salt okunur bağlam sağlayan veri kaynaklarıdır. Veritabanı şemaları buna iyi bir örnektir. MCP sunucusu, host'un kullanabileceği çeşitli bilgi kaynaklarını sunar. Host, örneğin LLM tarafından oluşturulan bir SQL aramasıyla veritabanını sorgularsa bu bir araç isteği olarak kabul edilir.
  • İstemler: Bunlar, LLM'lerin belirli görevleri yerine getirmesine yardımcı olan yeniden kullanılabilir istem şablonlarıdır. Bir kullanıcı veya host, bir görevi tamamlamak için hazır talimatlara ihtiyaç duyduğunda araç yerine istem çağırır. Host uygulamadaki “kodu incele” veya “verileri analiz et” seçeneği gibi önceden tanımlanmış görevler genellikle kullanıcının seçebileceği istemler olarak saklanır.

Ayrıca MCP ve API teknolojilerinin birbirini dışlamadığını da belirtmekte fayda var. MCP sunucusu, bir keşif isteğine yanıt olarak kullanılabilen API çağrılarını sunabilir. Burada kilit nokta, bunların bakımının istemciye değil MCP sağlayıcısına ait olmasıdır.

MCP mimarisinde veri katmanı nedir?

MCP mimarisindeki veri katmanı, isteklerin, yanıtların ve bildirimlerin nasıl biçimlendirileceğini tanımlayan kurallar bütünüdür. Mesajlar için standart dil JSON-RPC'dir.

Tüm MCP mimarileri temel bir süreci izler: (1) host tarafından başlatma ve keşif, (2) MCP sunucusunun yanıtı ve (3) host tarafından yapılan bir çağrı (bazen LLM tarafından kararlaştırılır). Her aşama ayrı bir JSON mesajını temsil eder.

Araç keşfinin nasıl çalıştığını iki örnek üzerinden inceleyelim (bunlar kaynaklar veya istemler için de geçerli olabilir):

  • LLM üretiminden önce araçları keşfetme: Host, MCP istemcisini başlatır ve istemci bir tools/list isteği (MCP sunucusunun kullanılabilir araçlar listesi) gönderir. LLM, üretim sürecinde bu listeyi inceler ve belirli bir araca, kaynağa veya isteme ihtiyaç olup olmadığını belirler.
  • LLM'ye arama yapma seçeneği sunma: Bir ajan tabanlı sistemde host, bağlam girdisine search-tools gibi bir keşif seçeneği ekler ve LLM gerektiğinde arama talep edebilir.

Büyük ölçüde harici uygulama işlevlerinden oluşan araçlar genellikle LLM veya host tarafından seçilir. Kaynaklar ve istemler ise genellikle kullanıcının isteği üzerine veya host tarafından talep edilir.

Hayali bir not uygulamasından bir MCP sunucusuna gönderilen tools/list isteği şöyle görünür:

json
{ "jsonrpc": "2.0", "id": 101, "method": "tools/list", "params": { "_meta": { "io.modelcontextprotocol/protocolVersion": "2026-07-28", "io.modelcontextprotocol/clientInfo": { "name": "notes-app-client", "version": "0.1.0" }, "io.modelcontextprotocol/clientCapabilities": {} } } }

Bu örnekte “id”:101, istemcinin yanıtları eşleştirebilmesi için isteği bir kimlikle tanımlar; “params” alanı ise istemci adı (notes-app-client) ve yetenekler gibi istemciye ilişkin ek bilgiler içerir.

Buna yanıt olarak MCP sunucusu, kullanılabilir araçların adlarını ve ilgili ayrıntılarını içeren araç tanımlarını döndürür. Örneğin liste, not uygulamasının bağlı bir görev yönetimi veya takvim uygulamasında görevler oluşturmasına ve her göreve bir başlık ile öncelik atamasına olanak tanıyan bir add-task aracı içerebilir.

Bir istek şöyle görünebilir:

json
{ "jsonrpc": "2.0", "id": 202, "method": "tools/call", "params": { "name": "add-task", "arguments": { "title": "Review the draft", "priority": "medium" }, "_meta": { "io.modelcontextprotocol/protocolVersion": "2026-07-28", "io.modelcontextprotocol/clientInfo": { "name": "notes-app-client", "version": "0.1.0" }, "io.modelcontextprotocol/clientCapabilities": {} } } }

“method” alanı MCP sunucusuna bunun bir araç çağrısı olduğunu bildirir, “name” hangi aracın çağrılacağını belirtir ve “arguments” gerekli girdileri sağlar.

MCP mimarisinde taşıma katmanı nedir?

Veri katmanı, bir istemci ile MCP sunucusu arasındaki bağlantının ne sorusuna karşılık geliyorsa, taşıma katmanı da nasıl sorusuna karşılık gelir. Mesajların nasıl iletildiğini, yani kullanılan kanalı ve isteklerle yanıtların nasıl teslim edileceğini belirleyen kuralları tanımlar.

MCP'nin iki taşıma yolu vardır:

  • Standart girdi/çıktı: Bu yöntem, MCP sunucusu host uygulamayla aynı yerel ortamda çalıştığında kullanılır. İstemci, JSON isteğini sunucunun standart girdisine yazar. Sunucu bunu okur, istenen işlemi gerçekleştirir ve yanıtı standart çıktıya yazar.
  • Streamable HTTP: MCP sunucusu host uygulamanın dışında çalıştığında MCP istemcisi, isteklerini HTTP POST kullanarak sunucuya gönderir. Sunucu ya tek bir JSON mesajıyla ya da zaman içinde birden fazla mesaj döndürmesine olanak tanıyan kalıcı bir “dinleme” kanalı olan Server-Sent Events (SSE) akışıyla yanıt verir.

MCP çok kiracılı mimari nedir?

MCP çok kiracılı mimari, aynı anda birden fazla kullanıcıya (kiracıya) hizmet verebilen bir uygulama modelidir.

Burada kiracı bir birey, bir grup birey veya bir kuruluş olabilir. Bu model; her kiracı için ayrı bir MCP sunucusu çalıştırmayı, tek bir paylaşılan sunucuya erişim sağlamayı veya bir sunucu grubunu merkezi bir ağ geçidinin arkasına yerleştirmeyi içerebilir. Ağ geçidi kullanıldığında istekleri, kullanıcının kimliğine veya isteğin niteliğine göre doğru uç noktalara yönlendirir.

Standart MCP mimarisiyle aynı temel prensiple çalışır; ancak bireysel kullanıcı istekleri kendi çalışma alanlarında yürütülür (paylaşılan kaynaklar söz konusu olsa bile) ve ayrı ayrı kimlik doğrulamasından geçer. Kurumsal senaryolarda yaygındır ve birden fazla MCP sunucusu çalıştırmak gereksiz yere maliyetli olacağından genellikle paylaşılan kaynaklar tercih edilir.

MCP mimarisi diyagramı: Adım adım açıklama

Uçtan uca bir MCP isteği pratikte nasıl görünür? Her biri farklı bir mimari bileşeni içeren sekiz temel aşama vardır.

Daha önceki örnekte yer alan, bir görev yönetimi hizmetine bağlı not uygulamasını kullanarak bir MCP araç çağrısının pratikte nasıl göründüğüne bakalım:

  1. Araç keşfi: Not uygulaması (host), MCP istemcisini kullanarak bir tools/list isteğiyle sunucunun kullanılabilir araçlarını talep eder. Sunucu, add-task aracınınkiler de dahil olmak üzere araçların adlarını, açıklamalarını ve beklenen girdilerini döndürür. Bu işlem, siz bir istem göndermeden önce gerçekleşebilir.
  2. Kullanıcı girdisi: LLM tabanlı not uygulamasına, uygulama içi sohbet botu aracılığıyla “Takvimimde, yeni taslağımı incelemek için orta öncelikli bir görev oluştur.” gibi bir istek gönderirsiniz.
  3. Model işleme: Host, isteğinizi ve ilgili araç tanımlarını LLM'ye gönderir.
  4. Araç seçimi: LLM, aracı ve girdilerini belirten yapılandırılmış bir araç isteği oluşturur: add-task aracı, title: Review the draft ve priority: Medium değerleriyle. Host, işleme izin verilip verilmediğini kontrol eder ve isteği, bir JSON-RPC mesajı gönderen MCP istemcisine iletir.
  5. İstek: MCP istemcisi, kendi MCP sunucusuna bir tools/call isteği gönderir.
  6. Araç yürütme: MCP sunucusu, belirtilen başlık ve önceliğe sahip yeni bir görev oluşturmak için görev yönetimi uygulamasının API'sini çağırır.
  7. Sonucun döndürülmesi: Sunucu sonucu MCP istemcisine geri gönderir, istemci de bunu host'a iletir. Host, sonucu LLM'ye sağlanan bilgilere ekler.
  8. Yanıt oluşturma: LLM, sonucu kullanarak kullanıcı için “Taslağı incelemek üzere orta öncelikli bir görev oluşturdum.” gibi bir yanıt oluşturur.

MCP mimarisi geleneksel API mimarisinden nasıl farklıdır?

MCP ve geleneksel API mimarisi sıklıkla karıştırılır, ancak bunlar birbirini tamamlayan teknolojilerdir. MCP özellikle yapay zeka tabanlı uygulamalar için tasarlanmıştır. Sabit kodlanmış birden fazla API bağlantısını uygulamanın ve yönetmenin getirdiği yüksek bakım yükünün üstesinden gelir.

MCP, host uygulamaya her işlev sağlayıcısı veya dahili kaynak için tek bir bağlantı sunarak şişirilmiş bağlam girdisi (tüm API'lerin listelenmesi) veya sınırlı API tabanlı uygulama betikleri sorununu gidermeye yardımcı olur.

Bunun yerine MCP'ler, API'leri (daha doğrusu API'leri çağıran işlevleri) araç listelerinin bir parçası olarak sunabilir. Bir sağlayıcı uygulamasını güncellediğinde ve yeni bir API ortaya çıktığında ya da belgeler değiştiğinde yalnızca MCP sunucusunu güncellemesi yeterlidir. Host uygulama tarafında herhangi bir kod değişikliği gerekmez.

MCP mimarisi güvenli mi?

MCP güvenliği, tanıtıldığı günden bu yana pek çok tartışmanın konusu olmuştur. Genel olarak güvenli bir teknoloji kabul edilse de çeşitli güvenlik riskleri vardır ve bunların birçoğu karmaşık mimari uygulamalarında daha belirgin hale gelir.

MCP mimarisi aşağıdaki potansiyel zayıflıkları barındırır:

  • İstem enjeksiyonu: Bir kullanıcı, harici verilere yapay zeka modelinin talimat olarak yanlış yorumladığı kötü amaçlı bir istem yerleştirir.
  • Aşırı ayrıcalıklı erişim: MCP sunucuları bir yapay zeka modeline çok sayıda araç sunabilir; bu da güvenlik sorunlarının olası etki alanını (blast radius) genişletebilir.
  • Kazara veri sızıntıları: Kötü yapılandırılmış uygulamalar, API anahtarları veya veritabanı kimlik bilgileri gibi hassas bilgilerin bir LLM'ye aktarılmasına yol açabilir.
  • Yerel sistem manipülasyonu: Yerel MCP sunucuları da diğer tüm uygulamalar kadar kötü amaçlı betikler gibi yerel sistem sorunlarına karşı savunmasızdır; üstelik ajan tabanlı yapay zeka sistemleri üzerinde zincirleme zararlı etkilere yol açabilirler.

Bu sorunların hiçbiri aşılmaz değildir. Sistem güvenliğini sağlamak için çoğu zaman yerleşik önlemler yeterlidir. Süreçte bir insanın yer alması, hassas veriler üzerinde sıkı denetimler uygulanması ve sunucu saldırılarına karşı koruma sağlanması gibi önlemler yaygın uygulamalardır.

MCP mimarisini gelecekte neler bekliyor?

MCP, geliştiriciler için faydalı ve popüler bir açık standart olduğunu kanıtladı. LLM tabanlı uygulamalardaki sabit kodlanmış API'lerin pek çok sorununun üstesinden gelir ve geliştiricilerin kodlama yükünü önemli ölçüde azaltır.

Önümüzdeki dönemde MCP'nin temelindeki host ve sunucu mimarisi büyük olasılıkla aynı kalacak. Gelecekteki yenilikler, çok adımlı iş akışlarında gelişmiş ajan tabanlı yeteneklere odaklanacak.

Ayrıca bu ajan tabanlı işlevler uygulandıkça daha güçlü güvenlik önlemlerine, yapay zeka sistemleri daha kapsamlı ve karmaşık hale geldikçe de özellikle taşıma katmanında ölçeklenebilir bir mimariye ihtiyaç duyulacak.