Model Context Protocol Server

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.

Category
Visit Server

README

MCP-Server

Model Context Protocol

İleri Seviye MCP (Model Context Protocol) Sunucusu

GitHub Actions CI/CD License: MIT

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:

  1. Tasarım: RESTful API prensipleriyle bir "sözleşme" tasarlandı.
  2. Geliştirme: FastAPI ile asenkron bir web sunucusu, Redis ile de hızlı bir hafıza katmanı inşa edildi.
  3. Paketleme: Uygulama, Docker ile her yerde çalışabilen taşınabilir bir konteynere dönüştürüldü.
  4. Dağıtım: Tek komutla Google Cloud Run gibi sunucusuz bir platformda canlıya alındı.
  5. Otomasyon: GitHub Actions ile CI/CD boru hattı kurularak, her kod değişikliğinin otomatik olarak dağıtılması sağlandı.
  6. 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 push sonrası 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

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

  1. GitHub Hesabı: Codespaces özelliğini kullanabilen bir GitHub hesabı.
  2. 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 > Codespaces yolunu izleyin.
  • New repository secret butonuna tıklayın.
  • Name: OPENAI_API_KEY
  • Value: sk-... ile başlayan kendi OpenAI API anahtarınızı yapıştırın.
  • Add secret diyerek kaydedin.

3. Codespace'i Başlatın

  • Deponuzun ana sayfasına dönün.
  • Yeşil renkli <> Code butonuna tıklayın.
  • Codespaces sekmesine geçin.
  • Create codespace on main butonuna 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 PORTS sekmesine 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>

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured