İçeriğe atla
Makale

MCP (Model Context Protocol) Nedir? MCP Server ve Güvenliği

MCP'nin host, client ve server mimarisini, JSON-RPC mesajlarını, araç ve kaynak yeteneklerini, OAuth yetkilendirmesini ve güvenlik risklerini anlattık.

Oğuzhan Gerçek··7 dk okuma
MCP (Model Context Protocol) Nedir? MCP Server ve Güvenliği

Kısa cevap: MCP (Model Context Protocol), yapay zekâ uygulamalarını veritabanları ve iş uygulamaları gibi dış sistemlere bağlayan açık bir protokoldür. Anthropic Kasım 2024'te duyurdu; proje Aralık 2025'ten beri Linux Foundation çatısındaki Agentic AI Foundation'da. Yapay zekâ uygulaması (host) her MCP sunucusu için bir istemci açar; sunucu araçlarını (tools), verilerini (resources) ve şablonlarını (prompts) JSON-RPC 2.0 mesajlarıyla sunar. Temmuz 2026'da yayımlanan 2026-07-28 sürümü protokolü durumsuz (stateless) hâle getirdi. Güvenliğin temeli araç çağrısında kullanıcı onayı, yalnız o sunucu için verilmiş token ve kaynağı doğrulanmış sunucudur.

MCP nedir, kim geliştirdi?

Projenin belgelerine göre MCP, yapay zekâ uygulamalarını dış sistemlere bağlamak için açık kaynaklı bir standart; belgeler onu bu uygulamaların USB-C portuna benzetiyor. Tasarım, belirtimin ifadesiyle Language Server Protocol'den esinleniyor. Anthropic protokolü 25 Kasım 2024'te açık kaynak olarak duyurdu; duyurunun çıkış noktası, her yeni veri kaynağının kendi özel entegrasyonunu istemesiydi. MCP bu parçalı entegrasyonların yerine tek bir protokol koyuyor.

Anthropic 9 Aralık 2025'te MCP'yi, Linux Foundation bünyesinde yönlendirilmiş fon (directed fund) olarak kurulan Agentic AI Foundation'a (AAIF) devretti; vakfın kurucuları Anthropic, Block ve OpenAI. Linux Foundation'ın duyurusuna göre o tarihte 10.000'den fazla MCP sunucusu yayımlanmıştı. Belirtim değişiklikleri, yönetişim sayfasında anlatıldığı gibi SEP (Specification Enhancement Proposal) denen önerilerle yapılıyor. Model tarafını LLM yazımızda, ajan tarafını AI agent yazımızda anlattık.

MCP mimarisi: host, client ve MCP server

Belirtime göre mimarinin üç bileşeni var:

  • Host: Kullanıcının çalıştığı yapay zekâ uygulaması. İstemcileri oluşturur, güvenlik ve onay kurallarını uygular, kullanıcının yetkilendirme kararlarını yönetir.
  • Client (istemci): Host'un içindeki bağlayıcı; her istemci tam olarak bir sunucuyla konuşur.
  • Server (sunucu): İstemcilere bağlam ve yetenek sağlayan program; yerel bir süreç ya da uzak bir servis olabilir.

Tasarım ilkelerinden biri güvenlik açısından önemli: sunucu konuşmanın tamamını okuyamamalı, öteki sunucuların içini görememeli; konuşma geçmişi host'ta kalır. Belgelere göre stdio kullanan yerel sunucular genellikle tek bir istemciye, Streamable HTTP kullanan uzak sunucular çok sayıda istemciye hizmet verir.

Taşıma katmanı: stdio, Streamable HTTP ve JSON-RPC 2.0

Mesajlar JSON-RPC 2.0 biçiminde; bu belirtim JSON-RPC'yi durumsuz, hafif ve taşımadan bağımsız bir uzak yordam çağrısı (RPC) protokolü olarak tanımlıyor. MCP'nin iki standart taşıması var:

  • stdio: İstemci sunucuyu alt süreç olarak başlatır; mesajlar standart giriş ve çıkış üzerinden, her satırda bir mesaj olarak gider.
  • Streamable HTTP: Sunucu tek bir HTTP endpoint'i sunar, istemci her mesajı ayrı bir POST ile gönderir; cevap bir JSON nesnesi ya da isteğe özel bir SSE (Server-Sent Events) akışı olarak döner.

Streamable HTTP'de sunucunun DNS rebinding saldırılarına karşı Origin başlığını doğrulaması zorunlu; yerelde çalışan sunucunun yalnız 127.0.0.1 adresini dinlemesi öneriliyor.

MCP yetenekleri: tools, resources ve prompts

Belirtim sunucunun üç temel öğesini, kimin denetlediğine göre ayırıyor:

  • Prompts: Kullanıcının seçerek çalıştırdığı şablonlar; eğik çizgi komutları ya da menü seçenekleri gibi.
  • Resources: Uygulamanın bağlam olarak eklediği veriler; dosya içerikleri ya da git geçmişi gibi.
  • Tools: Modelin eylem yapmak için çağırdığı fonksiyonlar; bir API'ye POST isteği ya da dosya yazma gibi.

İstemci tarafında etkin yetenek elicitation: sunucu, istemci üzerinden kullanıcıdan ek bilgi ister, ama parola, API anahtarı ya da erişim token'ını formla isteyemez. 28 Temmuz 2026'da yayımlanan 2026-07-28 belirtimi (Ekim 2026 itibarıyla güncel sürüm) sampling, roots ve logging özelliklerini kullanımdan kaldırılma sürecine aldı; bunlar çalışıyor ama 28 Temmuz 2027 ve sonrasında çıkacak ilk sürümde kaldırılabilir. Aynı sürüm initialize el sıkışmasını kaldırarak protokolü durumsuz yaptı: her istek protokol sürümünü ve istemci yeteneklerini kendisi taşıyor, sunucunun yetenekleri server/discover çağrısıyla öğrenilebiliyor.

Bir araç çağrısı (tools/call) nasıl görünür?

İstemci önce tools/list ile araçları ve her aracın girdisini tanımlayan JSON Schema'yı öğrenir, sonra tools/call ile aracı çağırır. Belirtimdeki biçimle örnek bir istek:

{
  "jsonrpc": "2.0", "id": 3, "method": "tools/call",
  "params": {
    "name": "stok_sorgula", "arguments": { "urun": "ORN-1042" },
    "_meta": {
      "io.modelcontextprotocol/protocolVersion": "2026-07-28",
      "io.modelcontextprotocol/clientCapabilities": {}
    }
  }
}

_meta içindeki protokol sürümü ve istemci yetenekleri her istekte zorunlu. Sunucu aynı id ile resultType değeri complete olan bir sonuç döndürür; araç çıktısı content dizisinde gelir, aracın kendi hatası isError: true ile bildirilir. Belirtime göre araç çağrısını reddedebilecek bir insan her zaman döngüde olmalı.

MCP ile API arasındaki fark

API, bir yazılımın başka yazılımlara sunduğu istek ve cevap sözleşmesidir; kısa tanımı sözlüğümüzde var. MCP, API'nin yerini almaz: belirtimin güvenlik belgesi, istemcileri üçüncü taraf API'lere bağlayan MCP sunucularını ayrıca tanımlıyor. Fark üç noktada:

  • Keşif: API'yi kullanan kod endpoint'leri önceden bilir; MCP istemcisi araçları çalışma anında tools/list ile öğrenir.
  • Muhatap: Araç açıklaması ve şeması modelin okuyacağı biçimde yazılır, aracı çağırmaya model karar verir.
  • Tek biçim: Bütün sunucular aynı mesaj yapısını kullanır; host yeni bir sistemi ayrı entegrasyon kodu yazmadan bağlar.

MCP'de yetkilendirme: OAuth ve en az yetki

Belirtimde yetkilendirme isteğe bağlı ve HTTP tabanlı taşımalar için tanımlı; stdio kullanan uygulamalar kimlik bilgilerini çalıştıkları sistemden almalı. HTTP'de korumalı MCP sunucusu bir OAuth 2.1 kaynak sunucusu (resource server), istemci de OAuth istemcisidir. Belirtim, taslak aşamasındaki OAuth 2.1'e ve RFC 9728, RFC 8707 gibi standartlara dayanıyor:

  • Hedef bildirimi: İstemci, RFC 8707'deki resource parametresiyle token'ı hangi sunucu için istediğini yazar.
  • Hedef doğrulaması: Sunucu yalnız kendisi için verilmiş token'ı kabul eder, başka token'ı kabul etmez ve aktarmaz.
  • Dar kapsam: İstemci yalnız gereken kapsamları (scope) ister; eksik izin işlem sırasında ayrıca talep edilir.

En az yetki ilkesini IAM yazımızda anlattık; bu katman kimlik yönetimi hizmetimizin konusu.

MCP güvenliği: belirtimin uyardığı saldırılar

Belirtime göre protokol güvenlik ilkelerini kendi katmanında zorlayamaz; bu iş uygulamayı yazanlara düşer. Security Best Practices belgesindeki başlıca saldırılar şunlar:

  • Confused deputy: Üçüncü taraf API'ye sabit bir client kimliğiyle bağlanan proxy sunucu, kullanıcı onayı atlanarak yetkilendirme kodunun saldırgana gitmesine yol açabilir. Çözüm, her istemci için ayrı onay.
  • Token passthrough: Sunucunun kendisi için verilmemiş bir token'ı kabul edip arkadaki API'ye aktarması; belirtim bunu açıkça yasaklıyor.
  • SSRF: Kötü niyetli sunucu, OAuth keşfi sırasında istemciyi iç ağ adreslerine ya da bulut metadata servisine yöneltebilir.
  • Yerel sunucunun kötüye kullanılması: Yerel sunucu istemcinin yetkileriyle çalışır. İstemci çalışacak komutu kısaltmadan göstermeli, açık onay almalı, sunucuyu yalıtılmış (sandbox) ve en az yetkili bir kurulumda başlatmalı.

Araç açıklamaları, tedarik zinciri ve kurumda MCP

Belirtime göre araç davranışını anlatan açıklamalar, güvenilir bir sunucudan gelmedikçe güvenilmez sayılmalı. Microsoft'un geliştirici blogu araç açıklamasına gizlenen talimatı tool poisoning, onaydan sonra değiştirilen araç tanımını rug pull diye anlatıyor. Zehirlenme ile prompt injection arasındaki farkı veri zehirlenmesi yazımızda anlattık.

Ekim 2026 itibarıyla önizleme aşamasındaki resmî MCP Registry yalnız metadata tutuyor ve ad alanının sahibini GitHub hesabı ya da alan adı üzerinden doğruluyor; kodun güvenlik taramasını paket kayıtlarına ve sunucu pazar yerleri gibi toplayıcı platformlara bırakıyor. Kurumdaki karşılığı onaylı sunucu listesi, sürümü sabitlenmiş paketler, araç başına dar yetki ve araç çağrılarının loglanması; belirtim de istemcinin araç kullanımını denetim için loglamasını istiyor (log yazımız). Kurum sistemlerinin birbirine bağlanmasını sistem entegrasyonu, ajanların altyapısını AI stack tasarımı ve mühendisliği hizmetimizde ele alıyoruz.

Sık sorulan sorular

MCP ne demek? Model Context Protocol, yani model bağlam protokolü demek: yapay zekâ uygulamalarını dış veri kaynaklarına ve araçlara bağlayan açık bir standart.

MCP server nedir? MCP istemcilerine araç, veri ve şablon sunan programdır; yerel bir süreç ya da uzak bir HTTP servisi olarak çalışabilir.

Yapay zekâda MCP ne işe yarar? Yapay zekâ uygulamasının dosya, veritabanı ya da iş uygulaması gibi sistemlere, her biri için ayrı entegrasyon yazmadan bağlanmasını sağlar.

MCP ile API arasındaki fark nedir? API bir servisin sunduğu sözleşmedir. MCP ise yapay zekâ uygulamalarının araçları çalışma anında keşfedip aynı biçimde çağırmasını sağlar.

MCP güvenli mi? Güvenliği uygulama belirler: araç çağrısında kullanıcı onayı, yalnız o sunucuya verilmiş token, dar yetki ve kaynağı doğrulanmış sunucu.

Kaynaklar