العودة للدورة|إتقان MCP: بناء تكاملات مدعومة بالذكاء الاصطناعي باستخدام بروتوكول سياق النموذج
معمل

بناء خادم MCP جاهز للإنتاج

45 دقيقة
متقدم
3 المحاولات المجانية

التعليمات

الهدف

بناء فئة Python تغلف خادم MCP بميزات جاهزة للإنتاج بما في ذلك فحوصات الصحة وجمع المقاييس والتسجيل المنظم.

المتطلبات

أنشئ فئة ProductionMCPServer تقوم بـ:

  1. تتبع المقاييس بـ record_tool_call(tool_name: str, success: bool, duration_ms: float):

    • تخزن العدادات وأوقات الانتظار لكل أداة
    • لا تُرجع شيئاً
  2. توفر ملخص المقاييس بـ get_metrics() -> dict:

    • تُرجع: {"tools": {tool_name: {"calls": int, "successes": int, "errors": int, "avg_latency_ms": float}}}
  3. تسجل الأحداث بـ log(level: str, message: str, extra: dict = None):

    • تخزن السجلات مع الطابع الزمني والمستوى والرسالة والبيانات الإضافية
    • لا تُرجع شيئاً
  4. تحصل على السجلات بـ get_logs() -> list:

    • تُرجع قائمة إدخالات السجل
  5. تفحص الصحة بـ health_check() -> dict:

    • تُرجع: {"status": "healthy"|"unhealthy", "checks": {"metrics": bool, "logs": bool}}
    • الحالة صحية إذا نجحت جميع الفحوصات

مثال على الاستخدام

server = ProductionMCPServer()

# تسجيل بعض استدعاءات الأدوات
server.record_tool_call("search", success=True, duration_ms=150.0)
server.record_tool_call("search", success=True, duration_ms=200.0)
server.record_tool_call("search", success=False, duration_ms=50.0)

# الحصول على المقاييس
metrics = server.get_metrics()
# {
#   "tools": {
#     "search": {
#       "calls": 3,
#       "successes": 2,
#       "errors": 1,
#       "avg_latency_ms": 133.33
#     }
#   }
# }

# تسجيل الأحداث
server.log("info", "بدأ الخادم", {"port": 8000})
server.log("error", "فشل اتصال قاعدة البيانات")

# الحصول على السجلات
logs = server.get_logs()
# [{"timestamp": "...", "level": "info", "message": "بدأ الخادم", "extra": {"port": 8000}}, ...]

# فحص الصحة
health = server.health_check()
# {"status": "healthy", "checks": {"metrics": True, "logs": True}}

تلميحات

  • استخدم datetime.utcnow().isoformat() للطوابع الزمنية
  • متوسط وقت الانتظار = مجموع كل أوقات الانتظار / عدد الاستدعاءات
  • يجب أن يتحقق فحص الصحة من إمكانية الوصول للمقاييس والسجلات

معايير التقييم

record_tool_call يتتبع الاستدعاءات والنجاحات والأخطاء ووقت الانتظار بشكل صحيح25 نقاط
get_metrics يُرجع ملخصاً صحيحاً مع حساب متوسط وقت الانتظار25 نقاط
log و get_logs يخزنان ويسترجعان إدخالات السجل المنظمة بشكل صحيح25 نقاط
health_check يُرجع الحالة الصحيحة بناءً على فحوصات النظام25 نقاط

حلك

يمكنك استخدام أي لغة برمجة
3 محاولات مجانية متبقية