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

بناء خادم MCP لقاعدة المعرفة

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

التعليمات

الهدف

بناء فئة Python تحاكي خادم MCP لقاعدة المعرفة مع البحث واسترجاع المستندات وقدرات إضافة المستندات.

المتطلبات

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

  1. تخزين المستندات في قاموس داخلي:

    • المستندات لها: id، title، content، tags
  2. سرد الموارد المتاحة بـ list_resources() -> list[dict]:

    • تُرجع قائمة موارد لكل مستند
    • كل مورد له: uri، name، description
  3. قراءة مورد بـ read_resource(uri: str) -> str:

    • تحليل معرف المستند من URI (التنسيق: doc://id)
    • تُرجع محتوى المستند
    • ترفع ValueError إذا لم يُوجد
  4. تعريف الأدوات بـ get_tool_definitions() -> list[dict]:

    • search_documents: البحث بسلسلة استعلام
    • add_document: إضافة مستند جديد
  5. تنفيذ الأدوات بـ call_tool(name: str, arguments: dict) -> dict:

    • search_documents: تُرجع المستندات المطابقة (العنوان يحتوي على الاستعلام)
    • add_document: تضيف المستند، تُرجع المعرف الجديد

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

kb = KnowledgeBase()

# إضافة المستندات
result = kb.call_tool("add_document", {
    "title": "أساسيات Python",
    "content": "Python هي لغة برمجة...",
    "tags": ["python", "programming"]
})
# {"success": True, "id": "doc_1"}

# البحث في المستندات
result = kb.call_tool("search_documents", {"query": "Python"})
# {"results": [{"id": "doc_1", "title": "أساسيات Python", ...}]}

# سرد الموارد
resources = kb.list_resources()
# [{"uri": "doc://doc_1", "name": "أساسيات Python", ...}]

# قراءة المورد
content = kb.read_resource("doc://doc_1")
# "Python هي لغة برمجة..."

تلميحات

  • استخدم عداداً لتوليد معرفات فريدة (doc_1، doc_2، إلخ)
  • البحث يجب أن يكون غير حساس لحالة الأحرف
  • يجب توليد الموارد ديناميكياً من المستندات المخزنة

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

ينفذ تخزين المستندات و list_resources بشكل صحيح25 نقاط
read_resource يحلل URI ويُرجع المحتوى بشكل صحيح25 نقاط
get_tool_definitions يُرجع مخططات أدوات MCP صالحة25 نقاط
call_tool ينفذ البحث والإضافة بالسلوك الصحيح25 نقاط

حلك

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