Shager في OpenAI Codex: ملف config.toml وbearer_token_env_var وقائمة أدوات تُبقي المسودات مسودات
اضبط خادم MCP البعيد لـ Shager في Codex CLI عبر config.toml أو codex mcp add، واقرأ المفتاح من متغير بيئة، وقيّد الأدوات، وأنشئ أول مسودة.

لربط Shager بـ Codex CLI من OpenAI، أضف جدول [mcp_servers.shager] إلى ~/.codex/config.toml يتضمن url = "https://app.shager.ai/api/mcp" وbearer_token_env_var = "SHAGER_API_KEY"، ثم صدّر مفتاح shgr_live_ الخاص بك في هذا المتغير. يتعامل Codex مع streamable HTTP بشكل أصلي ويرسل المفتاح كرمز bearer، فلا حاجة إلى جسر أو عملية محلية. ويمكنك أيضًا فعل ذلك في سطر واحد: codex mcp add shager --url ... --bearer-token-env-var SHAGER_API_KEY.
بقية هذا الدليل عن فعل ذلك بطريقة لن تندم عليها: إبقاء المفتاح خارج الملف، وتحديد أدوات Shager التي يستطيع Codex استدعاءها، واختيار أول مهمة تثبت أن التوصيل سليم.
ماذا يدعم Codex في خوادم MCP البعيدة؟
تصف وثائق MCP في Codex من OpenAI خوادم streamable HTTP التي تُضبط عبر url، إضافة إلى ثلاث طرق للمصادقة بالترويسات. ويعرّفها مرجع الإعدادات كما يلي:
| المفتاح | ماذا يفعل |
|---|---|
bearer_token_env_var |
اسم متغير بيئة تُرسل قيمته كرمز bearer |
http_headers |
ترويسات ثابتة تُضاف إلى كل طلب |
env_http_headers |
ترويسات تُقرأ قيمها من متغيرات البيئة |
يتوقع Shager Authorization: Bearer shgr_live_...، وهذا بالضبط ما ينتجه bearer_token_env_var. هذا هو الخيار الذي تستخدمه.

الخيار A: تعديل config.toml
افتح ~/.codex/config.toml وأضف:
[mcp_servers.shager]
url = "https://app.shager.ai/api/mcp"
bearer_token_env_var = "SHAGER_API_KEY"
ثم ضع المفتاح في ملف تعريف الصدفة، لا في ملف TOML:
export SHAGER_API_KEY="shgr_live_your_key_here"
لاحظ أن ملف الإعداد يحمل اسم المتغير لا المفتاح نفسه. يعني ذلك أنك تستطيع رفع هذا المقطع إلى المستودع أو مشاركته بحرية، ويضع كل زميل مفتاحه الخاص. وتخصيص مفتاح لكل شخص يؤتي ثماره لاحقًا، لأن سجل التدقيق في Shager على https://app.shager.ai/dashboard/agents يسجّل كل استدعاء باسم المفتاح الذي نفّذه.
الخيار B: codex mcp add
يكتب سطر الأوامر الجدول نفسه نيابة عنك. تعرّف شيفرة Codex المصدرية للأمر codex mcp add الخيار --url لخوادم streamable HTTP، والخيار --bearer-token-env-var الذي يتطلبه (mcp_cmd.rs على GitHub):
codex mcp add shager \
--url https://app.shager.ai/api/mcp \
--bearer-token-env-var SHAGER_API_KEY
إذا كان الإصدار المثبت لديك مختلفًا، فالمرجع الموثوق هو codex mcp add --help.
تحقق من النتيجة:
codex mcp list
وداخل واجهة Codex في الطرفية، يعرض /mcp الخوادم النشطة وأدواتها.
هل تستخدم http_headers بدلًا من ذلك؟
يمكنك ذلك، لكن لا تفعل. الصيغة http_headers = { "Authorization" = "Bearer shgr_live_..." } تعمل، لكنها تضع بيانات اعتماد حية في ملف نصي عادي يميل إلى أن يُنسخ إلى مستودعات ملفات الإعداد الشخصية. وإذا احتجت إلى ترويسة غير رمز bearer، فإن env_http_headers يربط اسم الترويسة باسم متغير بيئة:
[mcp_servers.shager]
url = "https://app.shager.ai/api/mcp"
env_http_headers = { "Authorization" = "SHAGER_AUTH_HEADER" }
بهذه الصيغة يجب أن يحتوي المتغير على القيمة كاملة، بما فيها المخطط: export SHAGER_AUTH_HEADER="Bearer shgr_live_...". أما مع Shager، فإن bearer_token_env_var أبسط ويؤدي الغرض نفسه.

كيف تحدّ مما يستطيع Codex فعله في Shager؟
هذا هو الجزء الذي تتجاهله معظم أدلة الإعداد. يتيح لك Codex تصفية أدوات الخادم عبر enabled_tools (قائمة سماح) وdisabled_tools (قائمة منع تُطبَّق بعدها)، وكلاهما موثق في مرجع الإعدادات. اجمع ذلك مع نطاقات المفاتيح في Shager، فتحصل على طبقتين تُغلقان الباب عند أي خلل.
هذا ملف تعريف للمسودات يستطيع قراءة كل شيء وإنشاء مسودات، لكنه لا يستطيع الجدولة أو الإلغاء أو إنشاء روابط ربط:
[mcp_servers.shager]
url = "https://app.shager.ai/api/mcp"
bearer_token_env_var = "SHAGER_API_KEY"
enabled_tools = [
"whoami",
"list_workspaces",
"list_channels",
"list_groups",
"upload_media_from_url",
"create_post",
"get_post",
"list_posts",
"get_analytics",
]
tool_timeout_sec = 120
تبقى create_post في القائمة لأنها من دون schedule_at تحفظ مسودة فقط. وإذا كان المفتاح أيضًا بلا النطاق publish، فإن Shager يرفض أي create_post يتضمن schedule_at برمز 403، فلا يستطيع حتى نموذج مبدع أن يمرر منشورًا مجدولًا خلسة.
أما رفع tool_timeout_sec فسببه أن upload_media_from_url ينزّل الملف على الخادم، وقد يستغرق فيديو عمودي كبير أكثر من 60 ثانية، وهي المهلة الافتراضية المذكورة في المرجع.
أول مهمة تستحق التشغيل
ابدأ بتعليمات تلمس عدة أدوات ولا تترك وراءها إلا مسودة:
Use the shager MCP server.
1. whoami, then list_workspaces.
2. In workspace "Lakeside Realty", list_channels and list_groups.
3. upload_media_from_url https://example.com/media/open-house.jpg
4. create_post as a draft to group "All agents" with a different caption per
channel (per_channel), mentioning each agent's neighborhood from the channel
name. cta_url https://lakesiderealty.example/open-house, campaign
"open-house-oct", first_comment "Details and RSVP: " followed by the link.
5. get_post and print a table of channel, network, format and state.
ما يجب أن تراه: منشورًا بحالة DRAFT له وجهة واحدة لكل حساب، ولكل وجهة صيغتها المحددة لتلك الشبكة. في Shager، يحصل كل حساب على رابط قصير ووسوم UTM خاصة به لـ cta_url، مع utm_content الذي يحمل اسم الحساب، وهذا ما يجعل نسب النتائج إلى كل حساب ممكنًا لاحقًا. التفاصيل في نسب العملاء المحتملين إلى كل حساب.
هل يستطيع Codex تشغيل ذلك دون إنسان أمام لوحة المفاتيح؟
لدى Codex وضع غير تفاعلي هو codex exec للسكربتات وأنظمة CI. لكن سلوك الموافقة على أدوات MCP في التشغيل دون واجهة تغيّر بين الإصدارات، فاختبر تشغيلًا تجريبيًا على الإصدار المثبت لديك قبل أن تضعه على مؤقت. وللمهام التي يجب أن تعمل كل أسبوع دون إشراف، تتخطى فرق كثيرة طبقة الدردشة وتستدعي REST API في Shager من سكربت قصير، لا توجد فيه نوافذ موافقة قد يعلق عندها. أيًا كان اختيارك، خصص للمهمة مفتاحًا خاصًا بها، وأبقِ قائمة الأدوات المسموحة ضيقة، وقرّر عن وعي هل يحمل هذا المفتاح publish أم لا. روتين مبني على هذه الاختيارات مشروح في روتين التوزيع الأسبوعي.
استكشاف الأخطاء
| ما تراه | السبب | الحل |
|---|---|---|
401 unauthorized |
المتغير غير مُصدَّر في الصدفة التي شغّلت Codex | نفّذ echo $SHAGER_API_KEY في الطرفية نفسها، ثم أعد تشغيل Codex |
أدوات غائبة عن /mcp |
الاسم غير موجود في enabled_tools، أو مدرج في disabled_tools |
قارن الكتابة بقائمة الأدوات في /ar/agents |
403 sandbox_unclaimed |
المفتاح جاء من تسجيل الوكيل الذاتي ولم يتولَّ أي شخص ملكيته | أرسل claim_url إلى شخص من الفريق |
403 forbidden عند الجدولة |
المفتاح بلا publish |
سلوك متوقع لمفتاح مخصص للمسودات |
429 rate_limited |
أكثر من 120 طلبًا في الدقيقة لكل مفتاح | استخدم المجموعات واستدعاء create_post واحدًا بدل استدعاء لكل حساب |
الأسئلة الشائعة
هل يحتاج Codex إلى OAuth للتواصل مع Shager؟
لا. يدعم Codex رموز bearer من متغير بيئة، ويقبل Shager مفتاح API بهذه الطريقة. ويدعم خادم MCP في Shager تسجيل الدخول عبر OAuth أيضًا، كما يدعم Codex خوادم OAuth، فتسجيل الدخول خيار متاح إن كنت تفضّل ألا تدير مفتاحًا.
هل يختلف إعداد Shager في إضافة Codex لبيئات التطوير؟
تقول وثائق MCP من OpenAI إن تطبيق ChatGPT لسطح المكتب وCodex CLI وإضافة بيئة التطوير تتشارك هذا الإعداد، فالجدول نفسه في ~/.codex/config.toml يخدمها جميعًا. تأكد من أن متغير البيئة مرئي لعملية المحرر، وقد يعني ذلك على macOS تشغيل المحرر من الطرفية.
هل يمكنني توجيه Codex إلى REST API بدل MCP؟
نعم، إذا كنت تكتب شيفرة لا تدردش. يصف مستند OpenAPI العمليات نفسها التي تقدمها أدوات MCP، بالنطاقات والحدود نفسها.
الخطوة التالية
بعد ربط Codex، تعرّف جيدًا إلى العمليات نفسها قبل أتمتة أي شيء. يمر دليل البدء السريع لـ REST API على التسلسل كاملًا، من مساحة العمل إلى المنشور المُتتبَّع، باستخدام curl وPython، وهذا يساعدك أيضًا على فهم ما يفعله Codex حين يستدعي أدوات MCP.


