דילוג לתוכן
כל המאמרים

חיבור שַׁגֵּר אל Codex CLI: שלוש שורות בקובץ config.toml ומפתח שלא נכנס לקובץ

איך מגדירים את שרת MCP של שַׁגֵּר בכלי Codex CLI של OpenAI: בלוק mcp_servers בקובץ config.toml, bearer_token_env_var במקום מפתח גלוי, הגדרה לפרויקט ובדיקה עם /mcp.

6 דק׳ קריאה

הגדרה בקובץ config.toml של Codex: שרת MCP בשם shager עם כתובת ומשתנה סביבה למפתח.
המפתח נשאר במשתנה סביבה ולא נכנס לקובץ.

כדי לחבר את שַׁגֵּר אל Codex CLI מוסיפים לקובץ ~/.codex/config.toml בלוק בשם [mcp_servers.shager] עם url = "https://app.shager.ai/api/mcp" ועם bearer_token_env_var = "SHAGER_API_KEY". מגדירים את משתנה הסביבה SHAGER_API_KEY עם המפתח של שַׁגֵּר, מפעילים את codex ומקלידים /mcp כדי לראות שהשרת פעיל. Codex שולח את המפתח בכותרת Authorization בתור Bearer, וזה בדיוק מה שֶׁשַּׁגֵּר מצפה לקבל.

בניגוד לחלק מהכלים, Codex תומך בשרתי MCP מרוחקים עם Streamable HTTP ועם טוקן ממשתנה סביבה באופן מובנה, כך שאין צורך בגשרים או בעקיפות. זה הופך אותו לאחת הדרכים הנקיות ביותר להריץ סוכן OpenAI מול שַׁגֵּר כבר היום, כל עוד OAuth של שַׁגֵּר בפיתוח.

למה דווקא config.toml ולא פקודה?

בכלי Claude Code רוב העבודה נעשית בפקודת claude mcp add. גם בכלי Codex יש פקודה דומה, codex mcp add, והיא מקבלת --url לשרתים מרוחקים. אבל עמוד MCP בתיעוד של Codex מתעד את אפשרויות האימות לשרתי HTTP בתוך קובץ ההגדרות ולא כדגלים של הפקודה. לכן הדרך הבטוחה והברורה היא לערוך את הקובץ ישירות.

לפי אותו עמוד, שרת Streamable HTTP מקבל את השדות הבאים:

שדה חובה מה הוא עושה
url כן כתובת השרת
bearer_token_env_var לא שם משתנה סביבה שהערך שלו נשלח בתור Bearer בכותרת Authorization
http_headers לא כותרות עם ערכים קבועים
env_http_headers לא כותרות שהערך שלהן נלקח ממשתני סביבה

ההגדרה המלאה לְשַׁגֵּר

פותחים את ~/.codex/config.toml ומוסיפים:

[mcp_servers.shager]
url = "https://app.shager.ai/api/mcp"
bearer_token_env_var = "SHAGER_API_KEY"

ובקובץ ההגדרות של המעטפת (shell) שלכם, למשל ~/.zshrc:

export SHAGER_API_KEY="shgr_live_XXXXXXXXXXXXXXXX"

זהו. אין צורך לכתוב את המילה Bearer בעצמכם, Codex מוסיף אותה. היתרון של bearer_token_env_var על פני http_headers עם ערך קבוע הוא שהמפתח לא יושב בקובץ ההגדרות. זה חשוב כשאתם מגבים את תיקיית הבית, מסנכרנים dotfiles לריפו, או סתם משתפים צילום מסך של הקונפיגורציה בערוץ של הצוות.

מתי בכל זאת להשתמש בשדה http_headers?

כמעט אף פעם, בהקשר של שַׁגֵּר. שַׁגֵּר צריך כותרת אחת בלבד, Authorization, והשדה bearer_token_env_var מכסה אותה. אם בעתיד תעבדו דרך שער פנימי של החברה שדורש כותרת ניתוב נוספת, זה המקום להוסיף אותה, ורצוי עם env_http_headers כדי שגם היא לא תישמר כטקסט גלוי.

תרשים: סוכן AI (Claude, Codex או Cursor) מתחבר לשַׁגֵּר דרך שרת MCP או REST API, ושַׁגֵּר מפיצה לעמודי פייסבוק, אינסטגרם ויוטיוב.
הסוכן מחליט מה לפרסם. שַׁגֵּר דואגת לחיבורים, לבדיקות, לפיזור ולמדידה.

הגדרה לפרויקט ספציפי

התיעוד של Codex מאפשר גם להגדיר שרתי MCP ברמת הפרויקט, בקובץ .codex/config.toml בתוך הריפו, בתנאי שהפרויקט מסומן כמהימן. לסוכנות שמחזיקה ריפו לכל לקוח גדול, זה נוח: בריפו של הלקוח מוגדר שרת שַׁגֵּר, ובריפו אחר לא.

כדאי לשלב את זה עם מפתח נפרד לכל לקוח. בְּשַׁגֵּר כל לקוח הוא סביבת עבודה (workspace), ומפתחות נוצרים ברמת הארגון. אם תרצו להפריד ברמת המפתח, צרו מפתח ייעודי לכל פרויקט בכתובת https://app.shager.ai/dashboard/agents ותנו לכל ריפו משתנה סביבה משלו, למשל SHAGER_API_KEY_CLIENT_A. ביומן הביקורת תוכלו לראות איזה מפתח ביצע כל פעולה.

בדיקה ראשונה

מפעילים codex בטרמינל שבו משתנה הסביבה מוגדר, ומקלידים /mcp. השרת shager צריך להופיע ברשימת השרתים הפעילים עם הכלים שלו. אם הוא לא שם, שתי הסיבות הנפוצות הן שהמשתנה לא נטען בחלון הנוכחי, או שגיאת TOML קטנה כמו מירכאות חסרות.

אחרי זה, בקשה ראשונה:

Use the shager MCP server. Run whoami and list_workspaces,
then list_channels for the first workspace. Summarize which
Facebook Pages, Instagram accounts and YouTube channels are connected.

אפשר כמובן לכתוב לסוכן בעברית. כתבתי כאן באנגלית כי הרבה צוותים מעדיפים את ההנחיות הטכניות לסוכן באנגלית ואת התוכן עצמו בעברית. מה שחשוב הוא שהסוכן יחזיר רשימה שתואמת את מה שאתם רואים בְּשַׁגֵּר.

כשמשהו לא עובד

מה רואים מה כנראה קרה מה עושים
השרת לא מופיע בפקודה /mcp שגיאת תחביר בקובץ TOML או שם בלוק שגוי בודקים שהכותרת היא בדיוק [mcp_servers.shager]
השרת מופיע, הקריאות נכשלות על אימות המשתנה ריק בחלון הנוכחי מריצים echo $SHAGER_API_KEY באותו טרמינל
create_post עובד, schedule_post נכשל למפתח אין publish או שה sandbox לא אושר אדם מאשר או יוצר מפתח עם הרשאה מתאימה
הודעת שגיאה עם הקוד rejected הרשת הייתה דוחה את הפוסט קוראים את הודעת השגיאה (message) ומתקנים פורמט, אורך או מדיה

השגיאות של שַׁגֵּר חוזרות תמיד עם code וגם message קריאים. סוכן טוב יודע לקרוא את ההודעה, לתקן ולנסות שוב, ולא רק לדווח שהייתה תקלה. שווה לכתוב לו את זה במפורש בהנחיות.

איפה Codex חזק במיוחד בעבודה מול שַׁגֵּר

Codex הוא סוכן קוד, והוא מרגיש הכי בבית כשהעבודה יושבת בריפו. שני דפוסים שעובדים טוב:

  1. תוכן כקבצים. מחזיקים בריפו תיקייה עם קובץ Markdown לכל קמפיין: בריף, מסרים, קישור לדף נחיתה ורשימת קבוצות חשבונות. מבקשים מהסוכן Codex לקרוא את הקובץ, לנסח כיתוב שונה לכל חשבון ולהעלות טיוטה אחת לְשַׁגֵּר עם create_post והשדה per_channel. הבריף נשאר בהיסטוריית git, והטיוטה מחכה בְּשַׁגֵּר לבדיקה.
  2. דף נחיתה ואז הפצה. Codex בונה או מעדכן דף נחיתה בקוד, ואחרי שהוא עולה, אותו סוכן מכין פוסט שהקישור שלו מופיע בשדה cta_url. שַׁגֵּר יוצר לכל חשבון קישור מקוצר ותגיות UTM משלו, כך שאחרי שבוע אפשר לבקש מהסוכן Codex להריץ get_analytics ולראות מאיזה עמוד הגיעו הלחיצות.

אם אתם מעדיפים לכתוב את כל הזרימה כקוד ולא דרך שרת MCP, אותן פעולות זמינות בממשק REST API, וקובץ OpenAPI נמצא בכתובת https://app.shager.ai/api/v1/openapi.json. זה שימושי במיוחד בסביבת CI, כשאין סוכן אינטראקטיבי אלא סקריפט שרץ לפי לוח זמנים.

כמה כללי בטיחות שכדאי להגדיר מראש

את הגבול האמיתי כדאי לשים בצד של שַׁגֵּר ולא רק בהגדרות האישור של הסוכן, כי הוא נשמר גם כשמישהו משנה את הקונפיגורציה המקומית. מפתח עם הרשאות read וגם write בלבד מאפשר לסוכן ליצור טיוטות בלי לתזמן או לפרסם. כשתרצו שהסוכן גם יתזמן, צרו מפתח חדש עם publish, החליפו את הערך של משתנה הסביבה, ובטלו את הישן.

שתי נקודות נוספות. המגבלה היא 120 קריאות בדקה לכל מפתח, וסוכן שמבצע get_post בלולאה על מאות פוסטים יכול להגיע אליה. עדיף לבקש ממנו list_posts עם סינון לפי סטטוס. ובנוסף, כשאתם מבקשים מהסוכן Codex לתזמן, ציינו זמן עם אזור זמן מפורש, למשל 2026-08-24T09:00:00+03:00. שַׁגֵּר מצפה לפורמט ISO 8601 עם offset, וזה חוסך את הטעות הקלאסית של פוסט שעולה בשש בבוקר במקום בתשע.

מי שעובד גם עם Claude Code יראה שההגדרה כמעט זהה, וההבדלים מפורטים במדריך לחיבור שַׁגֵּר אל Claude Code. ומי שמגיע מעולם ChatGPT ותוהה למה שם זה עוד לא עובד, ההסבר נמצא במדריך על שַׁגֵּר וגם ChatGPT. התמונה הכוללת של כל הכלים שמתחברים לְשַׁגֵּר מרוכזת בעמוד הסוכנים.

הצעד הבא אחרי חיבור עובד הוא להחליט מה Codex עושה לבד ומה מחכה לאדם. התחילו בטיוטות בלבד, עברו על עשר הראשונות, ורק אחרי זה תנו למפתח הרשאת publish.

שאלות נפוצות

Codex CLI תומך בשרתי MCP מרוחקים?

כן. לפי התיעוד של OpenAI, Codex תומך בשרתי Streamable HTTP עם השדה url בקובץ config.toml, ומאפשר להעביר טוקן Bearer ממשתנה סביבה דרך bearer_token_env_var. זה מספיק לחיבור מלא לְשַׁגֵּר.

אפשר להוסיף את שַׁגֵּר עם codex mcp add במקום לערוך קובץ?

הפקודה מקבלת --url, אבל התיעוד לא מציג בה דגל להעברת טוקן מסוג Bearer. לכן הדרך המומלצת היא להוסיף את הבלוק בקובץ config.toml ידנית, עם bearer_token_env_var.

המפתח נשמר בתוך config.toml?

לא, אם משתמשים בשדה bearer_token_env_var. הקובץ מכיל רק את שם המשתנה, והערך נקרא מהסביבה בזמן ההפעלה. כך אפשר לשתף את קובץ ההגדרות בלי לחשוף את המפתח.

רוצים לנסות את זה על החשבונות שלכם?

שַׁגֵּר מפיצה, מודדת ומקבלת אישור לקוח, הכול במקום אחד.