במדריך הזה נסביר איך לארח שרת Model Context Protocol (MCP) עם העברת HTTP בסטרימינג ב-Cloud Run, ואיך לאמת לקוחות MCP. אם אתם משתמשים חדשים ב-MCP, כדאי לקרוא את המקורות הבאים:
MCP הוא פרוטוקול פתוח שמאפשר לסוכני AI לתקשר עם הסביבה שלהם בצורה אחידה. סוכן ה-AI מארח לקוח MCP, והכלים והמשאבים שאיתם הוא יוצר אינטראקציה הם שרתי MCP. לקוח ה-MCP יכול לתקשר עם שרת ה-MCP באמצעות שני סוגים שונים של העברה:
אתם יכולים לארח לקוחות ושרתים של MCP באותו מחשב מקומי, לארח לקוח MCP באופן מקומי ולגרום לו לתקשר עם שרתי MCP מרוחקים שמתארחים בפלטפורמת ענן כמו Cloud Run, או לארח גם את הלקוח וגם את השרת של MCP בפלטפורמת ענן.
ב-Cloud Run יש תמיכה באירוח של שרתי MCP עם העברת HTTP בסטרימינג, אבל לא בשרתי MCP עם העברת stdio.
בתרשים הבא אפשר לראות איך לקוח MCP מקבל את הכוונה של סוכן ה-AI ושולח בקשה סטנדרטית לשרתי MCP, תוך ציון הכלי שצריך להפעיל. אחרי ששרת ה-MCP מבצע את הפעולה ומאחזר את התוצאות, הוא מחזיר את התוצאה ללקוח ה-MCP בפורמט עקבי.
ההנחיות בדף הזה רלוונטיות אם אתם מפתחים שרת MCP משלכם או אם אתם משתמשים בשרת MCP קיים.
- אם אתם מפתחים שרת MCP משלכם, מומלץ להשתמש בערכת SDK לשרת MCP, כמו ערכות ה-SDK הרשמיות לשפות (TypeScript, Python, Go, Kotlin, Java, C#, Ruby או Rust) או FastMCP.
- אם אתם משתמשים בשרת MCP קיים, אתם יכולים למצוא רשימה של שרתי MCP רשמיים ושל הקהילה במאגר של שרתי MCP ב-GitHub. ב-Docker Hub יש גם רשימה של שרתי MCP.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- הגדרת סביבת הפיתוח של Cloud Run בפרויקט ב- Google Cloud .
- מוודאים שיש לכם את ההרשאות המתאימות לפריסת שירותים, ושהתפקידים אדמין ב-Cloud Run (
roles/run.admin) ומשתמש בחשבון שירות (roles/iam.serviceAccountUser) הוקצו לחשבון שלכם. -
נכנסים לדף IAM במסוף Google Cloud .
כניסה לדף IAM - בוחרים את הפרויקט.
- לוחצים על Grant access.
-
בשדה New principals, מזינים את מזהה המשתמש. בדרך כלל זו כתובת האימייל שמשמשת לפריסת שירות Cloud Run.
- בוחרים תפקיד מהרשימה Select a role.
- כדי לתת עוד תפקידים, לוחצים על Add another role ומוסיפים אותם.
- לוחצים על Save.
- PROJECT_NUMBER במספר הפרויקט ב- Google Cloud .
- PROJECT_ID במזהה הפרויקט ב- Google Cloud .
- PRINCIPAL עם החשבון שאליו מוסיפים את הקישור. בדרך כלל זו כתובת האימייל שמשמשת לפריסת השירות של Cloud Run.
- ROLE בתפקיד שאתם מוסיפים לחשבון הפריסה.
- למחירון של Cloud Run או למחשבון עלויות.
איך מקצים את התפקידים
המסוף
gcloud
כדי להקצות לחשבון את תפקידי ה-IAM הנדרשים בפרויקט:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=ROLE
מחליפים את:
לארח שרתי MCP מרוחקים מסוג SSE או HTTP שניתנים לסטרימינג
שרתי MCP שמשתמשים באירועים שנשלחים מהשרת (SSE) או בתעבורת HTTP בסטרימינג יכולים להתארח מרחוק מהלקוחות שלהם ב-MCP.
כדי לפרוס שרת MCP מהסוג הזה ב-Cloud Run, אתם יכולים לפרוס את שרת ה-MCP כקובץ אימג' של קונטיינר או כקוד מקור (בדרך כלל Node.js או Python), בהתאם לאופן שבו שרת ה-MCP ארוז.
קובצי אימג' של קונטיינרים
שרתי MCP מרוחקים שמופצים כקובצי אימג' של קונטיינרים הם שרתי אינטרנט שמאזינים לבקשות HTTP ביציאה ספציפית. כלומר, הם פועלים בהתאם לחוזה זמן הריצה של הקונטיינר של Cloud Run, ואפשר לפרוס אותם בשירות Cloud Run.
כדי לפרוס שרת MCP שנארז כקובץ אימג' של קונטיינר, צריך את כתובת ה-URL של קובץ האימג' של הקונטיינר ואת היציאה שבה הוא אמור לקבל בקשות. אפשר לפרוס אותם באמצעות הפקודה הבאה ב-CLI של gcloud:
gcloud run deploy --image IMAGE_URL --port PORT
מחליפים את:
-
IMAGE_URLבכתובת ה-URL של קובץ האימג' של הקונטיינר, לדוגמהus-docker.pkg.dev/cloudrun/container/mcp. PORTעם היציאה שבה הוא מאזין, לדוגמה3000.
מקורות
אפשר לפרוס ב-Cloud Run שרתי MCP מרוחקים שלא מסופקים כקובצי אימג' של קונטיינרים מהמקורות שלהם, במיוחד אם הם כתובים ב-Node.js או ב-Python.
משכפלים את מאגר Git של שרת ה-MCP:
git clone https://github.com/ORGANIZATION/REPOSITORY.git
עוברים לתיקיית הבסיס של שרת ה-MCP:
cd REPOSITORY
פורסים ב-Cloud Run באמצעות הפקודה הבאה ב-CLI של gcloud:
gcloud run deploy --source .
אחרי שפורסים את שרת ה-HTTP MCP ב-Cloud Run, שרת ה-MCP מקבל כתובת URL מסוג HTTPS, והתקשורת יכולה להשתמש בתמיכה המובנית של Cloud Run בסטרימינג של תגובות HTTP.
אימות לקוחות MCP לסוכני AI
בהתאם למקום שבו אתם מארחים את לקוח ה-MCP, עיינו בקטע הרלוונטי:
אימות לקוחות MCP מקומיים
אם סוכן ה-AI שמארח את לקוח ה-MCP פועל במחשב מקומי, משתמשים באחת מהשיטות הבאות כדי לאמת את לקוח ה-MCP:
מידע נוסף זמין במפרט של MCP בנושא אימות.
הרשאת הפעלה ב-IAM
כברירת מחדל, כתובת ה-URL של שירותי Cloud Run דורשת שכל הבקשות יאושרו באמצעות התפקיד Cloud Run Invoker (roles/run.invoker) ב-IAM. קישור מדיניות ה-IAM הזה מבטיח שנעשה שימוש במנגנון אבטחה חזק כדי לאמת את לקוח ה-MCP המקומי.
אחרי שפורסים את שרת ה-MCP בשירות Cloud Run באזור מסוים, מריצים את שרת ה-Proxy של Cloud Run במכונה המקומית כדי לחשוף באופן מאובטח את שרת ה-MCP המרוחק ללקוח באמצעות פרטי הכניסה שלכם:
gcloud run services proxy MCP_SERVER_NAME --region REGION --port=3000
מחליפים את:
- MCP_SERVER_NAME בשם של שירות Cloud Run.
- REGION באזור Google Cloudשבו פרסתם את השירות. לדוגמה,
europe-west1.
הפקודה של שרת ה-proxy של Cloud Run יוצרת שרת proxy מקומי ביציאה 3000 שמעביר בקשות לשרת ה-MCP המרוחק ומזריק את הזהות שלכם.
מעדכנים את קובץ התצורה של MCP בלקוח ה-MCP באמצעות הפרטים הבאים:
{
"mcpServers": {
"cloud-run": {
"url": "http://localhost:3000/sse"
}
}
}
אם לקוח ה-MCP שלכם לא תומך במאפיין url, אתם יכולים להשתמש בחבילת ה-npm של mcp-remote:
{
"mcpServers": {
"cloud-run": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"http://localhost:3000/sse"
]
}
}
}
טוקן של מזהה OIDC
בהתאם לשאלה אם לקוח ה-MCP חושף כותרות או משתמש בדרך לספק תעבורה מאומתת בהתאמה אישית, יכול להיות שכדאי לאמת את לקוח ה-MCP באמצעות טוקן של מזהה מסוג OIDC.
אתם יכולים להשתמש בספריות אימות שונות של Google כדי לקבל טוקן של מזהה מסביבת זמן הריצה, למשל Google Auth Library for Python.
האסימון הזה חייב לכלול את הצהרת הקהל הנכונה שתואמת לכתובת ה-URL של *.run.app בשירות המקבל, אלא אם אתם משתמשים בקהלים בהתאמה אישית. אתם צריכים גם לכלול את טוקן המזהה בבקשות של הלקוח, כמו Authorization: Bearer <token value>.
אם לקוח ה-MCP לא חושף כותרות או תעבורה, צריך להשתמש בשיטת אימות אחרת.
אימות לקוחות MCP מקומיים באמצעות IAP
בקטע הזה מוסבר איך לאמת לקוחות MCP מקומיים שפועלים ב-Cloud Run.
כדי ליצור את מדיניות התעבורה הנכנסת:
מקצים את התפקיד "הפעלת Cloud Run" (
roles/run.invoker) לסוכן השירות של IAP.gcloud run services add-iam-policy-binding SERVICE_NAME \ --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-iap.iam.gserviceaccount.com' \ --role='roles/run.invoker'מחליפים את מה שכתוב בשדות הבאים:
SERVICE_NAME: השם של השירות שרוצים להוסיף לו את קישור המדיניות
PROJECT_NUMBER: מספר הפרויקט שמכיל את השירות
מפעילים את IAP בשירות Cloud Run.
יצירה
כדי להפעיל אימות IAP לשירות חדש, מריצים את הפקודה הבאה:
gcloud run deploy SERVICE_NAME --image=MCP_SERVER_IMAGE --functional-type=MCP_SERVER \ --region=REGION \ --iap
מחליפים את מה שכתוב בשדות הבאים:
SERVICE_NAME: השם של השירות שרוצים להוסיף לו את קישור המדיניות
MCP_SERVER_IMAGE: הנתיב של קובץ האימג' של שרת ה-MCP
REGION: Google Cloud האזור שבו רוצים לפרוס את השירות, לדוגמהeurope-west1
עדכון
כדי להפעיל אימות IAP לשירות קיים, מריצים את הפקודה הבאה:
gcloud run services update SERVICE_NAME \ --region=REGION \ --functional-type=MCP_SERVER \ --iap
מחליפים את מה שכתוב בשדות הבאים:
SERVICE_NAME: שם השירות שרוצים לעדכן
REGION: Google Cloud האזור שבו פרסתם את השירות, לדוגמהeurope-west1
אימות לקוחות MCP שפועלים ב-Cloud Run
אם סוכן ה-AI שמארח את לקוח ה-MCP פועל ב-Cloud Run, אתם יכולים להשתמש באחת מהשיטות הבאות כדי לאמת את לקוח ה-MCP:
פריסת שרת ה-MCP כ-sidecar
אפשר לפרוס את שרת ה-MCP כ-sidecar במקום שבו לקוח ה-MCP פועל.
לא נדרש אימות ספציפי לתרחיש לדוגמה הזה, כי לקוח ה-MCP ושרת ה-MCP נמצאים באותו מכונה. הלקוח יכול להתחבר לשרת ה-MCP באמצעות יציאה ב-http://localhost:PORT. מחליפים את הערך PORT ביציאה אחרת מזו שמשמשת לשליחת בקשות לשירות Cloud Run.
אימות בין שירותים
אם שרת ה-MCP ולקוח ה-MCP פועלים כשירותי Cloud Run נפרדים, קראו את המאמר אימות בין שירותים.
שימוש ב-Cloud Service Mesh
סוכן שמארח לקוח MCP יכול להתחבר לשרת MCP מרוחק באמצעות Cloud Service Mesh. שימוש ב-Service mesh מפשט את התזמור של מיקרו-שירותים, כי הוא מטפל באימות ובניהול תעבורת נתונים באופן אוטומטי.
אפשר להגדיר לשירות של שרת ה-MCP שם מקוצר ברשת, והלקוח של ה-MCP יכול לתקשר עם שרת ה-MCP באמצעות השם המקוצר http://mcp-server. האימות מנוהל על ידי הרשת.
המאמרים הבאים
- אירוח סוכני AI ב-Cloud Run.
- מדריך לפיתוח ולפריסה של שרת MCP מרוחק ב-Cloud Run
- מבצעים את ה-Codelabs הבאים של MCP: