פרק 3
שתי התעבורות
פרוטוקול MCP מבוסס על הודעות בתקן JSON-RPC 2.0. כדי שהודעות אלו יעברו בצורה אמינה בין המארח (Host) לבין השרת (Server), המפרט מגדיר שני אפיקי תעבורה (Transports) רשמיים:
- תעבורת
stdio(תהליך מקומי) - תעבורת
Streamable HTTP(שרת מרוחק ברשת)
הבחירה הנכונה בין שתי התעבורות תלויה במיקום השרת, בסוג המשאבים שהוא צורך ובאופן שבו אתם משתפים אותו עם הצוות שלכם.
תעבורת stdio (תהליך מקומי):
+---------------------+ stdin / stdout +---------------------+
| MCP Host | <====================> | Local Process |
| (Claude Code, Grok) | (JSON-RPC per line) | (Node.js / Python) |
+---------------------+ +---------------------+
תעבורת Streamable HTTP (שרת מרוחק):
+---------------------+ HTTP POST + SSE +---------------------+
| MCP Host | <====================> | Remote Web Server |
| (Claude Code, Grok) | (Auth Headers / OAuth)| (Cloud / SaaS / API)|
+---------------------+ +---------------------+#1. תעבורת stdio (תהליך מקומי)
בתעבורת stdio, אפליקציית המארח מפעילה תוכנית מקומית כתהליך בן (Subprocess) ומתקשרת איתה ישירות דרך ערוצי הקלט הסטנדרטי והפלט הסטנדרטי של מערכת ההפעלה:
- המארח כותב הודעת בקשת JSON-RPC לערוץ ה-
stdinשל השרת. - השרת קורא את הבקשה, מבצע את הפעולה ומחזיר את תשובת ה-JSON-RPC דרך ערוץ ה-
stdout. - כל הודעה מועברת בשורה יחידה (Newline-delimited JSON).
#דוגמאות להוספת שרת stdio
הוספה ב-Grok CLI:
grok mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem /workspace/projectהוספה ב-Claude Code:
claude mcp add --transport stdio airtable -- npx -y airtable-mcp-serverהוספה עם משתנה סביבה ייעודי (לדוגמה חיבור ל-PostgreSQL):
claude mcp add --env DATABASE_URL=postgres://user:pass@localhost:5432/mydb --transport stdio pg -- npx -y @modelcontextprotocol/server-postgres#החשיבות המכרעת של מפריד המקפים הכפול (--)
שימו לב לתו -- המופיע בפקודות:
- כל הדגלים שנכתבים לפני ה-
--שייכים ללקוח ה-CLI עצמו (כמו--transport stdioאו--env). - כל הפקודות והארגומנטים שנכתבים אחרי ה-
--מועברים כפי שהם לתהליך שמופעל (למשלnpx -y package-name /path). - אם תשמיטו את ה-
--, כלי ה-CLI ינסה לפענח את הדגלים של השרת כדגלים פנימיים שלו, וההפעלה תיכשל.
#יתרונות וחסרונות של stdio
יתרונות:
- זמן תגובה מיידי ללא תקורת רשת.
- בידוד מלא: התהליך רץ על המכונה שלכם ואינו נגיש לרשת חיצונית.
- אין צורך לפתוח פורטים, להגדיר חומות אש או לנהל תעודות SSL.
חסרונות:
- דורש שסביבת ההרצה (Node.js או Python) תהיה מותקנת מקומית על המחשב.
- הפעלה ראשונית של חבילות דרך
npxעשויה לקחת כמה שניות (הפעלה קרה). - קשה לשתף ישירות בין מחשבים שונים בצוות אם הנתיבים המקומיים אינם זהים.
#2. תעבורת Streamable HTTP (שרת מרוחק)
תעבורת Streamable HTTP מיועדת לשרתים שרצים בענן, בתוך רשת ארגונית פנימית, או כשירותי SaaS של צד שלישי (כגון Sentry או Linear).
בתעבורה זו:
- המארח שולח בקשות HTTP POST אל נקודת הקצה (Endpoint) של השרת.
- השרת יכול להזרים תשובות בזמן אמת באמצעות מנגנון Server-Sent Events (SSE).
- האימות מתבצע באמצעות כותרות HTTP סטנדרטיות (Bearer Token, API Keys) או דרך זרימת OAuth 2.0 אינטראקטיבית.
#דוגמאות להוספת שרת HTTP
הוספה ב-Claude Code עבור שירות ענן עם אימות טוקן:
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp \
--header "Authorization: Bearer sntrys_your_token_here"הוספה ב-Grok CLI עם אימות OAuth (נפתח דפדפן לאישור):
grok mcp add --transport http linear https://mcp.linear.app/mcpהוספה של שרת פנימי הרץ על שרת ארגוני מאובטח:
claude mcp add --transport http n8n https://n8n.internal.example.com/mcp-server/http \
--header "X-N8N-API-KEY: secret_key_123"#השוואה מסכמת: stdio מול Streamable HTTP
| מאפיין | תעבורת stdio | תעבורת Streamable HTTP |
|---|---|---|
| מיקום השרת | מקומי על המחשב (Subprocess) | מרוחק בענן או שרת ברשת |
| ערוץ תקשורת | Standard I/O (צינורות מערכת הפעלה) | רשת (HTTP POST + SSE) |
| מנגנון אימות | הרשאות המשתמש המקומי במערכת | Bearer Token, כותרות HTTP, OAuth 2.0 |
| צורך בסביבת הרצה | דורש Node.js / Python מותקנים מקומית | אין צורך בהתקנה מקומית, רק כתובת URL |
| מתאים במיוחד עבור | גישה לקבצים מקומיים, Git, מסדי נתונים מקומיים | שירותי SaaS, מערכות מעקב שגיאות, שרתי צוות |
| קלות שיתוף בצוות | בינונית (תלויה בנתיבי המחשב) | גבוהה מאוד (כתובת URL אחידה לכל הפרויקט) |
#מלכודת נפוצה: עטיפת שרתים ב-mcp-remote
בעבר, כאשר כלי מארח מסוימים תמכו רק ב-stdio, משתמשים נהגו לעטוף שרתי HTTP מרוחקים באמצעות חבילת עזר מקומית כמו npx mcp-remote https://....
כיום, הן קלוד קוד והן גרוק CLI תומכים ב-Streamable HTTP באופן ישיר וטבעי. שימוש בעטיפת ביניים כזו רק מוסיף שכבת כשל, מעכב את זמן העלייה ועלול לפגום בתהליך האימות של OAuth. השתמשו תמיד בדגל --transport http הישיר.