> For the complete documentation index, see [llms.txt](https://docs.chamilo.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chamilo.org/3.x/ar/dlyl-alidarh/admin-guide/mcp.md).

# MCP

يعرّض Chamilo 3.0 خادم MCP حتى تتمكّن مساعدات ووكلاء الذكاء الاصطناعي (موصّلات Claude وChatGPT أو أي عميل متوافق مع MCP) من العمل داخل المنصة نيابةً عن مستخدم مصادق عليه، باستخدام صلاحيات ذلك المستخدم نفسه — دون حساب خدمة منفصل أو وصول مرتفع.

## ما يضيفه MCP إلى Chamilo

MCP (Model Context Protocol) معيار مفتوح يتيح لعملاء الذكاء الاصطناعي استدعاء مجموعة محددة من «الأدوات» يعرّضها خادم. خادم MCP في Chamilo يمكن الوصول إليه عبر نقطة نهاية واحدة، `/mcp`، ويعرّض مجموعة منتقاة من أدوات إدارة المقررات الموجهة للمعلمين وليس سطح واجهة برمجة التطبيقات بالكامل.

## القدرات المتاحة

كل استدعاء يُنفَّذ بصفت المستخدم المتصل، لذا لا ترى الأداة ولا تعدّل إلا المقررات التي يديرها ذلك المستخدم. مجموعة الأدوات الحالية:

| الأداة                              | ما تفعله                                                                                          |
| ----------------------------------- | ------------------------------------------------------------------------------------------------- |
| Current user                        | إرجاع هوية المستخدم المصادق عليه وأدواره                                                          |
| Teacher courses                     | سرد المقررات التي يديرها المستخدم كمعلم                                                           |
| Course overview                     | إرجاع معلومات المقرر الأساسية وعدد الموارد                                                        |
| Create course                       | إنشاء مقرر جديد وفق قواعد إنشاء المقررات في المنصة                                                |
| Create course assignment            | إنشاء واجب مسودة أو منشور مع وصف ودرجة قصوى                                                       |
| Create course test                  | إنشاء اختبار اختيار من متعدد بمساعدة الذكاء الاصطناعي من وصف موضوع أو مستند موجود                 |
| Get course test response status     | الإبلاغ عن الطلاب الذين أجابوا أو قيد التقدم أو معلّقين على اختبار                                |
| Get user course test score          | إرجاع أحدث وأفضل درجات مكتملة لطالب في اختبار                                                     |
| Create training satisfaction survey | إنشاء استبيان رضا من سبعة أسئلة                                                                   |
| Create course learning path         | إنشاء مسار تعلّم من صفحات يقدّمها عميل MCP                                                        |
| List documents                      | سرد المستندات في أداة المستندات بالمقرر                                                           |
| Read course document                | إرجاع محتوى HTML والعنوان والبيانات الوصفية لمستند قابل للتحرير                                   |
| Edit course document                | استبدال محتوى HTML الكامل لمستند موجود قابل للتحرير                                               |
| Create course document              | إنشاء مستند HTML بمساعدة الذكاء الاصطناعي في مجلد المستندات الجذر                                 |
| Create course illustration          | توليد رسم توضيحي بالذكاء الاصطناعي لموضوع وحفظه كمستند                                            |
| Illustrate document paragraph       | إدراج صورة أو فيديو موجود قبل فقرة في مستند أو بعدها                                              |
| Find recent course forum activity   | العثور على منشورات منتدى حديثة ومرئية متعلقة بموضوع                                               |
| Review course quality               | تحليل مسارات التعلّم والمستندات والاختبارات والواجبات والاستبيانات في مقرر، وإرجاع توصيات للتحسين |

هذه القائمة ينتقيها فريق نواة Chamilo، وليست قابلة للتوسيع من المستخدم داخل المنصة — لا يمكن للمعلمين إضافة أدواتهم الخاصة.

## كيف يتصل المستخدمون

### مفتاح MCP API الشخصي

يولّد كل مستخدم مفتاحه الخاص ضمن **الشبكة الاجتماعية** > **مفتاح MCP API**:

* النقر على **Generate API key** ينشئ مفتاحًا ويعرضه مرة واحدة — يخزّن Chamilo بعد ذلك نسخة مقنّعة فقط، لذا يجب نسخ المفتاح الكامل وتخزينه بأمان فورًا.
* توليد مفتاح جديد يلغي فورًا المفتاح السابق.
* تعرض الصفحة حالة المفتاح (نشط/غير نشط)، ونقطة نهاية MCP المراد تهيئتها في العميل، وتواريخ الإنشاء وآخر استخدام.
* لوحة **Remote MCP connection** توضح بالضبط ما يُوضع في عميل MCP: عنوان URL لنقطة النهاية وترويسة `Authorization: Bearer <your MCP API key>`.

كما تشير الصفحة نفسها، يصادق المفتاح على العميل بصفته حساب ذلك المستخدم — ولا يمنح أي صلاحية لا يملكها الحساب أصلًا.

### OAuth 2.1 (العملاء والموصّلات البعيدة)

بالنسبة لعملاء MCP الذين يدعمون اكتشاف OAuth والتسجيل الديناميكي للعميل (بدل مفتاح يُلصق يدويًا)، يعمل Chamilo أيضًا كخادم تفويض OAuth 2.1: يكتشف العميل نقاط نهاية Chamilo، ويسجّل نفسه، ويعيد توجيه المستخدم إلى `/oauth/authorize` للموافقة على الوصول. تظهر التطبيقات المعتمدة ضمن **الشبكة الاجتماعية** > **التطبيقات المصرّح بها**، حيث يمكن للمستخدم إلغاء أي منها لم يعد يستخدمه أو لا يتعرّف عليه.

## اعتبارات الأمان

* **لا تصعيد للصلاحيات.** كل استدعاء لأداة MCP وكل تطبيق مصرَّح له عبر OAuth يعمل بصلاحيات مستخدم Chamilo المتصل نفسه — لا يمكن لمفتاح API شخصي أو لتطبيق مصرَّح له أن يفعل أكثر مما يستطيع ذلك المستخدم فعله يدويًا أصلًا.
* **حامل فقط، ومحدود المعدّل.** يقبل `/mcp` فقط اعتمادًا من نوع Bearer — مفتاح MCP API شخصي، أو رمز وصول OAuth، أو (في بيئة التطوير) JWT. تُحدَّد محاولات المصادقة بمعدّل لكل عنوان IP لإبطاء تخمين الاعتمادات.
* **سطح عام ضيق.** الحركة غير المصادق عليها الوحيدة التي يقبلها `/mcp` هي طلب `OPTIONS` التمهيدي؛ وكل استدعاء فعلي يتطلب `ROLE_USER`. نقاط نهاية اكتشاف OAuth، وتسجيل العميل الديناميكي، والرموز عامة عمدًا، كما تقتضي مواصفات OAuth 2.1 / MCP — وهذا لا يمنح الوصول بحد ذاته، بل يتيح للعميل فقط معرفة كيفية بدء تدفق التفويض.
* **حماية إعادة ربط DNS معطّلة عمدًا لـ `/mcp`.** الحزمة التي تنفّذ MCP تقيّد عادةً نقطة النهاية بـ `localhost` ما لم تُضبط قائمة ثابتة بأسماء المضيفين المسموح بها — وهذا لا يناسب بوابة Chamilo متعددة عناوين URL يمكن الوصول إليها تحت أسماء مضيفين كثيرة. يعطّل Chamilo ذلك الفحص لأنه زائد هنا: كل طلب إلى `/mcp` يتطلب أصلًا اعتماد Bearer بغض النظر عن ترويسة `Host`/`Origin`، وهجوم إعادة ربط DNS (الذي يعتمد على مصادقة محيطة بأسلوب ملفات تعريف الارتباط ترافق مضيفًا مزوَّرًا) لا يستطيع تزوير رمز حامل لا يملكه أصلًا.

## إعداد خادم MCP

بخلاف معظم التكاملات في هذا الدليل، لا يملك MCP صفحة إعدادات في لوحة الإدارة — يُضبط على مستوى الملف، في `config/packages/mcp.yaml`، ويتطلب وصولًا عبر الصدفة إلى الخادم:

| المفتاح                                              | الغرض                                                                                         |
| ---------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| `app`، `version`، `description`                      | الهوية التي يبلّغها Chamilo لعملاء MCP المتصلين                                               |
| `client_transports.stdio` / `client_transports.http` | أي وسائل النقل نشطة؛ يفعّل Chamilo كليهما افتراضيًا                                           |
| `http.path`                                          | نقطة نهاية HTTP لـ MCP (`/mcp` افتراضيًا)                                                     |
| `http.allowed_hosts`                                 | قائمة السماح بمضيفي إعادة ربط DNS — تُضبط على `false` في Chamilo (انظر اعتبارات الأمان أعلاه) |
| `http.session.store`، `.directory`، `.ttl`           | أين تُحفظ حالة جلسة MCP ولأي مدة                                                              |

لتعطيل خادم MCP بالكامل، اضبط `client_transports.http: false` (و`stdio: false` إذا كان ينبغي إيقاف نقل واجهة سطر الأوامر أيضًا) ثم امسح ذاكرة التخزين المؤقت:

```bash
php bin/console cache:clear --env=prod
php bin/console cache:warmup --env=prod
```

## نصائح

* عامل مفتاح MCP API ككلمة مرور — أي شخص يحمله يمكنه التصرف باسم ذلك المستخدم عبر أي عميل MCP.
* شجّع المستخدمين على مراجعة **التطبيقات المصرَّح لها** دوريًا وإلغاء أي شيء لا يتعرّفون عليه.
* انظر [إعداد الذكاء الاصطناعي](/3.x/ar/dlyl-alidarh/admin-guide/integrations/ai-configuration.md) لموفّري الذكاء الاصطناعي الذين يدعمون أدوات توليد المحتوى (إنشاء الاختبارات، إنشاء المستندات، الرسوم التوضيحية) المذكورة أعلاه.
