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

تحليل رسالة MCP JSON-RPC

20 دقيقة
مبتدئ
3 المحاولات المجانية

التعليمات

الهدف

اكتب دالة Python تحلل رسائل MCP JSON-RPC وتستخرج المعلومات الرئيسية.

الخلفية

يستخدم MCP تنسيق JSON-RPC 2.0 للاتصال. كل رسالة لها بنية محددة تتضمن الإصدار والطريقة والمعلمات ومعرف اختياري لربط الطلب والاستجابة.

المتطلبات

أنشئ دالة parse_mcp_message(message: dict) -> dict تقوم بـ:

  1. التحقق من تنسيق الرسالة: التحقق من الحقول المطلوبة (jsonrpc، method)

  2. استخراج نوع الرسالة: تحديد ما إذا كانت طلباً أو استجابة أو إشعاراً

    • الطلب: له id و method
    • الاستجابة: له id وإما result أو error
    • الإشعار: له method ولكن بدون id
  3. تحليل تفاصيل الطريقة: استخراج مساحة الاسم والإجراء من الطريقة (مثل "tools/call" ← namespace: "tools"، action: "call")

  4. إرجاع مخرجات منظمة:

    {
        "valid": bool,
        "type": "request" | "response" | "notification" | "invalid",
        "method": str | None,
        "namespace": str | None,
        "action": str | None,
        "id": int | str | None,
        "has_params": bool,
        "has_error": bool
    }
    

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

message = {
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "search",
        "arguments": {"query": "test"}
    }
}

مثال على المخرجات

{
    "valid": True,
    "type": "request",
    "method": "tools/call",
    "namespace": "tools",
    "action": "call",
    "id": 1,
    "has_params": True,
    "has_error": False
}

تلميحات

  • استخدم message.get("key") للوصول الآمن للحقول الاختيارية
  • حقل method يستخدم "/" لفصل مساحة الاسم والإجراء
  • رسالة الاستجابة ليس لها حقل method

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

يتحقق من تنسيق JSON-RPC 2.0 بشكل صحيح25 نقاط
يحدد نوع الرسالة بدقة (طلب/استجابة/إشعار)25 نقاط
يحلل مساحة اسم الطريقة والإجراء بشكل صحيح25 نقاط
يُرجع مخرجات منظمة كاملة بجميع الحقول25 نقاط

حلك

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