שכבות תעבורה ב-MCP: stdio, Streamable HTTP ו-SSE

כל חיבור MCP מעביר את אותן הודעות - בקשות, תגובות והתראות של JSON-RPC 2.0 - אבל הן יכולות לעבור בדרכים שונות. המפרט קורא להן שכבות תעבורה (transports), והרשומה של שרת במרשם מציינת באילו מהן הוא תומך.

שרתים מעל Streamable HTTP
16,864
שרתים מעל stdio (תהליך מקומי)
13,123
שרתים מעל SSE (HTTP + Server-Sent Events)
515

stdio: תוכנה במחשב שלך

ב-stdio, הלקוח מפעיל את השרת כתהליך בן (child process) באותו מחשב. הלקוח כותב הודעות לקלט הסטנדרטי של השרת וקורא תשובות מהפלט הסטנדרטי שלו, הודעת JSON-RPC אחת בכל שורה; השרת יכול לכתוב לוגים לפלט השגיאות הסטנדרטי. כשהלקוח סוגר את החיבור, התהליך מסתיים.

שום רכיב לא מאזין בפורט רשת, כך שאין כתובת URL שצריך להגן עליה - אבל התוכנה רצה עם ההרשאות של המשתמש עצמו ויכולה לקרוא כל מה שהמשתמש יכול לקרוא. שרתי stdio מותקנים מחבילות: npm, PyPI, אימג'ים של קונטיינרים, MCP Bundles ועוד.

Streamable HTTP: נקודת קצה אחת ברשת

Streamable HTTP, שהוצגה במהדורת המפרט מ-2025-03-26, משתמשת בנקודת קצה HTTPS אחת, כמו https://example.com/mcp. הלקוח שולח כל הודעה בבקשת HTTP POST. השרת משיב בתגובת JSON אחת, או פותח זרם של Server-Sent Events, שדרכו הוא יכול לשלוח כמה הודעות - למשל התראות על התקדמות - לפני התוצאה הסופית. הלקוח יכול גם לפתוח זרם GET כדי לקבל הודעות שהשרת יוזם בעצמו.

שרת יכול להקצות סשן, שמזוהה בכותרת Mcp-Session-Id שהלקוח שולח בחזרה בבקשות הבאות. מכיוון שמדובר ב-HTTPS רגיל, היא עובדת עם התחברות סטנדרטית - מפרט ההרשאות של MCP מבוסס על OAuth - ועם תשתית אינטרנט רגילה.

SSE: שכבת התעבורה הקודמת מעל HTTP

המהדורה הראשונה שפורסמה (2024-11-05) הגדירה שכבת תעבורה מעל HTTP שמבוססת על Server-Sent Events: הלקוח פותח חיבור GET ארוך טווח לזרם האירועים, האירוע הראשון של השרת מציין כתובת URL שנייה, והלקוח שולח לשם את ההודעות שלו ב-POST. מהדורה 2025-03-26 החליפה אותה ב-Streamable HTTP; לקוחות ושרתים יכולים להמשיך לתמוך בה לצורך תאימות לאחור, ולכן חלק מהשרתים מציינים את שתיהן.

באיזו מהן שרת משתמש

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

שרתי MCP לפי שכבת תעבורה · מרוחק או מקומי? · לעיון באינדקס ←

עוד: מה זה שרת MCP? · מה זה llms.txt? · איך עוזרי AI מוצאים ומזמינים נסיעות · איך הרישומים מאומתים · מרוחק או מקומי: באיזה סוג שרת MCP להשתמש · איך מוסיפים שרת MCP לעוזר AI · מה זה ה-MCP Registry הרשמי? · מה כותבים בקובץ llms.txt · OpenAPI לסוכני AI · איך עוזרי AI מוצאים זמינות לנסיעות · לפני שמחברים שרת MCP: רשימת בדיקה