00:00:00خلال الشهرين الماضيين، أدرك مجتمع الذكاء الاصطناعي بالفعل أن بروتوكول MCP يواجه مشكلة كبيرة.
00:00:04ونتيجة لذلك، توصل المجتمع بالفعل إلى بعض الحلول.
00:00:08لكن جميع هذه الحلول تعاني من فجوات هائلة.
00:00:10منذ فترة، قدمنا فيديو حول حل Docker،
00:00:12والذي اعتبرناه أفضل حل لمشكلة MCP حتى الآن.
00:00:16أطلقت Docker وضع الكود الذي يسمح للوكلاء بكتابة كود JavaScript يستدعي أدوات MCP مباشرة.
00:00:21وقد حل هذا مشكلة استهلاك أدوات MCP للكثير من سياق المحادثة
00:00:24من خلال كشف الأداة ووصفها في نافذة السياق.
00:00:27لذا، إذا كنت تعمل مع الكثير من أدوات MCP، فستمتلئ نافذة السياق لديك
00:00:32بأدوات غير ضرورية، ومعظمها لا تبرز الحاجة إليه في أغلب الأوقات.
00:00:36ولكن مع بوابة Docker MCP، كنت مقيداً بأدوات MCP التي قامت Docker بتكوينها،
00:00:41وكانت هناك قيود على أدوات MCP المحلية والبعيدة.
00:00:43أيضاً، لم تكن قادراً على حفظ تلك الأدوات المخصصة كدوال.
00:00:47بدأ كل هذا عندما حددت Cloudflare هذه المشكلة واقترحت حلاً
00:00:51بأن توجد هذه الأدوات ككود قابل للتنفيذ بدلاً من بقائها في نافذة السياق.
00:00:56شركة Anthropic، المهندس الأصلي لهذا البروتوكول، أقرت بوجود هذه الفجوة في
00:01:00منتجها وتابعت ذلك بإصدار ورقة بحثية تسلط الضوء على هذه المشكلة تحديداً.
00:01:04بعد ذلك، بدأ الناس يأخذون هذه المشكلة على محمل الجد وبدأوا في استكشاف الحلول.
00:01:09لكن حلهم المتمثل في تحويل كل أداة إلى ملف typescript يعاني أيضاً من فجوات.
00:01:13مع وجود الكثير من أدوات MCP المتصلة، يتعين عليك تحويل كل واحدة منها إلى كود بشكل فردي
00:01:18كما تحتاج إلى قضاء الكثير من الوقت للتأكد من عدم فشل أي منها أثناء العملية.
00:01:22ولكن بما أن هذه المشكلة أصبحت معترفاً بها،
00:01:24لا يزال الناس يحاولون تقديم حلول أفضل.
00:01:26وهنا وجدنا هذه الأداة الجديدة التي تسمى MCP to CLI.
00:01:30تحل MCP to CLI مشكلة تضخم السياق التي تعاني منها أدوات MCP عن طريق تحويل كل
00:01:36خوادم MCP إلى أدوات واجهة أوامر (CLI) يمكنك تشغيلها عبر أوامر bash.
00:01:40نحن نستخدم بشكل أساسي cloud code في فريقنا، وهي تحتوي بالفعل على علامة CLI تهدف إلى
00:01:45حل جزء من هذه المشكلة، حيث تحل مشكلة تضخم سياق MCP الأولية بعدم عرض
00:01:50جميع الأدوات مسبقاً في نافذة السياق. بل تسمح لـ cloud code بتحميل
00:01:55كل أداة ديناميكياً عند الحاجة. لكن هذا لا يزال يترك المشكلة الأخرى في cloud code.
00:02:00كما تعلمون على الأرجح، تعيد أدوات MCP مخرجاتها مباشرة إلى نافذة السياق.
00:02:05وفي حالة وجود مخرجات كبيرة من أداة MCP، فإنها تظل في نافذة السياق على أي حال،
00:02:10مما يؤدي إلى تضخم غير ضروري في نافذة السياق. ربما سمعتم أيضاً عن أدوات أخرى مفتوحة المصدر مثل
00:02:15CLI hub التي تستهدف نفس المشكلة، لكنها غير فعالة لأنها تقوم بالتحويل في وقت البناء
00:02:20وليس في وقت التشغيل. فماذا يعني التحويل في وقت التشغيل فعلياً؟
00:02:25يعني أن الأداة يتم تحويلها إلى أمر bash في اللحظة التي يتم استدعاؤها فيها.
00:02:29قد يبدو هذا جيداً، ولكن ماذا يحدث عندما يتم تحديث بروتوكول MCP الأصلي نفسه؟
00:02:34بما أن هذه الأداة تبني أدوات MCP الخاصة بها في وقت التشغيل، فإن أي تغيير في MCP الفعلي ينعكس تلقائياً.
00:02:39لم يكن هذا ممكناً لو كنا نبني الأدوات في وقت البناء. في تلك الحالة،
00:02:43كان سيتعين علينا جلب وتحديث الأداة يدوياً بأنفسنا في كل مرة.
00:02:48لكن قد تعتقد أن تحويل نفس الأداة في كل مرة يتم استدعاؤها سيجعل المكالمات المتكررة بطيئة.
00:02:53هنا يأتي دور آلية التخزين المؤقت (caching) التي قاموا ببنائها في الأداة.
00:02:58فهي تحفظ جميع أدوات MCP في ذاكرة تخزين مؤقت مع وقت بقاء افتراضي لمدة ساعة واحدة.
00:03:03وبذلك، فإن جميع أدوات MCP المستخدمة بكثرة تذهب مباشرة إلى التخزين المؤقت وتظل هناك لساعة.
00:03:08ومن هناك يمكن للوكيل الحصول على الأدوات باسترجاع أسرع دون التضحية بمرونة وقت التشغيل.
00:03:13تم بناء هذه الأداة مباشرة فوق حزمة تطوير برمجيات Python لـ MCP، وهي نفسها التي يستخدمها كل خادم MCP.
00:03:19لذا، مع جميع استدعاءات أدوات MCP التي تقوم بها، فإنها ببساطة تنفذها كأوامر bash وتدخل الاستجابة فقط
00:03:24في نافذة سياق الوكيل عند الطلب. كما أنها تتعامل مع واجهات برمجة تطبيقات OpenAPI و REST
00:03:30من خلال واجهة CLI نفسها، مما يعني أن أي API حالي ليس لديه خادم MCP لا يزال ممكناً استخدامه
00:03:35بنفس الطريقة تماماً. بدون هذه الأداة، أنت محدود في أنواع MCP التي يمكنك الاتصال بها.
00:03:39الحلول المماثلة الأخرى لا تمنحك عادةً المرونة للعمل مع جميع أنواع MCP في مكان واحد.
00:03:44ولدعم ادعاءاتهم بشأن كفاءة الرموز (tokens)، أجروا مجموعة اختبارات آلية باستخدام
00:03:49Tiktoken، وهي مكتبة Python لحساب الرموز. وعندما اختبروها، كانت الأداة أرخص بكثير
00:03:54وأسرع في التنفيذ. لذا لا يجب أن تكتفوا بكلامنا فقط؛ فهذه الأداة مدعومة بالأرقام.
00:03:59يمكنك إما تثبيتها على نظامك باستخدام pip أو تشغيلها بدون تثبيت.
00:04:03لقد اخترنا تشغيلها بدون تثبيت لأن ذلك يحافظ على نظافة بيئة العمل.
00:04:07كما وفروا أيضاً “مهارة” تساعد الوكلاء على العمل مع هذه الأداة بشكل أفضل.
00:04:13فهي توضح سير العمل الأساسي وتعطي أمثلة على أوامر bash لمهام مختلفة مثل المصادقة والتخزين المؤقت
00:04:18التي قد لا يملك الوكيل سياقاً لها. ولكن قبل أن نمضي قدماً، دعونا نستمع إلى كلمة
00:04:22من راعينا Orchids. معظم بناة الذكاء الاصطناعي يتعاملون مع النماذج البسيطة جيداً، لكنهم يفشلون
00:04:27عندما تحتاج إلى منطق معقد أو هياكل ملفات متعددة. هنا يأتي دور Orchids.
00:04:32أول وكيل ذكاء اصطناعي يمكنه بناء ونشر أي تطبيق على أي بيئة برمجية مباشرة من بيئتك الخاصة.
00:04:36يمكنك استخدام اشتراكك الخاص لتشغيل النماذج بالتكلفة الفعلية باستخدام حسابات ChatGPT أو Claude أو Gemini،
00:04:41أو حتى GitHub copilot. لقد تم بناؤه للتعامل مع أي تطبيق على أي بيئة؛ فلست مقيداً بالويب فقط.
00:04:47يمكنك بناء ونشر كل شيء بدءاً من تطبيقات الهاتف وامتدادات Chrome وصولاً إلى وكلاء الذكاء الاصطناعي
00:04:52وبوتات Slack المعقدة. شاهدوا هذه النماذج: إعداد OpenClaw كامل يدير منطقاً معقداً
00:04:57على مستوى العتاد، ومحطة Bloomberg وظيفية تعالج بيانات حية ضخمة في الوقت الفعلي،
00:05:02وتطبيقات هاتف أصلية مثل هذا المعرف للمباني الذي يستفيد من تغذية كاميرا جهازك مباشرة.
00:05:07اضغط على الرابط في التعليق المثبت وابدأ البناء، واستخدم الكود March 15 للحصول على خصم 15%.
00:05:12تماماً مثلكم، نريد أن نصبح أثرياء، وإحدى الطرق هي ملاحظة فجوة في السوق.
00:05:17وهنا خطرت لنا فكرة ذهبية: تطبيق Grinder، ولكن للخيول! بعيداً عن المزاح،
00:05:22يتطلب بناء منتجات واسعة النطاق الكثير من أدوات MCP لأن لديها الكثير من التبعيات
00:05:27وهي تملأ نافذة السياق بسرعة. قمنا بتوصيل الوكيل بـ Supabase MCP باستخدام MCP to CLI،
00:05:34لأنها كانت البنية التحتية الخلفية التي نستخدمها. الآن لا يتعين عليك تكوين
00:05:38أي شيء يدوياً بفضل المهارة التي قمنا بتثبيتها سابقاً. تلك المهارة تتولى كل شيء
00:05:43بمفردها وتقوم بتكوين أدوات MCP لك. ولكن قبل التثبيت مباشرة، تحتاج إلى الحصول على
00:05:47رموز الوصول (access tokens) لأي MCP تستخدمه. لأنك إذا لم تفعل ذلك، ستواجه
00:05:52أخطاء كما حدث معنا، وبعدها قمنا بتوليد رمز الوصول الخاص بنا وأعطيناه لـ Claude لإضافته.
00:05:57بمجرد التكوين بشكل صحيح، يجب أن تظهر لك الأدوات المتاحة للاستخدام.
00:06:01قد تعتقد أنه إذا كانت هذه الأداة تعمل كأمر bash، فليس من الآمن وجود بيانات حساسة
00:06:06مثل مفاتيح API ورموز الوصول بداخلها، لأنها قد تنكشف عند عرض قائمة العمليات.
00:06:11لكن هذه الأداة تضيف طبقة حماية؛ فهي لا تضع البيانات الحساسة في وسيطات سطر الأوامر.
00:06:15بدلاً من ذلك، تتعامل معها عبر متغيرات البيئة، أو تشير إلى مسار ملف حيث تُحفظ الرموز،
00:06:21أو تستخدم مدير أسرار يقوم بحقنها في وقت التشغيل. لذا فهي آمنة للتشغيل.
00:06:26وبشكل مشابه لاتصال Supabase، قمنا بتوصيل GitHub MCP للتحكم في الإصدارات،
00:06:32و Puppeteer MCP لاختبار المتصفح، و Context 7 MCP لربط الوكيل بالتوثيق المناسب
00:06:37ليعمل مع المستندات المحدثة. وبمجرد توصيل جميع الأدوات، طلبنا من Claude التحقق من كل شيء.
00:06:42أكد لنا أن لدينا أربعة أدوات MCP متصلة، بإجمالي 78 أداة في حالتنا. أيضاً، إذا كنت
00:06:47تستمتع بمحتوانا، فكر في الضغط على زر الإعجاب لأن ذلك يساعدنا في إنشاء المزيد من المحتوى
00:06:52والوصول إلى المزيد من الناس. الآن بعد أن اتصلنا فعلياً، حان الوقت للبدء في
00:06:57تنفيذ التطبيق تدريجياً. بدأنا بربط كود جانب العميل بخلفية Supabase.
00:07:02عندما قام Claude بتشغيل أمر MCP to CLI لإنشاء المشروع، لاحظنا أنه لم يضع
00:07:07رمز الوصول مباشرة في استدعاء الأداة. بدلاً من ذلك، أشار إلى ملف env.local الخاص بنا
00:07:12على مستوى المشروع للحصول على الرمز. قام بإنشاء المشروع وإعداد كل شيء وأضاف منطق
00:07:17الاتصال في الكود. لكننا لاحظنا أنه استخدم ملف middleware لمنطق تحديث الجلسة،
00:07:22ولم يكن ينبغي استخدامه لأنه أصبح قديماً (deprecated). الإصدار الجديد من Next.js يستخدم
00:07:27الوكيل (proxy)، وكنا نعلم أن هذا سيعطينا خطأ عند تشغيل التطبيق فعلياً. وهذا يوضح فقط أن
00:07:31توصيل الأدوات ليس كافياً لجعل الوكيل يستمع للأدوات ويستخدمها فعلياً عند الحاجة.
00:07:36لذا أنشأنا ملف Claude.md وأخبرناه باستخدام Context 7 MCP قبل كتابة أي كود،
00:07:42حتى لا يتكرر هذا الأمر. بهذه الطريقة يعرف أنه يجب أن يرجع إلى Context 7 MCP
00:07:47قبل التنفيذ. بمجرد انتهائه من إضافة الجداول وإعداد المصادقة على Supabase،
00:07:52نبهنا Claude إلى تحذير الـ middleware القديم ليتمكن من تصحيحه. وبعد أن
00:07:57أخبرناه، استخدم أخيراً Context 7 MCP لجلب التوثيق وحل المشكلة بشكل صحيح.
00:08:03ولكن عندما كنا نستكشف هذه الأداة بشكل أكبر، وجدنا أن هناك طريقة أفضل للتعامل
00:08:07مع هذه المشكلات بدلاً من إنشاء ملف Claude.md. المهارات (Skills) أفضل لأن
00:08:11أوصافها يتم تحميلها مباشرة في سياق الوكيل. لذا فهو يعرف بالفعل الأدوات
00:08:16المتاحة ومتى يستخدمها، بدلاً من مجرد وضع التعليمات في ملف Claude.md والأمل في أن يقرأها.
00:08:21لذا طلبنا منه إنشاء مهارة لكل أدوات MCP التي قمنا بتوصيلها. ثم قام Claude
00:08:26بإنشاء مهارات لكل MCP، توضح الأدوات الموجودة، وكيفية استخدامها، ومتى يتم ذلك.
00:08:32ومع وجود ذلك، انتقلنا للمشكلة التالية. لكن ما كان لدينا كان بعيداً جداً عن كونه وظيفياً.
00:08:36أخبرتنا ردود فعل “الخيول” أنهم بدأوا يفقدون صبرهم لأنهم لم يتمكنوا من الدردشة
00:08:41مباشرة على المنصة. فطلبنا من Claude جعل الدردشة وظيفية للمشروع فوق واجهة المستخدم.
00:08:46عندما اختبرناها بأنفسنا، لم تتحمل الرسائل وظهرت شاشة تحميل فقط. لذا
00:08:51طلبنا منه استخدام Puppeteer MCP لاختبار تدفق الرسائل. جعلناه يفحص نفسه لأن
00:08:56الوكيل الذي يمكنه النقر والتمرير والتفاعل مع واجهته الخاصة يكتشف أشياء لا يمكن لمراجعة الكود الثابت كشفها.
00:09:01لأغراض الاختبار، قام بإنشاء مستخدمين اثنين. لكنه لم يستطع الحفاظ على بيانات الجلسة عبر
00:09:06استدعاءات الأدوات لأن كل استدعاء كان يفتح نسخة متصفح جديدة. عدد الأدوات المستخدمة
00:09:10والوقت الذي استغرقه العمل في متصفح بلا واجهة (headless) جعلنا ندرك شيئاً ما: الخيار الأفضل
00:09:15هو ترك MCP يتعامل مع الأمر. كان ذلك أسرع بكثير واستغرق وقتاً أقل بكثير من الدقائق السبع التي أضعناها.
00:09:21نحن نفضل استخدام ملحق متصفح Claude نفسه الذي يعمل بشكل أفضل وبقدرات أكثر
00:09:25وقدرة أكبر على الاحتفاظ بالجلسات للاختبارات النهائية مثل هذه. كما أن
00:09:30أدوات MCP تعمل كعمليات مستمرة، ولهذا السبب هي قادرة على الحفاظ على الحالة طوال الجلسة.
00:09:35توفر هذه الأداة أيضاً تحكماً في تنسيق المخرجات مثل JSON والمخرجات الخام. كما
00:09:40تدعم Toon، وهو تنسيق كود موفر للرموز مخصص لاستهلاك النماذج اللغوية الكبيرة. عندما نعمل مع MCP مثل
00:09:46Context 7، فإنه يعيد عادةً قدراً هائلاً من المخرجات مباشرة إلى نافذة السياق.
00:09:51ولمنع ذلك، أضفنا في ملف Claude.md أنه كلما استخدم Context 7 MCP، يجب أن يستخدم
00:09:57تنسيق Toon للمخرجات. إنه تنسيق فعال لأنه يجمع بين الإزاحة وقوائم بتنسيق CSV
00:10:02مما يضغط المعلومات الكبيرة في أجزاء أصغر بكثير مقارنة بـ JSON و YAML. وبهذه الطريقة
00:10:07لا تضيع أي رموز دون داعٍ. لكن التطور الأكبر جاء من شيء لم يكن ممكناً
00:10:12حتى عندما كانت أدوات MCP تُدار محلياً بواسطة الوكلاء. إذا كنتم تتذكرون، أطلق Cursor
00:10:16سير عمل لتحرير السياق داخل منتجه؛ حيث عاملوا نتائج MCP كملفات وسمحوا
00:10:22للوكيل باستخدام سكربتات bash مثل grep لمطابقة الأنماط واستخراج البيانات. لقد غطينا ذلك في
00:10:27فيديو سابق. حاولنا تنفيذ هذه الفكرة في وكلاء أكواد آخرين ولكن بما أن MCP تُدار
00:10:32محلياً، لم نتمكن من تحقيق الكثير. أما الآن مع واجهة CLI هذه، فالأمر ممكن لأن
00:10:37أدوات MCP تُعامل كأدوات أوامر bash. لذا أضفنا تعليمة في ملف Claude.md بأنه كلما
00:10:43أنتجت أي أداة MCP مخرجاً كبيراً، فبدلاً من تحميله في نافذة السياق، يجب
00:10:49توجيهه إلى ملف في المسار الذي حددناه. كنا نتتبع تقدم هذا المشروع من خلال
00:10:54ملف progress.json. وبعد إضافة التعليمة، طلبنا من Claude تنفيذ ميزة واحدة من
00:10:59القائمة. استخدم حينها Context 7 MCP لاستدعاءات الأدوات ولكن بدلاً من تفريغ المخرجات في نافذة
00:11:05السياق، قام بتوجيهها إلى ملف واستخدم grep لاستخراج البيانات وإكمال التنفيذ.
00:11:10ملف Claude.md مع كل أفضل الممارسات لاستخدام هذه الأداة متاح في AI Labs Pro.
00:11:16لمن لا يعرف، هو مجتمعنا الذي أطلقناه مؤخراً حيث تحصلون على قوالب جاهزة للاستخدام
00:11:20يمكنكم دمجها مباشرة في مشاريعكم، لهذا الفيديو وللفيديوهات السابقة. إذا وجدتم
00:11:25قيمة فيما نقدمه وأردتم دعم القناة، فهذه هي أفضل طريقة للقيام بذلك. الرابط في
00:11:29الوصف. وبذلك نصل إلى نهاية هذا الفيديو. إذا كنتم ترغبون في دعم القناة
00:11:33ومساعدتنا في الاستمرار في صنع فيديوهات كهذه، يمكنكم فعل ذلك عبر زر “شكراً” أدناه.
00:11:38كما هو الحال دائماً، شكراً لكم على المشاهدة، وأراكم في الفيديو القادم.