MCP
Model Context Protocol
Yapay zeka uygulamalarının dış veri kaynaklarına ve araçlara standart bir şekilde bağlanmasını sağlayan açık protokol.
MCP (Model Context Protocol), Anthropic tarafından 2024 sonunda duyurulan ve hızla bir endüstri standardına dönüşen açık bir protokoldür. Tek bir cümleyle özetlersek: AI için USB-C. Eskiden her AI uygulaması her veri kaynağına ayrı ayrı entegre olmak zorundaydı (Claude için ayrı, Cursor için ayrı, ChatGPT için ayrı). MCP bu kaosu bitirir.
Mimari üç parçalıdır: Host (Claude Desktop, Cursor, VS Code gibi LLM barındıran uygulama), Client (Host içinde çalışan protokol istemcisi) ve Server (veri/araç sağlayan süreç — örn. Postgres MCP sunucusu, dosya sistemi MCP sunucusu, GitHub MCP sunucusu). Sunucular araçlar (fonksiyonlar), kaynaklar (okunabilir veriler) ve prompt şablonları sunar.
JSON-RPC 2.0 üzerinde çalışır; aynı makinede stdio, uzaktan HTTP üzerinden bağlanır. Bir MCP sunucusunu bir kez yazarsın, MCP destekleyen her uygulamada çalışır.
USB-C öncesini hatırla: her cihaz farklı kablo, farklı şarjlar, valizinde 10 farklı adapter. USB-C sonrası: tek port, tek kablo, her şey çalışıyor.
MCP da AI dünyası için aynı şeyi yapıyor. Eskiden Slack mesajlarını Claude'a okutmak için özel kod yazıyordun, ChatGPT'ye okutmak için bambaşka kod. Şimdi: bir Slack MCP server kuruyorsun, MCP destekleyen her AI istemcisi (Claude Desktop, Cursor, vs.) o sunucuyu kullanıyor.
Diyelim Claude Desktop'a şirketinizin Postgres veritabanına erişim
vermek istiyorsunuz. Postgres MCP server'ını yüklersiniz, claude_desktop_config.json
dosyasına bağlantı bilgisini eklersiniz. Artık Claude'a "geçen ay en çok
sipariş veren 10 müşteriyi getir" diyebilirsiniz — Claude SQL üretir,
MCP server çalıştırır, sonucu okuyup yanıtlar. Aynı server'ı yarın
Cursor'a takarsan, orada da çalışır. Tek satır kod yazmadan.
// ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-postgres",
"postgresql://user:pass@localhost:5432/avva"
]
},
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/me/projects"
]
}
}
}import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
const server = new McpServer({
name: "avva-orders",
version: "1.0.0",
});
// Tool: bir siparişi sorgula
server.tool(
"get_order",
"Sipariş numarasından sipariş detayı döner",
{ order_id: z.string() },
async ({ order_id }) => {
const row = await db.query("SELECT * FROM orders WHERE id = $1", [order_id]);
return {
content: [{ type: "text", text: JSON.stringify(row) }],
};
},
);
await server.connect(new StdioServerTransport());- Birden fazla AI uygulamasında aynı veri kaynağına erişim gerektiğinde
- Şirket içi veritabanı, dosya sistemi veya API'ye AI erişimi açarken
- Açık ekosistemde paylaşılabilir bir araç yazıyorsan (npm paketi gibi)
- Durumsuz fonksiyon çağırma yetmiyor, kalıcı bağlantı ya da oturum gerekiyorsa
- Tek seferlik basit bir betik (script) yazıyorsan — doğrudan API çağrısı yeter
- Sadece tek bir LLM uygulaması kullanıyorsan ve onun yerel araç sistemi varsa
- Gecikme kritikse — protokolün ek yükü bir miktar gecikme katar
MCP'yi sadece Claude için sanmak
Açık bir standart. Cursor, VS Code, Continue.dev, Zed ve birçok uygulama destekliyor. OpenAI bile uyumluluk getirdi.
Sunucu güvenliğini hafife almak
MCP sunucusu kendi yetkileriyle çalışır. Veritabanına yazma yetkisi verirsen, LLM tetiklemesiyle DELETE çalıştırabilir. Sadece okuma yetkili kullanıcılar şart.
Client ile Server'ı karıştırmak
Host (Claude Desktop) içinde Client çalışır; Server ayrı bir süreçtir. Aynı makinede stdio üzerinden, uzaktan HTTP üzerinden bağlanırlar.