Laravel MCP 1.0 يضيف كتالوجات قابلة للبحث لتقليل حمولة تعريفات الأدوات على الوكلاء
قدّم Laravel MCP 1.0 أسلوب «كتالوجات الأدوات القابلة للبحث» لخوادم MCP الكبيرة. بدلاً من إرسال أسماء ووصف ومخططات الإدخال لكل أداة مع كل طلب، يعرض الخادم أداتين ثابتتين للبحث والتنفيذ، بينما تُجلب تعريفات الأدوات المطلوبة عند الحاجة. يستهدف ذلك تطبيقات Laravel التي تكشف عدداً كبيراً من الأدوات أو واجهات API للوكلاء.
أبرز النقاط
- Laravel MCP 1.0 يضيف كتالوجات أدوات قابلة للبحث لخوادم MCP ذات مكتبات الأدوات الكبيرة.
- يعرض الخادم أداتي `search_tools` و`execute_tools` بدلاً من تحميل تعريف كل أداة في `tools/list`.
- يبقى حجم حمولة `tools/list` ثابتاً مع نمو عدد الأدوات داخل الكتالوج.
- البحث لغوي وحتمي، ويشمل اسم الأداة ووصفها ومخطط مدخلاتها وأسماء المعاملات.
- تنفيذ الأدوات يمر عبر `ToolInvoker` ومسار MCP المعتاد، مع إعادة التحقق من التسجيل عند التنفيذ.
- يمكن الجمع بين أدوات معلنة مباشرة للأعمال المتكررة وأدوات قابلة للاكتشاف للوظائف الأقل استخداماً.
تغيّر Laravel MCP 1.0 طريقة التعامل مع خوادم MCP التي تتضخم مكتبة أدواتها بمرور الوقت. الفكرة الأساسية ليست إضافة طبقة تنفيذ أكواد أو sandbox جديد، بل تأجيل تحميل تعريفات الأدوات إلى اللحظة التي يحتاجها فيها الوكيل فعلاً.
في خادم MCP التقليدي، تصل إلى النموذج مع كل طلب أسماء الأدوات وأوصافها ومخططات JSON Schema الخاصة بمدخلاتها، حتى إن لم يستخدم معظمها. ومع عشرات الأدوات، تصبح هذه التعريفات جزءاً كبيراً من الـ context قبل أن يبدأ الوكيل معالجة طلب المستخدم، وتزيد احتمالات الالتباس بين الأدوات المتشابهة.
في الإصدار 1.0، يمكن جمع الأدوات الأقل استخداماً في catalog. وبدلاً من عرض كل أداة مباشرة، يعرض الخادم أداتين رئيسيتين:
search_tools: تبحث في الكتالوج وتعيد الأدوات المناسبة مع تعريفاتها.execute_tools: تنفذ دفعة من الاستدعاءات للأدوات التي عثر عليها الوكيل.
بهذا يظل حجم استجابة tools/list ثابتاً تقريباً، سواء احتوى الكتالوج على 10 أدوات أو 100 أداة، لأن الأدوات المعلنة باستمرار هي أدوات البحث والتنفيذ فقط.
بحث حتمي يعتمد أيضاً على أسماء المعاملات
يعتمد البحث على ترتيب لغوي حتمي، لا على embeddings. تتقدم المطابقة الدقيقة في اسم الأداة، ثم تظهر المصطلحات الموجودة في الاسم والوصف وJSON Schema الخاص بالمدخلات.
وهذا يعني أن أسماء المعاملات نفسها تؤثر في قابلية اكتشاف الأداة. في المثال الذي عرضه Laravel، أمكن العثور على أداة مرتبطة بقياسات المحطات عند البحث عن rainfall بسبب معامل باسم rainfall_mm، رغم أن كلمة rainfall لم تكن ظاهرة في اسم الأداة أو وصفها.
تنفيذ من خلال المسار المعتاد في MCP
لا ينفذ execute_tools كود PHP مولداً من النموذج. بل يحول كل استدعاء في الدفعة إلى JsonRpcRequest حقيقي ويمرره عبر ToolInvoker، وهو المسار نفسه المستخدم في استدعاءات tools/call العادية.
وتُعاد أيضاً مراجعة شروط تسجيل الأدوات عند التنفيذ، لا عند البحث فقط؛ لذلك لا تتحول نتيجة البحث إلى صلاحية تنفيذ بحد ذاتها.
متى يكون هذا الأسلوب مناسباً؟
يناسب الكتالوج خوادم MCP التي تغلف مساحة API واسعة: أدوات للطلبات والعملاء والاستردادات والمخزون والشحن والتقارير، مثلاً. يمكن إبقاء الأدوات كثيرة الاستخدام معلنة مباشرة، ووضع البقية في كتالوج قابل للبحث.
أما الخوادم الصغيرة التي تُستخدم أدواتها كلها بشكل متكرر، فقد تكون إضافة خطوة بحث جديدة عبئاً غير ضروري. ويقترح Laravel عملياً نموذجاً مختلطاً: أدوات أساسية ظاهرة دائماً، وأدوات ثانوية تُكتشف عند الحاجة.
النهج لا يوفر قدرات التحكم التي يقدمها تنفيذ كود مولد داخل sandbox، مثل الحلقات والتفرعات وتمرير النتائج الوسيطة داخل برنامج. لكنه يتجنب الحاجة إلى بنية sandbox أو تبعيات إضافية، ويركز على المشكلة الأكثر شيوعاً في خوادم MCP الكبيرة: تضخم مخططات الأدوات في الـ context.
لماذا يهم؟
كل تعريف أداة يستهلك مساحة من context الوكيل قبل تنفيذ المهمة. في تطبيقات Laravel التي تكشف عشرات عمليات API عبر MCP، يتيح التحميل التدريجي تقليل هذه الحمولة من دون تشغيل كود مولد أو بناء sandbox جديد، مع الإبقاء على التحقق والتنفيذ عبر مسار الأدوات المعتاد.