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

بناء خادم MCP مصادق

35 دقيقة
متوسط
3 المحاولات المجانية

التعليمات

الهدف

بناء فئة Python تنفذ المصادقة والتفويض المستندين إلى JWT للوصول إلى أدوات MCP.

المتطلبات

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

  1. توليد الرموز بـ generate_token(user_id: str, permissions: list) -> str:

    • تنشئ JWT مع user_id و permissions
    • الرمز ينتهي في ساعة واحدة
    • تستخدم خوارزمية HS256
  2. التحقق من الرموز بـ verify_token(token: str) -> dict:

    • تُرجع قاموس الحمولة مع user_id و permissions
    • ترفع ValueError إذا كان الرمز غير صالح أو منتهي
  3. التحقق من التفويض بـ check_permission(token: str, required_permission: str) -> bool:

    • تُرجع True إذا كان لدى المستخدم الإذن المطلوب
    • تُرجع False إذا تم رفض الإذن
  4. حماية استدعاءات الأدوات بـ call_tool(token: str, tool_name: str, arguments: dict) -> dict:

    • تستخدم هذا الربط للأذونات:
      • read_data: ["user", "admin"]
      • write_data: ["admin"]
      • delete_data: ["admin"]
    • تُرجع {"error": "unauthorized"} إذا لم يكن هناك رمز صالح
    • تُرجع {"error": "forbidden"} إذا تم رفض الإذن
    • تُرجع {"success": True, "result": ...} إذا تم التفويض

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

server = AuthenticatedMCPServer(secret_key="my-secret")

# توليد رمز لمستخدم عادي
user_token = server.generate_token("user123", ["user"])

# توليد رمز للمسؤول
admin_token = server.generate_token("admin456", ["admin"])

# المستخدم يمكنه القراءة
result = server.call_tool(user_token, "read_data", {"id": 1})
# {"success": True, "result": {"id": 1}}

# المستخدم لا يمكنه الكتابة
result = server.call_tool(user_token, "write_data", {"data": "new"})
# {"error": "forbidden"}

# المسؤول يمكنه الكتابة
result = server.call_tool(admin_token, "write_data", {"data": "new"})
# {"success": True, "result": "written"}

تلميحات

  • استخدم مكتبة jwt: import jwt
  • للانتهاء، استخدم datetime.utcnow() + timedelta(hours=1)
  • خزّن secret_key كمتغير نسخة

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

generate_token ينشئ JWT صالح مع حمولة وانتهاء صحيحين25 نقاط
verify_token يتحقق ويفك تشفير الرموز بشكل صحيح، يرفع ValueError للغير صالح25 نقاط
check_permission يتحقق من صلاحيات المستخدم مقابل المتطلبات بشكل صحيح25 نقاط
call_tool يفرض المصادقة والتفويض بشكل صحيح25 نقاط

حلك

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