استخدام MCP للاتصال بالأدوات الخارجية: تركيب 'منفذ خارجي' لـ Codex
📚 التنقل في السلسلة: المقال السابق [19 · نظام الذاكرة (Memories و Chronicle)] تحدث عن كيفية جعل Codex يتذكر الأشياء عبر الجلسات - وكان ذلك يتعلق بتغذية الذاكرة داخلياً. هذا المقال ينتقل لاتجاه آخر وهو الاتصال بالخارج: يقتصر نطاق عمل Codex الافتراضي على الملفات المحلية وسطر الأوامر، ولا يمكنه الوصول لقواعد البيانات أو Figma أو الوثائق الخارجية. ويعد بروتوكول MCP هو المنفذ الموحد الذي يتيح له الاتصال دفعة واحدة بالأدوات الخارجية ومصادر البيانات. المقال التالي [21 · الوكلاء الفرعيون (Subagents)] سيتحدث عن كيفية تقسيم المهام وتوزيعها على مجموعة من الوكلاء المساعدين للعمل بالتوازي وسياقات مستقلة.
إليك أولاً مشكلة واجهتها عندما بدأت استخدام MCP، وهي مشكلة شائعة جداً.
كنت قد بدأت العمل مع Claude Code سابقاً، وتولدت لدي مهارة حفظ تحركات الماوس - فحين أريد إضافة خادم (server) أكتب claude mcp add --scope user xxx مباشرة، حيث يحدد معامل --scope المشاريع التي سيعمل فيها الخادم. وعندما انتقلت لـ Codex، كتبت أمراً مشابهاً دون تفكير وأضفت معامل --scope، فظهر خطأ في الطرفية يفيد بعدم التعرف على المعامل. ظننت في البداية أن "إصدار البرنامج قديم"، وقمت بالترقية دون جدوى؛ ثم شككت في خطأ كتابي وقمت بتعديل الأمر مراراً، ولكن استمر الرفض.
بعد تضييع ما يقارب 20 دقيقة، عدت لقراءة الوثائق الرسمية لأدرك الحقيقة: لا يحتوي Codex على مفهوم معامل --scope إطلاقاً. بل يقوم بجمع كل إعدادات MCP في ملف واحد هو config.toml، ويتم تحديد "المشاريع التي سيعمل فيها الخادم" بناءً على موقع حفظ هذا الملف - فإذا حفظته في المسار العام ~/.codex/config.toml سيعمل في كل المشاريع، وإذا حفظته في مجلد المشروع .codex/config.toml فسيقتصر عمله على هذا المشروع فقط. لقد حاولت تطبيق أسلوب Claude Code على أوامر Codex، فكان من الطبيعي أن أفشل.
أشارككم هذا الموقف لتجنب تضييع تلك الـ 20 دقيقة: فرغم أن بروتوكول MCP هو نفسه للجهتين، إلا أن طريقة الإعداد في Codex تختلف تماماً عن كتابة Claude Code. وسنشرح في هذا المقال طريقة إعداد MCP في Codex بالتفصيل، وسنطبق معاً ربط خادم حقيقي وتجربته.
بقراءة هذا المقال، ستحصل على:
- شرح مبسط لبروتوكول MCP وكيف يحل قصور الصلاحيات والاتصال في Codex
- التمييز بين نوعي الخوادم (الخادم المحلي STDIO، والخادم السحابي Streamable HTTP) ومتى نستخدم كل منهما، مع جدول مقارنة مخصص
- طريقتي إضافة الإعدادات - استخدام أمر
codex mcp addالتلقائي vs كتابة ملفconfig.tomlيدوياً، وتحديد نطاق تأثير الخادم "عام أم محلي للمشروع" بناءً على موقع حفظ الملف - استخدام المفاتيح
enabledوdisabled_toolsوdefault_tools_approval_modeللتحكم في صلاحيات وأدوات الخادم بدقة - تدريب عملي بسيط قابل للتنفيذ لمعرفة النتيجة: ربط خادم وثائق Context7 والتحقق منه في دقائق
01 كيف يحل بروتوكول MCP قصور الاتصال والصلاحيات في Codex
نبدأ بالخلاصة: يقتصر عمل Codex الافتراضي على جهازك المحلي، ويمثل MCP المنفذ الموحد الذي يربطه بالأدوات ومصادر البيانات الخارجية.
تذكر ما قمنا به في المقالات السابقة - قراءة ملفاتك، تعديل كودك، وتشغيل أوامرك البرمجية. كلها مهام محلية. ومهما بلغت قدرته، فهو لا يستطيع قراءة التصميم الذي أعده المصمم في Figma، أو التحقق من توثيق واجهة برمجية (API) في نسختها الحديثة، أو التحكم في المتصفح للنقر على عنصر. وإذا تعذر عليه الوصول لهذه المصادر، فستضطر لنسخ النصوص والتقاط الصور يدوياً لتغذية المحادثة بها.
تشبيه: تركيب موصل متعدد المنافذ (USB Hub) لهاتفك المحمول. تحتوي الهواتف الحديثة على منفذ Type-C واحد فقط، مما يعيق توصيل فلاشة USB، أو سلك HDMI للعرض، أو بطاقة ذاكرة SD في نفس الوقت. والحل هو شراء موصل متعدد المنافذ - حيث يتصل طرفه الأول بالهاتف، وتتوفر في الطرف الآخر منافذ USB و HDMI وقارئ بطاقات. بروتوكول MCP (Model Context Protocol، بروتوكول سياق النموذج، وهو معيار مفتوح يحدد كيفية تفاعل الذكاء الاصطناعي مع الأدوات الخارجية) يمثل هذا الموصل لـ Codex: بمجرد ربطه، تتوفر أمامه مجموعة واسعة من الأدوات الخارجية.
تصف الوثائق الرسمية وظيفته بوضوح:
يربط بروتوكول Model Context Protocol (MCP) النماذج بالأدوات وسياق العمل. ويستخدم لربط Codex بوثائق الطرف الثالث، أو تفعيل تفاعله مع متصفحك أو أداة Figma وغيرها من أدوات التطوير.
الكلمة الأهم هنا هي - معيار مفتوح. فبروتوكول MCP ليس معياراً خاصاً مغلقاً لـ OpenAI، بل هو مواصفة عامة مفتوحة. وتكمن فائدتها في "كتابة الربط لمرة واحدة، واستخدامه في كل مكان": فالخادم الذي تكتبه لأداة معينة يمكن لـ Codex استخدامه، كما يمكن لأي برنامج آخر يدعم MCP (مثل Claude Code أو Cursor...) تشغيله أيضاً. ويدعم Codex نفس بروتوكول MCP العام، ولكنه يختلف فقط في طريقة كتابة الإعدادات (وهي المشكلة التي واجهتني في البداية وسنشرحها في القسم 03).
وهناك تفصيل هام ينفرد به Codex: يقرأ Codex حقل الإرشادات instructions الذي يعيده الخادم عند بدء الاتصال، ويتعامل معه كـ "دليل استخدام الخادم" - والذي يحتوي عادة على شرح لسير العمل والقيود وشروط الاستهلاك للأدوات التابعة للخادم. أي أن الخادم المتميز يوفر دليلاً ذاتياً لطريقة استخدامه يقرأه Codex تلقائياً للعمل بموجبه.
متى يجب عليك التفكير في ربط خادم MCP؟ المعيار بسيط: عندما تجد نفسك تقوم بـ "نسخ البيانات من أداة خارجية ولصقها في محادثة Codex" بانتظام. وإليك بعض السيناريوهات الشائعة:
- "قم بتعديل تنسيق صفحة تسجيل الدخول لتطابق التصميم الجديد المتاح في Figma" - ليقوم بقراءة التصميم مباشرة دون حاجة لالتقاط الصور وشرحها.
- "أعد كتابة هذا الجزء البرمجي بالاستعانة بالنسخة الأحدث للمكتبة الفلانية" - ليقوم بقراءة وثائق المكتبة الحديثة مباشرة، وتجنب الاعتماد على بياناته القديمة المؤرشفة.
- "افتح المتصفح، والتقط صورة لشكل الصفحة عند عرضها على الشاشات الصغيرة" - ليتحكم في المتصفح مباشرة، وتجنب قيامك بذلك يدوياً.
💡 ملخص في جملة واحدة: يقتصر عمل Codex الافتراضي على الملفات والأوامر المحلية، ولا يستطيع الوصول للتصاميم أو الوثائق الحديثة أو المتصفح؛ ويمثل MCP المنفذ الموحد للربط بالأدوات الخارجية وقراءة إرشاداتها
instructionsالمرفقة للعمل بها.

رسم توضيحي: يقتصر عمل Codex على الملفات والأوامر المحلية؛ ويمثل MCP موصل USB hub يتصل بـ Codex ويربطه بمختلف الخوادم والأدوات الخارجية مثل GitHub وقواعد البيانات و Figma.
02 نوعا الخوادم: خادم محلي على جهازك، أم اتصال بالسحاب
تتعدد خوادم MCP. ويساعدك فهم الفروق بينها في كتابة التكوين الصحيح في مكانه المناسب. والسؤال الأساسي هو: هل يعمل هذا الخادم محلياً على جهازك، أم أنه مستضاف على عنوان ويب خارجي؟
تشبيه: الأجهزة الكهربائية في منزلك، بعضها يعمل بالكهرباء المباشرة وبعضها يتطلب الاتصال بشبكة Wi-Fi. المصابيح والمراوح تعمل بمجرد توصيلها بالكهرباء محلياً داخل الغرفة؛ بينما يتطلب مكبر الصوت الذكي الاتصال بالإنترنت لقراءة الطقس وتشغيل الملفات الصوتية من السحاب. خوادم MCP تنقسم لهذين النوعين - نوع يعمل كعملية محلية (local process) على جهازك، ونوع مستضاف سحابياً تتصل به عبر الشبكة.
يدعم Codex هذين النوعين بوضوح:
| نوع الخادم | مكان التشغيل | طريقة البدء والتشغيل | متى يستخدم |
|---|---|---|---|
| STDIO (عملية محلية) | محلياً على جهازك، ويقوم Codex بتشغيله | كتابة أمر التشغيل المحلي (مثل npx ...) | للاتصال بالملفات المحلية، التحكم بالمتصفح المحلي، أو ربط الأدوات المثبتة على جهازك |
| Streamable HTTP (مستضاف سحابياً) | على عنوان ويب خارجي | كتابة عنوان URL | للخدمات السحابية، الوثائق المشتركة، أو خوادم التصميم مثل Figma، ويتطلب الترخيص |
إليك أهم النقاط التي يجب على المبتدئين الحذر منها:
تعتمد خوادم STDIO بالأساس على "أمر التشغيل المحلي". وهو عبارة عن "برنامج صغير يقوم Codex بتشغيله في الخلفية عند بدء العمل" - وتكتب له أمر التشغيل (مثل npx -y @upstash/context7-mcp) ليقوم Codex بتشغيل الخادم بموجبه. ويتطلب تشغيله توفر البيئة البرمجية المناسبة على جهازك (فمثلاً يتطلب تشغيل أوامر npx تثبيت بيئة Node.js على الجهاز أولاً). وتسمح خوادم STDIO بتمرير متغيرات بيئة إضافية (عبر --env أو كتابة حقل env في التكوين) لتمرير الرموز (tokens) وغيرها من البيانات الحساسة.
تتصل خوادم HTTP بالخدمات السحابية، وتوفر أسلوبين للترخيص والأمان. وتدعم خوادم Streamable HTTP الآليتين التاليتين:
- Bearer token: تحديد متغير بيئة يحتوي على رمز الأمان والترخيص.
- OAuth (الترخيص عبر حسابك): للخوادم التي تدعم بروتوكول OAuth، حيث تشغل أمر
codex mcp login <server-name>لبدء خطوات تسجيل الدخول والترخيص.
مثل خوادم Figma السحابية وخوادم الوثائق الخارجية، حيث تكتب عنوان URL الخاص بها وتفعل الترخيص للاتصال مباشرة، دون حاجة لتثبيت أي ملفات محلياً.
ونشير لـ اختلاف هام عن بقية الأدوات: قد تدعم بعض الأدوات (مثل Claude Code) بروتوكول SSE للاتصال وتطلب توثيقه، بينما يقتصر دعم Codex على نوعي STDIO و Streamable HTTP فقط لتبسيط الأمور، ولا داعي للبحث عن خيارات SSE.
توضح الرسمة التالية مساري الاتصال بالبيئة الخارجية:

توضح الرسمة ما يلي: يقتصر وصول Codex الافتراضي على الملفات والأوامر المحلية الموضحة على اليسار؛ ويستخدم بروتوكول MCP كمنفذ توصيل يربطه بالخدمات الخارجية على اليمين إما عبر خادم STDIO (تشغيل عملية محلية في الخلفية) أو خادم Streamable HTTP (الاتصال بعنواين ويب مع تفعيل الأمان والترخيص).
💡 ملخص في جملة واحدة: تستخدم خوادم STDIO للأدوات المحلية (تكتب أمر التشغيل المحلي وتتطلب تثبيت التبعيات على جهازك)، وتستخدم خوادم Streamable HTTP للخدمات السحابية (تكتب عنوان URL وتفعل الترخيص عبر Bearer token أو أمر
codex mcp loginلـ OAuth)؛ وهما النوعان المعتمدان في Codex.
03 كيفية إضافة خادم: الأوامر التلقائية مقابل التعديل اليدوي لملف config.toml
بعد فهم أنواع الخوادم، نأتي لكيفية ربطها. ويدعم Codex طريقتين للإعداد، وتذكر دائماً أن كل إعدادات MCP تحفظ في ملف config.toml.
تنص الوثائق الرسمية على ما يلي:
يحفظ Codex إعدادات MCP مع بقية إعدادات البرنامج في ملف
config.toml. ويكون الملف الافتراضي هو~/.codex/config.tomlالعام، ويمكنك استخدام ملفات.codex/config.tomlالمحلية لحصر خادم MCP على مشروع معين (بشرط تمكين الثقة في المشروع).
توضح هذه القاعدة الفارق الأساسي مع أداة Claude Code - وهي المشكلة التي واجهتني في البداية: حيث تعتمد أداة Claude Code على معامل --scope لتحديد النطاق، بينما يعتمد Codex على "موقع حفظ ملف التكوين" لتحديد نطاق عمل الخادم كالتالي:
| مسار ملف التكوين | نطاق عمل الخادم | استخداماته |
|---|---|---|
~/.codex/config.toml (العام) | يعمل في جميع مشاريعك | للأدوات العامة التي تستخدمها بانتظام في مختلف المهام |
مجلد المشروع المحلي .codex/config.toml | يقتصر على المشروع الحالي فقط (بشرط تمكين الثقة للمشروع) | للأدوات المخصصة التي يحتاجها هذا المشروع تحديداً |
وتؤكد الوثائق أن إعدادات سطر الأوامر CLI وإضافات محررات الأكواد IDE تتشارك نفس الملف. فالخادم الذي تضيفه من الطرفية سيعمل معك تلقائياً داخل إضافات VS Code دون حاجة لإعادة إعداده مجدداً.
تذكر شرط "ثقة المشروع" الموضح في المقالين 15 و 16. فملف التكوين المحلي للمشروع لن يتم قراءته وتطبيقه إلا إذا قمت بتأكيد الثقة في هذا المجلد، لحمايتك من محاولة أي مستودع تسحبه من الإنترنت تشغيل خوادم وعمليات ضارة على جهازك دون علمك.
الطريقة الأولى: استخدام أوامر codex mcp (الأسرع والأسهل)
لإضافة خادم STDIO محلي، استخدم أمر codex mcp add وتأكد من كتابة شرط -- قبل كتابة أمر تشغيل الخادم:
codex mcp add <server-name> --env VAR1=VALUE1 -- <stdio_start_command>مثال عملي مقترح رسمياً - ربط خادم Context7 (وهو خادم مجاني ومفيد جداً لقراءة وثائق المكتبات والبرامج):
codex mcp add context7 -- npx -y @upstash/context7-mcpيمثل الجزء المكتوب بعد -- وهو npx -y @upstash/context7-mcp أمر تشغيل الخادم في الخلفية، ويستخدم خيار -y لتفادي ظهور نوافذ تأكيد التثبيت من npx. ولمراجعة بقية الخيارات المتاحة للأمر اكتب codex mcp --help. وللخوادم السحابية التي تدعم OAuth، استخدم أمر codex mcp login <server-name> بعد الإضافة لتسجيل الدخول والترخيص.
أثناء محادثة CLI أو TUI، لمراجعة قائمة الخوادم المرتبطة والنشطة حالياً اكتب الأمر المائل التالي:
/mcpالطريقة الثانية: التعديل اليدوي لملف config.toml (للتحكم الدقيق)
إذا كنت تريد ضبطاً دقيقاً (مثل قصر الصلاحيات على أدوات محددة، أو تعديل وقت الانتظار، أو الترخيص)، فيمكنك فتح وتعديل ملف config.toml مباشرة. ويكتب كل خادم كجدول منفصل بالصيغة [mcp_servers.<server-name>].
لكتابة إعدادات خادم STDIO محلي (مثل مثال خادم Context7 السابق):
[mcp_servers.context7]
command = "npx"
args = ["-y", "@upstash/context7-mcp"]تطابق الحقول الأوامر بوضوح - حيث يمثل command برنامج التشغيل الرئيسي، وتمثل args قائمة المعاملات المرفقة. ويوفر خادم STDIO حقولاً اختيارية إضافية مثل: env (لتحديد متغيرات البيئة)، و cwd (لتحديد مجلد تشغيل العملية)، و env_vars (لتحديد متغيرات البيئة المسموح بمشاركتها مع العملية).
لكتابة إعدادات خادم Streamable HTTP سحابي، اكتب حقل url والترخيص المطلوب (مثل مثال ربط خادم Figma المقترح رسمياً):
[mcp_servers.figma]
url = "https://mcp.figma.com/mcp"
bearer_token_env_var = "FIGMA_OAUTH_TOKEN"يمثل حقل url عنوان اتصال الخادم الإلزامي؛ ويحدد bearer_token_env_var اسم متغير البيئة الذي يحتوي على رمز الترخيص - وتجنب كتابة رمز الترخيص نفسه في ملف التكوين، واكتفِ بكتابة اسم متغير البيئة للحفاظ على الأمان وتجنب رفع الرموز في Git. ويمكنك استخدام حقل http_headers لكتابة ترويسات ثابتة، أو env_http_headers لجلب الترويسات من متغيرات البيئة.
ℹ️ ملف
config.tomlالمذكور هنا هو نفس ملف الإعدادات الرئيسي للبرنامج الذي شرحناه في المقال 18، ويمثل جدولmcp_serversقسماً بداخله. وتعديل الإعدادات بالطريقتين يؤدي لنفس النتيجة - فأمرcodex mcp addيكتب البيانات في هذا الجدول تلقائياً، والتعديل اليدوي يعني كتابتها بنفسك.
💡 ملخص في جملة واحدة: تحفظ كل إعدادات MCP في ملف
config.toml؛ ويتم تحديد نطاق عمل الخادم بناءً على موقع حفظ الملف (عام في مجلد المستخدم~/.codex/أو محلي للمشروع في مجلد.codex/بشرط الثقة)؛ وتضاف الخوادم إما تلقائياً بأمرcodex mcp add(مع كتابة--قبل أمر التشغيل) أو يدوياً بكتابة جدول[mcp_servers.<name>]؛ وتتشارك واجهة CLI ومحررات الأكواد نفس الإعدادات.
04 التحكم في صلاحيات وأدوات الخادم بدقة
إضافة الخادم لا تعني فتح الباب له بالكامل - نوضح هنا كيفية قصر الصلاحيات وتأمين العمل. يوفر Codex مجموعة من المفاتيح في ملف config.toml للتحكم في سلوك وأدوات كل خادم على حدة - لتحديد الأدوات المسموح بها، وقت الانتظار المسموح، وهل يتطلب تشغيل الأداة موافقة مسبقة منك.
تشبيه: تحديد صلاحيات بطاقة الدخول للمتدرب الجديد. لن تمنح المتدرب بطاقة دخول عامة تتيح له فتح كل غرف ومرافق الشركة - بل ستبرمج البطاقة لتسمح له بـ "دخول قاعات الاجتماعات المحددة، وحظر دخوله لغرفة الخوادم الرئيسية، وإيقاف عمل البطاقة بعد انتهاء الدوام، وطلب تأكيد أمني عند دخول المكاتب الحساسة". وتحديد صلاحيات خادم MCP يماثل ذلك: يحتوي الخادم على مجموعة من الأدوات، وتتولى أنت تحديد الأدوات المسموحة، والمحظورة، والتي تتطلب إذناً عند التشغيل.
يوضح الجدول التالي المفاتيح الشائعة للتحكم في الخادم:
| المفتاح | وظيفته | القيمة الافتراضية |
|---|---|---|
enabled | إيقاف تشغيل الخادم مؤقتاً (دون حذف إعداداته) | افتراضياً true (تكتب false للإيقاف) |
enabled_tools | القائمة البيضاء للأدوات المسموح للخادم بتشغيلها | عند خلوه يسمح بكل الأدوات |
disabled_tools | القائمة السوداء للأدوات المحظور على الخادم تشغيلها | — |
default_tools_approval_mode | السلوك الافتراضي للموافقة عند استدعاء أدوات الخادم | تتوفر الخيارات: auto / prompt / approve |
startup_timeout_sec | وقت الانتظار الأقصى المسموح لبدء تشغيل الخادم (بالثواني) | افتراضياً 10 ثوانٍ |
tool_timeout_sec | وقت الانتظار الأقصى المسموح لتشغيل أداة فردية (بالثواني) | افتراضياً 60 ثانية |
إليك بعض النقاط الهامة لتجنب الأخطاء:
تطبق القائمة السوداء بعد تطبيق القائمة البيضاء. توضح الإرشادات أن قيود حظر الأدوات disabled_tools يتم فحصها وتطبيقها على الأدوات التي تم السماح بها في enabled_tools أولاً. مما يتيح لك "السماح بمجموعة أدوات عامة أولاً، ثم حظر أدوات معينة منها لاحتوائها على مخاطر". ويوضح مثال ربط أداة Chrome DevTools المقترح رسمياً هذا الأسلوب: حيث تم السماح بأداتين enabled_tools = ["open", "screenshot"] أولاً، ثم تم حظر أداة التقاط الصور بكتابة disabled_tools = ["screenshot"] لتكون النتيجة النهائية هي السماح بأداة open فقط.
تختلف خيارات default_tools_approval_mode الثلاثة عن صلاحيات بيئة المعزل. وتختص بتحديد "شروط موافقتك عند محاولة الخروج واستدعاء أدوات الخادم":
auto: ترك تحديد الحاجة للموافقة لتقدير برنامج Codex التلقائي.prompt: التوقف وطلب إذنك وموافقتك عند كل محاولة لاستدعاء أدوات الخادم.approve: السماح التلقائي والمباشر بتشغيل أدوات الخادم دون ظهور نوافذ موافقة (يعادل تمكين الثقة التامة بالخادم).
ويمكنك تجاوز الإعداد العام للأدوات وتحديد سلوك أداة معينة باستخدام المفتاح بالصيغة tools.<tool_name>.approval_mode. مثل "السماح بتشغيل أدوات الخادم تلقائياً دون أسئلة، وتحديد طلب الموافقة الصريحة لأداة الكتابة والتعديل فقط".
احذر من قيم أوقات الانتظار الافتراضية: 10 ثوانٍ لبدء التشغيل، و 60 ثانية لتنفيذ الأداة. واجهت مشكلة سابقاً عند ربط خادم محلي بطيء التشغيل - حيث كان يتطلب 15 ثانية للبدء، وكان Codex يغلق عملية التشغيل ويعلن الفشل لانتهاء الـ 10 ثوانٍ الافتراضية، وظننت أن المشكلة ترجع لعطل في الخادم حتى تبين لي لاحقاً ضرورة تعديل قيمة startup_timeout_sec. ولقفل الخوادم بطيئة التشغيل ارفع القيم كالتالي:
[mcp_servers.slow_server]
command = "python"
args = ["-m", "slow_server"]
startup_timeout_sec = 30 # زيادة وقت بدء التشغيل للخوادم البطيئة
tool_timeout_sec = 120 # زيادة وقت تنفيذ المهام الطويلةيوضح المثال التالي إعداداً متكاملاً لخادم HTTP سحابي مع تطبيق قيود الأمان والصلاحيات بالتفصيل:
[mcp_servers.chrome_devtools]
url = "http://localhost:3000/mcp"
enabled_tools = ["open", "screenshot"]
disabled_tools = ["screenshot"] # يطبق بعد القائمة البيضاء، لتبقى أداة open فقط مفعلة
default_tools_approval_mode = "prompt" # طلب الموافقة دائماً عند استدعاء أدوات هذا الخادم
startup_timeout_sec = 20
enabled = true
[mcp_servers.chrome_devtools.tools.open]
approval_mode = "approve" # السماح بتشغيل أداة open تلقائياً ودون أسئلة💡 ملخص في جملة واحدة: يسمح تعديل ملف
config.tomlيدوياً بضبط صلاحيات وأدوات الخادم بدقة - عبر مفتاحenabledللإيقاف المؤقت، وتطبيق القائمة البيضاء والسوداء للأدوات، وضبط سلوك الموافقات عبرdefault_tools_approval_mode(مع إمكانية استثناء أدوات معينة)، ورفع قيم أوقات الانتظار عن القيم الافتراضية10و60ثانية عند الحاجة.
05 أمان خوادم الطرف الثالث: أهمية التحقق والثقة قبل التوصيل
يعد هذا القسم قصيراً، ولكنه بالغ الأهمية - وهو يتصل مباشرة بمحور مقالنا السابق 16 · الأمان وحدود المخاطر.
القاعدة الأساسية والأهم: تعد خوادم MCP أكواداً أو خدمات برمجية يطورها طرف ثالث، ولا تتولى OpenAI فحصها أمنياً بالنيابة عنك. فعندما تضيف خادم STDIO محلياً، فكأنك تسمح لـ Codex بتشغيل برنامج مجهول المصدر على جهازك؛ وعندما تضيف خادم HTTP سحابياً يقرأ البيانات من الويب، فكأنك تفتح نافذة لجلب محتويات خارجية لبيئة عمل Codex. وكلا الأمرين يتطلب حذراً وتقييماً دقيقاً.
تشبيه: تثبيت مكتبة أو حزمة برمجية مجهولة في مشروع الشركة الفعلي. لن تقوم بتشغيل أمر npm install لحزمة مجهولة الاسم لا تعرف مطورها أو مدى انتشارها وتسمح لها بالعمل في خوادم الإنتاج - بل ستقوم بفحص المستندات والمطورين والتقييمات أولاً. خوادم MCP تمثل هذه الحزم تماماً: افحص مصدر الخادم وتأكد من سلامته قبل التوصيل، وخاصة الخوادم المصممة لجلب محتويات خارجية (مواقع، تذاكر دعم، أو مستندات).
لماذا تزداد المخاطر مع خوادم جلب البيانات الخارجية؟ لأنها تمثل البيئة الخصبة لهجمات حقن التعليمات البرمجية (prompt injection) - وقد ناقشنا هذا الخطر بالتفصيل في المقال 16. وبإيجاز: قد تحتوي صفحات الويب أو المستندات المقروءة على نصوص خبيثة موجهة للذكاء الاصطناعي، وقراءتها تعني وقوع Codex في الفخ وتوجيهه لتنفيذ مهام ضارة. ولهذا تظهر أهمية قيود "تحديد الأدوات والموافقات الموضحة في القسم 04" - حيث يساهم ضبط الموافقات على وضع prompt (السؤال عند كل محاولة) وحظر الأدوات عالية الخطورة في القائمة السوداء في حماية جهازك من المخاطر.
إليك بعض التوجيهات العملية لتحديد شروط الثقة بالخوادم:
| الخادم المستهدف | قرار التوصيل |
|---|---|
| الخوادم الرسمية الموصى بها رسمياً (مثل OpenAI Docs، Context7، Figma، و Playwright) | ✅ موثوقة وآمنة للاستخدام |
| خوادم الشركات الكبرى المعروفة (مثل خادم GitHub أو Sentry الرسمي) | ✅ موثوقة وآمنة للاستخدام |
| خادم مجهول في GitHub يملك تقييمات قليلة | ⚠️ يجب قراءة الكود المصدر والتأكد من سلامته قبل التوصيل |
تفعيل خيار السماح التلقائي default_tools_approval_mode = "approve" للخادم | ⚠️ يحظر تفعيله إلا للخوادم الموثوقة تماماً |
| منح الخادم صلاحيات كتابة وتعديل بيانات الإنتاج الحساسة | ❌ يقتصر التوصيل على صلاحية القراءة فقط وتجنب صلاحيات الكتابة |
تذكر دائماً القاعدة الأخيرة: اعتمد على صلاحية القراءة فقط وقلل الصلاحيات الممنوحة لأدنى حد ممكن، لتأمين أجهزتك. ورغم عمل خوادم MCP داخل حدود بيئة المعزل والموافقات الخاصة بـ Codex (المشروحة في المقالين 15 و 16)، إلا أن بيئة المعزل لن تمنعك من منح خادم ضار صلاحية الفتح التلقائي يدوياً، لذا تظل المسؤولية الأمنية في يدك.
💡 ملخص في جملة واحدة: تعد خوادم MCP أكواداً لجهات خارجية ولا تخضع لفحص أمني من OpenAI؛ ويجب التحقق من مصادر الخوادم قبل توصيلها والحذر من هجمات حقن التعليمات في خوادم جلب البيانات، والتأكد من ضبط الموافقات على وضع
promptوتجنب صلاحيات الكتابة غير الضرورية.
06 تدريب عملي: ربط خادم وثائق Context7 وتجربته في دقائق
نطبق معاً تدريباً عملياً متكاملاً: ربط خادم Context7 (وهو خادم مجاني ومفيد لقراءة وثائق البرمجيات والمكتبات الحديثة، ولا يتطلب اشتراكاً أو إعداداً معقداً)، والتحقق من عمله. الخطوات بسيطة وتعمل في كل البيئات.
متطلبات التشغيل: يعتمد خادم Context7 على أداة
npxللتشغيل البرمجي، لذا تأكد من تثبيت بيئة Node.js على جهازك (اكتبnode -vفي الطرفية للتأكد من ظهور رقم الإصدار). ويتطلب تشغيل الخادم جلب وثائق من الإنترنت، فإذا واجهت مشكلة في الاتصال فتأكد من سلامة اتصال جهازك بالشبكة. ونعتمد على المسميات والمعاملات الرسمية المعتمدة حالياً.
الخطوة الأولى: إضافة الخادم (تكتب في نافذة الطرفية العادية، وليس داخل جلسة محادثة codex)
codex mcp add context7 -- npx -y @upstash/context7-mcpالمتوقع: ظهور رسالة تأكيد تفيد بإضافة الخادم context7 بنجاح. وتقوم هذه الخطوة بكتابة بيانات جدول [mcp_servers.context7] تلقائياً في ملف المستخدم العام ~/.codex/config.toml (الموضح في القسم 03)، ويمكنك فتح الملف للتأكد من كتابة السطور.
الخطوة الثانية: تشغيل الجلسة والتحقق من توصيل الخادم
codexاكتب الأمر المائل التالي داخل الجلسة للتأكد من حالة الخوادم النشطة:
/mcpالمتوقع: ظهور اسم الخادم context7 في قائمة الخوادم النشطة، مما يثبت نجاح التوصيل وقراءة الإعدادات. وفي حال عدم ظهوره أو إعلان فشل الاتصال، فتأكد من تثبيت بيئة Node.js وسلامة اتصال الشبكة على جهازك.
الخطوة الثالثة: الطلب من Codex الاستعلام من الخادم
أرسل هذا الطلب، واطلب منه صراحة الاستعانة بالخادم لقراءة توثيق حديث (ليقوم بالاتصال بالخادم وقراءة البيانات الحية بدلاً من الاعتماد على معلوماته القديمة):
استخدم خادم Context7 للبحث عن طريقة كتابة إعدادات التوجيه (routing) في النسخة الأحدث لمكتبة React Router، واعرض لي الأكواد المقترحة من التوثيق الرسمي.المتوقع: سيقوم Codex باستدعاء أدوات خادم Context7 لقراءة وثائق المكتبة الحديثة من الإنترنت - وبناءً على إعدادات الأمان الخاصة بك، سيتوقف Codex ليطلب موافقتك قبل السماح باستدعاء أداة الخادم للمرة الأولى (كما شرحنا في القسمين 04 و 05)، قم بالموافقة للمتابعة. وسيقوم المساعد بقراءة التوثيق الحي وعرض الأكواد والخيارات الصحيحة بناءً على النسخة الحديثة، وستشاهد في خطوات المعالجة تفاصيل استخدام خادم Context7 للتأكد من جلب البيانات من الخارج وتجنب التأليف.
الخطوة الرابعة: حذف الخادم (اختياري)
بعد الانتهاء من التدريب والرغبة في إزالة الخادم، اكتب هذا الأمر لمراجعة أوامر الإزالة المتاحة:
codex mcp --helpاكتب أمر الإزالة المناسب بناءً على دليل سطر الأوامر لإصدارك الحالي؛ أو يمكنك فتح ملف التكوين الرئيسي ~/.codex/config.toml وحذف أسطر جدول [mcp_servers.context7] يدوياً، أو كتابة سطر enabled = false لإيقاف تشغيل الخادم مؤقتاً دون حذف إعداداته - حيث يؤدي تعديل الملف يدوياً لنفس نتيجة أوامر سطر الأوامر.
بإتمام هذه الخطوات، تكون قد قمت بتجربة عملية لدورة عمل خوادم MCP بالكامل: إضافة الخادم ← التحقق من حالة الاتصال عبر /mcp ← الاستعلام وقبول الموافقات ← وحذف أو إيقاف الخادم. وتتبع كل عمليات ربط الخوادم الأخرى نفس الخطوات والمبادئ.
💡 ملخص في جملة واحدة: خطوات التدريب هي: إضافة خادم Context7 بأمر
codex mcp add← مراجعة حالته بأمر/mcpداخل الجلسة ← الطلب منه قراءة وثيقة حديثة وقبول موافقة التوصيل الأولى ← وتعديل ملفconfig.tomlلإيقاف أو حذف الخادم؛ لإتقان ربط الأدوات الخارجية والعمل بها.
07 ملخص
شرحنا في هذا المقال كيفية ربط Codex بالعالم الخارجي بالاستعانة ببروتوكول MCP - وكيف يتحول من مساعد محلي إلى أداة قوية تتصل بمختلف قواعد البيانات والتصاميم والخدمات السحابية.
دعنا نلخص النقاط الأساسية معاً بشكل سريع:
| وجه المقارنة | الشرح والنقاط الهامة |
|---|---|
| دور بروتوكول MCP | معيار اتصال مفتوح يتيح لـ Codex الاتصال بالأدوات ومصادر البيانات الخارجية وتجنب قصور العمليات المحلية، ويقرأ حقل الإرشادات instructions للخادم |
| خادم STDIO المحلي | عملية يتم تشغيلها محلياً في الخلفية، وتكتب له أمر تشغيل (مثل npx ...) ويتطلب توفر بيئة برمجية على الجهاز |
| خادم HTTP السحابي | يتصل بالخدمات السحابية، وتكتب له عنوان URL وتفعل الترخيص عبر Bearer token أو OAuth |
| نطاق تأثير الخادم | يحدد بناءً على موقع حفظ ملف التكوين (عام في مجلد المستخدم ~/.codex/ أو محلي للمشروع في مجلد .codex/ بشرط الثقة)، ولا يدعم معامل --scope |
| إضافة الخادم | عبر سطر الأوامر بأمر codex mcp add (تكتب -- قبل سطر تشغيل الخادم) أو يدوياً بكتابة جدول [mcp_servers.<name>] في ملف الإعدادات |
| صلاحيات وأدوات الخادم | عبر حقول ملف config.toml: مفتاح enabled للإيقاف، القائمتان البيضاء والسوداء للأدوات، وخيارات الموافقات default_tools_approval_mode |
| أمان خوادم الطرف الثالث | أكواد خارجية لا تفحصها OpenAI؛ ويجب التحقق من موثوقية الخوادم وتجنب هجمات حقن التعليمات في خوادم جلب البيانات وضبط الموافقات على وضع prompt |
يجب أن تكون الآن قادراً على: توضيح قصور العمليات المحلية وكيف يحلها بروتوكول MCP؛ والتمييز بين خادمي STDIO و HTTP وإعداد كل منهما؛ ومعرفة أن Codex يحدد نطاق الخادم بناءً على موقع حفظ الملف وليس عبر معامل --scope؛ وإضافة الخوادم ومراجعتها بأمر /mcp؛ وضبط صلاحيات الأدوات وأوقات الانتظار والموافقات؛ وتقييم أمان خوادم الطرف الثالث وتأمين البيانات. هذا التوصيل بالأدوات الخارجية هو ما يحول Codex من مساعد كود تقليدي إلى أداة قادرة على التفاعل مع بيئة عملك بالكامل.
تذكر دائماً المشكلة التي واجهتني في البداية - واحفظ قاعدة "لا وجود لمعامل --scope في Codex، ويتم كتابة كل إعدادات MCP في ملف config.toml العام أو المحلي ويجب وضع -- قبل كتابة أوامر تشغيل خوادم STDIO" لتجنب المشاكل وتوفير الوقت.
المقال التالي [21 · الوكلاء الفرعيون (Subagents)] - يساهم بروتوكول MCP في توسيع المهام والأدوات التي ينفذها Codex، ولكن مع زيادة حجم وسياق العمل، قد يتعرض سياق محادثة Codex المفردة للازدحام وتراجع الأداء. سنتحدث في المقال القادم عن أسلوب جديد لمعالجة المهام الكبيرة: وهو تقسيم العمل وإسناده لمجموعة من الوكلاء الفرعيين (Subagents) ذوي السياقات المستقلة - حيث يتولى المساعد الرئيسي تنسيق وتوزيع المهام، ويعمل كل وكيل فرعي على مهمته الخاصة بالتوازي دون تداخل في سياق العمل. فكر في هذا الموقف: كيف نوزع مهام "البحث في الوثائق، تعديل الكود، وتشغيل الاختبارات" على عدة وكلاء مساعدين للعمل بالتوازي ودون تداخل؟ سنتناول ذلك بالتفصيل في المقال القادم.