Büyük Dil Modeli (LLM) entegrasyonu alanı hızla değişiyor. Yıllardır geliştiriciler, yapay zeka modellerini harici veri kaynakları ve araçlarla bağlamak için istem mühendisliğine ve kırılgan API sarmalayıcılarına güveniyordu. Model Bağlam Protokolü (MCP), bu parçalanmanın standartlaştırılmış çözümü olarak öne çıkıyor. Anthropic tarafından geliştirilen ve sektörde giderek daha fazla ilgi gören MCP, yapay zeka asistanlarını veri kaynaklarına, araçlara ve özel iş akışlarına bağlamak için birleşik, açık bir arayüz sunar.
Bu rehberde, MCP'nin temel kavramlarını ele alacak, mimarisini inceleyecek ve zeki, bağlamdan haberdar uygulamaların geliştirilmesini nasıl kolaylaştırdığına bakacağız.
Neden MCP? Parçalanma Sorunu
MCP'den önce, bir LLM'i belirli bir hizmetle (örneğin bir Slack çalışma alanı, yerel bir dosya sistemi veya özel bir veritabanı) entegre etmek, her kullanım senaryosu için özel bir entegrasyon oluşturmayı gerektiriyordu. Aynı yeteneği farklı bir LLM istemcisinde kullanmak istediğinizde, mantığı yeniden oluşturmak veya desteklenmeyen geçici çözümlere başvurmak zorunda kalıyordunuz.
MCP, evrensel bir çevirmen olarak davranarak bunu çözüyor. Herhangi bir sunucu tarafından sunulabilir ve herhangi bir uyumlu istemci tarafından kullanılabilen ortak bir ilkel setini—Araçlar, Kaynaklar ve İstemler—tanımlar. Bu, *hangi* verilerin veya eylemlerin mevcut olduğu mantığını, LLM'in *nasıl* çağrıldığından ayırır.
Temel Mimari: Host, İstemci ve Sunucu
MCP'nin üç parçalı mimarisini anlamak, onu ustalaşmanın anahtarıdır:
- Host: Bağlantıyı başlatan uygulama. Bu genellikle LLM uygulamasının kendisidir (örneğin, masaüstü asistanı, IDE eklentisi veya web uygulaması).
- İstemci: Host ile bir veya daha fazla Sunucu arasındaki bağlantıyı sürdürür. Protokol mesajlarının çevirisini yönetir.
- Sunucu: Belirli yetenekleri (araçlar, veriler, istemler) İstemci aracılığıyla Host'a sunar. İş mantığınızın veya veri erişiminizin bulunduğu yer burasıdır.
Bileşenler arasındaki iletişim, bir aktarım katmanı üzerinden JSON-RPC 2.0 kullanır. En yaygın aktarım katmanları stdio (yerel süreçler için standart giriş/çıkış) ve Streamable HTTP (uzak, durumlu etkileşimler için) şeklindedir.
MCP'nin Üç Sütunu
1. Araçlar: LLM'in Eylemde Bulunmasını Sağlayın
Araçlar, LLM'in eylemler gerçekleştirmesine olanak tanır. Salt okunur olan kaynakların aksine, araçlar sunucu tarafından çalıştırılır. LLM bir aracı kullanmaya karar verdiğinde, sunucuya bir istek gönderir; sunucu mantığı çalıştırır ve sonucu döndürür.
// Örnek: Bir kod tabanında arama için araç tanımı
{
"name": "search_code",
"description": "Kod tabanında belirli bir desen için arama yap",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Arama dizesi"
}
},
"required": ["query"]
}
}
2. Kaynaklar: LLM'in Okumasını Sağlayın
Kaynaklar, LLM'in alabileceği statik veya yarı-statik verilerdir. Dosyalara veya API uç noktalarına benzerler. LLM belirli kaynak URI'lerini isteyebilir ve sunucu içeriği döndürür.
// Örnek: Belirli bir belge için kaynak
{
"uri": "doc://readme.txt",
"name": "Proje README",
"mimeType": "text/plain",
"content": "Bu proje dokümantasyonudur..."
}
3. İstemler: LLM'in Öneri Sunmasını Sağlayın
İstemler, LLM ile etkileşim için yeniden kullanılabilir şablonlardır. Dinamik olabilirler ve istemci veya host tarafından doldurulan değişkenleri kabul edebilirler. Bu, "Bu dosyayı özetle" veya "Bu kodu yeniden yapılandır" gibi standartlaştırılmış iş akışları için kullanışlıdır.
Pratik Örnek: Basit Bir MCP Sunucusu Oluşturma
İşte Python SDK'sını kullanan basitleştirilmiş bir MCP sunucusu örneği. Bu sunucu, mevcut zamanı döndüren bir araç sunar.
import datetime
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("TimeServer")
@mcp.tool()
def get_current_time() -> str:
"""Mevcut zamanı ISO biçiminde getir."""
return datetime.datetime.now().isoformat()
if __name__ == "__main__":
mcp.run(transport="stdio")
Bu sunucu, yerel bir süreç olarak başlatılabilir. MCP uyumlu bir host (Claude Desktop veya bir IDE eklentisi gibi) daha sonra get_current_time aracını keşfedebilir ve bir kullanıcı "Saat kaç?" diye sorduğunda bunu çağırabilir.
Güvenlik ve En İyi Uygulamalar
MCP entegrasyonu kolaylaştırsa da, saldırı yüzeyini de genişletir. Temel güvenlik hususları şunları içerir:
- En Az Yetki: LLM'in görevi için gerekli olan araçları ve kaynakları sunun.
- Girdi Doğrulama: Enjeksiyon saldırılarını önlemek için araç çağrılarındaki girdileri her zaman doğrulayın.
- Yerel ve Uzak: Yerel, güvenilir sunucular için
stdio, uzak sunucular için kimlik doğrulama ileHTTPkullanın.
Sonuç
Model Bağlam Protokolü, daha modüler ve birbirine geçişli bir yapay zeka ekosistemine doğru önemli bir adımdır. LLM'lerin harici sistemlerle nasıl etkileşime girdiğini standartlaştırarak MCP, geliştirme sürtünmesini azaltır ve daha güçlü, bağlam açısından zengin uygulamalara olanak tanır. Ekosistem olgunlaştıkça, geliştiricilerin iş akışlarına tak-çalıştır zeka eklemesini sağlayan, topluluk tarafından oluşturulan MCP sunucularının giderek büyüyen bir kütüphanesini görmeyi bekleyebiliriz.
Geliştiriciler için bir sonraki adım denemektir. Dahili araçlarınız için basit bir MCP sunucusu oluşturmaya çalışın veya GitHub deposundaki mevcut sunucuları keşfedin. LLM entegrasyonunun geleceği özel yapıştırıcı kodu hakkında değil—açık standartlar hakkında.