Files
yargi-mcp/saidsurucu-yargi-mcp-f5fa007/docs/DEPLOYMENT.md
T
saidsurucu e900bc03dd Fix tools visibility - revert to v0.1.6 authentication approach
- 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
2025-07-22 12:38:20 +03:00

8.0 KiB
Raw Blame History

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ıç

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:

  • /docs adresinde interaktif API dokümantasyonu
  • /api/tools adresinde araç listesi
  • /api/databases adresinde 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

  1. Nginx'i yükleyin
  2. Sağlanan nginx.conf dosyası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

  1. Procfile oluşturun:
web: uvicorn asgi_app:app --host 0.0.0.0 --port $PORT
  1. Dağıtın:
heroku create uygulama-isminiz
git push heroku main

Railway

  1. railway.json ekleyin:
{
  "build": {
    "builder": "NIXPACKS"
  },
  "deploy": {
    "startCommand": "uvicorn asgi_app:app --host 0.0.0.0 --port $PORT"
  }
}
  1. Railway CLI veya GitHub entegrasyonu ile dağıtın

Google Cloud Run

  1. 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
  1. 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)

  1. Mangum'u yükleyin:
pip install mangum
  1. lambda_handler.py oluşturun:
from mangum import Mangum
from asgi_app import app

handler = Mangum(app, lifespan="off")
  1. 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:

  1. SSL sertifikası edinin (Let's Encrypt vb.)
  2. Nginx veya cloud sağlayıcıda yapılandırın
  3. ALLOWED_ORIGINS değ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.log dosyası

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:

  1. Uvicorn: --timeout-keep-alive 75
  2. Nginx: proxy_read_timeout 300s;
  3. 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: