MCP Nedir ? LLM + MCP = ?
Büyük dil modelleri (Large Language Models – LLM), metin üretiminden kod yazımına, veri analizinden oyun simülasyonlarına kadar pek çok alanda devrim yaratıyor. Ancak LLM’ler tek başına işlem yapabilme kapasitesine sahip değildir; özellikle dış dünya ile etkileşim, veri çekme veya özel fonksiyonları çalıştırma gibi görevlerde “ara katmanlara” ihtiyaç duyarlar. İşte bu noktada MCP (Model Context Protocol / Model Bağlam Protokolü) devreye girer. MCP, LLM’lerin dış dünya ile güvenli, modüler ve kontrollü bir şekilde etkileşim kurmasını sağlayan bir yapı sunar.
MCP Nedir?
MCP, temelde LLM’lerin bir “fonksiyon çağrı protokolü” üzerinden çalışmasını sağlayan bir middleware veya kontrol katmanıdır. LLM, yalnızca doğal dil işleme yeteneğine sahipken, MCP onu belirli işlevleri çağırabilecek bir komut işlemciye dönüştürür.
Temel Özellikleri:
- Modülerlik: MCP, farklı işlevleri modüller halinde organize eder. Örneğin, web scraping, veri tabanı sorguları, dosya yönetimi veya API çağrıları ayrı modüller üzerinden çalıştırılabilir.
- Kontrol ve Güvenlik: LLM’in sınırsız erişim yeteneğini sınırlamak için güvenlik katmanları içerir. Komutlar belirli kurallar ve izinler dahilinde çalıştırılır.
- Fonksiyon Çerçevesi: MCP, LLM’in “fonksiyon çağırması” (function calling) ile uyumlu çalışır. LLM bir kullanıcıdan gelen talebi doğal dil olarak alır, MCP ilgili modül ve fonksiyonu çağırır, sonucu tekrar LLM’e iletir.
- Bağımsız Çalışabilirlik: MCP, LLM’den bağımsız bir sunucu veya servis olarak çalışabilir, böylece birden fazla LLM aynı MCP üzerinden yönetilebilir.

LLM ve MCP İş Akışı
MCP’nin en önemli kullanım senaryosu, LLM’in doğal dil yeteneğini gerçek dünya işlemleriyle birleştirmesidir. Basit bir iş akışı örneği:
- Kullanıcı Talebi: “Web sitesindeki en son hava durumu verilerini getir.”
- LLM Analizi: Talebi doğal dil olarak yorumlar ve uygun fonksiyon çağrısını oluşturur. Örneğin
fetch_weather(location="Istanbul"). - MCP Aracılığıyla İşlem: MCP ilgili modül ve fonksiyonu çağırır, veriyi çeker.
- Sonucun Geri Bildirimi: MCP çıktıyı LLM’e iletir. LLM, kullanıcıya anlaşılır ve doğal bir metin olarak sunar.
Bu yapı, LLM’in yeteneklerini “güvenli bir şekilde dışa genişletmek” için oldukça idealdir.
Teknik Mimari
1. MCP Sunucu Yapısı
MCP genellikle HTTP/REST, gRPC veya WebSocket üzerinden LLM ile iletişim kurar. Sunucu tarafı, modülleri yükler ve talebe göre fonksiyonları çağırır.
[LLM] <---> [MCP Server] <---> [Modules: Web Scraping, DB, API, File I/O]
2. Fonksiyon ve Modül Yönetimi
Her modül bir fonksiyon sözleşmesi (function contract) ile tanımlanır:
- Fonksiyon Adı: fetch_weather
- Parametreler: location (string)
- Dönüş Tipi: JSON {temperature, condition}
Bu sözleşme MCP tarafından doğrulanır, LLM yalnızca tanımlı fonksiyonları çağırabilir.
3. Güvenlik Katmanları
- Whitelist/Blacklist: Hangi modüllerin çalışabileceği kontrol edilir.
- Rate Limiting: Aşırı fonksiyon çağrısı engellenir.
- Sandboxing: Dosya sistemi ve ağ erişimi izole edilir.
MCP Kullanım Senaryoları
- Otomasyon ve İş Akışları: LLM ile rapor oluşturma, veri çekme ve analiz işlerini MCP üzerinden otomatikleştirmek.
- Web Veri Toplama: LLM’e doğal dil ile talimat verilir, MCP web scraping modülünü çağırır ve sonucu döndürür.
- Veri Tabanı Entegrasyonu: LLM kullanıcı sorusunu SQL’e çevirir, MCP veritabanına sorgu yapar.
- Yerel Yapay Zeka Sistemleri: MCP, LLM’in sistem kaynaklarına erişimini kontrol ederek güvenli bir yerel AI ortamı oluşturur.
Avantajlar ve Zorluklar
Avantajlar:
- LLM’in yeteneklerini güvenli bir şekilde dışa genişletir.
- Modüler yapı sayesinde esnek ve ölçeklenebilir bir mimari sağlar.
- Fonksiyon tabanlı yaklaşım, hata izolasyonu ve logging ile güvenliği artırır.
Zorluklar:
- Fonksiyon sözleşmelerinin doğru ve eksiksiz tanımlanması gerekir.
- Yüksek yoğunluklu talep altında MCP sunucusu performans darboğazı oluşturabilir.
- LLM ile MCP arasındaki veri format uyumu kritik önemdedir.
Gelecek Perspektifi
MCP, LLM’lerin “konuşmaktan öteye geçip gerçek dünyada iş yapabilmesini” sağlayan kilit bir araçtır. Özellikle çok modüllü yapay zeka sistemlerinde MCP, kontrol, güvenlik ve ölçeklenebilirlik açısından kritik bir bileşen haline gelmektedir. Gelecekte, MCP’nin otomasyon, IoT entegrasyonu ve çok ajanlı AI sistemlerinde standart bir protokol haline gelmesi beklenmektedir.
MCP, LLM’lerin potansiyelini gerçek dünya ile buluştururken güvenlik ve kontrolü elden bırakmadan fonksiyonel genişleme imkanı sunar. Modüler mimarisi, fonksiyon tabanlı kontrolü ve güvenlik önlemleri ile MCP, LLM’lerin gelecekteki iş akışı ve otomasyon sistemlerinde merkezi bir rol oynayacaktır.
Harika! O zaman makaleyi somutlaştırmak için Python ile basit bir MCP sunucusu ve LLM entegrasyonu örneği ekleyelim. Bu örnek, web scraping ve doğal dil üzerinden veri çekme senaryosunu temel alacak.
Python ile Basit MCP Sunucusu ve LLM Entegrasyonu Örneği
1. MCP Sunucusu
Bu örnekte, MCP sunucusu basit bir REST API üzerinden çalışacak ve fonksiyon modüllerini çağıracak:
# mcp_server.py
from flask import Flask, request, jsonify
app = Flask(__name__)
# Fonksiyon modülleri
def fetch_weather(location: str):
# Örnek statik veri (gerçekte bir API veya scraping kullanılabilir)
sample_data = {
"Istanbul": {"temperature": "25°C", "condition": "Sunny"},
"Ankara": {"temperature": "22°C", "condition": "Cloudy"},
}
return sample_data.get(location, {"temperature": "Unknown", "condition": "Unknown"})
# MCP Fonksiyon yönlendirmesi
functions = {
"fetch_weather": fetch_weather
}
@app.route("/call", methods=["POST"])
def call_function():
data = request.json
func_name = data.get("function")
params = data.get("params", {})
if func_name not in functions:
return jsonify({"error": "Function not found"}), 404
result = functions[func_name](**params)
return jsonify({"result": result})
if __name__ == "__main__":
app.run(port=5000)
Bu MCP sunucusu, gelen talebe göre ilgili fonksiyonu çalıştırıp sonucu JSON olarak döndürüyor.
2. LLM Tarafı (Fonksiyon Çağrısı Örneği)
LLM, kullanıcıdan gelen doğal dil talebini MCP’ye uygun bir fonksiyon çağrısına dönüştürecek:
# llm_client.py
import requests
def ask_llm_to_fetch_weather(user_input: str):
# Basit talep analiz simülasyonu
location = None
if "Istanbul" in user_input:
location = "Istanbul"
elif "Ankara" in user_input:
location = "Ankara"
else:
location = "Unknown"
# MCP'ye fonksiyon çağrısı
response = requests.post(
"http://127.0.0.1:5000/call",
json={"function": "fetch_weather", "params": {"location": location}}
)
return response.json()
# Kullanıcı talebi
user_input = "Bugün Istanbul hava durumu nasıl?"
result = ask_llm_to_fetch_weather(user_input)
print("LLM + MCP Sonuç:", result)
3. Çalışma Prensibi
- Kullanıcı:
"Bugün Istanbul hava durumu nasıl?" - LLM:
"fetch_weather(location='Istanbul')"fonksiyon çağrısını oluşturur. - MCP:
fetch_weatherfonksiyonunu çalıştırır ve JSON sonucu döner:
{"temperature": "25°C", "condition": "Sunny"}
- LLM, sonucu kullanıcıya doğal dil formatında sunar:
"Bugün İstanbul'da hava 25°C ve güneşli."
4. Örnek Çıktı
LLM + MCP Sonuç: {'result': {'temperature': '25°C', 'condition': 'Sunny'}}
Bu basit örnek, MCP’nin modüler ve güvenli bir kontrol katmanı olarak LLM’i nasıl güçlendirdiğini gösteriyor. Gerçek projelerde:
- Fonksiyonlar API çağrıları, veritabanı sorguları, dosya yönetimi veya scraping işlemleri olabilir.
- MCP, güvenlik, logging ve rate limiting gibi ek katmanlarla güçlendirilebilir.
