Model Context Protocol Server
A stateful gateway server for AI applications that solves the memory limitations of Large Language Models by maintaining separate conversation contexts for each user.
README
MCP-Server
Model Context Protocol
İleri Seviye MCP (Model Context Protocol) Sunucusu
Bu proje, modern yapay zeka uygulamaları için geliştirilmiş, durum bilgisi tutabilen (stateful), güvenli, optimize edilmiş ve ölçeklenebilir bir aracı (gateway) sunucusudur. Kurs boyunca sıfırdan inşa edilen bu servis, basit bir sohbet botunun ötesine geçerek, production ortamı için gerekli olan profesyonel mühendislik pratiklerini içerir.
Proje Hakkında
MCP Sunucusu, Büyük Dil Modelleri'nin (LLM) en büyük zayıflıklarından biri olan "hafızasızlığı" çözmek için tasarlanmıştır. Her kullanıcı için ayrı bir konuşma bağlamı (context) tutarak, yapay zekanın tutarlı ve kişiselleştirilmiş diyaloglar kurmasını sağlar.
Bu depo, bir fikrin nasıl adım adım profesyonel bir servise dönüştüğünün canlı bir örneğidir:
- Tasarım: RESTful API prensipleriyle bir "sözleşme" tasarlandı.
- Geliştirme: FastAPI ile asenkron bir web sunucusu, Redis ile de hızlı bir hafıza katmanı inşa edildi.
- Paketleme: Uygulama, Docker ile her yerde çalışabilen taşınabilir bir konteynere dönüştürüldü.
- Dağıtım: Tek komutla Google Cloud Run gibi sunucusuz bir platformda canlıya alındı.
- Otomasyon: GitHub Actions ile CI/CD boru hattı kurularak, her kod değişikliğinin otomatik olarak dağıtılması sağlandı.
- Yönetim: Gözlemlenebilirlik, güvenlik ve maliyet optimizasyonu gibi üretim ortamı için kritik olan yetenekler eklendi.
Öne Çıkan Özellikler
- Durum Bilgisi Tutan Konuşmalar: Redis kullanarak her kullanıcı için ayrı ve kalıcı sohbet geçmişi yönetimi.
- Modern API: FastAPI ile geliştirilmiş, yüksek performanslı ve asenkron RESTful API.
- Otomatik Dokümantasyon: Koddan otomatik olarak oluşturulan interaktif Swagger/OpenAPI dokümantasyonu.
- Konteynerleştirilmiş: Docker ile paketlenmiş, taşınabilir ve tutarlı bir dağıtım imkanı.
- Sunucusuz (Serverless) Uyumlu: Google Cloud Run gibi platformlarda kolayca çalıştırılabilir.
- CI/CD Otomasyonu: GitHub Actions ile
git pushsonrası otomatik dağıtım. - Güvenlik Önlemleri: Hız limiti (Rate Limiting) ve temel Prompt Injection savunmaları.
- Maliyet Optimizasyonu: Akıllı önbellekleme (caching) ile gereksiz API çağrılarının önlenmesi.
- Gözlemlenebilirlik: Google Cloud Logging ile entegre, yapılandırılmış (structured) loglama.
- Codespaces Entegrasyonu: Tek tıkla, bulut tabanlı, tam yapılandırılmış bir geliştirme ortamı.
Mimari
Uygulama, bir aracı (Gateway) mimarisi üzerine kurulmuştur. Kullanıcıdan gelen istekleri karşılar, Redis'ten ilgili hafıza/bağlam bilgisini alır, bu bilgilerle zenginleştirilmiş bir prompt oluşturarak OpenAI gibi bir LLM servisine gönderir ve aldığı yanıtı tekrar hafızayı güncelleyerek kullanıcıya döner.
Modül ve Derslere Hızlı Erişim
- Modül 1 Ders 1 : Stateless API
- Modül 1 Ders 2 : Gateway Mimarisi
- Modül 2 Ders 1 : RESTful Prensipleri
- Modül 2 Ders 2 : REDIS Giriş
- Modül 2 Ders 3 : Bağlam Depolama, FastAPI ve REDIS, Stateful
- Modül 2 Ders 4 : LLM Bağlantısı ve /chat
- Modül 3 Ders 1 : Docker Yapısını Hayata Geçirmek
Başlarken: GitHub Codespaces ile Kurulum ve Çalıştırma
Bu proje, yerel kuruluma ihtiyaç duymadan, tamamen GitHub Codespaces üzerinde çalışmak üzere tasarlanmıştır.
Ön Koşullar
- GitHub Hesabı: Codespaces özelliğini kullanabilen bir GitHub hesabı.
- OpenAI API Anahtarı: OpenAI'dan alınmış,
sk-...ile başlayan geçerli bir API anahtarı.
Adım Adım Kurulum
1. Bu Depoyu Kendi Hesabınıza Alın
Bu projeyi kendi hesabınızda denemek için sağ üst köşedeki Fork butonuna tıklayarak kendi hesabınıza bir kopyasını oluşturun.
2. OpenAI API Anahtarınızı Yapılandırın
API anahtarınız, projenin en önemli sırrıdır ve güvenli bir şekilde saklanmalıdır.
- Fork'ladığınız deponuzun ana sayfasına gidin.
Settings>Secrets and variables>Codespacesyolunu izleyin.New repository secretbutonuna tıklayın.- Name:
OPENAI_API_KEY - Value:
sk-...ile başlayan kendi OpenAI API anahtarınızı yapıştırın. Add secretdiyerek kaydedin.
3. Codespace'i Başlatın
- Deponuzun ana sayfasına dönün.
- Yeşil renkli
<> Codebutonuna tıklayın. Codespacessekmesine geçin.Create codespace on mainbutonuna tıklayın.
4. Arkanıza Yaslanın ve Bekleyin
GitHub, sizin için bulutta bir geliştirme ortamı hazırlayacaktır. .devcontainer yapılandırması sayesinde tüm kurulumlar (Python kütüphaneleri dahil) otomatik olarak yapılacaktır.
5. Servisleri Başlatın
Ortam hazır olduğunda, VS Code içindeki TERMINAL'i açın ve aşağıdaki kod hücrelerini sırayla çalıştırın.
Proje Dosya Yapısı
Projenin tamamlanmış hali aşağıdaki dosya yapısına sahiptir: <pre> ├── .devcontainer/ │ ├── devcontainer.json │ └── post-create.sh ├── .github/workflows/ │ └── deploy.yml ├── api/ │ └── v1/ │ └── endpoints/ │ └── sessions.py ├── core/ │ └── config.py ├── schemas/ │ └── session_schema.py ├── services/ │ ├── openai_service.py │ └── redis_service.py ├── .dockerignore ├── Dockerfile ├── main.py ├── README.md └── requirements.txt
</pre>
<pre>
Önce Redis veritabanını bir Docker konteyneri olarak başlatalım.
Bu komut arka planda çalışmaya devam edecektir.
echo "Redis konteyneri başlatılıyor..." docker run --name mcp-redis -p 6379:6379 -d redis echo "Redis başlatıldı. 'docker ps' komutuyla kontrol edebilirsiniz." </pre>
<pre>
Şimdi FastAPI uygulamamızı uvicorn ile başlatalım.
Bu komut çalışmaya devam edecek ve terminali meşgul edecektir.
Uygulamanın loglarını bu terminalden takip edebilirsiniz.
echo "FastAPI sunucusu başlatılıyor... (http://127.0.0.1:8000)" uvicorn main:app --host 0.0.0.0 --port 8000 --reload </pre>
6. Uygulamanıza Erişin ve Test Edin
Yukarıdaki uvicorn komutu çalıştığında, Codespaces sağ alt köşede 8000 portunun kullanılabilir olduğuna dair bir bildirim gösterecektir.
- VS Code'da
PORTSsekmesine gidin (Genellikle Terminal'in yanındadır). - "8000" portu için listelenen "Forwarded Address" (Yönlendirilen Adres) URL'sini bulun. Bu URL,
https://...app.github.devşeklinde olacaktır. - Artık uygulamanız bu genel URL üzerinden erişilebilir durumda!
API Kullanımı ve Test
Aşağıdaki kod hücrelerini çalıştırarak canlıdaki servisinizi test edebilirsiniz. Önce bir üstteki hücreden yönlendirilen URL'nizi alıp aşağıdaki URL değişkenine atamanız gerekmektedir.
<pre lang="python">
Lütfen YONLENDIRILEN_URL kısmını kendi Codespace URL'niz ile değiştirin.
URL="https://kullanici-adi-proje-adi-....app.github.dev"
Yeni bir oturum başlatalım ve dönen ID'yi bir değişkene atayalım
echo "Yeni oturum başlatılıyor..." SESSION_RESPONSE=$(curl -s -X POST $URL/v1/sessions) export SESSION_ID=$(echo $SESSION_RESPONSE | grep -o '"session_id":"[^"]*' | cut -d'"' -f4)
if [ -z "$SESSION_ID" ]; then echo "Hata: Oturum ID'si alınamadı!" echo "Dönen yanıt: $SESSION_RESPONSE" else echo "Oturum Başlatıldı. ID: $SESSION_ID" fi </pre>
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。