> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# خادم MCP

> اربط عملاء الذكاء الاصطناعي بمشروع ما عبر خادم MCP الخاص به في نشر قائم على Kubernetes.

يعمل خادم MCP الخاص بكل مشروع داخل خدمة **web** (الوحدة `mcp-server`) في كل pod من Ayakaleaf Pro. وهو يأتي مع [تكامل Git](https://ayakaleaf-pro.mintlify.site/ar/on-premises/configuration/kubernetes/integrations/git-integration.md) وليس له أي إعداد خاص به. أما طريقة ربط Claude Code وCodex وغيرهما من العملاء فموضّحة في [خادم MCP](https://ayakaleaf-pro.mintlify.site/ar/on-premises/configuration/overleaf-toolkit/integrations/mcp-server.md).

| | |
| - | - |
| الخدمة | web، في كل pod من Ayakaleaf Pro |
| يُفعَّل بواسطة | `GIT_BRIDGE_ENABLED: "true"` وStatefulSet الخاص بـ git-bridge، راجع [تكامل Git](https://ayakaleaf-pro.mintlify.site/ar/on-premises/configuration/kubernetes/integrations/git-integration.md) |
| الخارج ← Overleaf | يرسل عملاء الذكاء الاصطناعي `POST ${OVERLEAF_SITE_URL}/project/<id>/mcp` مع رمز مصادقة Git؛ وروابط تنزيل PDF تحت `${OVERLEAF_SITE_URL}/project/<id>/mcp/download/` |
| Pod ← الخارج | لا شيء |
| الحالة | لا شيء بين الطلبات؛ يبقى ناتج الترجمة على الـ pod الذي أجرى الترجمة |
| المهام الدورية | لا شيء |

### الإعداد

أعدّ [تكامل Git](https://ayakaleaf-pro.mintlify.site/ar/on-premises/configuration/kubernetes/integrations/git-integration.md). يصبح خادم MCP عندئذٍ متاحًا على `${OVERLEAF_SITE_URL}/project/<project id>/mcp`، ويجب أن يكون هذا العنوان قابلًا للوصول من المكان الذي يعمل فيه عميل الذكاء الاصطناعي.

### عدة نسخ متماثلة

تُجرى الترجمة عبر MCP على النسخة المتماثلة (replica) التي استقبلت الطلب، ولا يوجد سجلّها وملف PDF الناتج إلا هناك. لا يرسل عملاء الذكاء الاصطناعي أي ملف تعريف ارتباط (cookie)، لذا قد يرسل موازن الأحمال الطلب التالي، أي `get_compile_log` أو رابط تنزيل PDF، إلى نسخة متماثلة أخرى، فتجيب بـ "failed to fetch output file from CLSI" أو 404. في اختبارنا مع ثلاث نسخ متماثلة ومن دون أي قاعدة إضافية، فشل 5 من أصل 6 طلبات للسجل و3 من أصل 4 عمليات تنزيل بهذه الطريقة.

وجّه كل طلبات MCP الخاصة بمشروع ما إلى نسخة متماثلة واحدة، كما هو الحال مع `/git/`. باستخدام HAProxy من [التوسّع الأفقي](https://ayakaleaf-pro.mintlify.site/ar/on-premises/configuration/kubernetes/horizontal-scaling.md):

```text theme={null}
      use-server overleaf-0 if { path_reg ^/project/[0-9a-f]{24}/mcp(/|$) }
```

عندئذٍ تُجرى كل عمليات الترجمة عبر MCP على عقدة `overleaf-0`. ومع متحكّم ingress آخر، وجّه المسار `/project/<id>/mcp` وكل ما تحته إلى الاسم الخاص بنسخة متماثلة واحدة (`overleaf-0.overleaf-hl`).

مع هذه القاعدة، نجح الاختبار نفسه (ترجمة واحدة، و6 طلبات للسجل، و4 عمليات تنزيل لملف PDF، وكلها من دون ملف تعريف ارتباط) في كل مرة.

### الاختبار على Kubernetes

على Kubernetes 1.37 مع ثلاث نسخ متماثلة خلف HAProxy، تنجح اختباراتنا الشاملة (end-to-end) لخادم MCP (37 حالة): سرد الأدوات، ورفض الرموز الخاطئة أو المحذوفة أو التي لا تملك صلاحية الوصول، والترجمة وقراءة السجل، وعدد الكلمات، وإعدادات المشروع وسجلّه، وروابط تنزيل PDF، وتحرير الملفات مع ظهور التغييرات مباشرةً في المحرّر المفتوح وسحبها إلى نسخة Git مستنسخة، والتعليقات، والوصول حسب الدور، وحدود معدّل الترجمة والإعدادات، والحسابات المعلّقة. جاءت هذه الطلبات من جلسة متصفح، لذا أبقاها موازن الأحمال على نسخة متماثلة واحدة؛ أما بالنسبة إلى العملاء الذين لا يرسلون ملف تعريف ارتباط، فراجع [عدة نسخ متماثلة](#عدة-نسخ-متماثلة).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.