במדריך הזה נסביר איך ליצור ולפרוס שרת מרוחק של Model Context Protocol (MCP) ב-Cloud Run באמצעות העברה של HTTP שניתנת להזרמה. בשיטת התעבורה HTTP עם סטרימינג, שרת ה-MCP פועל כתהליך עצמאי שיכול לטפל בכמה חיבורי לקוח.
מטרות
במדריך הזה תלמדו:
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.
לפני שמתחילים
- נכנסים לחשבון 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.
מפעילים את Artifact Registry, Cloud Run Admin API ו-Cloud Build API.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידים- הגדרת סביבת הפיתוח של Cloud Run בפרויקט Google Cloud .
- מוודאים שיש לכם את ההרשאות המתאימות לפריסת שירותים, ושהתפקידים Cloud Run Admin (
roles/run.admin) ו-Service Account User (roles/iam.serviceAccountUser) הוקצו לחשבון שלכם. - מקצים לחשבון את התפקיד Cloud Run Invoker (הפעלת Cloud Run) (
roles/run.invoker). התפקיד הזה מאפשר לשרת ה-MCP המרוחק לגשת לשירות Cloud Run. -
נכנסים לדף 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: כתובת האימייל של החשבון שאתם מקצים לו את התפקיד.
- ROLE: התפקיד שאתם מוסיפים לחשבון של המשתמש שפורס את האפליקציה.
אם אתם כפופים למדיניות ארגונית של הגבלת דומיין שמגבילה הפעלות לא מאומתות של הפרויקט, תצטרכו לגשת לשירות הפרוס שלכם כמו שמתואר בקטע בדיקת שירותים פרטיים.
- מתקינים את Uv, מנהל פרויקטים וחבילות של Python.
איך נותנים את התפקידים
המסוף
gcloud
כדי להקצות לחשבון שלכם את תפקידי ה-IAM הנדרשים בפרויקט:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=ROLE
מחליפים את:
הכנת פרויקט Python
בשלבים הבאים מוסבר איך להגדיר את פרויקט Python באמצעות מנהל החבילות uv.
יוצרים תיקייה בשם
mcp-on-cloudrunכדי לאחסן את קוד המקור לפריסה:mkdir mcp-on-cloudrun cd mcp-on-cloudrunיוצרים פרויקט Python באמצעות הכלי
uvכדי ליצור קובץpyproject.toml:uv init --name "mcp-on-cloudrun" --description "Example of deploying an MCP server on Cloud Run" --bare --python 3.10הפקודה
uv initיוצרת את הקובץpyproject.tomlהבא:[project] name = "mcp-server" version = "0.1.0" description = "Example of deploying an MCP server on Cloud Run" readme = "README.md" requires-python = ">=3.10" dependencies = []יוצרים את הקבצים החדשים הנוספים הבאים:
-
server.pyלקוד המקור של שרת ה-MCP -
test_server.pyכדי לבדוק את השרת המרוחק - קובץ Dockerfile לפריסה ב-Cloud Run
touch server.py test_server.py Dockerfileספריית הפרויקט צריכה להכיל את המבנה הבא:
├── mcp-on-cloudrun │ ├── pyproject.toml │ ├── server.py │ ├── test_server.py │ └── Dockerfile-
יצירת שרת MCP לפעולות מתמטיות
כדי לספק הקשר חשוב לשיפור השימוש במודלים גדולים של שפה (LLM) באמצעות MCP, צריך להגדיר שרת MCP למתמטיקה באמצעות FastMCP. FastMCP מאפשר ליצור במהירות שרתי MCP ולקוחות באמצעות Python.
כדי ליצור שרת MCP לפעולות מתמטיות כמו חיבור וחיסור, פועלים לפי השלבים הבאים.
מריצים את הפקודה הבאה כדי להוסיף את FastMCP כתלות בקובץ
pyproject.toml:uv add fastmcp==2.13.1 --no-syncמוסיפים את קוד המקור הבא של שרת ה-MCP של המתמטיקה לקובץ
server.py:כדי להשתמש בכלי
uvלהרצת הקובץserver.py, צריך לכלול את הקוד הבא ב-Dockerfile:
פריסה ב-Cloud Run
אפשר לפרוס את שרת ה-MCP כקובץ אימג' של קונטיינר או כקוד מקור:
קובץ אימג' של קונטיינר
כדי לפרוס שרת MCP שמוגדר כקובץ אימג' של קונטיינר, צריך לפעול לפי ההוראות האלה.
יוצרים מאגר ב-Artifact Registry לאחסון קובץ האימג' של הקונטיינר:
gcloud artifacts repositories create remote-mcp-servers \ --repository-format=docker \ --location=us-central1 \ --description="Repository for remote MCP servers" \ --project=PROJECT_IDיוצרים את קובץ האימג' של הקונטיינר ומעבירים אותו בדחיפה ל-Artifact Registry באמצעות Cloud Build:
gcloud builds submit --region=us-central1 --tag us-central1-docker.pkg.dev/PROJECT_ID/remote-mcp-servers/mcp-server:latestפורסים את קובץ האימג' של קונטיינר שרת ה-MCP ל-Cloud Run:
gcloud run deploy mcp-server \ --image us-central1-docker.pkg.dev/PROJECT_ID/remote-mcp-servers/mcp-server:latest \ --region=us-central1 \ --no-allow-unauthenticated
מקור
אפשר לפרוס שרתי MCP מרוחקים ל-Cloud Run מהמקורות שלהם.
כדי לבצע פריסה מקוד המקור, מריצים את הפקודה הבאה:
gcloud run deploy mcp-server --no-allow-unauthenticated --region=us-central1 --source .
אימות לקוח MCP
אם פרסתם את השירות עם הדגל --no-allow-unauthenticated, כל לקוח MCP שמתחבר לשרת ה-MCP המרוחק שלכם צריך לעבור אימות.
מקצים לחשבון השירות את התפקיד Cloud Run Invoker (הפעלת Cloud Run) (
roles/run.invoker). הקישור הזה של מדיניות ניהול הזהויות והגישה (IAM) מוודא שמנגנון אבטחה חזק משמש לאימות של לקוח ה-MCP המקומי.מריצים את ה-proxy של Cloud Run כדי ליצור מנהרה מאומתת לשרת ה-MCP המרוחק במחשב המקומי:
gcloud run services proxy mcp-server --region=us-central1אם הפרוקסי של Cloud Run עדיין לא מותקן, הפקודה הזו תציג בקשה להוריד את הפרוקסי. פועלים לפי ההנחיות כדי להוריד ולהתקין את השרת הפרוקסי.
Cloud Run מאמת את כל התעבורה אל http://127.0.0.1:8080 ומעביר בקשות לשרת ה-MCP המרוחק.
בדיקת שרת ה-MCP המרוחק
כדי לבדוק את החיבור לשרת ה-MCP המרוחק ולהתחבר אליו, משתמשים בלקוח FastMCP וניגשים לכתובת ה-URL http://127.0.0.1:8080/mcp.
כדי לבדוק את מנגנון ההוספה וההפחתה ולהפעיל אותו, מבצעים את השלבים הבאים:
לפני שמריצים את שרת הבדיקה, מריצים את ה-proxy של Cloud Run.
יוצרים קובץ בדיקה בשם
test_server.pyומוסיפים את הקוד הבא:במסוף חדש, מריצים את שרת הבדיקה:
uv run test_server.pyהפלט הבא אמור להתקבל:
🛠️ Tool found: add 🛠️ Tool found: subtract 🪛 Calling add tool for 1 + 2 ✅ Result: 3 🪛 Calling subtract tool for 10 - 3 ✅ Result: 7
הסרת המשאבים
כדי להימנע מחיובים נוספים בחשבון Google Cloud , מוחקים את כל המשאבים שהצבתם באמצעות המדריך הזה.
מחיקת הפרויקט
אם יצרתם פרויקט חדש בשביל המדריך הזה, מוחקים את הפרויקט. אם השתמשתם בפרויקט קיים ואתם רוצים לשמור אותו בלי השינויים שהוספתם במדריך הזה, תצטרכו למחוק את המשאבים שיצרתם לצורך המדריך.
הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך.
כדי למחוק את הפרויקט:
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
מחיקת משאבי הדרכה
מוחקים את שירות Cloud Run שפרסתם במדריך הזה. שירותי Cloud Run לא צוברים עלויות עד שהם מקבלים בקשות.
כדי למחוק את שירות Cloud Run, מריצים את הפקודה הבאה:
gcloud run services delete SERVICE-NAME
מחליפים את SERVICE-NAME בשם השירות.
אפשר גם למחוק שירותים של Cloud Run מGoogle Cloud המסוף.
מסירים את הגדרת ברירת המחדל של האזור
gcloudשהוספתם במהלך ההגדרה של המדריך:gcloud config unset run/regionמסירים את הגדרות הפרויקט:
gcloud config unset project