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. هذا هو الخيار الذي تستخدمه.

ملف config.toml في Codex: خادم MCP باسم shager مع عنوانه ومتغير بيئة يحمل المفتاح.
يبقى المفتاح في متغير بيئة، ولا يُكتب في الملف أبدًا.

الخيار 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 أبسط ويؤدي الغرض نفسه.

مخطط: وكيل ذكاء اصطناعي (Claude أو Codex أو Cursor) يتصل بـ Shager عبر خادم MCP أو REST API، ويوزّع Shager المحتوى على Facebook وInstagram وYouTube وX وLinkedIn وTikTok.
يتولى Shager الربط والفحوصات وتوزيع النشر على فترات وقياس النقرات. Facebook وInstagram بانتظار موافقة Meta، وحتى ذلك الحين لا يمكن ربط إلا حسابات الاختبار. على TikTok، تُنشر المنشورات كخاصة («أنا فقط») إلى أن يوافق TikTok على التطبيق.

كيف تحدّ مما يستطيع 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.

جرّبه على حساباتك.

مجانًا خلال فترة الإطلاق، دون بطاقة. اربط حساباتك، واكتب مرة واحدة، وShager ينشر ويقيس.