معمل
بناء خادم MCP جاهز للإنتاج
45 دقيقة
متقدم3 المحاولات المجانية
التعليمات
الهدف
بناء فئة Python تغلف خادم MCP بميزات جاهزة للإنتاج بما في ذلك فحوصات الصحة وجمع المقاييس والتسجيل المنظم.
المتطلبات
أنشئ فئة ProductionMCPServer تقوم بـ:
-
تتبع المقاييس بـ
record_tool_call(tool_name: str, success: bool, duration_ms: float):- تخزن العدادات وأوقات الانتظار لكل أداة
- لا تُرجع شيئاً
-
توفر ملخص المقاييس بـ
get_metrics() -> dict:- تُرجع:
{"tools": {tool_name: {"calls": int, "successes": int, "errors": int, "avg_latency_ms": float}}}
- تُرجع:
-
تسجل الأحداث بـ
log(level: str, message: str, extra: dict = None):- تخزن السجلات مع الطابع الزمني والمستوى والرسالة والبيانات الإضافية
- لا تُرجع شيئاً
-
تحصل على السجلات بـ
get_logs() -> list:- تُرجع قائمة إدخالات السجل
-
تفحص الصحة بـ
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 محاولات مجانية متبقية