
MCP: Model Context Protokolü
Model Context Protocol (MCP), Büyük Dil Modelleri'nin (LLM'ler) harici veri kaynaklarına, araçlara ve yeteneklere güvenli ve tutarlı bir şekilde erişmesini sağl...
Model Context Protocol (MCP), istemci yazılım ile dil modeli sunucuları arasında yapılandırılmış iletişim sağlayan, açık ve standart bir protokoldür; bağlam açısından zengin, güvenilir ve ölçeklenebilir yapay zeka entegrasyonunu mümkün kılar.
Model Context Protocol ya da kısaca MCP, açık ve standart bir protokoldür. İstemci yazılım ile dil modeli (LLM) sunucuları arasında yapılandırılmış ve güvenilir iletişim kurmak için bunu kullanabilirsiniz. Sıradan API’lerin aksine, MCP size bağlam, araçlar ve kaynakları tutarlı şekilde değiş tokuş etme imkânı sunar. Bu sayede, farklı şirketlerin yapay zeka sistemlerini uyumsuzluk problemi yaşamadan bağlayabilirsiniz. MCP, sadece istemleri değil; aynı zamanda ek bilgiler, meta veriler, araç tanımları ve kaynak bağlantıları gibi detayların nasıl paketlenip gönderileceğini tanımlar. Böylece iletişim öngörülebilir olur ve yeni özellikler eklemeniz gerektiğinde kolayca genişletilebilir.
Python sunucu projelerinde MCP kullandığınızda, özel veya benzersiz arayüzlerle çalışmanın getirdiği kafa karışıklığından kurtulursunuz. MCP uyumlu sunucular, bu yapılandırılmış istekleri nasıl okuyup işleyeceğini bilir. Bu yaklaşım entegrasyona daha az zaman harcamanıza ve kodunuzu daha kolay bakım yapılabilir hale getirmenize yardımcı olur. AI uygulamalarını hızla oluşturabilir, ölçeklendirebilir ve hangi AI sistemini kullanırsa kullansın MCP’yi destekleyen herhangi bir istemciyle çalışabilirsiniz. MCP’nin bağlamı, kaynakları ve araçları net şekilde tanımlayan yapısı sayesinde, daha az çeviri kodu yazarsınız ve tekrar kullanılabilir bileşenler üzerinde sağlam bir temel kurarsınız.
MCP’nin birkaç ana bölümü vardır:
MCP’nin şema tabanlı yaklaşımıyla geliştirme yaptığınızda, Python projelerinizi gelecekteki değişikliklere hazırlamış olursunuz. MCP uyumlu sunucular, yeni çıkan LLM ve AI araçlarıyla sorunsuz şekilde çalışabilir. Bu protokol; yapıya, uyarlanabilirliğe ve tüm AI sistemlerinizin birlikte çalışmasını sağlamaya odaklanmanıza yardımcı olur.
Python ile Model Context Protocol (MCP) sunucusu kurmak, protokolü destekleyen, istekleri sorunsuz yöneten ve artan kullanıcı ya da görevlerle iyi ölçeklenen belirli kütüphanelerle en iyi biçimde çalışır.
MCP Python SDK, MCP kurallarına uyan sunucular oluşturmanız için ana araçtır. Bu araç seti, veri formatlarını kontrol etmek (şema doğrulama), bağlam yönetimi ve protokol işleyişi gibi özellikler sunar. Kaynakları tanımlamanızı ve araçları hızlıca kurmanızı sağlar. SDK, sunucunuzun en güncel MCP standartlarıyla uyumlu olmasını kolaylaştırır. Protokol mantığının çoğunu sizin yerinize üstlendiği için, özel kod yazmaya ve protokol değiştikçe sunucunuzu güncellemeye daha az vakit harcarsınız.
FastAPI, MCP sunucuları için iyi çalışan, güncel ve hızlı bir web framework’tür. Eşzamansız programlamayı destekler; yani sunucunuz, aynı anda birden fazla isteği takılmadan işleyebilir. FastAPI, OpenAPI dokümantasyonunu otomatik oluşturur ve verilerinizi pydantic ile doğrular. ASGI (Asynchronous Server Gateway Interface) mimarisi ve engellemeyen görev yapısı sayesinde, çok sayıda eşzamanlı isteği rahatça yönetir. Bu da yapay zeka kullanan veya aynı anda çok sayıda bağlamı yönetmesi gereken uygulamalar için güçlü bir tercihtir.
Flask, başka bir popüler web framework’tür. Basitliği ve kolay kullanımı nedeniyle sıkça tercih edilir. Varsayılan olarak Flask, aynı anda bir isteği işler; bu, basit uygulamalar için veya işlemlerin aynı anda yürütülmesi gerekmeyen durumlarda uygundur. Flask’ın aynı anda birden fazla görevi işleyebilmesini isterseniz, ek kütüphaneler kullanabilirsiniz. Hızlı bir prototip oluşturmak istediğinizde veya sunucunuzun çok sayıda kullanıcıyı aynı anda işleme ihtiyacı yoksa Flask iyi bir seçenektir.
asyncio, Python ile birlikte gelir ve eşzamansız kod yazmanıza imkân tanır. async ve await komutlarını kullanarak, sunucunuzun birden fazla isteğe yanıt vermesine ve arka planda işlemler yapmasına olanak sağlar; bir görev bitmeden diğerine başlanabilir. FastAPI veya kendi ASGI uygulamanızı kurarken, asyncio arka planda görevler yürütmek ya da başka sistemlere çağrı yapmak gibi işleri ek iş parçacıklarına gerek kalmadan idare etmenize yardımcı olur.
trio, eşzamansız programlama için başka bir kütüphanedir ve bazı ek avantajlar sunar. Yapılandırılmış eşzamanlılık kullanır; böylece görev gruplarını güvenle yönetmek ve iptal etmek daha kolay olur. trio, hata yönetimini geliştirir ve karmaşık eşzamansız işleri yönetmeyi basitleştirir. Birçok görevin titizlikle kontrol edilmesi gereken MCP sunucuları için geliştiriciler trio’yu tercih ederler.
MCP Python SDK’yı FastAPI (veya Flask) ile birleştirip, üstüne asyncio veya trio eklediğinizde, MCP sunucunuz için sağlam bir altyapı elde edersiniz. Bu kombinasyon, düzenli iletişimi destekler ve sunucunuzu ileri özellikler, yeni bağlantılar ve daha büyük ölçek için hazırlar.
Protokol tabanlı sunucunuzun güvenilirliğini korumak için hassas veri doğrulaması gerekir. pydantic ile, Python tip açıklamalarını okuyup verileri çalışma anında doğrulayıp ayrıştırabilirsiniz. Bu araç, fazladan işlem gücü gerektirmez ve MCP mesajları ile araç girdileri için katı mesaj formatları oluşturmakta kullanılır. Pydantic güncel ayrıştırma yöntemleri kullanır ve yapılan testler, tipik veri modellerini bir milisaniyeden daha kısa sürede doğrulayabildiğini gösterir. Bu sayede yanlış veri tiplerini yakalar ve kurallarınıza uymayan istekleri engellersiniz.
marshmallow ise, verinin sisteminize giriş/çıkışında işlenmesinde faydalı bir araçtır. Özel veri alanlarını destekler, karmaşık verileri iç içe yapılar halinde düzenler ve işlem öncesi/sonrası ek adımlar çalıştırmanıza imkân verir. Özellikle MCP sunucunuza gelen verileri dönüştürmeniz veya temizlemeniz gerektiğinde kullanışlıdır.
Birçok etkileşimli AI sistemi gerçek zamanlı güncellemeler gerektirir. websocket ile sunucunuz ve istemciler tek bir TCP bağlantısı üzerinden istedikleri an karşılıklı mesaj gönderebilir. Bu yapı; yanıtları akış halinde iletmek, araçlardan canlı güncellemeler göndermek veya başkalarıyla paylaşılan model görevleri üzerinde çalışmak için idealdir. Test ve araştırmalar gösteriyor ki, websocket bağlantıları genellikle 50 milisaniyenin altında gecikme ile iletişim sağlar; bu da uzun yoklama (long-polling) veya sürekli HTTP isteklerinden çok daha hızlıdır.
Sadece sunucudan istemciye güncelleme göndermek gerektiğinde ise Server-Sent Events (SSE) kullanılabilir. SSE, çoğu tarayıcı tarafından desteklenen basit HTTP bağlantıları kullanır. Tek yönlü mesajlaşma (bildirimler, güncellemeler) için idealdir ve iki yönlü iletişime gerek olmadığında sunucu kaynaklarını minimumda tutar.
Model bağlamlarını ve kullanıcı verilerini korumak için güçlü kimlik doğrulama gerekir. Authlib ile OAuth2 ve OpenID Connect kurulumunu kolayca yapabilirsiniz. Bunlar, kullanıcıların güvenli giriş yapmasını ve erişim belirteçlerinin yönetilmesini sağlayan yaygın yöntemlerdir. Authlib, kabul görmüş standartlara uyar ve farklı kimlik sağlayıcılarla bağlantıyı kolaylaştırırken güvenlik açıklarını azaltır.
Oturum yönetimi için PyJWT ile JSON Web Token’ları kullanabilirsiniz. Bu token’lar kriptografik olarak imzalanır; böylece, her defasında veritabanına bakmadan kullanıcının kim olduğunu ve yetkilerini hızla doğrulayabilirsiniz. PyJWT, RS256 ve HS512 gibi ileri seviye imzalama yöntemlerini destekler ve sektör araştırmalarında belirtilen sıkı güvenlik ihtiyaçlarını karşılar.
MCP sunucunuzda pydantic, marshmallow, websocket, SSE, Authlib ve PyJWT kullandığınızda; güçlü veri kontrolü, hızlı gerçek zamanlı iletişim ve güvenli kimlik doğrulama sağlamış olursunuz. Her kütüphane belirli bir işi üstlenir; bu da sunucunuzu modüler, bakım kolay ve üretime hazır kılar.
Verimli entegrasyon, MCP sunucularının harici hizmetlerle etkileşim kurmasını, veriyi yönetmesini ve güvenilir şekilde dağıtılmasını sağlar. Aşağıda, modern Python tabanlı MCP sunucu geliştirmede kullanılan her önemli kütüphane için somut stratejiler, net açıklamalar ve pratik örnekler bulabilirsiniz.
MCP sunucuları, model bağlamını geliştirmek için genellikle üçüncü taraf kaynaklardan veri almak zorundadır. Engelleyen (bloklayan) işlemler sorun oluşturmadığında, örneğin sunucu başlatılırken veya düşük trafikte, requests kütüphanesi ile eşzamanlı HTTP çağrıları yapılabilir. Eğer aynı anda çok sayıda isteği işlemek veya engellemeleri önlemek gerekiyorsa, httpx kütüphanesi eşzamansız HTTP özellikleri sunar. HTTPX, bağlantı havuzu ve HTTP/2 desteğiyle, yoğun sunucular için hız ve veri işleme kapasitesini artırır (performans için HTTPX benchmarklarına bakınız).
Örnek:
requests.get()
ile kaynak çekin.await httpx.AsyncClient().get()
kullanın.MCP sunucuları, zaman içinde verileri saklamaya ve yönetmeye ihtiyaç duyar. İlişkisel veritabanları için SQLAlchemy, bir Nesne İlişkisel Haritalayıcı (ORM) sunar. Bu araç sayesinde, veritabanı kayıtlarını Python koduyla oluşturabilir, okuyabilir, güncelleyip silebilir ve karmaşık sorgular ile şema değişimlerini kolayca yönetebilirsiniz. SQLAlchemy’nin ORM’si ham SQL yazma ihtiyacını ortadan kaldırır; bu da kodlama hatalarını önler ve bakımı kolaylaştırır (bkz. SQLAlchemy dokümantasyonu ve ORM faydaları üzerine araştırmalar).
Eşzamansız programlama kullanan uygulamalarda ise asyncpg, PostgreSQL’e doğrudan, tam eşzamansız erişim sağlar. Bu kütüphane, aynı anda çok sayıda veritabanı bağlantısının yönetilmesi gereken, örneğin FastAPI tabanlı MCP sunucularında iyi çalışır. Yapılan testler, asyncpg’nin gecikmeleri azaltıp, eşzamanlı sürücülere kıyasla saniyede daha fazla istek işleyebildiğini gösteriyor.
Örnek:
Çok sayıda kullanıcı için MCP API’lerini çalıştırmak adına, uvicorn FastAPI uygulamaları için iyi bir ASGI sunucusudur. Uvicorn, asyncio ile aynı anda çok sayıda isteği işleyebilir. Flask gibi WSGI framework’lerinde ise gunicorn, birden fazla işçi süreci yöneterek uygulamanın yoğun kullanımda bile güvenilir kalmasını sağlar. Bilimsel testler, uvicorn’un olay döngüsünün giriş/çıkış ağırlıklı, eşzamansız iş yüklerinde verimli çalıştığını gösteriyor. Gunicorn ise geleneksel, eşzamanlı uygulamalar için uygundur.
Docker ile sunucunuzu ve bağımlılıklarını tek bir, tekrarlanabilir imajda paketleyebilirsiniz. Docker, sunucunun taşınmasını kolaylaştırır, Kubernetes gibi orkestrasyon araçlarıyla uyumludur ve güvenilir sürekli entegrasyon/teslimat (CI/CD) süreçlerini destekler. Araştırmalar, Docker’ın kurulum hatalarını azalttığını ve birden fazla makinede kolay ölçeklenebilirlik sunduğunu gösteriyor.
Örnek:
uvicorn main:app --host 0.0.0.0 --port 80
API çağrıları için requests veya httpx, veri depolama için SQLAlchemy veya asyncpg, servis için uvicorn veya gunicorn ve dağıtım için Docker’ı birleştirebilirsiniz. Bu stratejiler, MCP sunucularının dış sistemlerle bağlanmasını, verileri verimli depolamasını ve gerçek dünyada güvenilir şekilde çalışmasını sağlar.
Öncelikle, MCP sunucusu için ihtiyacınız olan tüm kütüphaneleri pip ile ekleyin:
pip install fastapi uvicorn pydantic mcp-sdk
HTTP isteklerini yönetmek için FastAPI, girdileri kontrol etmek ve yapılandırmak için pydantic ve MCP protokolüne uymak için MCP Python SDK’yı kullanacaksınız.
from fastapi import FastAPI
from pydantic import BaseModel
from mcp_sdk import MCPServer, Tool
app = FastAPI()
mcp_server = MCPServer(app)
class AddInput(BaseModel):
a: float
b: float
@Tool(name="add", input_model=AddInput)
def add(inputs: AddInput):
return {"result": inputs.a + inputs.b}
mcp_server.register_tool(add)
Açıklama:
AddInput
sınıfı ile aracın girdilerinin doğru tipte ve yapıda olmasını sağlar.add
fonksiyonunu protokole uygun bir MCP kaynağı olarak yayınlar.MCP uç noktalarını erişilebilir yapmak için ASGI sunucusunu uvicorn ile başlatın:
uvicorn main:app --reload
Sunucu, add
aracı için doğru formatta bir MCP isteği aldığında, FastAPI isteği ilgili fonksiyona yönlendirir. pydantic, verinin doğruluğunu kontrol eder. MCP SDK ise tüm protokol kurallarını yönetir. add
aracı, toplamı hesaplar ve sonucu içeren bir JSON nesnesi döner. Yeni araçlar eklemek için yeni giriş modelleri ve fonksiyonlar oluşturup MCP sunucusuna kaydedebilirsiniz.
Bu örnek, basit ama standartlara uygun bir MCP sunucusu için tam bir kurulum sunar. FastAPI, pydantic, MCP Python SDK ve uvicorn kullanırsınız. Bu düzeni, daha fazla araç ve özellikle daha büyük MCP sunucuları oluşturmak için kullanabilirsiniz.
MCP, dil modelleriyle bağlama duyarlı, yapılandırılmış etkileşimleri destekler; bu sayede sürekli konuşmalar ve araç çağırmaları mümkündür. Oysa REST API’ler durum bilgisizdir ve yalnızca CRUD işlemleriyle sınırlıdır.
Evet, FastAPI gibi framework'ler ve asyncio veya trio gibi kütüphanelerle, MCP araçları yüksek eşzamanlı iş yükleri için tamamen eşzamansız çalışabilir.
OAuth2 veya JWT ile kimlik doğrulaması uygulayın; bunun için Authlib veya PyJWT gibi kütüphaneleri kullanabilirsiniz ve her zaman veri şifrelemesi için HTTPS kullanın.
Tüm isteklerin MCP protokolüne uygun olmasını ve geçersiz girdilerin engellenmesini sağlamak için pydantic (FastAPI ile) veya marshmallow kullanarak katı şemalar tanımlayın.
Eşzamanlı erişim için SQLAlchemy ORM kullanın. Eşzamansız PostgreSQL erişimi için, yığınıza ve eşzamanlılık gereksinimlerinize bağlı olarak asyncpg kullanabilirsiniz.
FastAPI (ASGI) için uvicorn veya Flask (WSGI) için gunicorn kullanın ve tutarlı, ölçeklenebilir dağıtımlar için Docker ile konteynerleştirin.
Ayrıntılı sunucu günlükleri için Python logging ekleyin ve protokol, araç ve uç noktaların otomatik testleri için pytest kullanın; böylece hataları erken tespit edebilirsiniz.
Evet, MCP genişletilebilirdir—yeni araçlar ve kaynaklar tanımlayıp kaydederek sunucunuzun yeteneklerini uygulamanız geliştikçe özelleştirebilirsiniz.
Model Context Protocol ile bağlama duyarlı yapay zekanın tüm potansiyelini açığa çıkarın. Sunucu entegrasyonunuzu kolaylaştırın, SEO otomasyonunu geliştirin ve AI iş akışlarınızı geleceğe hazırlayın.
Model Context Protocol (MCP), Büyük Dil Modelleri'nin (LLM'ler) harici veri kaynaklarına, araçlara ve yeteneklere güvenli ve tutarlı bir şekilde erişmesini sağl...
Yapay Zekâ (YZ) modellerini harici araçlar ve veri kaynaklarıyla bağlamak için bir Model Context Protocol (MCP) sunucusunun nasıl inşa edileceğini ve dağıtılaca...
Model Context Protocol (MCP)'nin AI asistanları ve geliştirme araçları için güvenli dosya sistemi işlemlerini nasıl mümkün kıldığını keşfedin. Bu kapsamlı rehbe...