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

שַׁגֵּר בתוך Cursor: קובץ mcp.json אחד, והסוכן שבונה את דף הנחיתה גם מפיץ אותו

מדריך לחיבור שַׁגֵּר אל Cursor דרך .cursor/mcp.json: כתובת השרת, כותרת Authorization עם משתנה סביבה, הבדל בין הגדרה לפרויקט לגלובלית, ותרחיש עבודה שלם מהקוד להפצה.

7 דק׳ קריאה

קובץ mcp.json של Cursor עם שרת shager, כתובת וכותרת Authorization שקוראת את המפתח ממשתנה סביבה.
אותו קובץ עובד לכל הפרויקט או גלובלית.

כדי לחבר את שַׁגֵּר אל Cursor יוצרים קובץ .cursor/mcp.json בפרויקט (או ~/.cursor/mcp.json לכל הפרויקטים), מגדירים בו שרת בשם shager עם "url": "https://app.shager.ai/api/mcp", ומוסיפים אובייקט headers עם "Authorization": "Bearer ${env:SHAGER_API_KEY}". Cursor קורא את המפתח ממשתנה הסביבה, מתחבר לשרת דרך Streamable HTTP, והכלים של שַׁגֵּר זמינים לסוכן בצ'אט. מהרגע הזה אותו סוכן שעורך לכם את הקוד יכול גם להכין טיוטות הפצה לעשרות חשבונות.

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

איך נראית ההגדרה?

התיעוד של Cursor על MCP מתאר שני מיקומים לקובץ ההגדרות ותחביר אחד לשרתים מרוחקים: שדה url ואובייקט headers אופציונלי, תחת mcpServers. עבור שַׁגֵּר:

{
  "mcpServers": {
    "shager": {
      "url": "https://app.shager.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer ${env:SHAGER_API_KEY}"
      }
    }
  }
}

התחביר ${env:NAME} חשוב כאן. לפי התיעוד, Cursor מחליף משתני סביבה בשדות url וגם headers, כך שהמפתח לא נשמר בקובץ. בלי זה, המפתח היה יושב כטקסט גלוי בתיקייה שבדרך כלל נכנסת למאגר git.

פרויקט או גלובלי?

מיקום מתי לבחור
.cursor/mcp.json בתוך הפרויקט כשהחיבור רלוונטי לריפו מסוים, למשל אתר של לקוח, וכל מי שעובד בו צריך אותו
~/.cursor/mcp.json בתיקיית הבית כשאתם רוצים את שַׁגֵּר בכל פרויקט שאתם פותחים

בסוכנות שבה כל לקוח מקבל ריפו משלו לאתר ולדפי הנחיתה, ההגדרה לפרויקט היא הבחירה הטבעית. הקובץ נכנס למאגר git, וכל מפתח בצוות מגדיר אצלו את SHAGER_API_KEY. אם תרצו להפריד בין לקוחות גם ברמת המפתח, תנו לכל ריפו שם משתנה אחר, למשל SHAGER_API_KEY_ACME, ועדכנו את הקובץ בהתאם.

המשתנה צריך להיות זמין לעורך Cursor

נקודה שמכשילה אנשים: משתנה סביבה שהגדרתם בטרמינל אחד לא תמיד זמין לאפליקציה שנפתחה מה Dock. אם השרת לא מתחבר, בדקו שהמשתנה מוגדר בקובץ ההגדרות של המעטפת (shell) שנטען בכניסה (למשל ~/.zshrc), ונסו לפתוח את Cursor מהטרמינל עם הפקודה cursor . כדי שיירש את הסביבה. זה פתרון כללי לאפליקציות על macOS, לא משהו ייחודי לְשַׁגֵּר.

מאיפה מגיע המפתח?

שתי אפשרויות. אדם בצוות נכנס לכתובת https://app.shager.ai/dashboard/agents, יוצר מפתח ומגדיר לו הרשאות מתוך read, write או publish. או שהסוכן עצמו נרשם דרך נקודת הקצה (endpoint) של ההרשמה העצמית, מקבל sandbox עם מפתח, ומעביר לאדם קישור לאישור. המסלול השני שימושי כשמתחילים פרויקט חדש ורוצים שהסוכן יכין סביבת עבודה, יעלה מדיה ויכין טיוטות עוד לפני שמישהו פתח חשבון. הפירוט נמצא במדריך ההרשמה העצמית, והמתכון הטכני המלא לסוכנים יושב בקובץ /auth.md.

תרשים: בריף, טיוטה לכל חשבון, אישור לקוח, פרסום מפוזר ודוח קליקים לכל חשבון.
חמישה שלבים קבועים. הסוכן מריץ את כולם, ואדם עוצר רק באישור.

בדיקה ראשונה

אחרי שמירת הקובץ, נכנסים להגדרות MCP של Cursor ומוודאים שהשרת shager מופיע כמחובר עם רשימת כלים. אחר כך, בצ'אט של הסוכן:

Use the shager tools. Run whoami, then list_workspaces and
list_channels for the workspace named "Acme". Tell me which
accounts are connected and which network each one is on.

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

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

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

תרחיש עבודה: מדף נחיתה להפצה בלי לצאת מהעורך

כך נראית זרימה טיפוסית, והיא מדגימה למה Cursor וְשַׁגֵּר משלימים זה את זה:

  1. בונים את הדף. מבקשים מהסוכן ליצור דף נחיתה לקמפיין, למשל מבצע סתיו של רשת מרפאות שיניים. הסוכן כותב את הקומפוננטה, את הטקסטים ואת הטופס.
  2. מוציאים את המסר מהקוד. אחרי שהדף עלה, מבקשים מהסוכן לקרוא את הקובץ ולסכם את ההצעה, הקהל וקריאה לפעולה בשלוש שורות. זה הבריף לפוסטים, והוא נגזר ממה שבאמת כתוב בדף ולא מזיכרון.
  3. מכינים מדיה. אם יש סרטון קצר באחסון ציבורי, הסוכן מריץ upload_media_from_url עם width, height וגם duration_ms, כדי שֶׁשַּׁגֵּר יוכל לוודא שהסרטון מתאים לפורמט Reel ולפורמט Short לפני השליחה.
  4. יוצרים טיוטה ברמת החשבון. create_post עם group_ids של קבוצת הסניפים, per_channel עם כיתוב שונה לכל סניף, cta_url שמפנה לדף החדש, וגם first_comment שמזמין ללחוץ. שַׁגֵּר יוצר לכל חשבון קישור מקוצר ותגיות UTM משלו, כשהשדה utm_content מזהה את החשבון.
  5. שולחים לאישור. אם הלקוח מאשר תוכן לפני פרסום, request_approval שולח לו קישור לאישור בלי צורך להתחבר.

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

ניסוח שונה לכל חשבון זה לא קישוט

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

הרשאות: מה Cursor יכול לעשות בשמכם

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

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

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

שאלות נפוצות

Cursor תומך בשרתי MCP מרוחקים עם כותרות?

כן. לפי התיעוד של Cursor, שרת מרוחק מוגדר עם url ועם אובייקט headers, ואפשר להשתמש בתחביר ${env:NAME} כדי לקרוא ערכים ממשתני סביבה. זה כל מה שֶׁשַּׁגֵּר צריך.

האם אפשר לשים את המפתח ישירות בקובץ mcp.json?

טכנית כן, אבל לא כדאי. הקובץ נמצא בדרך כלל בתוך הריפו, ומפתח שנכנס למאגר git קשה מאוד למחוק מההיסטוריה. משתנה סביבה פותר את זה בלי מאמץ.

הסוכן בעורך Cursor יכול לפרסם בלי אישור שלי?

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

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

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