7. חיבור לכלים חיצוניים (MCP)
Codex יכול לכתוב ולהריץ קוד, אבל מחוץ לפרויקט שלכם הוא "עיוור" — הוא לא יודע לגשת לתיעוד עדכני, לפיגמה, לדפדפן או ל-GitHub שלכם. MCP (Model Context Protocol) הוא הפרוטוקול שפותח לו את הדלת לכלים ולמידע חיצוניים. בפרק הזה נלמד מה זה, איך מחברים שרת MCP ל-Codex, ואיך שומרים על שליטה ועל בטיחות.
מה זה MCP, בשפה פשוטה
MCP הוא תקן פתוח שמחבר מודלים לכלים ולהקשר (context) חיצוניים. שרת MCP הוא תוכנה קטנה שחושפת בפני Codex יכולות מוגדרות: לדוגמה, "חפש בתיעוד של React", "קרא קובץ מפיגמה" או "פתח דף בדפדפן ועשה לו צילום מסך". Codex מדבר עם השרת דרך הפרוטוקול, מקבל רשימת כלים, ויכול לקרוא להם בדיוק כמו שהוא קורא לכלים המובנים שלו (קריאת קבצים, הרצת פקודות וכו').
ה-CLI, תוסף ה-IDE ואפליקציית הדסקטופ של ChatGPT חולקים אותה הגדרת MCP. מגדירים שרת פעם אחת, והוא זמין בכל הממשקים.
שני סוגי שרתים
| סוג | איך מתחברים | אימות |
|---|---|---|
| STDIO | Codex מריץ תהליך מקומי (פקודה בטרמינל) ומדבר איתו | משתני סביבה, אם צריך |
| Streamable HTTP | Codex מתחבר לכתובת רשת (URL) | Bearer token, OAuth (כולל התחברות אוטומטית), או session של ChatGPT לשרתים מהימנים |
Codex גם קורא את שדה ה-instructions שהשרת מחזיר באתחול, ומשתמש בו כהנחיה כללית לגבי איך להשתמש בכלים שלו — לצד רשימת הכלים עצמה.
איך מוסיפים שרת MCP
הדרך המהירה היא הפקודה codex mcp add:
codex mcp add <server-name> --env VAR1=VALUE1 --env VAR2=VALUE2 -- <stdio server-command>
לדוגמה, לחבר את Context7 — שרת MCP חינמי לתיעוד מפתחים עדכני:
codex mcp add context7 -- npx -y @upstash/context7-mcp
מכאן, בכל שיחה עם Codex (בטרמינל, ב-IDE או בדסקטופ) הכלים של context7 זמינים לו אוטומטית.
ניהול משורת הפקודה
codex mcp list— רשימת השרתים המוגדרים.codex mcp --help— כל הפקודות הזמינות.codex mcp login <server-name>— מתחיל תהליך התחברות OAuth, לשרתים שתומכים בכך (עובד רק עם שרתי HTTP).
מה-TUI (המצב האינטראקטיבי)
בתוך סשן codex רגיל, הפקודה /mcp מציגה את השרתים והכלים הזמינים לשיחה הנוכחית. /mcp verbose מוסיף פרטי אבחון מפורטים לכל שרת.
הגדרה ידנית ב-config.toml
לשליטה מדויקת יותר, עורכים ישירות את ~/.codex/config.toml, או קובץ מקומי לפרויקט .codex/config.toml (רק בפרויקטים מהימנים). כל שרת מקבל טבלת [mcp_servers.<server-name>] משלו.
שרת STDIO
[mcp_servers.context7]
command = "npx"
args = ["-y", "@upstash/context7-mcp"]
env_vars = ["LOCAL_TOKEN"]
[mcp_servers.context7.env]
MY_ENV_VAR = "MY_ENV_VALUE"
| שדה | משמעות |
|---|---|
command (חובה) | הפקודה שמפעילה את השרת |
args | ארגומנטים לפקודה |
env | משתני סביבה קבועים שמוגדרים לשרת |
env_vars | משתני סביבה קיימים שמותר להעביר לשרת |
cwd | תיקיית עבודה להפעלת השרת |
שרת Streamable HTTP
[mcp_servers.figma]
url = "https://mcp.figma.com/mcp"
bearer_token_env_var = "FIGMA_OAUTH_TOKEN"
http_headers = { "X-Figma-Region" = "us-east-1" }
| שדה | משמעות |
|---|---|
url (חובה) | כתובת השרת |
auth | oauth (ברירת מחדל) לפרטי OAuth שמורים, או chatgpt לשימוש בסשן ChatGPT הנוכחי לשרתי OpenAI מהימנים |
bearer_token_env_var | שם משתנה סביבה שמחזיק Bearer token |
http_headers | כותרות HTTP קבועות |
env_http_headers | כותרות HTTP שערכן נשאב ממשתני סביבה |
אפשרויות נוספות שרלוונטיות לכל שרת
| שדה | משמעות |
|---|---|
enabled | false משבית שרת בלי למחוק אותו |
required | true גורם להפעלה להיכשל אם השרת הזה לא עולה |
enabled_tools / disabled_tools | רשימת היתר / רשימת חסימה לכלים ספציפיים מהשרת (החסימה חלה אחרי ההיתר) |
default_tools_approval_mode | מדיניות אישור ברירת מחדל לכלי השרת: auto, prompt, writes (שואל רק על כלים שאינם read-only) או approve |
tools.<tool>.approval_mode | דריסת מדיניות האישור לכלי בודד |
startup_timeout_sec | זמן המתנה עד שהשרת עולה. ברירת מחדל: 10 שניות |
tool_timeout_sec | זמן המתנה להרצת כלי בודד. ברירת מחדל: 60 שניות |
[mcp_servers.chrome_devtools]
url = "http://localhost:3000/mcp"
enabled_tools = ["open", "screenshot"]
default_tools_approval_mode = "prompt"
startup_timeout_sec = 20
[mcp_servers.chrome_devtools.tools.open]
approval_mode = "approve"
אחרי שהגדרתם שרת, הוא זמין גם באפליקציית הדסקטופ וגם בתוסף ה-IDE, בלי להגדיר שוב. אפשר גם לפצל בין הגדרה גלובלית (~/.codex/config.toml) לפרויקט ספציפי (.codex/config.toml), למשל שרת MCP שרלוונטי רק לפרויקט אחד.
שרתי MCP שימושיים להתחלה
| שרת | מה הוא נותן |
|---|---|
| OpenAI Docs MCP | חיפוש וקריאה בתיעוד המפתחים של OpenAI |
| Context7 | גישה לתיעוד מפתחים עדכני של ספריות ופריימוורקים |
| Figma (מקומי או מרוחק) | גישה לעיצובים בפיגמה |
| Playwright | שליטה ובדיקה של דפדפן |
| Chrome DevTools | שליטה ובדיקה של כרום |
| Sentry | גישה ללוגים ולשגיאות ב-Sentry |
| GitHub | ניהול PR-ים ו-issues, מעבר למה ש-git מאפשר |
אבטחה: לסמוך רק על מה שאתם מכירים
שרת MCP הוא קוד חיצוני שמקבל גישה לכלים, ולפעמים לטוקנים ולמידע רגיש. Codex לא מבצע ביקורת אבטחה על שרתי צד שלישי. חברו רק שרתים ממקורות ידועים ואמינים, בדקו מה הם דורשים לפני שאתם מזינים מפתחות API, והשתמשו ב-default_tools_approval_mode כדי לשמור על אישור ידני לפעולות כתיבה כשאתם לא בטוחים.
שדה ה-instructions שהשרת שולח, ותוצאות הכלים שלו, הם תוכן שמגיע ממקור חיצוני — בדיוק כמו דף אינטרנט. התייחסו אליהם בזהירות דומה, ואל תניחו שכל מה שהשרת "מבקש" מ-Codex הוא בהכרח לגיטימי.
OAuth: CIMD ו-Dynamic Client Registration
לשרתי HTTP שדורשים OAuth, Codex תומך ב-Client ID Metadata Documents (CIMD) וב-Dynamic Client Registration (DCR). כברירת מחדל הוא בוחר CIMD כשהשרת מפרסם תמיכה מתאימה, ואחרת עובר ל-DCR. אפשר לבחור שיטה באופן ידני להתחברות בודדת:
codex mcp login <server-name> --oauth-client-registration cimd
codex mcp login <server-name> --oauth-client-registration dcr
אם ל-authorization server יש client ID רשום מראש, מוסיפים אותו בהוספת השרת:
codex mcp add example --url https://mcp.example.com --oauth-client-id my-client
Codex מציג את כתובת ה-callback שצריך לרשום אצל הספק, ושומר אותה יחד עם ה-client ID ב-config.toml:
[mcp_servers.example]
url = "https://mcp.example.com"
[mcp_servers.example.oauth]
client_id = "my-client"
callback_url = "http://127.0.0.1/callback"
לכתובת callback מותאמת, למשל כשעובדים מול Devbox מרוחק, אפשר לקבוע כתובת ופורט גלובליים:
mcp_oauth_callback_port = 5555
mcp_oauth_callback_url = "https://devbox.example.internal/callback"
שרתי MCP שמגיעים מ-Plugins
Plugin מותקן יכול לכלול שרת MCP משלו (ראו פרק 8: Skills ו-Plugins). במקרה כזה השרת מופעל על ידי ה-Plugin עצמו, וההגדרות שלכם שולטות רק בהפעלה/כיבוי ובמדיניות הכלים:
[plugins."sample@test".mcp_servers.sample]
enabled = true
default_tools_approval_mode = "prompt"
enabled_tools = ["read", "search"]
מגבלת זמן טעינה לשרתים אופציונליים
ההגדרה הגלובלית mcp_optional_startup_grace_ms (ברירת מחדל: 1000 מילישניות) קובעת כמה זמן Codex ממתין לשרתים לא-חובה בבניית רשימת הכלים הראשונית. שרתים עם required = true תמיד ממתינים לפי startup_timeout_sec שלהם.
- MCP מחבר את Codex לכלים ולמידע חיצוניים: תיעוד, פיגמה, דפדפן, GitHub ועוד.
- שני סוגי שרתים: STDIO (תהליך מקומי) ו-Streamable HTTP (כתובת רשת, עם אפשרות OAuth).
- הוספה מהירה:
codex mcp add <name> -- <command>. ניהול:codex mcp list,/mcpבתוך סשן. - הגדרה מדויקת יותר דרך
config.toml, כולל מדיניות אישור לכל כלי וכלי בנפרד. - חברו רק שרתים ממקורות אמינים — הם רצים בהרשאות שלכם ותוכן שהם מחזירים הוא תוכן חיצוני, לא הוראה סמכותית.
התוכן באתר נועד למידע כללי בלבד ואינו מהווה ייעוץ מקצועי, הצעה או התחייבות. נעשה מאמץ לדייק, אך ייתכנו שינויים, טעויות או חוסר עדכניות, והשימוש במידע הוא באחריות המשתמש. ככל שהדין מתיר, האתר ובעליו אינם אחראים לנזק שייגרם מהסתמכות על המידע. קישורים לאתרים חיצוניים הם באחריות אותם אתרים, וככל שקיימים קישורי שותפים, ייתכן שהאתר יקבל עמלה ללא תוספת עלות עבורכם. התוכן מוגן בזכויות יוצרים (חוק זכות יוצרים, התשס״ח-2007) ואין להעתיקו ללא רשות. שמות מותגים וסימני מסחר שייכים לבעליהם. ראו גם תקנון האתר ומדיניות הפרטיות.