أنظمة MCP الإنتاجية
استراتيجيات النشر
5 دقيقة للقراءة
لنشر خادم MCP قيد لا تشترك فيه معظم الخدمات: المستدعي نموذج في وسط محادثة، وهناك مستخدم ينتظر. فالبدء البارد الذي لا يُلاحظ في مهمة خلفية يصير هنا توقفاً مرئياً.
اختيار مكان التشغيل
أين ينبغي أن يعمل هذا الخادم؟
هل يحتاج أحد غيرك للوصول إليه؟
نشر Docker
أنشئ Dockerfile جاهز للإنتاج:
FROM python:3.11-slim
WORKDIR /app
# تثبيت التبعيات
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# نسخ التطبيق
COPY . .
# التشغيل بإعدادات الإنتاج
ENV PYTHONUNBUFFERED=1
EXPOSE 8000
CMD ["uvicorn", "server:app", "--host", "0.0.0.0", "--port", "8000"]
ثبّت صورة الأساس على إصدار محدد بدل latest — فالخادم الذي يغيّر إصدار بيئة تشغيله بصمت بين نشرتين يتحول إلى جلسة تصحيح لا يستمتع بها أحد. والوسم أعلاه مثال لا توصية: راجع وسوم صورة Python الرسمية للإصدارات المدعومة حالياً، وطبّق القاعدة نفسها على كل صورة مثبّتة أخرى في منظومتك.
البناء والتشغيل:
docker build -t my-mcp-server .
docker run -p 8000:8000 -e API_KEY=secret my-mcp-server
Docker Compose للتطوير
# No top-level `version:` key — it has been ignored since Compose v2 and
# current versions warn that it is obsolete.
services:
mcp-server:
build: .
ports:
- "8000:8000"
environment:
- DATABASE_URL=postgresql://db:5432/mcp
- API_KEY=${API_KEY}
depends_on:
- db
db:
image: postgres:15
environment:
- POSTGRES_DB=mcp
- POSTGRES_PASSWORD=secret
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
النشر السحابي
AWS Lambda (بدون خادم)
from mangum import Mangum
from server import app
# تغليف تطبيق Starlette لـ Lambda
handler = Mangum(app)
Railway/Fly.io
هذه المنصات تكتشف تطبيقات Python تلقائياً:
# fly.toml
app = "my-mcp-server"
[http_service]
internal_port = 8000
force_https = true
[env]
PORT = "8000"
تكوين البيئة
لا تكتب الأسرار في الكود أبداً:
import os
class Config:
SECRET_KEY = os.environ["SECRET_KEY"]
DATABASE_URL = os.environ.get("DATABASE_URL", "sqlite:///local.db")
DEBUG = os.environ.get("DEBUG", "false").lower() == "true"
LOG_LEVEL = os.environ.get("LOG_LEVEL", "INFO")
في القسم التالي، سنضيف المراقبة والملاحظة. :::
هل كان هذا الدرس مفيدًا؟
سجّل الدخول للتقييم