- Disable issuer validation in BearerAuthProvider (issuer=None) - Simplify authentication condition (remove auth_enabled check) - Revert CORS middleware to simple configuration - Fix OAuth metadata endpoint to match v0.1.6 - Apply conditional auth only to MCP server creation Critical fixes for Claude AI tools discovery
8.0 KiB
Yargı MCP Server Dağıtım Rehberi
Bu rehber, Yargı MCP Server'ın ASGI web servisi olarak çeşitli dağıtım seçeneklerini kapsar.
İçindekiler
- Hızlı Başlangıç
- Yerel Geliştirme
- Production Dağıtımı
- Cloud Dağıtımı
- Docker Dağıtımı
- Güvenlik Hususları
- İzleme
Hızlı Başlangıç
1. Bağımlılıkları Yükleyin
# ASGI sunucusu için uvicorn yükleyin
pip install uvicorn
# Veya tüm bağımlılıklarla birlikte yükleyin
pip install -e .
pip install uvicorn
2. Sunucuyu Çalıştırın
# Temel başlatma
python run_asgi.py
# Veya doğrudan uvicorn ile
uvicorn asgi_app:app --host 0.0.0.0 --port 8000
Sunucu şu adreslerde kullanılabilir olacak:
- MCP Endpoint:
http://localhost:8000/mcp/ - Sağlık Kontrolü:
http://localhost:8000/health - API Durumu:
http://localhost:8000/status
Yerel Geliştirme
Otomatik Yeniden Yükleme ile Geliştirme Sunucusu
python run_asgi.py --reload --log-level debug
FastAPI Entegrasyonunu Kullanma
Ek REST API endpoint'leri için:
uvicorn fastapi_app:app --reload
Bu şunları sağlar:
/docsadresinde interaktif API dokümantasyonu/api/toolsadresinde araç listesi/api/databasesadresinde veritabanı bilgileri
Ortam Değişkenleri
.env.example dosyasını temel alarak bir .env dosyası oluşturun:
cp .env.example .env
Temel değişkenler:
HOST: Sunucu host adresi (varsayılan: 127.0.0.1)PORT: Sunucu portu (varsayılan: 8000)ALLOWED_ORIGINS: CORS kökenleri (virgülle ayrılmış)LOG_LEVEL: Log seviyesi (debug, info, warning, error)
Production Dağıtımı
1. Uvicorn ile Çoklu Worker Kullanımı
python run_asgi.py --host 0.0.0.0 --port 8000 --workers 4
2. Gunicorn Kullanımı
pip install gunicorn
gunicorn asgi_app:app -w 4 -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000
3. Nginx Reverse Proxy ile
- Nginx'i yükleyin
- Sağlanan
nginx.confdosyasını kullanın:
sudo cp nginx.conf /etc/nginx/sites-available/yargi-mcp
sudo ln -s /etc/nginx/sites-available/yargi-mcp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
4. Systemd Servisi
/etc/systemd/system/yargi-mcp.service dosyasını oluşturun:
[Unit]
Description=Yargı MCP Server
After=network.target
[Service]
Type=exec
User=www-data
WorkingDirectory=/opt/yargi-mcp
Environment="PATH=/opt/yargi-mcp/venv/bin"
ExecStart=/opt/yargi-mcp/venv/bin/uvicorn asgi_app:app --host 0.0.0.0 --port 8000 --workers 4
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Etkinleştirin ve başlatın:
sudo systemctl enable yargi-mcp
sudo systemctl start yargi-mcp
Cloud Dağıtımı
Heroku
Procfileoluşturun:
web: uvicorn asgi_app:app --host 0.0.0.0 --port $PORT
- Dağıtın:
heroku create uygulama-isminiz
git push heroku main
Railway
railway.jsonekleyin:
{
"build": {
"builder": "NIXPACKS"
},
"deploy": {
"startCommand": "uvicorn asgi_app:app --host 0.0.0.0 --port $PORT"
}
}
- Railway CLI veya GitHub entegrasyonu ile dağıtın
Google Cloud Run
- Container oluşturun:
docker build -t yargi-mcp .
docker tag yargi-mcp gcr.io/PROJE_ADINIZ/yargi-mcp
docker push gcr.io/PROJE_ADINIZ/yargi-mcp
- Dağıtın:
gcloud run deploy yargi-mcp \
--image gcr.io/PROJE_ADINIZ/yargi-mcp \
--platform managed \
--region us-central1 \
--allow-unauthenticated
AWS Lambda (Mangum kullanarak)
- Mangum'u yükleyin:
pip install mangum
lambda_handler.pyoluşturun:
from mangum import Mangum
from asgi_app import app
handler = Mangum(app, lifespan="off")
- AWS SAM veya Serverless Framework kullanarak dağıtın
Docker Dağıtımı
Tek Container
# Oluşturun
docker build -t yargi-mcp .
# Çalıştırın
docker run -p 8000:8000 --env-file .env yargi-mcp
Docker Compose
# Geliştirme
docker-compose up
# Nginx ile Production
docker-compose --profile production up
# Redis önbellekleme ile
docker-compose --profile with-cache up
Kubernetes
Deployment YAML oluşturun:
apiVersion: apps/v1
kind: Deployment
metadata:
name: yargi-mcp
spec:
replicas: 3
selector:
matchLabels:
app: yargi-mcp
template:
metadata:
labels:
app: yargi-mcp
spec:
containers:
- name: yargi-mcp
image: yargi-mcp:latest
ports:
- containerPort: 8000
env:
- name: HOST
value: "0.0.0.0"
- name: PORT
value: "8000"
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 10
periodSeconds: 30
---
apiVersion: v1
kind: Service
metadata:
name: yargi-mcp-service
spec:
selector:
app: yargi-mcp
ports:
- port: 80
targetPort: 8000
type: LoadBalancer
Güvenlik Hususları
1. Kimlik Doğrulama
API_TOKEN ortam değişkenini ayarlayarak token kimlik doğrulamasını etkinleştirin:
export API_TOKEN=gizli-token-degeri
Ardından isteklere ekleyin:
curl -H "Authorization: Bearer gizli-token-degeri" http://localhost:8000/api/tools
2. HTTPS/SSL
Production için her zaman HTTPS kullanın:
- SSL sertifikası edinin (Let's Encrypt vb.)
- Nginx veya cloud sağlayıcıda yapılandırın
ALLOWED_ORIGINSdeğerini https:// kullanacak şekilde güncelleyin
3. Rate Limiting (Hız Sınırlama)
Sağlanan Nginx yapılandırması rate limiting içerir:
- API endpoint'leri: 10 istek/saniye
- MCP endpoint: 100 istek/saniye
4. CORS Yapılandırması
Production için belirli kaynaklara izin verin:
ALLOWED_ORIGINS=https://app.sizindomain.com,https://www.sizindomain.com
İzleme
Sağlık Kontrolleri
/health endpoint'ini izleyin:
curl http://localhost:8000/health
Yanıt:
{
"status": "healthy",
"timestamp": "2024-12-26T10:00:00",
"uptime_seconds": 3600,
"tools_operational": true
}
Loglama
Ortam değişkeni ile log seviyesini yapılandırın:
LOG_LEVEL=info # veya debug, warning, error
Loglar şuraya yazılır:
- Konsol (stdout)
logs/mcp_server.logdosyası
Metrikler (Opsiyonel)
OpenTelemetry desteği için:
pip install opentelemetry-instrumentation-fastapi
Ortam değişkenlerini ayarlayın:
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
OTEL_SERVICE_NAME=yargi-mcp-server
Sorun Giderme
Port Zaten Kullanımda
# 8000 portunu kullanan işlemi bulun
lsof -i :8000
# İşlemi sonlandırın
kill -9 <PID>
İzin Hataları
Dosya izinlerinin doğru olduğundan emin olun:
chmod +x run_asgi.py
chown -R www-data:www-data /opt/yargi-mcp
Bellek Sorunları
Büyük belge işleme için worker belleğini artırın:
# systemd servisinde
Environment="PYTHONMALLOC=malloc"
LimitNOFILE=65536
Zaman Aşımı Sorunları
Zaman aşımlarını ayarlayın:
- Uvicorn:
--timeout-keep-alive 75 - Nginx:
proxy_read_timeout 300s; - Cloud sağlayıcılar: Platform özel zaman aşımı ayarlarını kontrol edin
Performans Ayarlama
1. Worker İşlemleri
- Geliştirme: 1 worker
- Production: CPU çekirdeği başına 2-4 worker
2. Bağlantı Havuzlama
Sunucu varsayılan olarak httpx ile bağlantı havuzlama kullanır.
3. Önbellekleme (Gelecek Geliştirme)
Redis önbellekleme docker-compose ile etkinleştirilebilir:
docker-compose --profile with-cache up
4. Veritabanı Zaman Aşımları
.env dosyasında veritabanı başına zaman aşımlarını ayarlayın:
YARGITAY_TIMEOUT=60
DANISTAY_TIMEOUT=60
ANAYASA_TIMEOUT=90
Destek
Sorunlar ve sorular için:
- GitHub Issues: https://github.com/saidsurucu/yargi-mcp/issues
- Dokümantasyon: README.md dosyasına bakın