MCP Nedir? Model Context Protocol Nasıl Çalışır ve Kurulur?
MCP nedir? MCP (Model Context Protocol), yapay zeka modellerinin dış dünyadaki araçlara, veritabanlarına, dosya sistemlerine ve servislere standart ve ortak bir yöntemle bağlanmasını sağlayan açık bir protokoldür. Anthropic tarafından Kasım 2024’te duyurulan bu protokol, kısa sürede yapay zeka ekosisteminde ortak bir “bağlantı dili” haline geldi; zamanla OpenAI, Google DeepMind ve Microsoft gibi büyük platformlar da kendi ürünlerinde MCP desteği sunmaya başladı. 2026 itibarıyla MCP, yapay zeka ajanlarının (agent) harici sistemlerle nasıl konuşacağını tarif eden, giderek daha fazla geliştirme aracı ve platform tarafından benimsenen fiili bir endüstri standardına dönüşmüş durumda. Bu rehberde MCP’nin ne olduğunu, nasıl çalıştığını, geleneksel API entegrasyonlarından farkını, bir MCP sunucusunun nasıl kurulduğunu, örnek yapılandırmaları, sık yapılan hataları ve güvenlik açısından dikkat edilmesi gereken noktaları adım adım ele alıyoruz.
Konuyla bağlantılı temel kavramları daha önce incelediyseniz AI Agent Nedir? Yapay Zeka Ajanları Nasıl Çalışır? yazımız MCP’nin hangi boşluğu doldurduğunu daha iyi anlamanıza yardımcı olabilir, çünkü MCP büyük ölçüde ajanların araç kullanma ihtiyacından doğmuştur.
MCP Nedir, Neden Ortaya Çıktı?
MCP nedir sorusuna daha teknik bir açıdan bakacak olursak: büyük dil modelleri (LLM) tek başına yalnızca eğitildikleri veriyle “konuşabilir”. Bir modelin güncel bir veritabanını sorgulaması, bir dosya sistemine erişmesi, bir takvime yazması veya bir arama motorunu kullanması için o modeli dış sistemlere bağlayan bir entegrasyon katmanına ihtiyaç vardır. MCP öncesinde bu entegrasyonlar genellikle her yapay zeka uygulaması için ayrı ayrı, birbirinden bağımsız şekilde yazılıyordu. Bir geliştirici hem ChatGPT tarzı bir asistan hem de kendi iç aracı için aynı veritabanına bağlanmak istediğinde, iki farklı entegrasyon kodu yazmak zorunda kalıyordu.
Bu durum literatürde “N×M problemi” olarak adlandırılır: N tane yapay zeka uygulaması ve M tane veri kaynağı/araç olduğunda, teorik olarak N çarpı M adet özel bağlayıcı (connector) yazılması gerekir. MCP, bu ikili entegrasyon mantığını ortadan kaldırıp yerine tek bir ortak protokol koyar: bir araç veya veri kaynağı bir kez “MCP sunucusu” olarak hazırlanır, ardından MCP destekleyen her istemci (Claude Desktop, Claude Code, farklı IDE’ler, çeşitli ajan çerçeveleri) bu sunucuya aynı standart üzerinden bağlanabilir. Böylece hem geliştirme süresi kısalır hem de araçlar farklı platformlar arasında yeniden kullanılabilir hâle gelir.
Somut bir örnekle düşünelim: bir şirketin hem müşteri destek asistanı hem de iç raporlama aracı, aynı CRM veritabanına erişmek istesin. MCP olmadan, her iki uygulama için ayrı ayrı CRM bağlayıcısı yazılır; CRM tarafında bir alan adı değiştiğinde iki entegrasyonun da güncellenmesi gerekir. CRM için bir MCP sunucusu hazırlandığında ise hem destek asistanı hem de raporlama aracı aynı sunucuya bağlanır; CRM tarafındaki bir değişiklik yalnızca sunucu kodunda güncellenir, istemci tarafında ekstra bir işlem gerekmez. Bu, ekiplerin zamanla artan sayıda yapay zeka destekli araç eklerken bakım yükünü düşük tutmasına yardımcı olur.
MCP Nasıl Çalışır? (İstemci-Sunucu Mimarisi)
MCP, istemci-sunucu (client-server) mimarisi üzerine kuruludur ve mesajlaşma için JSON-RPC 2.0 standardını kullanır. Mimaride üç temel rol vardır:
- Host: Kullanıcının doğrudan etkileşime girdiği yapay zeka uygulaması (örneğin Claude Desktop veya Claude Code gibi bir araç).
- Client: Host içinde, her bir MCP sunucusuyla bire bir bağlantı kuran ve mesaj trafiğini yöneten bileşen.
- Server: Belirli bir araç setini, veri kaynağını veya işlevi dışa açan, host’tan gelen istekleri karşılayan bağımsız program.
Host, kullanıcının isteğini aldığında hangi MCP sunucusunun hangi yeteneğe sahip olduğunu bilir, çünkü sunucular bağlantı kurulduğunda kendi yeteneklerini (tools, resources, prompts) doğal dil açıklamalarıyla birlikte istemciye bildirir. Model, bir görevi tamamlamak için bir araca ihtiyaç duyduğunda, host bu isteği client üzerinden ilgili sunucuya JSON-RPC mesajı olarak iletir; sunucu işlemi gerçekleştirir ve sonucu aynı kanaldan geri döner. Bu akış sayesinde model, aracın arkasındaki kodun nasıl yazıldığıyla ilgilenmeden, yalnızca “ne yapabileceğini” bilerek çalışabilir.
Bağlantı kurulurken kullanılan taşıma (transport) yöntemi de senaryoya göre değişebilir. Sunucu ve host aynı makinede çalışıyorsa genellikle standart giriş/çıkış (stdio) üzerinden iletişim kurulur; bu, yerel bir araç veya dosya sistemi sunucusu için pratik bir seçimdir. Sunucu uzak bir yerde, örneğin bir bulut ortamında çalışıyorsa HTTP tabanlı bir taşıma tercih edilir ve istekler ile yanıtlar ağ üzerinden akar. Her iki durumda da mesaj formatı aynı kalır; değişen yalnızca mesajların hangi kanaldan taşındığıdır. Bu esneklik, MCP’nin hem küçük, yerel bir betik için hem de kurumsal ölçekte uzaktan erişilen bir servis için kullanılabilmesini sağlar.
Tools (Araçlar) Kavramı
Tools, bir MCP sunucusunun model adına gerçekleştirebileceği eylemlerdir: bir hesaplama yapmak, bir API çağrısı tetiklemek, bir dosyaya yazmak veya bir veritabanı sorgusu çalıştırmak gibi. Her araç; adı, açıklaması ve beklediği parametrelerin şemasıyla birlikte tanımlanır, böylece model hangi aracı ne zaman çağıracağını bu açıklamalardan çıkarabilir.
Resources (Kaynaklar) Kavramı
Resources, modele salt okunur bağlam sağlayan veri kaynaklarıdır: bir belge, bir yapılandırma dosyası, bir SSS sayfası veya bir günlük (log) kaydı olabilir. Resources, doğrudan bir eylem tetiklemek yerine modele ek bilgi sunmak için kullanılır.
Prompts (Hazır Komutlar) Kavramı
Prompts ise sunucu tarafından önceden tanımlanmış, yeniden kullanılabilir komut şablonlarıdır. Sık tekrarlanan görevler için standart bir giriş noktası sağlar; kullanıcı veya host bu şablonu çağırarak modelin belirli bir görevi tutarlı bir biçimde yürütmesini kolaylaştırır.
MCP ile Geleneksel API Entegrasyonu Arasındaki Fark
Geleneksel bir API entegrasyonunda geliştirici, her servis için ayrı bir istemci kütüphanesi yazar veya kullanır, kimlik doğrulama akışını servise özel olarak kurar ve modelin bu API’yi “anlamasını” sağlamak için ayrı bir açıklama (prompt mühendisliği) katmanı ekler. Yeni bir yapay zeka uygulamasına geçildiğinde bu entegrasyonun büyük bölümü yeniden yazılır. MCP’de ise araç bir kez MCP sunucusu olarak paketlenir ve yeteneklerini standart bir şema ile ilan eder; MCP destekleyen her host bu sunucuya aynı şekilde bağlanabilir. Aşağıdaki tablo iki yaklaşımı temel kriterler üzerinden karşılaştırıyor:
| Kriter | Geleneksel REST API Entegrasyonu | MCP (Model Context Protocol) |
|---|---|---|
| Kurulum zorluğu | Her uygulama için ayrı entegrasyon kodu gerekir | Sunucu bir kez yazılır, birden çok istemci tarafından kullanılır |
| Yeniden kullanılabilirlik | Düşük; entegrasyon genellikle projeye özeldir | Yüksek; aynı MCP sunucusu farklı host’larda çalışır |
| Bakım | Her entegrasyonun ayrı ayrı güncellenmesi gerekir | Sunucu güncellenince tüm istemciler faydalanır |
| Standardizasyon | Servisten servise değişen, tutarsız yapı | JSON-RPC tabanlı, ortak bir mesaj formatı |
| Modelin araç keşfi | Genellikle manuel prompt mühendisliği gerekir | Sunucu yeteneklerini otomatik olarak tanıtır |
| Ölçeklenebilirlik | Yeni her araç için ek entegrasyon yükü | Yeni araçlar mevcut MCP istemcilerine kolayca eklenir |
Bu farklar, MCP’yi özellikle birden fazla yapay zeka uygulamasının aynı araç setine ihtiyaç duyduğu senaryolarda avantajlı kılar. Ancak tek bir basit, tek seferlik entegrasyon için geleneksel bir API çağrısı bazen hâlâ daha pratik olabilir; bu yazının ilerleyen bölümünde bu konuya tekrar değineceğiz.
MCP Sunucusu Nasıl Kurulur? Adım Adım
Bir MCP sunucusunu yerel makinenizde veya bir host uygulama (örneğin Claude Desktop ya da Claude Code) üzerinden kullanılabilir hâle getirmek için genel akış şu şekildedir:
- Uygun SDK’yı seçin: MCP için Python, TypeScript, Go, Java, C#, Kotlin, PHP, Ruby ve Rust gibi birçok dilde resmi SDK bulunur; projenizin diline uygun olanı seçin.
- Sunucu projesini oluşturun: SDK’nın sağladığı temel sınıfları kullanarak sunucunuzun adını, sürümünü ve sunacağı yetenekleri (tools, resources, prompts) tanımlayın.
- Araçlarınızı (tools) tanımlayın: Her araç için bir isim, açıklama ve girdi şeması (JSON Schema) belirleyin; model bu bilgileri okuyarak aracı ne zaman çağıracağına karar verir.
- Sunucuyu çalıştırın: Yerel kullanım için genellikle standart giriş/çıkış (stdio) üzerinden, uzak kullanım için ise HTTP tabanlı bir taşıma (transport) üzerinden sunucuyu başlatın.
- Host yapılandırmasına ekleyin: Claude Desktop veya Claude Code gibi bir host uygulamanın yapılandırma dosyasına sunucunuzun çalıştırma komutunu ve gerekli ortam değişkenlerini ekleyin.
- Bağlantıyı test edin: Host’u yeniden başlatıp sunucunuzun araçlarının listede göründüğünü ve basit bir istekle doğru yanıt döndüğünü doğrulayın.
- Yetkilendirme ve erişim kapsamını sınırlayın: Sunucunun yalnızca gerçekten ihtiyaç duyduğu dosyalara, klasörlere veya API uç noktalarına erişebildiğinden emin olun.
Bu adımlar büyük ölçüde hangi host ve SDK’yı kullandığınıza göre küçük farklılıklar gösterebilir, ancak genel mantık (yetenekleri tanımla, sunucuyu çalıştır, host’a bağla, test et) tüm uygulamalarda benzerdir.
Kurulumun ardından sunucunuzu doğrulamak için host uygulamanın geliştirici günlüklerine (logs) bakmak faydalı olur; çoğu host, bir MCP sunucusuna bağlanırken veya araç çağrısı sırasında oluşan hataları bu günlüklerde gösterir. Ayrıca bazı SDK’lar, sunucunuzu host’a hiç bağlamadan, komut satırından doğrudan test etmenizi sağlayan yardımcı araçlar sunar; bu sayede araç tanımlarınızın ve şemalarınızın doğru biçimlendirildiğinden host’a geçmeden önce emin olabilirsiniz. Yeni başlayanlar için önerilen yol, tek bir basit araçla (örneğin bir hesaplama veya tek bir dosya okuma işlevi) başlamak, bağlantıyı uçtan uca doğruladıktan sonra araç sayısını kademeli olarak artırmaktır.
Örnek MCP Yapılandırması ve Kod
Aşağıda, bir host uygulamasının yapılandırma dosyasına eklenebilecek örnek bir mcpServers bloğu yer alıyor. Bu örnek, yerel bir dosya sistemi MCP sunucusunun nasıl tanımlanabileceğini gösteriyor:
{
"mcpServers": {
"dosya-sistemi": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/kullanici/belgeler"
],
"env": {
"LOG_LEVEL": "info"
}
}
}
}
Bir MCP sunucusu, host’a bağlandığında sunduğu araçları aşağıdakine benzer bir JSON-RPC yanıtıyla tanıtır. Bu örnekte basit bir “dosya oku” aracının tanımı gösteriliyor:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"tools": [
{
"name": "dosya_oku",
"description": "Belirtilen yoldaki metin dosyasının içeriğini döndürür",
"inputSchema": {
"type": "object",
"properties": {
"yol": { "type": "string" }
},
"required": ["yol"]
}
}
]
}
}
Model, bir dosyayı okuması gerektiğinde host üzerinden bu aracı yol parametresiyle çağırır; sunucu dosyayı okuyup sonucu yine JSON-RPC formatında geri döner. Gerçek projelerde bu yapıya kimlik doğrulama, hata yönetimi ve günlükleme (logging) gibi ek katmanlar eklenir.
MCP Kullanırken Sık Yapılan Hatalar
MCP nispeten yeni ve hızla gelişen bir protokol olduğu için, ilk kez bir MCP sunucusu kuran veya kullanan geliştiriciler benzer hatalara düşebiliyor:
- Aşırı geniş erişim kapsamı tanımlamak: Bir dosya sistemi sunucusuna tüm diski açmak yerine yalnızca ihtiyaç duyulan klasörü tanımlamak gerekir; aksi hâlde model istenmeyen dosyalara da erişebilir.
- Araç açıklamalarını yetersiz yazmak: Modelin bir aracı doğru zamanda çağırabilmesi, o aracın açıklamasının net ve açıklayıcı olmasına bağlıdır; belirsiz açıklamalar yanlış veya gereksiz araç çağrılarına yol açar.
- Hata yönetimini atlamak: Sunucu tarafında bir hata oluştuğunda anlamlı bir hata mesajı döndürülmezse, model sorunu doğru yorumlayamaz ve döngüye girebilir.
- Güvenilmeyen kaynaklardan MCP sunucusu kurmak: Üçüncü taraf bir MCP sunucusunu incelemeden kurmak, kötü niyetli kod çalıştırma riskini beraberinde getirir.
- Sürüm uyumsuzluklarını göz ardı etmek: Protokol hâlâ geliştiği için istemci ve sunucu tarafında farklı sürümler kullanmak bağlantı sorunlarına yol açabilir; SDK ve host sürümlerini güncel tutmak önemlidir.
MCP’nin Güvenlik Açısından Dikkat Edilmesi Gerekenler
MCP, modele harici sistemlere erişim yetkisi verdiği için güvenlik konusu ayrıca önem taşır. Bağımsız güvenlik araştırmaları, bazı MCP sunucusu uygulamalarında istem enjeksiyonu (prompt injection) ve “zehirlenmiş” araç tanımları üzerinden veri sızdırma gibi risklerin ortaya çıkabileceğini göstermiştir. Bu nedenle bir MCP sunucusu kurarken şu noktalara dikkat etmek faydalı olur:
- Kaynağı doğrulayın: Yalnızca güvendiğiniz, mümkünse açık kaynaklı ve incelenebilir MCP sunucularını kullanın.
- En az yetki ilkesini uygulayın: Sunucuya yalnızca gerçekten gerekli olan dosya, klasör veya API erişimini tanımlayın.
- Araç açıklamalarını gözden geçirin: Bir aracın açıklaması, modelin davranışını dolaylı olarak yönlendirebileceği için, açıklamaların kötü niyetli talimatlar içermediğinden emin olun.
- Hassas verileri izole edin: Kimlik bilgileri, API anahtarları gibi hassas verileri sunucu koduna gömmek yerine ortam değişkenleri veya güvenli bir sır yönetimi (secrets management) çözümüyle yönetin.
- Günlükleri izleyin: Sunucunun hangi araçların ne zaman ve hangi parametrelerle çağrıldığını kaydetmesi, olası anormal davranışların fark edilmesine yardımcı olur.
Bu önlemler riski tamamen ortadan kaldırmaz, ancak MCP tabanlı bir entegrasyonu daha kontrollü hâle getirir. Özellikle birden fazla MCP sunucusunun aynı anda bağlı olduğu kurulumlarda, hangi sunucunun hangi veriye erişebildiğini net biçimde belgelemek ve düzenli aralıklarla gözden geçirmek, zaman içinde oluşabilecek “yetki sürünmesini” (scope creep) önlemeye yardımcı olur. Kurumsal projelerde MCP sunucularını üretime almadan önce bir güvenlik incelemesinden geçirmek, bağımsız bir geliştiricinin kişisel projesine göre daha kritik bir adımdır.
MCP Kime, Hangi Durumda Uygun?
MCP, özellikle birden fazla yapay zeka uygulamasının veya ajanın aynı araç setine ihtiyaç duyduğu, araçların zamanla büyüyüp çeşitleneceği ve farklı host’lar arasında taşınabilirlik istenen senaryolarda anlamlı bir fayda sağlar. Yapay zeka destekli otomasyon kuran geliştiriciler, kendi iç araçlarını Claude Desktop veya Claude Code gibi uygulamalara bağlamak isteyen ekipler ve birden fazla modelin/host’un ortak bir veri kaynağına erişmesi gereken kurumsal projeler için MCP iyi bir seçenek olabilir. Buna karşılık, tek seferlik, basit ve tek bir uygulamaya özel bir entegrasyon söz konusuysa, doğrudan bir API çağrısı yazmak bazen daha hızlı bir çözüm olabilir. Karar verirken entegrasyonun kaç farklı yapay zeka uygulaması tarafından kullanılacağı ve uzun vadede ne kadar büyüyeceği önemli bir kriterdir.
Benzer şekilde, modelin yalnızca mevcut bilgisiyle değil, güncel ve dışarıdan getirilen verilerle çalışması gereken projelerde RAG Nedir? Retrieval Augmented Generation Rehberi yazımızda ele aldığımız yaklaşımla MCP’nin birlikte kullanılması da yaygın bir tercih; RAG modele ilgili bilgiyi getirirken, MCP bu bilgiye ulaşmak veya bir eylemi gerçekleştirmek için gereken standart bağlantı katmanını sağlar.
MCP’nin Yapay Zeka Ajanları Ekosistemindeki Yeri
MCP’nin asıl değeri, tek başına çalışan bir sohbet botundan çok, birden fazla adımda karar verip eylem gerçekleştiren yapay zeka ajanları (agent) bağlamında ortaya çıkıyor. Bir ajan, bir görevi tamamlamak için sırayla birden fazla araca ihtiyaç duyabilir: önce bir arama aracıyla bilgi toplamak, ardından bir hesaplama aracıyla veriyi işlemek, son olarak bir yazma aracıyla sonucu kaydetmek gibi. MCP, bu araçların her birinin aynı standart arayüz üzerinden tanımlanmasını sağladığı için, ajan çerçeveleri (agent framework) farklı araçları birbirine bağlarken özel kod yazmak zorunda kalmaz; yalnızca ilgili MCP sunucularına bağlanması yeterlidir.
Bu nedenle MCP, genellikle “ajan altyapısının bağlantı katmanı” olarak tanımlanır: modelin kendisi düşünme ve karar verme işini yaparken, MCP bu kararların dış dünyada bir eyleme dönüşmesini sağlayan standart köprüyü kurar. Zaman içinde daha fazla geliştirme aracı, IDE eklentisi ve otomasyon platformunun MCP istemcisi veya sunucusu olarak çalışabilmesi, protokolü tek bir şirketin ürün ekosisteminden bağımsız, daha geniş bir altyapı bileşenine dönüştürüyor.
Sık Sorulan Sorular
MCP nedir, kısaca nasıl özetlenir?
MCP (Model Context Protocol), yapay zeka modellerinin araçlara, veri kaynaklarına ve servislere standart bir yöntemle bağlanmasını sağlayan açık bir protokoldür. Anthropic tarafından duyurulmuş, zamanla farklı platformlarca da desteklenen bir ekosistem hâline gelmiştir.
MCP’yi kullanmak için ücret ödemek gerekir mi?
MCP açık bir protokol olduğu için kendisi için ayrı bir lisans ücreti söz konusu değildir; SDK’lar ve referans sunucular genellikle açık kaynaklıdır. Kullandığınız modelin veya host uygulamanın kendi ücretlendirmesi ayrı bir konudur.
MCP sadece Anthropic ürünleriyle mi çalışır?
Hayır. MCP, Anthropic tarafından ortaya çıkarılmış olsa da açık bir protokol olarak tasarlanmıştır ve farklı platformlar da zamanla bu protokolü desteklemeye başlamıştır; dolayısıyla tek bir şirketin ürünüyle sınırlı değildir.
Kendi MCP sunucumu yazmak için hangi programlama dillerini kullanabilirim?
Python, TypeScript, Go, Java, C#, Kotlin, PHP, Ruby ve Rust gibi birçok dil için resmi SDK bulunur; projenizin mevcut teknoloji yığınına en uygun olanı tercih edebilirsiniz.
MCP ile çalışmaya nereden başlamalıyım?
Öncelikle protokolün resmi dokümantasyonunu inceleyip basit, tek bir araç sunan küçük bir sunucu yazarak başlamak; ardından bu sunucuyu Claude Desktop veya Claude Code gibi bir host uygulamaya bağlayıp test etmek pratik bir ilk adım olur.
MCP, yapay zeka modellerini dış dünyaya bağlama biçimini standartlaştırarak hem geliştiricilerin hem de yapay zeka ajanlarının işini kolaylaştıran bir protokol olarak öne çıkıyor. Giderek daha fazla araç ve platformun bu standardı desteklemesiyle birlikte, MCP’yi öğrenmek isteyen geliştiriciler için şu an iyi bir zaman diliminde olduğumuzu söylemek mümkün.




