Yapay ZekaAI API

MCP Nedir? Model Context Protocol Kapsamlı Rehberi 2026

MCP nedir? Model Context Protocol (MCP), büyük dil modellerinin (LLM) dosya sistemleri, veritabanları, API’ler ve iş uygulamaları gibi dış araçlara standart bir şekilde bağlanmasını sağlayan açık bir protokol. Anthropic tarafından 2024 sonunda duyurulan MCP, 2026 itibarıyla OpenAI, Google DeepMind ve Microsoft dahil çoğu büyük yapay zeka sağlayıcısı tarafından desteklenen fiili bir endüstri standardına dönüştü. Bu yazıda MCP’nin ne işe yaradığını, mimarisini, basit bir sunucunun nasıl kurulacağını ve hangi projelerde tercih edilmesi gerektiğini uygulamalı biçimde ele alıyoruz.

MCP Nedir, Hangi Sorunu Çözüyor?

Yapay zeka ajanları geliştirmenin en büyük pratik sorunlarından biri, her yeni veri kaynağı veya araç için ayrı bir entegrasyon yazmak zorunda kalmaktı. Bir ajanın hem Slack’e hem GitHub’a hem de şirket içi bir veritabanına bağlanması gerekiyorsa, geliştirici üç farklı API için üç farklı entegrasyon kodu yazardı. Buna sektörde “N×M entegrasyon problemi” deniyor: N sayıda model sağlayıcısı ile M sayıda araç arasında her kombinasyon için ayrı bağlayıcı yazmak gerekiyordu.

MCP bu sorunu, USB-C bağlantı standardına benzer bir mantıkla çözüyor. Bir araç MCP sunucusu olarak bir kez yazılır; bu sunucuya MCP destekleyen herhangi bir model veya ajan istemcisi (Claude, ChatGPT, özel geliştirilmiş bir ajan) bağlanabilir. Böylece N×M entegrasyon yerine N+M entegrasyon yeterli hale geliyor.

Kısa Tarihçe

MCP, Kasım 2024’te Anthropic tarafından açık kaynak olarak yayınlandı. 2025 boyunca hızla yaygınlaştı; OpenAI Mart 2025’te Agents SDK ve ChatGPT masaüstü uygulamasında MCP desteğini duyurdu, Google DeepMind ise Nisan 2025’te Gemini modelleri ve Vertex AI için uyumluluk ekledi. 2026 itibarıyla resmi MCP kayıt defteri (registry) binlerce topluluk sunucusunu listeliyor ve protokol IDE’lerden (Cursor, VS Code) kurumsal ajan platformlarına kadar geniş bir yelpazede kullanılıyor.

Bu hızlı benimsenmenin arkasındaki temel neden, protokolün belirli bir şirkete bağımlı olmayan açık bir spesifikasyon olarak tasarlanması. Şirketler kendi kapalı entegrasyon formatlarını geliştirmek yerine ortak bir standarda yatırım yapmayı tercih ettiler; bu da tıpkı web’in HTTP üzerinde, e-postanın SMTP üzerinde standartlaşması gibi, yapay zeka araç ekosisteminin de tek bir ortak dil etrafında birleşmesini sağladı. Protokolün sürüm geçmişi de bu olgunlaşmayı yansıtıyor: ilk sürümden sonra 2025 ortasında yayınlanan güncelleme, yetkilendirme (authorization) akışlarını ve uzak sunucu desteğini standarda ekleyerek kurumsal kullanım için gereken güvenlik altyapısını genişletti.

MCP ve Fonksiyon Çağırma (Function Calling) Arasındaki Fark

MCP’ye yeni başlayanların sık karıştırdığı bir konu, protokolün model sağlayıcılarının uzun süredir sunduğu “function calling” (fonksiyon çağırma) özelliğiyle aynı şey olup olmadığı. İkisi ilişkili ama farklı katmanlarda çalışıyor:

  • Function calling: Modelin, geliştiricinin tanımladığı bir fonksiyon şemasına uygun bir JSON çıktısı üretmesini sağlayan model yeteneği. Fonksiyonun gerçekte çalıştırılması, uygulama kodunun sorumluluğunda.
  • MCP: O fonksiyonların (araçların) nasıl keşfedileceğini, nasıl tanımlanacağını ve nasıl bir ağ üzerinden sunulacağını standartlaştıran bir protokol katmanı.

Basitçe ifade etmek gerekirse, function calling modelin “bir araç kullanmak istiyorum” demesini sağlayan mekanizma; MCP ise o aracın nereden ve nasıl sunulacağını tanımlayan standart. MCP sunucusu bir aracı veya veriyi sunar; kendi içinde dil modeli veya function calling kullanmak zorunda değildir. Model seçimi ve araç çağrısının yürütülmesi host uygulamanın kontrolündedir.

MCP Mimarisi Nasıl Çalışır?

Protokol üç ana bileşenden oluşuyor:

  • Host: Kullanıcının etkileşimde bulunduğu uygulama (örneğin Claude Desktop, bir IDE eklentisi veya özel bir ajan uygulaması).
  • Client: Host içinde çalışan ve her bir MCP sunucusuyla birebir bağlantı kuran bileşen.
  • Server: Belirli bir veri kaynağını veya aracı (dosya sistemi, veritabanı, API) dış dünyaya MCP standardında sunan hafif program.

İletişim Katmanı: JSON-RPC 2.0

Host, client ve server arasındaki tüm mesajlaşma JSON-RPC 2.0 formatında yürütülüyor. Taşıma katmanında iki yaygın seçenek var: yerel süreçler arası iletişim için stdio (standart girdi/çıktı), uzak sunucular için ise HTTP tabanlı Streamable HTTP transport. Bir MCP sunucusu temelde üç tür yetenek sunabilir:

  • Tools (Araçlar): Modelin çağırabileceği fonksiyonlar (örn. “veritabanında sorgu çalıştır”).
  • Resources (Kaynaklar): Modelin okuyabileceği veri parçaları (örn. bir dosyanın içeriği).
  • Prompts (Şablonlar): Yeniden kullanılabilir istem şablonları.

MCP’yi Alternatiflerle Karşılaştırma

Yöntem Entegrasyon Yükü Standartlaşma Uygun Kullanım
Özel REST API entegrasyonu Her araç için ayrı kod Yok, her seferinde farklı Tek seferlik, basit entegrasyonlar
Eklenti/plugin sistemleri (eski nesil) Platforma özgü Kısmi, sağlayıcıya bağlı Tek bir platforma kilitlenmeyi kabul edenler
MCP Sunucu bir kez yazılır, çok istemci ile çalışır Açık standart, çoklu sağlayıcı desteği Birden fazla araç/model ile çalışan ajan projeleri
RAG (vektör veritabanı ile alma) Orta, ayrı bir indeksleme hattı gerekir Yok, uygulamaya özgü Büyük metin koleksiyonlarında anlamsal arama

Not: MCP ve RAG birbirinin rakibi değil, çoğu zaman birlikte kullanılıyor. Bir MCP sunucusu, arka planda bir vektör veritabanını sorgulayan bir “arama” aracı sunabilir.

Basit Bir MCP Sunucusu Nasıl Kurulur?

Aşağıdaki örnekler SDK’nın gösterilen API’lerini kullanan yerel stdio demosudur. Python ve TypeScript SDK sürümlerini birlikte doğrulayıp sabitleyin; güncel protokol sürümü ile eski SDK örneklerinin aynı özellikleri desteklediğini varsaymayın. JSON yapılandırması bütün host uygulamalarda aynı değildir.

  1. Sanal ortam oluşturun ve SDK’yı kurun: pip install mcp
  2. Sunucu dosyanızı oluşturun ve araçlarınızı tanımlayın (aşağıdaki kod örneğine bakın).
  3. Sunucuyu yerelde stdio modunda çalıştırarak test edin.
  4. Host uygulamanızın (örneğin Claude Desktop) yapılandırma dosyasına sunucuyu ekleyin.
  5. Host uygulamasını yeniden başlatıp aracın araç listesinde göründüğünü doğrulayın.
  6. Gerçek veriyle küçük bir test isteği göndererek uçtan uca doğrulama yapın.

Örnek Sunucu Kodu (Python)

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("dosya-arama-sunucusu")

@mcp.tool()
def dosya_ara(klasor: str, anahtar_kelime: str) -> list[str]:
    """Belirtilen klasörde anahtar kelimeyi içeren dosyaları listeler."""
    import os
    sonuclar = []
    for kok, _, dosyalar in os.walk(klasor):
        for ad in dosyalar:
            if anahtar_kelime.lower() in ad.lower():
                sonuclar.append(os.path.join(kok, ad))
    return sonuclar

if __name__ == "__main__":
    mcp.run(transport="stdio")

Host Yapılandırma Örneği (JSON)

Çoğu MCP uyumlu host, sunucuları aşağıdakine benzer bir yapılandırma dosyasıyla tanımlamanızı bekliyor:

{
  "mcpServers": {
    "dosya-arama-sunucusu": {
      "command": "python",
      "args": ["/tam/yol/dosya_arama_sunucusu.py"]
    }
  }
}

Bu dosya kaydedildikten ve host uygulaması yeniden başlatıldıktan sonra, model artık dosya_ara aracını doğrudan çağırabilir hale gelir.

TypeScript ile Basit Bir İstemci Örneği

Kendi ajan uygulamanızı sıfırdan yazıyorsanız, resmi TypeScript SDK’sı ile bir MCP sunucusuna bağlanmak da benzer şekilde birkaç satır kod gerektiriyor:

import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";

const transport = new StdioClientTransport({
  command: "python",
  args: ["/tam/yol/dosya_arama_sunucusu.py"],
});

const client = new Client({ name: "ornek-istemci", version: "1.0.0" });
await client.connect(transport);

const araclar = await client.listTools();
console.log(araclar);

const sonuc = await client.callTool({
  name: "dosya_ara",
  arguments: { klasor: "/proje", anahtar_kelime: "rapor" },
});
console.log(sonuc);

Bu örnek, bir istemcinin sunucuya bağlanıp mevcut araçları listelemesini ve ardından bir aracı gerçek parametrelerle çağırmasını gösteriyor. Üretim kodunda hata yakalama (try/catch) ve zaman aşımı yönetimi eklenmesi öneriliyor.

Performans, Ölçeklendirme ve Maliyet Notları

MCP protokolünün kendisi ek bir model maliyeti getirmiyor; maliyet, kullanılan LLM’in API ücretlerinden ve sunucunun çalıştığı altyapıdan kaynaklanıyor. Yine de dikkat edilmesi gereken birkaç pratik nokta var:

  • Araç sayısı arttıkça istem (prompt) boyutu büyür: Her araç tanımı modele bağlam olarak gönderildiği için, çok sayıda araç bağlı bir sistemde token maliyeti artabilir. Gereksiz veya nadir kullanılan araçları devre dışı bırakmak maliyeti düşürür.
  • stdio transport tek makine sınırlıdır: Yerel süreçler arası iletişim düşük gecikmeli ama tek makineyle sınırlı; çok kullanıcılı veya dağıtık sistemlerde HTTP tabanlı transport tercih edilmeli.
  • Eşzamanlı istek yönetimi: Yoğun trafikli bir MCP sunucusunda, aynı anda gelen çok sayıda araç çağrısını kuyruğa almak veya oran sınırlama (rate limiting) eklemek, sunucunun aşırı yüklenmesini önler.

MCP İstemci Desteği: Hangi Uygulamalar Destekliyor?

2026 itibarıyla MCP desteği host uygulamalar arasında farklılık gösteriyor. Aşağıdaki tablo, yaygın kullanılan bazı istemcilerin destek düzeyini özetliyor. Sürümler sık güncellendiği için kurulum öncesi ilgili uygulamanın güncel belgelerinden doğrulama yapılması öneriliyor.

Uygulama MCP Desteği Transport Not
Claude Desktop Yerleşik (tam destek) stdio, HTTP Yapılandırma dosyası üzerinden sunucu eklenir
Cursor Yerleşik stdio, HTTP Proje bazlı veya global sunucu tanımlanabilir
ChatGPT (masaüstü/Agents SDK) Kısmi/genişleyen destek HTTP Bağlayıcı ekosistemiyle birlikte genişliyor
VS Code (eklenti üzerinden) Eklentiye bağlı stdio, HTTP Resmi ve topluluk eklentileri mevcut
Özel ajan (kendi kodunuz) SDK ile tam kontrol Seçime bağlı Python/TypeScript SDK ile sıfırdan entegre edilir

Gerçek Kullanım Senaryoları

MCP’nin pratikte en çok kullanıldığı alanlar şunlar:

Kod Editörleri ve Geliştirici Araçları

Cursor ve VS Code gibi editörler, proje dosyalarını, git geçmişini ve terminal çıktısını MCP üzerinden modele sunuyor. Bu sayede model, kod tabanını okumak için ayrı bir dosya yükleme adımına ihtiyaç duymadan doğrudan ilgili dosyaları arayıp okuyabiliyor. Pratikte bu, “şu fonksiyonu bul ve refactor et” tarzı isteklerde editörün modele proje bağlamını otomatik sağlaması anlamına geliyor.

Kurumsal Veri Erişimi

Şirket içi CRM, destek talebi (ticket) sistemi veya iç dokümantasyona ajan üzerinden erişim, MCP’nin en çok talep gören kurumsal kullanım alanlarından biri. Örneğin bir müşteri destek ajanı, MCP sunucusu üzerinden şirketin bilgi bankasını sorgulayabilir, aynı sunucu üzerinden yeni bir destek talebi açabilir. Buradaki kritik nokta, veri kaynağının kod tarafında yalnızca bir kez MCP sunucusu olarak tanımlanması; farklı ajanlar veya modeller aynı sunucuyu tekrar tekrar kullanabiliyor.

Otomasyon Platformları

n8n gibi görsel iş akışı araçları, MCP sunucularını iş akışlarına doğrudan düğüm olarak ekleyebiliyor. Bu, kod yazmadan bir yapay zeka ajanının belirli MCP araçlarını bir otomasyon zincirinin parçası olarak tetiklemesine imkân tanıyor. Örneğin bir e-ticaret sitesinde stok azaldığında otomatik tedarikçi e-postası taslağı hazırlatmak, bu tarz bir MCP + otomasyon platformu kombinasyonuyla kurulabilir.

Çoklu Ajan Sistemleri

Birden fazla ajanın aynı araç setine ihtiyaç duyduğu sistemlerde (örneğin bir “araştırmacı ajan” ve bir “yazar ajan” aynı belge deposuna erişmesi gerektiğinde), her ajan için ayrı entegrasyon yazmak yerine tek bir MCP sunucusu paylaşılabiliyor. Bu, çoklu ajan mimarilerinde bakım yükünü belirgin biçimde azaltıyor.

MCP Kayıt Defteri (Registry) Nedir?

Resmi MCP kayıt defteri, topluluk ve resmi olarak yayınlanmış MCP sunucularının listelendiği merkezi bir dizin. Geliştiriciler burada halihazırda var olan bir sunucuyu (örneğin bir popüler SaaS ürünü için hazır MCP entegrasyonu) arayıp doğrudan kullanabilir, sıfırdan yazmak zorunda kalmaz. Bir sunucuyu kayıt defterinden kullanmadan önce şu noktaları kontrol etmek öneriliyor: sunucunun kaynak kodu açık mı, hangi izinleri talep ediyor, ve bakımı aktif olarak sürdürülüyor mu.

Güvenlik ve Riskler

MCP, modele doğrudan araç çalıştırma yetkisi verdiği için güvenlik konusunda dikkatli tasarlanması gerekiyor. Öne çıkan riskler:

  • Prompt injection: Kötü niyetli bir kaynak (örneğin taranan bir web sayfası), modele gizli talimatlar enjekte edip yetkisiz araç çağrısı tetikleyebilir.
  • Aşırı yetkilendirme: Bir MCP sunucusuna gereğinden fazla dosya sistemi veya veritabanı erişimi verilmesi.
  • Doğrulanmamış üçüncü taraf sunucular: Topluluk kayıt defterinden indirilen sunucuların kod incelemesi yapılmadan çalıştırılması.

Pratikte önerilen yaklaşım, her MCP sunucusuna yalnızca ihtiyaç duyduğu minimum yetkiyi vermek (en az ayrıcalık ilkesi) ve üretim ortamında yalnızca kaynağı doğrulanmış sunucuları kullanmak.

Kurumsal Ortamda Ek Önlemler

Kurumsal dağıtımlarda güvenlik ekiplerinin genellikle şu adımları eklediği görülüyor: sunucuların ayrı bir konteyner veya sanal makinede izole çalıştırılması, araç çağrılarının merkezi bir günlükleme (logging) sistemine kaydedilmesi ve yüksek riskli araçlar (örneğin dosya silme veya ödeme işlemi başlatma) için ek bir insan onayı adımının devreye sokulması. Bu tür ajanların yetkilerini kısıtlarken OWASP’ın yapay zeka uygulamaları için yayınladığı güvenlik kontrol listeleri de referans olarak kullanılabiliyor. Ayrıca sunucunun herkese açık kayıt defterine eklenip eklenmeyeceği de bir tasarım kararı: çoğu kurumsal senaryoda sunucu yalnızca şirket içi ağda veya kimlik doğrulaması gerektiren bir uç noktada çalıştırılıyor; sunucuyu kamuya açık kayıt defterine eklemek genellikle yalnızca başkalarının da kullanmasını istediğiniz genel amaçlı araçlar için tercih ediliyor.

Yaygın Hata Mesajları ve Çözümleri

MCP sunucusu kurarken karşılaşılan bazı tipik hatalar ve çözüm yönleri:

Hata / Belirti Olası Neden Çözüm
Sunucu host listesinde görünmüyor Yapılandırma dosyasında sözdizimi hatası veya göreli yol kullanımı JSON’u bir doğrulayıcıdan geçirin, mutlak yol kullanın
“Connection closed” hatası Sunucu betiği başlangıçta hata verip kapanıyor Sunucuyu terminalde doğrudan çalıştırıp hata çıktısını okuyun
Araç listede var ama çağrılmıyor Araç açıklaması (docstring) belirsiz, model ne zaman kullanacağını anlamıyor Araç açıklamasını ve parametre adlarını netleştirin
Zaman aşımı (timeout) hatası Araç fonksiyonu uzun süren bir işlemi senkron çalıştırıyor Uzun işlemleri arka planda çalıştırıp durum sorgusu ekleyin

Sık Yapılan Hatalar

  • Sunucuya gereğinden geniş dosya sistemi erişimi vermek: Kök dizine tam erişim yerine yalnızca gerekli klasörle sınırlandırın.
  • Hata yönetimini atlamak: Araç fonksiyonlarında try/except kullanmadan üretime almak, beklenmedik çökmelere yol açar.
  • Yapılandırma dosyasında mutlak yol yerine göreli yol kullanmak: Host uygulaması farklı bir çalışma dizininden başlatıldığında sunucu bulunamaz.
  • Sürüm uyumsuzluğunu göz ardı etmek: SDK ve host uygulaması farklı protokol sürümlerini destekliyorsa bağlantı sessizce başarısız olabilir.
  • Test etmeden üretime almak: Yerelde stdio modunda test etmeden doğrudan kurumsal ortama dağıtmak hata ayıklamayı zorlaştırır.

Kime, Hangi Durumda Uygun?

MCP, birden fazla araç veya veri kaynağını birden fazla model/ajan istemcisiyle çalıştırmak isteyen geliştiriciler ve kurumlar için anlamlı bir yatırım. Tek bir basit API’yi tek bir uygulamaya bağlayacaksanız, doğrudan bir REST entegrasyonu yazmak muhtemelen daha hızlı bir başlangıç noktası olur. Ancak zaman içinde birden fazla ajan platformuyla çalışmayı, araçları yeniden kullanmayı veya topluluk sunucularından faydalanmayı planlıyorsanız, MCP standardına yatırım yapmak orta vadede entegrasyon yükünü belirgin biçimde azaltıyor. Resmi belgelere ve protokol şemasına modelcontextprotocol.io adresinden ulaşabilirsiniz. Ajan mimarisinin genel işleyişi hakkında daha fazla bilgi için yapay zeka ajanları rehberimize, modelin bağlam sınırları hakkında daha fazla bilgi için ise context window rehberimize göz atabilirsiniz. Özetle: MCP tek başına “sihirli” bir çözüm değil, doğru kapsamda kullanıldığında entegrasyon karmaşıklığını azaltan pratik bir mühendislik standardı.

Sık Sorulan Sorular

MCP nedir, kısaca nasıl özetlenir?

MCP, yapay zeka modellerinin dış araçlara ve veri kaynaklarına standart bir protokol üzerinden bağlanmasını sağlayan açık kaynaklı bir entegrasyon standardıdır.

MCP hangi şirketler tarafından destekleniyor?

Protokolü ilk yayınlayan Anthropic’in yanı sıra OpenAI, Google DeepMind ve Microsoft dahil çoğu büyük yapay zeka sağlayıcısı 2026 itibarıyla MCP desteği sunuyor.

MCP ile RAG arasındaki fark nedir?

RAG, büyük metin koleksiyonlarında anlamsal arama yapıp ilgili parçaları modele sunan bir tekniktir. MCP ise modelin araçlara ve veri kaynaklarına nasıl bağlanacağını tanımlayan bir protokoldür; bir MCP sunucusu arka planda RAG kullanabilir.

MCP sunucusu yazmak için hangi diller kullanılabilir?

Resmi SDK’lar Python, TypeScript, Java, Kotlin ve C# dahil birçok dilde mevcut; topluluk ayrıca başka dillerde de uygulamalar geliştiriyor.

MCP kullanmak ücretli mi?

Protokolün kendisi açık kaynak ve ücretsizdir. Maliyet, kullanılan model sağlayıcısının API ücretlerinden ve sunucuyu çalıştırdığınız altyapıdan kaynaklanır; ek olarak çok sayıda araç bağladığınızda artan token tüketimini de hesaba katmak gerekir.

Küçük bir proje için MCP gerekli mi?

Tek bir basit entegrasyon için MCP kurulum yükü fazla gelebilir; bir de bir seferlik, tek uygulamalık bir entegrasyon planlıyorsanız doğrudan REST çağrısı yazmak daha hızlı bir başlangıç olabilir. Ancak birden fazla araç veya istemciyle çalışma planınız varsa protokolün getirdiği standartlaşma avantajı öne çıkar.

Dosya Arama Örneğinin Yetki Sınırı

Örnek dosya adlarını arar, dosya içeriğini okumaz. klasor parametresini modelin serbestçe belirlemesine izin vermek bütün kullanıcı dizinine erişim yaratabilir. Sunucuda izinli kök dizini sabitleyin; çözülmüş yolların bu kökün altında kaldığını ve sembolik bağlantıların dışarı çıkmadığını kontrol edin. Sonuç sayısı ve süre sınırı koyun. stdio protokol çıktısına print ile debug metni yazmayın; stderr kullanın. İstemci kapanırken bağlantıyı finally içinde kapatın. Registry’de listelenmek güvenlik onayı anlamına gelmez.

Teknik kaynak: MCP — Resmî mimari açıklaması.

özgür BAYRAM

Özgür Bayram, WordPress, Laravel, yapay zekâ ve web performansı alanlarında çalışan bir yazılım geliştiricisidir. Bilim Meraklısı’nda teknoloji, yazılım, hosting, SEO ve dijital araçlar hakkında anlaşılır, uygulanabilir rehberler hazırlar. Amacı, teknik konuları sade bir dille anlatarak okuyucuların doğru kararlar vermesine ve sorunlarını güvenle çözmesine yardımcı olmaktır.

İlgili Makaleler

Bir yanıt yazın

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

Başa dön tuşu