במאמר הזה מוסבר איך להטמיע ולפרוס שרת Model Context Protocol (MCP) באירוח עצמי כדי לאפשר איסוף של נתוני טלמטריה. בדוגמה במסמך הזה נבנה שרת MCP באמצעות FastMCP ונפרוס את שרת ה-MCP באמצעות Cloud Run. FastMCP כולל מכשור OpenTelemetry שאוסף טלמטריה מכל פעולות ה-MCP.
במאמר הזה מוסבר איך לבצע את השלבים הבאים:
- הכנת פרויקט Python באמצעות מנהל החבילות
uv. - יצירת שרת MCP לפעולות מתמטיות.
- פריסה ב-Cloud Run.
- אימות לקוח MCP.
- בדיקת שרת ה-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.
מפעילים את ממשקי ה-API של Artifact Registry, Cloud Run, Cloud Build, Telemetry, Cloud Logging, Cloud Monitoring ו-Cloud Trace.
תפקידים שנדרשים להפעלת ממשקי 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_ID: מזהה הפרויקט.
- PRINCIPAL: מזהה של חשבון המשתמש שרוצים להקצות לו את התפקיד. בדרך כלל, מזהי החשבונות הראשיים מופיעים בפורמט הבא:
PRINCIPAL-TYPE:ID. לדוגמה,user:my-user@example.com. רשימה מלאה של הפורמטים האפשריים שלPRINCIPALמופיעה במאמר מזהים של חשבונות משתמשים. - ROLE: תפקיד IAM.
אם אתם נמצאים תחת מדיניות ארגונית של הגבלת דומיין שמגבילה הפעלות לא מאומתות של הפרויקט, אתם צריכים לגשת לשירות הפרוס שלכם כמו שמתואר במאמר בדיקת שירותים פרטיים.
- מתקינים את 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. -
otel_setup.pyכדי להגדיר את OpenTelemetry. test_server.pyכדי לבדוק את השרת באירוח עצמי.- קובץ Dockerfile לפריסה ב-Cloud Run.
touch server.py otel_setup.py test_server.py Dockerfileספריית הפרויקט צריכה להכיל את המבנה הבא:
├── mcp-on-cloudrun │ ├── pyproject.toml │ ├── otel_setup.py │ ├── server.py │ ├── test_server.py │ └── Dockerfile-
יצירת שרת MCP לפעולות מתמטיות
בקטע הזה מגדירים שרת MCP למתמטיקה באמצעות FastMCP. FastMCP מאפשר ליצור במהירות שרתי MCP ולקוחות באמצעות Python.
כדי ליצור שרת MCP לפעולות מתמטיות כמו חיבור וחיסור, פועלים לפי השלבים הבאים.
מריצים את הפקודה הבאה כדי להוסיף את FastMCP ואת יחסי התלות הנדרשים של OpenTelemetry לקובץ
pyproject.toml:uv add fastmcp==3.2.0 opentelemetry-api==1.40.0 opentelemetry-sdk==1.40.0 opentelemetry-exporter-otlp-proto-grpc==1.40.0 --no-syncמוסיפים את קוד ההגדרה הבא של OpenTelemetry לקובץ
otel_setup.py:מוסיפים את קוד המקור הבא של שרת ה-MCP של המתמטיקה לקובץ
server.py:כדי להשתמש בכלי
uvלהרצת הקובץserver.py, צריך לכלול את הקוד הבא ב-Dockerfile:
פריסה ב-Cloud Run
אפשר לפרוס את שרת ה-MCP כקובץ אימג' של קונטיינר או כקוד מקור:
קובץ אימג' של קונטיינר
כדי לפרוס שרת MCP שמוגדר כקובץ אימג' של קונטיינר, צריך לפעול לפי ההוראות האלה.
יוצרים מאגר ב-Artifact Registry לאחסון קובץ האימג' של הקונטיינר:
gcloud artifacts repositories create self-hosted-mcp-servers \ --repository-format=docker \ --location=us-central1 \ --description="Repository for self-hosted MCP servers" \ --project=PROJECT_IDיוצרים את קובץ האימג' של הקונטיינר ומעבירים אותו בדחיפה ל-Artifact Registry באמצעות Cloud Build:
gcloud builds submit --region=us-central1 --tag us-central1-docker.pkg.dev/PROJECT_ID/self-hosted-mcp-servers/mcp-server:latestפורסים את קובץ האימג' של קונטיינר שרת ה-MCP ל-Cloud Run:
gcloud run deploy mcp-server \ --image us-central1-docker.pkg.dev/PROJECT_ID/self-hosted-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 המקומי.מריצים את הפרוקסי של 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
הצגת נתוני הטלמטריה
בקטע הזה מוסבר איך אפשר לראות את הנתונים של היומן, המדדים והמעקב שנוצרים בשרת MCP באירוח עצמי.
לפני שמתחילים
כדי לקבל את ההרשאות שדרושות להצגת נתוני היומן, המדדים והמעקב, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
- כלי הצפייה ביומנים (
roles/logging.viewer) - צפייה ב-Monitoring (
roles/monitoring.viewer) - משתמש Cloud Trace (
roles/cloudtrace.user)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
צפייה בטלמטריה
כדי ללמוד איך לצפות בנתוני היומן, המדדים והמעקב, אפשר לעיין במאמרים הבאים:
נתוני יומן
במסוף Google Cloud , נכנסים לדף Logs Explorer:
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Logging.
מידע נוסף על השימוש בדף Logs Explorer מופיע במאמר הצגה וניתוח של יומנים.
נתוני מדדים
נכנסים לדף leaderboard Metrics explorer במסוף Google Cloud :
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שבה הכותרת המשנית היא Monitoring.
מידע נוסף על השימוש בדף Metrics Explorer זמין במאמר יצירת תרשימים באמצעות Metrics Explorer.
נתוני מעקב
נכנסים לדף Trace explorer במסוף Google Cloud :
אפשר גם להשתמש בסרגל החיפוש כדי למצוא את הדף הזה.
בצילום המסך הבא מוצג החלונית פרטים בדף Trace Explorer, שבו מוצגים טווחי מעקב שנוצרו מפעולות tools/call:
מידע נוסף על השימוש בדף Trace Explorer מופיע במאמר חיפוש עקבות וניתוח שלהם.