
MCP Nedir? Model Context Protocol ve MCP Sunucusu Rehberi (2026)
Kısaca: MCP (Model Context Protocol), yapay zekâ modellerinin dış sistemlere bağlanma biçimini standartlaştıran açık bir protokol. Anthropic 2024 sonunda duyurdu, 2026'da sektörün ortak dili oldu. Bu rehberde MCP'nin ne olduğunu, API'den farkını, 50 satırlık çalışan bir MCP sunucusunun nasıl yazıldığını ve üretimde 40'tan fazla aracı MCP üzerinden nasıl yönettiğimizi anlatıyoruz.
Bir not: "MCP" kısaltması tıpta el eklemini, otomotivde bir şanzıman tipini de anlatıyor. Bu yazı yazılımdaki Model Context Protocol'ü konu alıyor.
MCP Nedir?
Model Context Protocol, yapay zekâ uygulamalarının dış veri kaynaklarına, araçlara ve servislere nasıl bağlanacağını tanımlayan açık bir standart. MCP sunucusu ise bu yeteneklerden birini dışa açan küçük bir servis: veritabanı sorgusu, dosya okuma, API çağrısı, kod çalıştırma.
MCP'yi yapay zekâ için evrensel bir adaptör gibi düşünebilirsiniz. Öncesinde her entegrasyon ayrı bir mühendislik projesiydi: Claude'u, GPT'yi veya Gemini'ı kurum içi bilgi tabanınıza bağlamak, her model–veri kaynağı kombinasyonu için ayrı kod yazmak demekti.
MCP'den önce durum şuydu:
- Her LLM SDK'sının kendi araç tanım formatı vardı
- OpenAI'dan Anthropic'e geçmek araç şemalarını baştan yazmayı gerektiriyordu
- Araç implementasyonları servis değil, uygulamanın içinde yaşıyordu
- 5-10 aracı geçince yönetilemez hale geliyordu
MCP ile:
- Araçlar bir kez, MCP uyumlu sunucularda tanımlanıyor
- MCP uyumlu her istemci (Claude, Cursor, kendi ajanınız) bunları kullanabiliyor
- Keşif (
list_tools), çağırma (call_tool) ve sonuç formatı standart - Araçlar servise dönüşüyor: ayrı deploy edilebilir, yetkilendirilebilir, denetlenebilir
2026 ortası itibarıyla Anthropic, OpenAI, Google DeepMind, Microsoft ve yüzlerce kurumsal yazılım sağlayıcısı MCP uyumlu araçlar sunuyor.
MCP Ne İşe Yarar?
Somut bir örnekle bakalım. Kullanıcı yapay zekâ asistanına "vadesi geçmiş faturaları göster" diyor.
MCP olmadan model şunları çözmek zorunda: Hangi endpoint? /invoices mı /api/v2/billing/invoices mı? Parametre status=overdue mu past_due mu? Authentication nasıl? Sayfalama var mı? Her biri ayrı bir deneme, çoğu başarısız.
MCP ile model sunucuya bağlanıyor, list_tools çağırıyor, "get_overdue_invoices diye bir aracım var" cevabını alıyor ve doğrudan çağırıyor. Tek çağrı, tek seferde.
Fark şurada: REST API'de yolu geliştirici önceden biliyor ve kodluyor. MCP'de araçları modelin kendisi çalışma anında keşfediyor ve ne zaman kullanacağına kendisi karar veriyor.
MCP Nasıl Çalışır? Host, Client, Server
MCP üç bileşenli bir istemci-sunucu mimarisi kullanıyor.
MCP Host, modeli barındıran veya yöneten uygulama: Claude Code, kurum içi bir geliştirici sohbet aracı ya da ekibinizin yazdığı bir ajan.
MCP Client, host'un içinde protokolü konuşan ve sunucu bağlantılarını model adına yöneten katman.
MCP Server, yetenekleri bağlı her istemciye açan süreç.
Her sunucu ne yapabildiğini üç temel yapıyla bildiriyor: tools (modelin çağırabileceği fonksiyonlar), resources (modelin okuyabileceği veri) ve prompts (sık iş akışları için hazır şablonlar). Model bunları çalışma anında keşfediyor; modele özel hiçbir uyarlama gerekmiyor.
Akış yerelde stdio üzerinden (aynı makine) ya da uzaktan HTTP ve Server-Sent Events ile çalışıyor. İkincisi, MCP sunucularının kurum genelinde paylaşılan servisler olarak çalışmasını mümkün kılan şey.
MCP ile API Arasındaki Fark Ne?
Mühendislik ekiplerinin ilk sorduğu soru bu: "Zaten REST API'miz var, MCP'ye neden ihtiyacımız olsun?"
Kısa cevap: API'ler programlar için, MCP yapay zekâ ajanları için.
Öne çıkan farklar:
- Çağıran taraf — REST API: uygulama kodu; MCP: model veya ajan
- Keşif — REST API: dokümantasyon veya OpenAPI şeması; MCP: çalışma anında yetenek bildirimi
- Kimlik doğrulama — REST API: her API için ayrı; MCP: host üzerinden merkezî
- Birleştirilebilirlik — REST API: elle orkestrasyon; MCP: model güdümlü ve dinamik
- Hata yönetimi — REST API: uygulama mantığı; MCP: modelin muhakemesine bırakılıyor
Önemli nokta: MCP sunucularının çoğu arka planda mevcut API'leri çağırıyor. Jira MCP sunucusu Jira REST API'sini, GitHub MCP sunucusu GitHub REST API'sini kullanıyor. MCP, API'nizin yerine geçen bir şey değil; üzerine oturan bir yönlendirme katmanı.
MCP Sunucusu Nasıl Kurulur? 50 Satırlık Örnek
Üç araç sunan bir sunucu yazalım: hava durumu, SQL sorgusu, Slack mesajı.
Kurulum
pip install mcpSunucu kodu: weather_db_slack_server.py
from mcp.server import Server, NotificationOptions
from mcp.server.models import InitializationOptions
import mcp.server.stdio
import mcp.types as types
server = Server("internative-tools")
@server.list_tools()
async def handle_list_tools() -> list[types.Tool]:
return [
types.Tool(
name="get_weather",
description="Bir sehir icin guncel hava durumunu getirir",
inputSchema={
"type": "object",
"properties": {
"city": {"type": "string", "description": "Sehir adi"}
},
"required": ["city"],
},
),
types.Tool(
name="query_db",
description="Analitik veri ambarinda salt-okunur SQL calistirir",
inputSchema={
"type": "object",
"properties": {
"sql": {"type": "string", "description": "Sadece SELECT"}
},
"required": ["sql"],
},
),
types.Tool(
name="send_slack",
description="Bir Slack kanalina mesaj gonderir",
inputSchema={
"type": "object",
"properties": {
"channel": {"type": "string"},
"message": {"type": "string"},
},
"required": ["channel", "message"],
},
),
]
@server.call_tool()
async def handle_call_tool(name: str, arguments: dict) -> list[types.TextContent]:
if name == "get_weather":
# Gercek kodda: OpenWeatherMap veya benzeri bir servis cagrilir
result = f"{arguments['city']} hava durumu: 18 C, parcali bulutlu"
elif name == "query_db":
# Gercek kodda: salt-okunur kimlik bilgisi + SQL dogrulayici
result = f"Sonuc: [3 satir] {arguments['sql'][:60]}..."
elif name == "send_slack":
# Gercek kodda: Slack SDK + denetim kaydi
result = f"{arguments['channel']} kanalina gonderildi: {arguments['message'][:50]}..."
else:
result = f"Bilinmeyen arac: {name}"
return [types.TextContent(type="text", text=result)]
async def main():
async with mcp.server.stdio.stdio_server() as (read_stream, write_stream):
await server.run(
read_stream,
write_stream,
InitializationOptions(
server_name="internative-tools",
server_version="0.1.0",
capabilities=server.get_capabilities(
notification_options=NotificationOptions(),
experimental_capabilities={},
),
),
)
if __name__ == "__main__":
import asyncio
asyncio.run(main())Bu kadar. Çalışan bir MCP sunucusu. MCP uyumlu herhangi bir istemci artık bağlanabilir, list_tools() ile üç aracı görebilir ve call_tool("get_weather", {"city": "Istanbul"}) çağırabilir.
Claude Desktop'a bağlama
Claude Desktop yapılandırma dosyasına (macOS'ta ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"internative-tools": {
"command": "python",
"args": ["/mutlak/yol/weather_db_slack_server.py"]
}
}
}Claude Desktop'ı yeniden başlatın. Üç araç artık her sohbette görünür ve Claude bunları kendi kararıyla çağırabilir.
Kendi ajanınıza bağlama (LangGraph)
from langchain_mcp_adapters.client import MultiServerMCPClient
client = MultiServerMCPClient({
"internative-tools": {
"command": "python",
"args": ["/yol/weather_db_slack_server.py"],
"transport": "stdio",
}
})
tools = await client.get_tools()
# tools artik herhangi bir LLM'e baglanabilecek LangChain Tool listesiAynı sunucu Claude'da, Cursor'da, kendi Python veya Node ajanınızda çalışıyor. Bir kez yaz, her yerde kullan.
Üretimde Karşılaşacağınız Mimari Kararlar
Taşıma katmanı: stdio, HTTP, SSE
- stdio: sunucu alt süreç olarak çalışır. Masaüstü entegrasyonları (Claude Desktop, Cursor) veya aynı makinedeki servisler için.
- HTTP: sunucu bir web servisidir. Birden fazla ajanın kullandığı merkezî araç sunucuları için.
- SSE: akışlı çalışır. Parça parça çıktı üreten uzun süren araçlar için.
Koordex'te üretimde HTTP kullanıyoruz, çünkü araç sunucularımız çok sayıda ajana hizmet veren Kubernetes deployment'ları olarak çalışıyor.
Araç granülerliği
Yanlış: 50 alakasız aracı tek sunucuda toplamak. Doğru: alan bazında gruplanmış üç-beş sunucu — veritabanı araçları, iletişim araçları, dosya araçları.
Gerekçe operasyonel: yetkilendirmesi kolay, denetimi kolay, deploy döngüsü kolay.
Yetki modeli
MCP'nin kendisi yetki zorlamıyor; neyin açılacağına istemci karar veriyor. Üretim için:
- Sunucuyu bir kimlik doğrulama katmanıyla sarın (HTTP + JWT veya mTLS)
list_toolscevabını çağıran kimliğe göre filtreleyincall_toolargümanlarını çağıranın yetki kümesine karşı doğrulayın- Her araç çağrısını denetim için loglayın
Araç implementasyon standartları
Üretime çıkan her araç için:
- Girdi doğrulama: modelin argüman formatına güvenmeyin. Tip, aralık ve izinli değerleri kontrol edin.
- Idempotency: mümkünse çağrılar tekrar edilebilir olsun. Değiştiren işlemlere idempotency anahtarı ekleyin.
- Timeout: araç bazında verin. Model güdümlü akışlar araç çağrısı yağdırabiliyor.
- Rate limit: çağıran ve araç bazında. Kontrolden çıkan bir ajanın olay yaratmasını engeller.
- Denetim kaydı: kim, hangi aracı, hangi argümanla çağırdı ve ne döndü. JSON satır formatında.
Koordex Örneği: Üretim Ölçeğinde MCP
Koordex, Internative'in yapay zekâ operasyon katmanı. Kurumsal araçları otonom ajanlara güvenli biçimde MCP üzerinden açıyoruz.
Tipik bir Koordex kurulumunda beş-sekiz MCP sunucusuna dağılmış 40'tan fazla araç var:
- Veritabanı sunucusu (10-15 okuma aracı): veri ambarı sorguları, panolar, durum kontrolleri
- İletişim sunucusu (5-8 araç): Slack, e-posta, Teams, talep oluşturma
- Dosya sunucusu (5-7 araç): kurum içi doküman okuma, rapor yazma, klasör listeleme
- Tedarikçi API sunucusu (10-15 araç): Stripe, Salesforce işlemleri
- Yönetim sunucusu (3-5 araç, kısıtlı): kullanıcı yönetimi, faturalama
Her sunucu ayrı bir Kubernetes deployment'ı. Ajanlar araçları list_tools ile keşfediyor, yetki kapsamlarına göre filtrelenmiş halde.
Yetki deseni
Ajan Kimligi → Politika Motoru → Izinli Arac Filtresi → MCP KesfiBir ajan bağlandığında politika motoru kullanabileceği araç alt kümesini döndürüyor. Ajan yalnızca onları görüyor; kapsam dışı çağrılar ağ geçidinde reddediliyor.
Müşteri destek ajanı: okuma araçları ve talep oluşturma, fazlası yok. Analist ajanı: okuma araçları ve pano yazma, değiştiren işlem yok. Yönetici ajanı: tam erişim, yıkıcı işlemlerde insan onayı kapısıyla.
Maliyet deseni
MCP araç çağrıları bedava değil; LLM maliyeti tam olarak burada birikiyor. Ajanlı akışlar tek bir kullanıcı isteği için 10-100 araç çağrısı zincirleyebiliyor.
Koordex aynı oturumdaki özdeş çağrıları, oturumlar arası salt-okunur sonuçları 5-60 dakikalık TTL ile ve gereksiz çağrıları yakalamak için argüman parmak izlerini önbelleğe alıyor. Gerçek bir kurulumda önbellekleme, müşteri destek yüklerinde araç çağrısı hacmini %40-60 azalttı.
Kendi Sitemizi MCP ile Yönetiyoruz
Bu yazıdaki desenler teorik değil. internative.net'in içerik yönetimi de bir MCP sunucusu üzerinden yürüyor: içerik okuma, düzenleme, yönlendirme kurma, analitik sorgulama araçlarıyla. Worktivity ve Portal CRM'in de kendi MCP sunucuları var.
Nasıl çalıştığını ve nelerde işe yaramadığını ayrıntılı anlattığımız yazı burada: Web Sitemizi Bir Yapay Zekâ Asistanıyla Yönetiyoruz.
MCP Ne Zaman Gereksiz?
- Tek amaçlı, bir-üç araçlı ajan: çağrıları doğrudan yazın, MCP fazla gelir.
- Uçtan uca 50 ms altı gecikme gerektiren çağrılar: MCP taşıma katmanı 20-100 ms ekliyor.
- Tamamen tek bir Python süreci içindeki araçlar: fonksiyon çağrısı protokol yükünü yener.
- Python veya Node 18+ çalıştıramayan eski bir yığın: SDK'lar modern çalışma zamanı varsayıyor.
Bunların dışında — çok ajanlı sistemler, farklı dillerde çalışan ekipler, denetim yükü ağır ortamlar — MCP doğru soyutlama.
En Sık Yapılan Üç Hata
Hata 1: "Karmaşıklığı azaltmak için" MCP'siz doğrudan araç çağrısı yazmak. Bir gün kazandırır. Sekizinci ayda ikinci ajanı eklediğinizde veya framework değiştirdiğinizde dört-altı hafta kaybettirir.
Hata 2: Yetki katmanı koymamak. Prototipte varsayılan açık erişim sorun değil. Üretimde yetki sınırı olmayan bir ajan, göndermemesi gereken e-postayı göndermekten bir prompt injection uzaktadır.
Hata 3: Denetim kaydı tutmamak. Ajan üretimde şaşırtıcı bir şey yaptığında — ki yapacak — ne yaptığını geri kurmanız gerekir. Araç bazında log yoksa tahmin yürütürsünüz.
Sıkça Sorulan Sorular
MCP ne anlama geliyor?
MCP, Model Context Protocol'ün kısaltması; Türkçede "model bağlam protokolü" olarak da geçiyor. Yapay zekâ modellerinin dış veri kaynaklarına ve araçlara standart bir arayüzle bağlanmasını sağlayan, Anthropic'in 2024 sonunda açık kaynak olarak yayımladığı bir protokol.
MCP sunucusu nedir?
MCP sunucusu, belirli yetenekleri protokolün diliyle dışa açan küçük bir servistir. Bir veritabanı sunucusu "sorgu çalıştır" aracını, bir dosya sunucusu "dosya oku" ve "dosya yaz" araçlarını sunar. Bağlanan her yapay zekâ istemcisi bu araçları çalışma anında keşfeder ve çağırabilir.
MCP nasıl kurulur?
Python için pip install mcp ile SDK'yı kurun, araçlarınızı bir list_tools handler'ında JSON şemasıyla tanımlayın, eşleşen fonksiyonu çalıştıran bir call_tool handler'ı yazın ve sunucuyu stdio üzerinden başlatın. Üç araç için yaklaşık 50 satır; çalışan tam örnek yukarıdaki bölümde.
MCP nasıl kullanılır?
İki taraf var. Kullanıcı tarafında, Claude Desktop veya Cursor gibi bir istemcinin yapılandırma dosyasına sunucuyu tanıtıyorsunuz; araçlar sohbetlerde kendiliğinden görünüyor. Geliştirici tarafında, kendi ajanınıza bir MCP istemcisi ekliyorsunuz ve sunucunun araçlarını modele bağlıyorsunuz.
Uzaktan erişilen bir MCP sunucusu nasıl yapılır?
stdio yerine HTTP veya SSE taşıma katmanını kullanın; sunucu böylece alt süreç değil, bir web servisi olarak çalışır. Önüne kimlik doğrulama koyun (JWT veya mTLS) ve list_tools cevabını çağıran kimliğine göre filtreleyin, çünkü uzak sunucuya kontrol etmediğiniz istemciler de erişebilir.
ChatGPT MCP kullanıyor mu?
Evet. OpenAI 2025 başında MCP desteğini duyurdu; 2026 itibarıyla hem ChatGPT masaüstü uygulaması hem de OpenAI API'si MCP sunucu bağlantılarını doğrudan destekliyor. Anthropic'in başlattığı standart sektörün ortak paydası haline geldi — tek bir MCP sunucusunun bütün büyük modellere hizmet edebilmesinin sebebi bu.
MCP, API'mizin yerine mi geçiyor?
Hayır. MCP sunucularının çoğu arka planda mevcut REST API'yi çağırıyor. MCP, o yetenekleri muhakeme yapan bir modelin keşfedip çağırabileceği hale getiren katman. API'niz programlar için kalır, MCP ajanlar için eklenir.
İlgili Yazılar
- Neden Her SaaS'ın Bir Web MCP Sunucusuna İhtiyacı Var?
- Web Sitemizi Bir Yapay Zekâ Asistanıyla Yönetiyoruz: MCP Deneyimimiz
- AI Agent Nasıl Yapılır? 2026 Pratik Rehberi
- AI Agent vs RPA vs Workflow Otomasyonu: 2026 Karar Çerçevesi
Bir Sonraki Adım
Üretim için MCP sunucusu kuruyorsanız veya bir yapay zekâ operasyon katmanı değerlendiriyorsanız 30 dakikalık mimari görüşmeleri yapıyoruz. Araç yüzeyinizi, yetki ihtiyaçlarınızı ve denetim gereksinimlerinizi birlikte geçer, Koordex'in size uyup uymadığını ya da kendi kurmanızın daha doğru olduğunu açıkça söyleriz.
İletişim: team@internative.net
İlgili hizmetler
Bu konunun bir projeye dönüştüğü yer.
Okumaya devam edin
Blog kategorisinden daha fazla yazı.



