ai-machine-learning

Model Context Protocol: İlk MCP Sunucunu Bugün Kur

Yazan Mert Batur
Mar 17, 2026
17 okuma
Model Context Protocol: İlk MCP Sunucunu Bugün Kur

Model Context Protocol (MCP), yapay zeka modellerine harici araçlara, veri kaynaklarına ve servislere bağlanmak için evrensel bir yol sunan açık bir standarttır. Her model-araç kombinasyonu için özel entegrasyon kodu yazmak yerine tek bir MCP sunucusu yazarsın ve her uyumlu model onu kullanabilir. Anthropic, MCP'yi 2024 sonunda geliştirdi, Linux Foundation şu anda yönetiyor; OpenAI, Google ve ajantik yapay zeka ekosisteminin geri kalanı da benimsedi. İşte MCP hakkında anlamanız, kurmanız ve dağıtmanız gereken her şey.

MCP'ye Hızlı Bakış

6.000 kelimelik ayrıntılara dalmadan önce hızlı versiyonu istiyorsan, işte burada.

ÖzellikDetay
Tam AdıModel Context Protocol (MCP)
GeliştirenAnthropic (Kas 2024), şu anda Linux Foundation / AAIF tarafından yönetiliyor (Ara 2025)
Ne YaparYapay zeka modellerini araçlara, verilere ve servislere bağlamak için evrensel standart
Çözdüğü SorunM x N özel entegrasyonları ortadan kaldırır -- yapay zeka için USB-C gibi
Temel PrimitivlerAraçlar, Kaynaklar, Promptlar ve Örnekleme
Transportstdio (yerel geliştirme), Streamable HTTP (üretim)
Kimlik DoğrulamaOAuth 2.1 (HTTP transport için gerekli)
SDK'larPython (FastMCP), TypeScript, Java, Kotlin, C#
Ekosistem Büyüklüğü10.000+ aktif sunucu (Linux Foundation'a göre, Ara 2025)
Büyük BenimsenicilerClaude, ChatGPT, Gemini, Cursor, VS Code Copilot, Windsurf
Spec DurumuAçık standart, aktif olarak gelişiyor (2026 yol haritası devam ediyor)
En İyi KullanımGerçek dünya araçları ve verileriyle etkileşime girmesi gereken yapay zeka ajanları

Şimdi bunların her birini açalım; MCP'nin gerçekte ne olduğu ve onu zorunlu kılan sorunla başlayalım.

Model Context Protocol Nedir?

Model Context Protocol, yapay zeka modellerinin harici araçları ve verileri nasıl keşfedip bunlarla nasıl etkileşime girdiğini standartlaştıran, açık, JSON-RPC tabanlı bir protokoldür. Yapay zeka entegrasyonları için HTTP gibi düşün -- herhangi bir modelin ve herhangi bir aracın konuşabileceği ortak bir dil.

USB-C benzetmesini muhtemelen duymuşsundur ve belirli bir noktaya kadar kullanışlıdır: USB-C öncesinde her cihazın kendi kablosuna ihtiyacı vardı. MCP, yapay zeka için aynı şeyi yapıyor; ancak benzetme onu küçümsüyor. USB-C yalnızca veri ve güç taşır. MCP ise araç tanımlarını, veri erişim kalıplarını, yeniden kullanılabilir prompt şablonlarını taşır ve sunucuların modelden tamamlama istemesine bile olanak tanır. Bir kablo metaforunun önerdiğinden çok daha zengin bir protokoldür.

MCP'nin Çözdüğü M x N Problemi

MCP olmadan, M modeli N araçla bağlamak M x N özel entegrasyon gerektirir. Diyelim ki 5 LLM destekliyorsun (Claude, GPT-4, Gemini, Llama, Mistral) ve bunların 10 araca erişmesi gerekiyor (GitHub, Postgres, Slack, Jira vb.). Bu, her biri kendi kimlik doğrulama, hata işleme ve veri formatlama mantığına sahip 50 özel entegrasyon katmanı demektir.

MCP ile her model, MCP istemci protokolünü bir kez uygular ve her araç bir kez MCP sunucusu uygular. Artık 50 yerine 5 + 10 = 15 uygulama var. Yeni bir model eklendi mi? Tüm 10 araçla hemen çalışır. Yeni bir araç eklendi mi? 5 modelin tamamı onu kullanabilir.

MCP'nin Kısa Tarihi

Anthropic, Kasım 2024'te MCP'yi açık kaynak olarak yayınladı; Python ve TypeScript için SDK'larla birlikte Claude Desktop için konektörler de ekledi. Benimseme hızlı ilerledi. OpenAI, Mart 2025'te ChatGPT'ye MCP desteği ekledi. Google, Nisan 2025'te Gemini için takip etti. Aralık 2025'te Anthropic, MCP'yi Linux Foundation'ın yeni Agentic AI Foundation'ına (AAIF) bağışladı; Block ve OpenAI ile birlikte kuruldu, bu da MCP'yi endüstri genelinde yönetişime sahip satıcıdan bağımsız bir standart haline getirdi.

MCP'nin NE OLMADIĞI:

  • Bir model ya da yapay zeka çerçevesi değildir (HTTP gibi bir protokoldür)
  • LangChain veya LlamaIndex'in yerini almaz (bunlar orkestrasyon katmanlarıdır; MCP onların altında yer alır)
  • Anthropic veya Claude ile sınırlı değildir (tasarım gereği modelden bağımsızdır)
  • Function calling ile aynı şey değildir (karşılaştırma bölümünde daha fazla bilgi var)

MCP Nasıl Çalışır? Mimariye Derinlemesine Bakış

MCP'nin üç rolü vardır ve bunları birbirine karıştırmak en yaygın yeni başlayan hatasıdır. Farkı netleştirelim.

<!-- IMAGE: Host, client, server rollerini Claude Desktop, GitHub MCP Server, Postgres MCP Server gibi gerçek örneklerle gösteren MCP mimari diyagramı -->

Host, İstemci ve Sunucu -- Fark Nedir?

BileşenRolÖrneklerNe Yapar
HostKullanıcının etkileşimde bulunduğu uygulamaClaude Desktop, Cursor, VS CodeKullanıcı arayüzü sağlar, istemci örneklerini yönetir
İstemciHost içindeki protokol işleyicisiHost uygulamasına yerleşikBir MCP sunucusuyla 1:1 bağlantı kurar
SunucuAraçları ve verileri MCP üzerinden açığa çıkarırGitHub sunucusu, Postgres sunucusu, Slack sunucusuHarici API'leri/verileri MCP uyumlu uç noktalara sarar

İşte somut bir örnek: Claude Desktop'tan açık GitHub pull request'lerini kontrol etmesini istiyorsun. Claude Desktop host'tur. Yerleşik MCP istemcisi, GitHub MCP sunucusuna bir bağlantı açar. Sunucu GitHub API'sini çağırır, PR'larını getirir ve sonuçları modele ileten istemciye geri gönderir.

Tek bir host, her biri farklı bir sunucuya bağlı birden fazla istemci çalıştırabilir. Claude Desktop'ın aynı anda GitHub'a, Postgres veritabanına ve Slack'e erişebilmesi böyle çalışır -- üç ayrı MCP sunucusu, üç ayrı istemci bağlantısı, bir host.

Mesajlar Nasıl Akar (JSON-RPC 2.0)

Tüm MCP iletişimi, JSON-RPC 2.0 kullanır -- hafif bir istek/yanıt protokolü. İşte tools/list değişiminin hat üzerinde nasıl göründüğü:

json
// İstemci isteği: "Hangi araçlara sahipsin?"
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list"
}

// Sunucu yanıtı: bir araç mevcut
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "tools": [
      {
        "name": "get_weather",
        "description": "Bir şehir için güncel hava durumunu al",
        "inputSchema": {
          "type": "object",
          "properties": {
            "city": { "type": "string" }
          },
          "required": ["city"]
        }
      }
    ]
  }
}

Model bu araç tanımlarını okur, kullanıcının isteğine göre ne zaman çağıracağına karar verir ve istemci, uygun argümanlarla sunucuya geri bir tools/call isteği gönderir.

Bağlantı Yaşam Döngüsü

Her MCP oturumu aynı yaşam döngüsünü izler:

  1. Başlatma -- istemci kapasitelerini gönderir, sunucu kendisininkiyle yanıt verir
  2. Kapasite müzakeresi -- her iki taraf desteklenen özelliklerde anlaşır (araçlar, kaynaklar, promptlar, örnekleme)
  3. Hazır -- bağlantı aktif; istekler her iki yönde de akar
  4. İstekler/yanıtlar -- tools/call, resources/read vb.
  5. Kapatma -- temiz bağlantı kesme

Bu el sıkışma, ileriye dönük uyumluluğu sağlar. Bir sunucu yeni bir primitive eklerse, eski istemciler çökmek yerine onu zarif şekilde yok sayar.

MCP Primitifleri: Araçlar, Kaynaklar, Promptlar ve Örnekleme

MCP dört primitive tanımlar ve her birini kimin kontrol ettiğini anlamak, iyi MCP sunucuları tasarlamanın anahtarıdır.

PrimitiveKim Kontrol EderYönÖrnekKullanım Durumu
AraçlarModel ne zaman çağıracağına karar verirİstemci -> Sunucucreate_github_issueYapay zekanın özerk olarak gerçekleştirdiği eylemler
KaynaklarUygulama/kullanıcı seçerİstemci -> Sunucufile://project/README.mdBağlama eklenen veriler
PromptlarKullanıcı tetiklerİstemci -> Sunucucode_review şablonuYeniden kullanılabilir etkileşim kalıpları
ÖrneklemeSunucu tamamlama isterSunucu -> İstemciSunucu modelden özetlemesini isterSunucunun LLM'yi kullandığı ajantik döngüler

Araçlar (Model Kontrolündeki)

Araçlar, modelin çağırabileceği fonksiyonlardır. Sunucu bunları bir isim, açıklama ve JSON Schema giriş tanımıyla bildirir. Model bu tanımları okur ve bir kullanıcının isteği gerektirdiğinde aracı çağırmaya karar verir.

json
// İstemci tools/call isteği gönderir
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "get_weather",
    "arguments": { "city": "İstanbul" }
  }
}

OpenAI function calling kullandıysan, araçlar tanıdık gelecektir -- ancak her MCP uyumlu model için standartlaştırılmıştır.

Kaynaklar (Uygulama Kontrolündeki)

Kaynaklar, salt okunur veri uç noktalarıdır. Araçların aksine, model bir kaynağı kendi başına getirmeye karar vermez -- host uygulaması veya kullanıcı, kaynakları konuşma bağlamına açıkça ekler. Bunları GET uç noktaları gibi düşün: postgres://mydb/users/schema, file://docs/api-reference.md.

Kaynaklar, resources/subscribe aracılığıyla abonelikleri destekler, böylece veriler değiştiğinde istemci bilgilendirilebilir.

Promptlar (Kullanıcı Kontrolündeki)

Promptlar, bir MCP sunucusunun açığa çıkardığı yeniden kullanılabilir şablonlardır. Bir code_review promptu bir dosya yolunu kabul edebilir ve yapılandırılmış bir inceleme isteği oluşturabilir. Kullanıcı (veya host kullanıcı arayüzü), promptları açıkça tetikler -- model tarafından otomatik olarak çağrılmazlar.

Örnekleme (Sunucu Başlatmalı) -- Gelişmiş

İşte çoğu rehberin atladığı primitive. Örnekleme, sunucunun istemciden LLM'yi kullanarak bir tamamlama oluşturmasını istemesine olanak tanır. Bu, olağan akışı tersine çevirir: modelin bir araç çağırması yerine, araç modeli çağırır.

Neden? Ajantik döngüler. Destek biletlerini işleyen bir MCP sunucusu hayal et. Bileti (bir kaynak) okur, modelden bir özet istemek için sampling/createMessage kullanır, ardından bu özeti bir araç aracılığıyla bileti yönlendirmek için kullanır. Sunucu, modelin zekasından yararlanarak çok adımlı bir iş akışını düzenler.

Örnekleme, host uygulaması tarafından kontrol edilir -- kullanıcının onaylaması gerekir ve host, sunucunun neyi isteyebileceğini kontrol eder. Bu, kontrolsüz döngüleri önler ve insan gözetimini korur.

İlk MCP Sunucunu Kur: Python ve TypeScript Yan Yana

Yeterince teori. Bir get_weather aracını açığa çıkaran çalışan bir MCP sunucusu kuralım. Geliştirici deneyimini karşılaştırabilmek ve projenize uyan yığını seçebilmek için hem Python hem TypeScript göstereceğim.

FastMCP ile Python

FastMCP, resmi üst düzey Python SDK'sıdır. Tüm protokol altyapısını yönetir, böylece araç mantığına odaklanabilirsin.

bash
# FastMCP'yi yükle
pip install fastmcp
python
# weather_server.py
from fastmcp import FastMCP

mcp = FastMCP("Hava Durumu Sunucusu")

@mcp.tool()
def get_weather(city: str) -> str:
    """Bir şehir için güncel hava durumunu al."""
    # Üretimde buraya gerçek bir hava durumu API'si çağrısı ekle
    weather_data = {
        "İstanbul": "Bulutlu, 14°C",
        "Tokyo": "Güneşli, 22°C",
        "New York": "Yağmurlu, 8°C",
    }
    return weather_data.get(city, f"{city} için veri yok")

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

İşte bu kadar -- 15 satır. FastMCP, aracın giriş şemasını Python tür ipuçlarından ve docstring'den çıkarır. JSON Schema şablonu yok.

Resmi SDK ile TypeScript

TypeScript SDK'sı (@modelcontextprotocol/sdk) biraz daha açık, ancak şema tanımları üzerinde tam kontrol sağlar.

bash
# SDK ve şema doğrulama için Zod'u yükle
npm install @modelcontextprotocol/sdk zod
typescript
// weather-server.ts
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: "Hava Durumu Sunucusu",
  version: "1.0.0",
});

server.tool(
  "get_weather",
  "Bir şehir için güncel hava durumunu al",
  { city: z.string() },
  async ({ city }) => {
    const weatherData: Record<string, string> = {
      İstanbul: "Bulutlu, 14°C",
      Tokyo: "Güneşli, 22°C",
      "New York": "Yağmurlu, 8°C",
    };
    return {
      content: [
        { type: "text", text: weatherData[city] ?? `${city} için veri yok` },
      ],
    };
  }
);

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

TypeScript versiyonu, tür ipuçları yerine Zod şemaları kullanır ve yapılandırılmış içerik blokları döndürür. Daha ayrıntılı, ancak tür güvenliği mükemmeldir.

Claude Desktop'a Bağlan

Her iki sunucuyu da Claude Desktop'a bağlamak için claude_desktop_config.json dosyana ekle:

json
{
  "mcpServers": {
    "weather-python": {
      "command": "python",
      "args": ["weather_server.py"],
      "cwd": "/projenin/yolu"
    },
    "weather-typescript": {
      "command": "npx",
      "args": ["tsx", "weather-server.ts"],
      "cwd": "/projenin/yolu"
    }
  }
}

Claude Desktop'ı yeniden başlat; her iki hava durumu sunucusu da araç listesinde görünür. "İstanbul'da hava nasıl?" diye sor ve model get_weather aracını otomatik olarak çağırır.

MCP Inspector ile Test Et

Sunucunu bir host'a bağlamadan önce, MCP Inspector ile izole olarak test et:

bash
npx @modelcontextprotocol/inspector python weather_server.py

Inspector, keşfedilen araçları görebileceğin, bunları manuel olarak çağırabileceğin ve gidip gelen JSON-RPC mesajlarını inceleyebileceğin bir tarayıcı kullanıcı arayüzü açar. MCP ekosistemindeki en iyi hata ayıklama aracıdır -- erken ve sık kullan.

MCP Transportları: Geliştirme için stdio, Üretim için Streamable HTTP

MCP mesajlarının istemci ile sunucu arasında seyahat etmesi için bir yol gerekir. Bu, transport katmanıdır ve doğrusunu seçmek önemlidir.

TransportKullanım DurumuAvantajlarDezavantajlarDurum
stdioYerel geliştirme, kişisel araçlarSıfır yapılandırma, basit, hızlıYalnızca aynı makineAktif
Streamable HTTPÜretim, uzak sunucular, çok kullanıcılıAğ üzerinde çalışır, SSE aracılığıyla akışı destekler, durumsuz uyumluHTTP sunucusu gerektirir, kimlik doğrulama isterAktif (2025 spec)
HTTP+SSE (eski)Eski uzak transportOrijinal uzak seçenektiStreamable HTTP ile değiştirildiKullanım dışı

stdio, MCP sunucusunu bir alt süreç olarak başlatarak stdin/stdout üzerinden iletişim kurarak çalışır. Yukarıdaki eğitimde kullandığın şey bu -- port yok, TLS yok, kimlik doğrulama gerekmiyor. Geliştirme ve tek kullanıcılı yerel araçlar için mükemmel.

Streamable HTTP, 2025 spec güncellemesinde eklenen üretim transportudur. İstemciler sunucuya standart HTTP POST istekleri gönderir. Sunucu, daha uzun işlemler için eşzamanlı olarak veya bir SSE akışı açarak yanıt verebilir. Durumsuz uyumludur, yük dengeleyicilerin arkasında çalışır ve standart HTTP kimlik doğrulamasını destekler.

"HTTP+SSE"yi iki ayrı transport (biri göndermek için, biri almak için) olarak belirten eski eğitimler görürsen, bu kullanım dışı yaklaşımdır. Streamable HTTP, her ikisini tek, daha temiz bir mekanizmada birleştirir.

Karar basit: yerel geliştirme yaparken stdio kullan, başkaları için dağıtım yaparken streamable-http'e geç.

typescript
// TypeScript'te stdio'dan Streamable HTTP'ye geçiş
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";

const transport = new StreamableHTTPServerTransport({ port: 3001 });
await server.connect(transport);

MCP vs Function Calling vs REST API'leri -- Ne Zaman Ne Kullanılır

Bu, her MCP tartışmasında gündeme gelen sorudur; bu yüzden doğrudan bir karşılaştırmayla halledelim.

ÖzellikMCPFunction CallingREST API'leri
StandartlaşmaAçık protokol, modelden bağımsızSağlayıcı başına (OpenAI, Anthropic'in her birinin kendine özgü)Evrensel
Araç KeşfiYerleşik (tools/list)Yok -- istek başına şemalar gönderirsinYok -- belge veya OpenAPI spec gerektirir
Veri ErişimiKaynaklar primitiviDesteklenmiyorStandart uç noktalar
Prompt ŞablonlarıPromptlar primitiviDesteklenmiyorGeçerli değil
Kimlik DoğrulamaOAuth 2.1 (spec düzeyi)Sağlayıcı API anahtarıDeğişir (API anahtarları, OAuth vb.)
AkışSSE aracılığıyla Streamable HTTPSağlayıcıya bağlıDeğişir
Çoklu ModelHer MCP uyumlu modelle çalışırBir sağlayıcının API'sine bağlıModelden bağımsız (yapıştırıcı kodla)
Sunucu Ekosistemi10.000+ önceden kurulmuş sunucuN/AMilyonlarca API
Kurulum KarmaşıklığıBir MCP sunucusu çalıştırAPI çağrısında JSON gönderHTTP istemcisi
En İyi KullanımÇoklu model, çoklu araç ajan ortamlarıBirkaç araçlı basit tek model uygulamalarıServis-servis iletişimi

Function Calling Ne Zaman Yeterlidir

5'ten az araca sahipsen ve bir model kullanıyorsan, function calling daha basittir. Araç şemalarını her API çağrısıyla birlikte tanımlarsın, model fonksiyon adını ve argümanları döndürür ve bunları uygulama kodunda çalıştırırsın. Çalıştırılacak sunucu yok, öğrenilecek protokol yok. Sipariş durumunu kontrol eden ve SSS'leri arayan bir chatbot için function calling gayet uygundur.

MCP Ne Zaman Değer Kazanır

MCP, karmaşıklığını şu durumlarda hak eder:

  • Birden fazla LLM destekliyor ve her sağlayıcı için araç tanımlarını yeniden yazmak istemiyorsan
  • Araç keşfine ihtiyaç duyuyorsan -- model, şemaları sabit kodlamak yerine neyin mevcut olduğunu sorgulayabilir
  • Yalnızca araç çağrıları değil, kaynaklar ve promptlar da istiyorsan
  • Özerk olarak koordine eden yapay zeka ajanları kuruyorsan ve standartlaştırılmış bir entegrasyon katmanına ihtiyaç duyuyorsan
  • Ekibin büyüyor ve farklı mühendisler farklı araçlar kuruyor -- MCP onların bağımsız çalışmasına izin verir

Karar: MCP, standartlaştırılmış, çok modelli araç erişimine ihtiyaç duyduğunda kazanır. Function calling, basit, tek model kullanım durumlarında kazanır. REST API'leri, LLM içermeyen geleneksel servis-servis iletişimi için doğru seçim olmaya devam eder.

2026'da MCP Ekosistemi: Kimler Destekliyor ve Neler Mevcut

MCP, 18 aydan kısa bir sürede Anthropic'in yan projesinden bir endüstri standardına dönüştü. İşte mevcut durum.

Hangi LLM'ler MCP'yi Destekliyor?

LLMMCP DesteğiNe Zamandan BeriNotlar
ClaudeYerel, tam destekKas 2024MCP'yi yarattı; en derin entegrasyon
ChatGPTResmi destekMar 2025OpenAI'nin MCP entegrasyonu aracılığıyla
GeminiResmi destekNis 2025Google hizmetleri için Google Cloud MCP sunucuları
Llama / Açık KaynakAdaptörler aracılığıyla2025LangChain, LlamaIndex ve özel adaptörler
Copilot (VS Code)Ajan modunda yerel2025Microsoft, VS Code'da MCP desteği sunuyor

Bilmeye Değer Popüler MCP Sunucuları

KategoriSunucuNe Yapar
KodGitHubPR'lar, sorunlar, depolar, kod arama
KodGitLabBirleştirme istekleri, pipeline'lar, proje yönetimi
VeritabanıPostgreSQLŞema incelemesi, sorgu yürütme
VeritabanıMySQLSorgu ve şema erişimi
SaaSSlackKanal mesajları, arama, bildirimler
SaaSGoogle DriveDosya erişimi, arama, belge okuma
SaaSNotionSayfa okuma, veritabanı sorguları
AramaBrave SearchWeb arama sonuçları
DevOpsDockerKonteyner yönetimi
AltyapıAWSBulut kaynak yönetimi

Linux Foundation AAIF duyurusu, Aralık 2025'teki MCP bağışı sırasında 10.000+ aktif sunucu ve 97 milyon aylık SDK indirmesi bildirdi. Ekosistem artık deneysel değil -- üretime hazır.

MCP Apps, Ocak 2026'da tanıtılan yeni bir primitive. Sunucuların, host uygulama içinde render edilen etkileşimli UI bileşenleri sağlamasına olanak tanıyor. Henüz erken aşamada, ancak MCP'nin bir veri protokolünden tam bir ajan uygulama çerçevesine evrimi ni işaret ediyor. İzlemeye değer.

Yönetişim: Anthropic'ten Linux Foundation'a

MCP, Anthropic, Block ve OpenAI tarafından kurulan Linux Foundation bünyesindeki Agentic AI Foundation (AAIF) tarafından yönetilmektedir. Bu, kurumsal benimseme için önemlidir: MCP, tek bir satıcının yol haritasına bağlı değildir. 2026 yol haritası, transport evrimi, ajan-ajan iletişimi (yeni bir "Görevler" primitivi), yönetişim olgunluğu ve kurumsal hazırlık önceliklerine odaklanmaktadır.

Üretim yapay zeka sistemleri kuran ekipler için OpenClaw gibi özerk bir yapay zeka ajan çerçevesi, ajanlara gerçek dünya yetenekleri vermek için zaten MCP sunucularıyla entegre oluyor.

MCP Güvenliği: OAuth 2.1, Tehditler ve Pratik Bir Kontrol Listesi

Güvenlik, MCP ekosisteminin en çok geliştirmesi gereken alandır. Ve rakamlar çarpıcı bir tablo ortaya koyuyor.

%88 Problemi: Neden Çoğu MCP Sunucusu Güvensiz

Astrix Security, 5.200'den fazla açık kaynaklı MCP sunucu uygulamasını analiz etti ve %88'inin bir tür kimlik bilgisi gerektirdiğini, ancak %53'ünün yapılandırma dosyalarında sabit kodlanmış API anahtarları ve kişisel erişim belirteçleri gibi güvensiz uzun ömürlü statik sırlara dayandığını buldu. Yalnızca %8,5'i OAuth uygulayayor.

Bu, vahşi doğadaki MCP sunucularının büyük çoğunluğunun ev anahtarını ön kapıya yapıştırmaya eşdeğer kimlik doğrulama kullandığı anlamına geliyor.

MCP Sunucuları için OAuth 2.1

MCP spec, Haziran 2025 güncellemesi itibarıyla tüm HTTP tabanlı sunucular için OAuth 2.1 gerektiriyor. Akış şöyle çalışır: MCP istemcisi sunucuyla bir OAuth 2.1 yetkilendirme akışı başlatır, kapsamı sınırlı bir erişim belirteci alır ve her sonraki istekle birlikte bunu ekler. PKCE (Proof Key for Code Exchange), tüm istemciler için zorunludur -- istisna yok.

Streamable HTTP üzerinden çalışan bir MCP sunucusu kuruyorsan, OAuth 2.1 isteğe bağlı değildir. Spec tarafından zorunlu tutulmuştur.

Tehdit Modeli: Neler Yanlış Gidebilir

Her MCP dağıtımında dört tehdit dikkat gerektirir:

  • Araçlar aracılığıyla prompt enjeksiyonu -- Kötü niyetli veya ele geçirilmiş bir veri kaynağı, modeli manipüle etmek için tasarlanmış içerik döndürür. Bir araç bir web sayfası getirirse ve o sayfa gizli talimatlar içeriyorsa, model bunları çalıştırabilir.
  • Kafası karışık vekil saldırısı -- Model, kullanıcının amaçladığından daha geniş izinlerle bir araç çağırır. MCP sunucusunun bir veritabanına yönetici erişimi varsa, model teorik olarak bir tabloyu silebilir.
  • Token yoğunlaşma riski -- GitHub, Slack ve üretim veritabanın için API anahtarlarını tutan bir MCP sunucusu, tek bir yüksek değerli hedeftir. Bir sunucuyu ele geçir, bağlandığı her şeyi ele geçir.
  • Güvensiz transport -- TLS olmadan bir HTTP MCP sunucusu çalıştırmak, OAuth belirteçleri ve hassas veriler dahil her isteği düz metin olarak açığa çıkarır.

Üretim MCP için Güvenlik Kontrol Listesi

  1. OAuth 2.1'i uygula HTTP üzerinden açığa çıkan her sunucu için. Yapılandırma dosyalarında statik API anahtarı olmayacak.
  2. En az ayrıcalık kapsamı uygula. Aracın yalnızca veri okuması gerekiyorsa, sunucunun kimlik bilgileri salt okunur olmalıdır. Bir raporlama aracına yazma erişimi verme.
  3. Kimlik bilgilerini izole et. Her MCP sunucusunun kendi kapsamlı belirteçleri olmalıdır. Sunucular arasında tek bir "tanrı belirteci" paylaşma.
  4. Her yerde TLS'yi zorunlu kıl. HTTPS olmadan Streamable HTTP, üretim için otomatik olarak uygun değil.
  5. Araç çıktılarını doğrula ve temizle. Araçlar tarafından döndürülen verilere kullanıcı girdisiyle aynı şekilde davran -- kör bir şekilde güvenme.
  6. Araç çağırma hızını sınırla. Bir aracı binlerce kez çağıran kontrolsüz bir ajan döngüsü, API kotalarını tüketebilir veya istenmeyen yan etkilere neden olabilir.
  7. Her araç çağrısını denetle ve kaydet. İstek kimliklerini, zaman damgalarını, çağıran modeli ve araç argümanlarını dahil et. Buna hata ayıklama ve güvenlik olayı müdahalesi için ihtiyacın olacak.

MCP Hata Ayıklama: Inspector, Günlükleme ve Yaygın Hatalar

Hatalarla karşılaşacaksın. Her geliştirici karşılaşır. İşte bunları hızla düzeltmenin yolu.

MCP Inspector, resmi hata ayıklama aracıdır ve ilk savunma hattındır. Herhangi bir MCP sunucusuna bağlanır, araçlarını/kaynaklarını/promptlarını keşfeder ve ham JSON-RPC trafiğini gösterirken bunları manuel olarak çağırmana izin verir.

bash
# Inspector'ı Python sunucuna karşı başlat
npx @modelcontextprotocol/inspector python weather_server.py

# Ya da bir TypeScript sunucusuna karşı
npx @modelcontextprotocol/inspector npx tsx weather-server.ts

Inspector, Araçlar, Kaynaklar, Promptlar için sekmeler ve bir bildirim bölmesiyle tarayıcı tabanlı bir kullanıcı arayüzü açar. Herhangi bir aracı özel argümanlarla çağırabilir ve hat üzerinden tam olarak hangi JSON'ın geçtiğini görebilirsin. Bir host uygulamasına bağlanmadan önce kullan -- sunucuyu izole olarak hata ayıklamak çok daha kolaydır.

Yaygın Hatalar ve Düzeltmeleri

  • Claude Desktop'ta "Sunucu bulunamadı" -- Neredeyse her zaman claude_desktop_config.json'daki bir yol sorunudur. command'ın gerçek bir ikili dosyaya ve cwd'nin doğru dizine işaret ettiğini kontrol et. macOS'ta mutlak yollar kullan.
  • Araç şema doğrulama hataları -- Model, aracın inputSchema'sıyla eşleşmeyen argümanlar gönderirse, sunucu çağrıyı reddeder. Şema türlerinin modelin beklediğiyle eşleşip eşleşmediğini kontrol et. Zod (TypeScript) ve tür ipuçları (Python), bunların çoğunu tanım zamanında yakalar.
  • Transport bağlantı kopmaları -- stdio için bu genellikle sunucu sürecinin çöktüğü anlamına gelir. stderr çıktısını kontrol et. Streamable HTTP için zaman aşımı ayarlarını doğrula -- uzun süre çalışan araçlar varsayılan HTTP zaman aşımlarını aşabilir.
  • "İzin reddedildi" veya 401 hataları -- OAuth kapsamı çok dar. Sunucu, belirteci gerekli izinlere sahip olmadığı için reddediyor. Kapsamı genişlet, ancak yalnızca aracın gerçekten ihtiyaç duyduğu kadar.

Günlükleme En İyi Uygulamaları

Günlüklerini istek kimlikleriyle yapılandır, böylece tek bir kullanıcı isteğini MCP istemcisi, sunucu ve herhangi bir aşağı yönlü API üzerinden izleyebilirsin. Her tools/call çağrısını araç adı, argümanlar, yanıt süresi ve sonuç durumuyla kaydet. Üretimde, bu günlükleri bir gözlemlenebilirlik platformuna gönder -- sabah 3'te bir şeyler ters gittiğinde bunu yaptığına sevineceğin.

Techsy MCP ile Nasıl Kuruyor

2025'in başından beri müşteri projelerine MCP'yi entegre ediyoruz ve en sık gördüğümüz örüntü şu: bir ekibin bir model ve bir avuç araçla çalışan bir yapay zeka özelliği var, ancak ölçeklendirmeyi planlıyorlar -- daha fazla model, daha fazla veri kaynağı, daha fazla ajan kapasitesi. MCP'nin meyvelerini vermeye başladığı kırılma noktası bu.

Yaklaşımımız üç adımı izler:

  1. Uygunluğu değerlendir. Her proje MCP'ye ihtiyaç duymaz. Tek bir modelden iki araç çağırıyorsan, function calling daha basittir ve bunu sana söyleriz. MCP, 3 veya daha fazla veri kaynağını bağladığında, birden fazla modeli desteklediğinde veya araçların keşfedilebilir olması gereken ajan iş akışları kurduğunda mantıklıdır.
  2. Sunucuları izole olarak kur ve test et. Her veri kaynağı için -- dahili veritabanları, SaaS API'leri, tescilli hizmetler -- özel MCP sunucuları geliştiriyoruz ve herhangi bir host'a bağlanmadan önce MCP Inspector ile doğruluyoruz.
  3. Streamable HTTP ve OAuth 2.1 ile dağıt. Üretim için, MCP sunucularını TLS'nin arkasında kapsayıcılı hizmetler olarak, birinci günden itibaren kapsamlı OAuth belirteçleri ve yapılandırılmış günlüklemeyle çalıştırıyoruz. Statik sır yok.

Kurduğumuz en yaygın entegrasyonlar: yapay zeka asistanlarını dahili Postgres veritabanlarına bağlamak, müşteri SaaS platformları için özel MCP sunucuları kurmak ve ekipleri dağınık function calling kurulumlarından standartlaştırılmış bir MCP mimarisine geçirmek.

Altyapına bağlanması gereken yapay zeka destekli araçlar mı kuruyorsun? Ekiplerin MCP entegrasyonlarını tasarlamasına ve uygulamasına yardımcı oluyoruz. Ücretsiz danışmanlık al

MCP Hakkında Sık Sorulan Sorular

Model Context Protocol (MCP) nedir?

MCP, başlangıçta Anthropic tarafından oluşturulan ve şu anda Linux Foundation tarafından yönetilen açık bir standarttır; yapay zeka modellerinin harici araçlara, veri kaynaklarına ve hizmetlere nasıl bağlanacağını tanımlar. Bir MCP sunucusunun her uyumlu modelle çalışması için entegrasyon katmanını standartlaştırır -- yapay zeka için evrensel bir fiş gibi.

MCP nasıl çalışır?

MCP üç parçalı bir mimari kullanır: bir host uygulaması (Claude Desktop veya Cursor gibi), bağlantıları yöneten host içindeki bir MCP istemcisi ve araçları ve verileri açığa çıkaran MCP sunucuları. Tüm iletişim, stdio (yerel) veya Streamable HTTP (uzak) üzerinden JSON-RPC 2.0 mesajları kullanır.

MCP ne için kullanılır?

Yaygın kullanım durumları arasında yapay zeka asistanlarını veritabanlarına (Postgres, MySQL) bağlamak, kod platformlarıyla (GitHub, GitLab) entegrasyon sağlamak, SaaS araçlarına (Slack, Notion, Google Drive) erişmek ve gerçek dünya hizmetleriyle etkileşime girmesi gereken özerk yapay zeka ajanları kurmak yer alır.

MCP, function calling ile aynı şey midir?

Hayır. Function calling, modele özgüdür (OpenAI'nin formatı Anthropic'inkinden farklıdır) ve istek başınadır -- her API çağrısıyla araç şemaları gönderirsin. MCP, modeller arasında çalışan standartlaştırılmış bir protokoldür; araç keşfini destekler ve yalnızca fonksiyon yürütmenin ötesinde kaynaklar ve promptlar içerir.

MCP sunucuları nedir?

MCP sunucuları, MCP protokolü aracılığıyla yapay zeka modellerine araçlar, kaynaklar ve promptlar sağlayan programlardır. Harici API'leri ve veri kaynaklarını standartlaştırılmış bir arayüze sarar. Örnekler arasında GitHub MCP sunucusu (PR ve sorun yönetimi için) ve Postgres MCP sunucusu (veritabanı sorguları için) sayılabilir.

MCP sunucusu nasıl kurulur?

FastMCP ile Python (pip install fastmcp) veya resmi SDK ile TypeScript (npm install @modelcontextprotocol/sdk) kullan. Araçlarını dekoratif fonksiyonlar (Python) veya kayıtlı işleyiciler (TypeScript) olarak tanımla, ardından sunucuyu çalıştır. Tam çalışan kod için yukarıdaki eğitim bölümüne bak.

MCP güvenli midir?

Protokolün kendisi, kimlik doğrulama ve kapsamlı izinler için OAuth 2.1'i destekler. Ancak Astrix Security araştırması, mevcut MCP sunucu uygulamalarının %88'inin OAuth yerine statik sırlara dayandığını buldu. Protokol tasarım gereği güvenlidir, ancak gerçek dünya dağıtımlarının çoğu henüz yetişemedi.

Hangi LLM'ler MCP'yi destekliyor?

Claude, Kasım 2024'teki oluşturulmasından bu yana yerel MCP desteğine sahiptir. ChatGPT, Mart 2025'te destek ekledi ve Gemini Nisan 2025'te takip etti. Açık kaynaklı modeller, LangChain ve LlamaIndex'teki adaptörler aracılığıyla MCP kullanabilir.

MCP ile REST API arasındaki fark nedir?

REST API'leri, genel servis-servis iletişimi için tasarlanmıştır. MCP, yapay zeka modeli etkileşimi için özel olarak tasarlanmıştır -- REST'in sahip olmadığı araç keşfini, şema müzakeresini, kaynak erişimini ve prompt şablonlarını içerir. REST API'lerini MCP ile değiştirmezsin; farklı katmanlara hizmet ederler.

MCP'yi şu anda kim yönetiyor?

Aralık 2025'te kurulan Linux Foundation'ın Agentic AI Foundation'ı (AAIF), MCP'yi yönetiyor. Anthropic, Block ve OpenAI tarafından ortak kuruldu. Bu satıcıdan bağımsız yönetişim, işletmelerin MCP'yi benimsemesinin temel nedenlerinden biridir.

MCP'de Streamable HTTP nedir?

Streamable HTTP, 2025 MCP spec güncellemesinde eklenen üretim transport mekanizmasıdır. Daha eski HTTP+SSE transportunu daha temiz bir tasarımla değiştirir: istemciler HTTP POST istekleri gönderir ve sunucular eşzamanlı olarak veya SSE akışı aracılığıyla yanıt verebilir. Yük dengeleyicilerin arkasında çalışır ve standart HTTP kimlik doğrulamasını destekler.

Kaç MCP sunucusu var?

Linux Foundation, Aralık 2025'te MCP'nin AAIF'e bağışlandığı sırada 10.000'den fazla aktif sunucu ve 97 milyon aylık SDK indirmesi bildirdi. Ekosistem veritabanlarını, kod araçlarını, SaaS entegrasyonlarını, arama motorlarını ve bulut altyapı sağlayıcılarını kapsıyor.

Sonuç

MCP, Anthropic'in açık kaynak deneyinden yapay zeka modellerini araçlara bağlamak için endüstri standardı protokole bir yılı biraz geçen bir sürede dönüştü. İşte önemli olan:

  • MCP, M x N problemini çözer -- bir sunucu her uyumlu modelle çalışır, bir istemci her sunucuyla çalışır
  • Python (FastMCP) veya TypeScript'te 50 satırdan az kod ile çalışan bir MCP sunucusu kurabilirsin
  • Geliştirme için stdio, üretim için Streamable HTTP kullan -- transport seçimi basittir
  • Sunucularını OAuth 2.1 ile güvenli hale getir -- mevcut uygulamaların %88'i bunu yapmıyor ve bu gerçek bir risktir
  • Ekosistem üretime hazır -- 10.000'den fazla sunucu, tüm büyük LLM'ler, Linux Foundation altında satıcıdan bağımsız yönetişim

İleriye bakıldığında, 2026 yol haritası yeni bir Görevler primitifi aracılığıyla ajan-ajan iletişimine, gelişmiş kurumsal güvenliğe ve etkileşimli sunucu güdümlü kullanıcı arayüzü için MCP Apps'a odaklanıyor. MCP artık yalnızca araç erişimi için bir protokol değil -- ajantik yapay zeka için altyapı katmanı haline geliyor.

Yukarıdaki eğitim koduyla başla, MCP Inspector'da test et ve Claude Desktop'a bağla. Bir saatten kısa sürede çalışan bir MCP entegrasyonuna sahip olacaksın.

Kaynaklar

Etiketler

model context protocolmcpmcp sunucuyapay zeka ajanlarımcp eğitimimcp mimarisifastmcpyapay zeka geliştirme

Bu makaleyi paylaş

Projenize Başlayın

Harika bir şey inşa etmeye hazır mısınız?

Vizyonunuzu hayata geçirelim. Fark yaratan yazılımlar için ekibimiz hazır.