Yapay Zeka dünyası hızla değişiyor. Büyük Dil Modelleri (LLM'ler) inanılmaz akıl yürütme yetenekleri sunsa da, genellikle modern yazılım ekosistemlerini güçlendiren gerçek zamanlı veri ve özel araçlardan kopuk kalıyor. Bu boşluğu kapatmak için tasarlanmış açık bir standart olan Model Bağlam Protokolü (MCP) devreye giriyor. Geliştiriciler için bir MCP sunucusu oluşturma yöntemini anlamak artık sadece deneysel bir beceri değil; AI'ı üretim seviyesindeki uygulamalara entegre etmek için temel bir gereklilik haline geliyor.
Bir MCP sunucusu bir çevirmen gibi çalışır. Uygulamanızın kaynaklarını, araçlarını ve istemlerini (prompts), uyumlu herhangi bir MCP istemcisi (bir IDE, sohbet arayüzü veya otomasyon ajanı gibi) tarafından tüketilebilecek standart bir şekilde ortaya çıkarmasını sağlar. Kendi sunucunuzu oluşturarak, AI asistanlarınıza dosyaları okuma, komutları yürütme, veritabanlarını sorgulama veya API'lerle hassas ve güvenli bir şekilde etkileşime geçme yeteneği kazandırırsınız.
Neden Sunucu Oluşturmalıyız?
Koda dalmadan önce mimari avantajları anlamak kritik öneme sahiptir. Geleneksel entegrasyonlar, genellikle her bir AI sağlayıcısı için sabit kodlanmış adaptörler gerektirir; bu da tedarikçi kilidi (vendor lock-in) ve bakım kabuslarına yol açar. Bir MCP sunucusu, verilerinizi ve mantığınızı istemciden bağımsız hale getirir. Claude'a, yerel bir LLM'e veya özel bir RAG sistemine bağlanıyor olun, sunucu tek doğruluk kaynağı olarak kalır. Bu modülerlik, modele altyapınıza sınırsız erişim vermek yerine, hangi araçların hangi izinlerle ortaya çıkarılacağını tam olarak kontrol etmenizi sağlayarak güvenliği artırır.
Ortamı Hazırlama
Yapay zeka geliştirme için en popüler dillerden biri olan Python'u ve resmi python-mcp SDK'sını kullanacağız. Python 3.10 veya daha yüksek bir sürümün yüklü olduğundan emin olun. İlk olarak, bağımlılıklarınızı izole etmek için sanal bir ortam oluşturun:
python -m venv mcp_env
source mcp_env/bin/activate # Windows'ta: mcp_env\Scripts\activate
Ardından, gerekli paketleri yükleyin. Çekirdek SDK'yı ve sunucu yaşam döngüsünü yönetmek için bir kütüphaneye ihtiyacınız olacak:
pip install mcp
İlk Sunucunuzu Oluşturma
Tek bir aracı ortaya çıkaran basit bir sunucu oluşturalım: bir rastgele sayı üreteci. Bu örnek, araçları tanımlama, girdileri işleme ve yapılandırılmış çıktı döndürme gibi temel kavramları gösterir.
import asyncio
from mcp.server import Server
from mcp.types import Tool, TextContent
from mcp.server.stdio import stdio_server
# Sunucuyu başlat
app = Server("random-number-server")
@app.tool()
async def generate_random_number(min_val: int, max_val: int) -> list[TextContent]:
"""Belirtilen bir aralıkta rastgele bir sayı üretir.
Args:
min_val: Rastgele sayı için minimum değer.
max_val: Rastgele sayı için maksimum değer.
Returns:
Üretilen sayıyı içeren bir metin içerik nesnesi.
"""
import random
result = random.randint(min_val, max_val)
return [TextContent(type="text", text=f"Rastgele sayı: {result}")]
async def main():
async with stdio_server() as (read, write):
await app.run(read, write, app.create_initialization_options())
if __name__ == "__main__":
asyncio.run(main())
Bu kod parçasında, bir fonksiyonu @app.tool() ile dekore ediyoruz. Bu dekoratör, fonksiyonu MCP protokolü içinde erişilebilir bir araç olarak kaydeder. Sunucu, yerel geliştirme ve Cursor veya Windsurf gibi IDE'lerle entegrasyon için standart taşıma yöntemi olan standart giriş ve çıkış akışları üzerinden iletişim kurmak için stdio_server() kullanır.
Test ve Entegrasyon
Sunucu betiğiniz hazır olduğunda, Python dosyasını çalıştırarak yerel olarak test edebilirsiniz. Bir MCP istemcisi ile entegre etmek için genellikle istemcinin bu betiği bir alt işlem (subprocess) olarak başlatmasını yapılandırmanız gerekir. Örneğin, bir mcp-config.json dosyasında şunları belirtebilirsiniz:
{
"mcpServers": {
"random-numbers": {
"command": "python",
"args": ["server.py"]
}
}
}
Bu yapılandırma, istemciye Python betiğinizi çalıştırmasını ve çift yönlü bir iletişim kanalı kurmasını söyler. İstemci daha sonra tools/list isteği aracılığıyla mevcut araçları keşfedebilir ve üretilen sayıyı almak için tools/call çağrısını yapabilir.
Sonuç
MCP sunucuları oluşturmak, daha zeki ve bağlam farkındalığına sahip AI uygulamaları yaratmak için güçlü bir adımdır. Verilerinizin ve araçlarınızın nasıl erişildiğini standartlaştırarak, entegrasyonlarınızı geleceğe hazır hale getirmenin yanı sıra güvenliği ve modülerliği de artırır. Ekosistem büyüdükçe, veritabanı sorgularını, dosya sistemi etkileşimlerini ve hatta çok adımlı ajan iş akışlarını yöneten daha karmaşık sunucular görmeyi bekleyebilirsiniz. Küçük başlayın, Python SDK ile deney yapın ve benzersiz veri varlıklarınızı LLM'lere açmanın projeleriniz için yeni olanakları nasıl ortaya çıkarabileceğini keşfedin.