معمل
بناء خادم MCP لقاعدة المعرفة
45 دقيقة
متوسط3 المحاولات المجانية
التعليمات
الهدف
بناء فئة Python تحاكي خادم MCP لقاعدة المعرفة مع البحث واسترجاع المستندات وقدرات إضافة المستندات.
المتطلبات
أنشئ فئة KnowledgeBase تقوم بـ:
-
تخزين المستندات في قاموس داخلي:
- المستندات لها:
id،title،content،tags
- المستندات لها:
-
سرد الموارد المتاحة بـ
list_resources() -> list[dict]:- تُرجع قائمة موارد لكل مستند
- كل مورد له:
uri،name،description
-
قراءة مورد بـ
read_resource(uri: str) -> str:- تحليل معرف المستند من URI (التنسيق:
doc://id) - تُرجع محتوى المستند
- ترفع
ValueErrorإذا لم يُوجد
- تحليل معرف المستند من URI (التنسيق:
-
تعريف الأدوات بـ
get_tool_definitions() -> list[dict]:search_documents: البحث بسلسلة استعلامadd_document: إضافة مستند جديد
-
تنفيذ الأدوات بـ
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 محاولات مجانية متبقية