Yapay Zeka Ajanları

Açık Protokol · Anthropic

MCP Nedir? Model Context Protocol detaylı rehber

MCP, LLM'lerle dış sistemler arasındaki konuşmayı standartlaştıran açık protokoldür — AI ekosisteminin USB-C'si. Bu rehberde: çözdüğü problem, mimari, üç yapıtaşı (Tools/Resources/Prompts), popüler 12 sunucu, Claude Desktop ve Claude Code kurulumu, kendi MCP server'ınızı 50 satırda yazma, güvenlik katmanları ve ekosistem geleceği.

TL;DR — 5 cümlede MCP

  • MCP = Model Context Protocol — LLM'ler ile dış sistemler (dosya, DB, API) arasındaki konuşmayı standartlaştıran açık protokol.
  • Anthropic tarafından Kasım 2024'te açık standart olarak duyuruldu; hızla Cursor, Windsurf, Zed, VS Code gibi araçlarca benimsendi.
  • Çözdüğü temel problem: N model × M veri kaynağı = N×M özel entegrasyon. MCP bunu N + M'e indiriyor.
  • 3 ana yapıtaşı: Tools (model'in çağırabildiği fonksiyonlar), Resources (model'in okuyabildiği veriler), Prompts (yeniden kullanılabilir şablonlar).
  • JSON-RPC 2.0 üzerinde çalışır; stdio veya HTTP+SSE transport'larıyla taşınır.

Bölüm 01

MCP neyi çözmek için çıktı? — N×M problemi

Modern bir geliştirici Claude'a Postgres bağlamak ister. Sonra Notion'u bağlamak ister. Sonra GitHub'ı, sonra şirket içi CRM'i... Her birini Claude'a 'tool' olarak tanıtacak özel kod yazmak zorundadır. Sonra aynı kişi ChatGPT'ye geçince — her şeyi yeniden yazar. Sonra Cursor'a geçince yine yeniden. Bu, N model × M kaynak = N×M özel entegrasyon problemi. 5 model + 10 kaynak = 50 farklı entegrasyon. MCP bunu N + M'e indiriyor: bir kez Postgres MCP server'ı yazıyorsunuz, tüm MCP'yi destekleyen istemcilerden (Claude Desktop, Claude Code, Cursor, Windsurf, Zed) hepsinden çalışıyor. Anthropic'in bu protokolü açık yapmasının sebebi: 'AI ekosisteminin USB-C'si olmak' — kim ürettiğinden bağımsız her cihazın birbiriyle konuştuğu standart.

Eski: N model × M kaynak
MCP: N model + M MCP server
Bir kez yaz, her istemcide çalışır

Bölüm 02

Mimari — Host, Client, Server, Transport

MCP üç ana aktördür. (1) Host — kullanıcının kullandığı uygulama: Claude Desktop, Claude Code (CLI), Cursor, Windsurf, Zed. Host birden çok MCP server'a aynı anda bağlanabilir. (2) Client — host içindeki bağlantı katmanı; her server için bir client örneği vardır. (3) Server — bir araç veya veri kaynağını MCP'ye 'çıkaran' küçük bir program: filesystem MCP, github MCP, postgres MCP gibi. Transport (taşıma katmanı) iki seçenektir: stdio (host server'ı subprocess olarak başlatır, stdin/stdout üzerinden JSON-RPC mesajlar) — yerel araçlar için ideal; HTTP+SSE — uzak server'lar için, Server-Sent Events ile akışlı iletişim. JSON-RPC 2.0 üzerinde standart mesajlar: initialize, tools/list, tools/call, resources/list, resources/read, prompts/list, prompts/get.

Host (Claude Desktop)
Client
Transport (stdio/SSE)
Server (Postgres MCP)
Veri kaynağı

Bölüm 03

Üç yapıtaşı — Tools, Resources, Prompts

MCP server üç şey sunabilir, modele 3 farklı yetenek verir. Tools — model çağırabileceği fonksiyonlar. 'execute_sql_query(query)', 'create_github_issue(title, body)' gibi. Her tool'un JSON Schema input şeması vardır; model bunu görür ve çağırırken doğru parametrelerle çağırır. Resources — model okuyabileceği veri kaynakları. URI tabanlı: 'postgres://customers/123', 'file:///docs/policy.md'. Tools 'eylem', Resources 'içerik' olarak düşünülür. Prompts — yeniden kullanılabilir prompt şablonları. Server bir 'analyze_codebase' prompt'u tanımlar; kullanıcı host'tan onu seçer, parametreler girer, model bu hazır şablonla çalışır. Üçü birlikte: bir RAG asistanı için Tools (arama), Resources (belgeler), Prompts (sorgu şablonu) — hepsi tek bir MCP server'da paketlenir.

Bölüm 04

Ekosistem — Hangi istemciler, hangi server'lar?

MCP'yi destekleyen istemciler hızla büyüdü. Anthropic ürünleri: Claude Desktop (en olgun MCP entegrasyonu), Claude Code (CLI'dan MCP server'ları otomatik keşif). Üçüncü taraflar: Cursor (yerleşik MCP desteği), Windsurf (MCP marketplace), Zed editör, VS Code (Continue eklentisi ile), Visual Studio. Hazır MCP server'ları (modelcontextprotocol/servers reposunda 50+): filesystem (yerel dosya okuma/yazma), github (issue/PR/repo işlemleri), postgres + sqlite (SQL sorgu), slack (mesaj okuma/gönderme), brave-search ve fetch (web), google-drive, sentry (hata izleme), puppeteer (tarayıcı otomasyonu). Topluluk server'ları binlerce: Linear, Notion, Asana, Jira, Stripe, AWS, Kubernetes, Docker, Datadog. mcp.so ve glama.ai gibi marketplace'lerden keşfedebilirsiniz.

Bölüm 05

Pratik kurulum — Claude Desktop ve Claude Code örneği

Claude Desktop'ta bir MCP server eklemek için: Ayarlar → Developer → Edit Config. Bu, claude_desktop_config.json dosyasını açar. İçine 'mcpServers' nesnesi yazarsınız: { "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/Documents"] } }. Claude Desktop'ı yeniden başlatınca filesystem tool'larını görür. Claude Code'da ise daha kolay: terminal'de `claude mcp add filesystem npx -y @modelcontextprotocol/server-filesystem /path` komutuyla eklersiniz. `claude mcp list` ile yüklü server'ları görürsünüz. Cursor'da Settings → MCP'den UI üzerinden eklenir. Önemli not: server'lar yerel makineden çalışır — server'ın yapabildiği her şeyi siz vermiş olursunuz. 'Filesystem MCP'ye dikkat: '/' verirseniz Claude tüm diskte çalışır.

Bölüm 06

Kendi MCP server'ınızı yazmak — TypeScript SDK

MCP server yazmak şaşırtıcı derecede basit. TypeScript SDK ile temel iskelet: '@modelcontextprotocol/sdk' paketini yükleyin. Server sınıfını import edip bir instance oluşturun. setRequestHandler() ile 'tools/list' ve 'tools/call' isteklerini handle edin. Her tool için { name, description, inputSchema (JSON Schema) } tanımlarsınız. tools/call gelince adınızla eşleşeni çalıştırıp sonucu döndürürsünüz. stdio transport için StdioServerTransport ile çalıştırırsınız; tek satırda başlar. 50 satır TypeScript kodu yazıp 'şirketimin iç API'sine' bir MCP server üretirsiniz; o gün Claude Desktop'ınız o API'ye konuşabilir. Python SDK da var ('mcp' paketi) — aynı zihinsel model. Önemli pattern: tool description'larını ÇOK NET yazın — model burayı okuyup ne zaman çağıracağına karar verir. Vagus description = yanlış tool çağrısı.

Bölüm 07

Güvenlik — sandbox, yetki, kullanıcı onayı

MCP server'lar makinenizin gücünü modele bağlar — bu güçlü ama riskli. 4 katmanlı güvenlik düşünün. (1) Sandbox: server hangi yola erişebilir, sınırlandırın (filesystem MCP'ye sadece /Documents verin, '/' değil). (2) Whitelist tool'lar: bazı host'larda (Claude Desktop) hangi tool'ların otomatik onaysız çalışacağını seçebilirsiniz. (3) Kullanıcı onayı: tool çağrısından önce host onay sorar — 'Claude bu dosyaya yazmak istiyor, izin?' Üretimde 'always allow' demek isterken iki kez düşünün. (4) Secrets: API key'ler env değişkenlerinde kalsın, server'a parametre olarak verirken log'lara yazılmasını engelleyin. Kritik: bir MCP server kötü niyetli olabilir — npm paketlerinde olduğu gibi. Yalnızca güvendiğiniz kaynaklardan server yükleyin (resmi modelcontextprotocol org, doğrulanmış maintainerlar).

Bölüm 08

MCP vs alternatif yaklaşımlar — Function Calling, Plugins, RAG

MCP yenidir ama benzer hedeflere giden başka yollar var. Function Calling (OpenAI / Anthropic SDK'larında): model tool şemalarını görür, çağrılar yapar. MCP'den farkı: function tanımları KODUNUZDA yaşar, modeli değiştirince yeniden yazarsınız; MCP'de tanım server'da, model agnostic. ChatGPT Plugins (2023): API tanımlarını OpenAPI ile verirsiniz. MCP'den farkı: plugins yalnızca ChatGPT'de çalışır, MCP herhangi bir uyumlu host'ta. RAG: belge arama + bağlam enjeksiyon. MCP RAG'in alternatifi DEĞİL, tamamlayıcısı — bir 'rag_search' tool'unu MCP server'a koyup her istemciden çağırabilirsiniz. Pratik kural: yerel araç entegrasyonu = MCP; tek model SDK'sıyla kalacaksanız Function Calling; sadece web tarama/RAG = mevcut yerleşik özellikler yeterli olabilir.

Bölüm 09

Gerçek dünya kullanım — 5 pratik senaryo

MCP'nin gerçek değeri ne zaman görülür? 5 örnek. (1) Yazılım geliştirici: Cursor + GitHub MCP + Sentry MCP — Claude koddaki hatayı görür, GitHub'da issue açar, Sentry'den ilgili stacktrace'i çeker, fix önerir. (2) Veri analisti: Claude Desktop + Postgres MCP + Slack MCP — 'Son 7 günde en çok ne satıldı?' der, Claude SQL yazar, sonucu Slack #ops kanalına atar. (3) İçerik üretici: Claude + Notion MCP + Drive MCP — Notion'daki taslakları okur, Drive'a finalize halde kaydeder. (4) Operasyon: Claude Desktop + Jira MCP + Linear MCP — kendisine atanmış ticket'lara bakar, durum günceller. (5) Müşteri destek (kurum içi): Claude Code + şirket API MCP server'ı + RAG — agent şirket bilgisine konuşur, müşteri verisine yetkili erişir.

Bölüm 10

Gelecek — neden MCP önemli bir dönüm noktası?

MCP'nin yarı yıl içinde gördüğümüz büyümesi rastlantı değil — protokol gerçek bir ihtiyacı karşılıyor. 2025'in sonu / 2026'da olması beklenenler: (1) MCP marketplace'leri (mcp.so, glama, smithery) — npm benzeri keşif ve dağıtım. (2) Kurumsal sertifika ve audit standartları — 'bu MCP server şirket güvenlik politikasını geçti' damgaları. (3) Hosted MCP server'lar — Vercel/Cloudflare benzeri 'MCP edge deployment' hizmetleri. (4) MCP-native uygulamalar — sıfırdan MCP üzerine kurulan SaaS ürünleri (örn. bir CRM 'biz MCP-first'yiz' diye pazarlama). (5) Browser MCP — Chrome eklentisi olarak çalışan, Claude'un web sayfalarınla konuşmasını sağlayan standart. MCP'yi anlamak 2026'da AI ürünü tasarlayanın temel kabiliyetlerinden biri olacak.

Popüler MCP Server'ları

Hemen kullanabileceğiniz 12 hazır server

Resmi modelcontextprotocol/servers reposundan en çok kullanılan 12 tanesi. Tümü `npx -y @modelcontextprotocol/server-X` ile kurulur.

filesystem

Yerel dosya okuma/yazma, klasör listeleme

github

Issue/PR/repo işlemleri, kod arama

postgres

Read-only SQL sorgu, şema keşif

sqlite

Yerel SQLite veritabanında sorgu

slack

Mesaj okuma/gönderme, kanal yönetimi

google-drive

Drive dosya arama + okuma

brave-search

Web arama (Brave API)

fetch

Web sayfası içeriğini Markdown'a dönüştürme

puppeteer

Tarayıcı otomasyonu, screenshot

sentry

Hata raporları, issue durumu

memory

Konuşmalar arası kalıcı bilgi tabanı

everything

Tüm MCP özelliklerini test eden referans server

Örnek claude_desktop_config.json

Prompt
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/user/Documents"]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxxxxxxxxxxxxxxxxxxx"
      }
    },
    "postgres": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-postgres",
        "postgresql://user:pass@localhost:5432/mydb"
      ]
    }
  }
}

Kendi Server'ınız

50 satırda kendi MCP server'ınız

Şirketinizin iç API'sini ('lookup_customer' örneğiyle) Claude'a bağlayan minimal bir TypeScript server. Bunu projeyi kurun, `npm run build`, sonra Claude Desktop config'ine ekleyin.

Prompt
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";

const server = new Server(
  { name: "company-crm", version: "1.0.0" },
  { capabilities: { tools: {} } }
);

server.setRequestHandler(ListToolsRequestSchema, async () => ({
  tools: [
    {
      name: "lookup_customer",
      description: "Müşteri ID veya e-postaya göre müşteri kaydını getirir. Sipariş geçmişi dahil değildir; sipariş için lookup_orders kullanın.",
      inputSchema: {
        type: "object",
        properties: {
          customer_id: { type: "string", description: "UUID veya e-posta" }
        },
        required: ["customer_id"]
      }
    }
  ]
}));

server.setRequestHandler(CallToolRequestSchema, async (req) => {
  if (req.params.name === "lookup_customer") {
    const id = req.params.arguments?.customer_id as string;
    // Buraya gerçek DB çağrısı: const cust = await db.customers.find(id);
    return {
      content: [{ type: "text", text: JSON.stringify({ id, name: "Örnek Kullanıcı", tier: "gold" }) }]
    };
  }
  throw new Error("Bilinmeyen tool: " + req.params.name);
});

const transport = new StdioServerTransport();
await server.connect(transport);

Tool description en kritik alan

Model bu metni okuyup ne zaman çağıracağına karar verir. 'Müşteri getirir' yerine 'Müşteri ID veya e-postaya göre müşteri kaydını getirir. Sipariş geçmişi dahil değildir; sipariş için lookup_orders kullanın.' tarzı NET yazın.

Sıkça sorulan sorular

MCP, OpenAI'ın Function Calling'inden ne farkı var?

Function Calling tek bir model SDK'sıyla sınırlıdır — OpenAI tools tanımları sizin kodunuzda yaşar, Anthropic'e geçince yeniden yazarsınız. MCP, model bağımsız bir protokoldür: bir kez yazılan MCP server'ı Claude, Cursor, Windsurf, Zed gibi tüm uyumlu host'lardan kullanırsınız. Ek olarak MCP, Tools'a ek Resources ve Prompts kavramlarını da getirir.

MCP ile RAG arasında ilişki ne?

Rakip değiller, tamamlayıcılar. RAG bir tekniktir — belge arama + bağlam enjeksiyon. MCP bir protokoldür — model ile araç arasındaki konuşma. Bir RAG sistemini MCP server olarak paketleyebilirsiniz: 'rag_search' tool'u + belge resources'ı + sorgu prompts'u. Sonra herhangi bir MCP host'tan o RAG'i kullanabilirsiniz.

MCP server yazmak için Python'da mı TypeScript'te mi yapayım?

İkisi de resmi SDK ile destekleniyor. JavaScript ekosistemine yakınsanız TypeScript SDK daha hızlı başlama sağlar (npx ile dağıtım kolay). Veri/ML pipeline'larınız Python'da ise Python SDK doğal — pandas, requests gibi tanıdık paketlerle hızlı yazarsınız. İkisinin de mesaj protokolü aynıdır, hangisi sizin için akıcıysa onu seçin.

MCP self-host edilebilir mi?

MCP zaten varsayılan olarak self-host'tur — server'lar SİZİN makinenizde çalışır (stdio) veya kendi sunucunuzda (HTTP+SSE). Anthropic/OpenAI'a hiçbir veri göndermez; veri akışı host (Claude Desktop) ile server arasında yereldir. LLM'in API'ye giden tarafı ayrıdır — orada modelin işlediği veri model sağlayıcısına gider. Kritik veri için Ollama + yerel MCP = veri sunucudan hiç çıkmaz.

Hangi araçlarla MCP test edebilirim?

Anthropic'in MCP Inspector'ı resmi araç — npx @modelcontextprotocol/inspector ile çalıştırırsınız, server'ınızı UI'dan test edersiniz. Yazdığınız server'ın tools/list, tools/call, resources/list mesajlarını manuel test etmek için ideal. Production'a koymadan önce mutlaka Inspector'dan geçirin.

MCP destekleyen istemci yoksa ne yapayım?

Server'ı yine de yazabilirsiniz; resmi anthropic-mcp Python örneklerinden bir 'client örneği' alıp test edersiniz. Veya 'mcp-bridge' tipi köprü araçlarla (örn. mcp-proxy) HTTP API'ye dönüştürüp herhangi bir istemciye verirsiniz. Ekosistem hızla genişliyor — 2026'da MCP'siz istemci kalmayacak gibi görünüyor.

MCP öğrenmenin sıradaki adımı

Bu rehber size MCP'nin haritasını verdi. Pratik için Claude Code merkezi, otomasyon zincirlerini bağlamak için n8n öğrenme yolu, kurum içi RAG + MCP server uçtan uca için Kurumsal AI Çözümleri.

Anasayfaya dön