העברה ממקומי לענן: העברת אפליקציות Full-Stack באמצעות Gemini CLI ו-Cloud SQL MCP

1. מבוא

הכירו את AllStrides, פלטפורמה לניהול אירועים מקצה לקצה לקהילות של חובבי כושר. למרות שיש לו הרבה תכונות, המצב הנוכחי שלו הוא 'רק מקומי'. הוא מסתמך על מסד נתונים מקומי של SQLite ועל הפעלה ידנית של Node.js. כדי שהקהילה תגדל, AllStrides צריכה את הגודל, האמינות והאבטחה של Google Cloud.

ב-Codelab הזה לא תבצעו העברה מסורתית. במקום זאת, תפעל כארכיטקט מוצר ותשתמש ב-Gemini CLI כשותף שלך. אם תציידו את Gemini בשלושה שרתים של פרוטוקול הקשר של מודלים (MCP) ב-Google Cloud, תאפשרו ל-AI 'לפנות' ולקיים אינטראקציה ישירה עם שירותי Google Cloud. תתחילו להשתמש ב-MCP של Developer Knowledge כדי לזהות את מסד הנתונים הטוב ביותר ב-Google Cloud לאפליקציית allstrides. לאחר מכן תשתמשו ב-MCP של Cloud SQL כדי להקצות מופע של מסד נתונים ולהעביר את נתוני הקהילה המקומיים לענן באמצעות הנחיה אחת. לבסוף, תשתמשו ב-MCP של Cloud Run כדי להכניס את האפליקציה לקונטיינר, וכך תהפכו את AllStrides לזמינה לשימוש בכל העולם.

e031fbb4ae5d2afc.png

דרישות מוקדמות

  • הבנה בסיסית של מסוף Google Cloud
  • מיומנויות בסיסיות בממשק שורת הפקודה וב-Cloud Shell

מה תלמדו

  • איך פורסים את Gemini CLI כדי שיפעל עם Google Cloud MCP
  • איך משתמשים בשרת MCP של Development Knowledge
  • איך משתמשים בשרת Cloud SQL Google Cloud MCP כדי להעביר נתונים לענן
  • איך משתמשים בשרת Cloud Run Google Cloud MCP כדי לפרוס אפליקציה בענן
  • איך משתמשים ב-Gemini CLI ב-Google Cloud Shell

מה תצטרכו

  • חשבון Google Cloud ופרויקט Google Cloud
  • דפדפן אינטרנט כמו Chrome שתומך במסוף Google Cloud וב-Cloud Shell

2. הגדרה ודרישות

הגדרת פרויקט

  1. נכנסים ל-מסוף Google Cloud. אם עדיין אין לכם חשבון Gmail או Google Workspace, אתם צריכים ליצור חשבון.

משתמשים בחשבון לשימוש אישי במקום בחשבון לצורכי עבודה או בחשבון בית ספרי.

  1. יוצרים פרויקט חדש או משתמשים בפרויקט קיים. כדי ליצור פרויקט חדש במסוף Google Cloud, לוחצים בכותרת על הלחצן 'בחירת פרויקט' שפותח חלון קופץ.

295004821bab6a87.png

בחלון Select a project (בחירת פרויקט), לוחצים על הלחצן New Project (פרויקט חדש) כדי לפתוח תיבת דו-שיח לפרויקט החדש.

37d264871000675d.png

בתיבת הדו-שיח, מזינים את שם הפרויקט המועדף ובוחרים את המיקום.

96d86d3d5655cdbe.png

  • שם הפרויקט הוא השם המוצג של הפרויקט הזה למשתתפים. השם של הפרויקט לא משמש את Google APIs, ואפשר לשנות אותו בכל שלב.
  • מזהה הפרויקט הוא ייחודי לכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו אחרי שהוא מוגדר. מסוף Google Cloud יוצר באופן אוטומטי מזהה ייחודי, אבל אפשר להתאים אותו אישית. אם לא אהבתם את המזהה שנוצר, אתם יכולים ליצור מזהה אקראי אחר או לספק מזהה משלכם כדי לבדוק אם הוא זמין. ברוב ה-codelabs, תצטרכו להפנות למזהה הפרויקט שלכם, שבדרך כלל מזוהה באמצעות placeholder בשם PROJECT_ID.
  • לידיעתכם, יש ערך שלישי, מספר פרויקט, שחלק מממשקי ה-API משתמשים בו. במאמרי העזרה מפורט מידע נוסף על שלושת הערכים האלה.

הפעלת החיוב

הגדרה של חשבון לחיוב לשימוש אישי

אם הגדרתם חיוב באמצעות קרדיטים ל-Google Cloud, אתם יכולים לדלג על השלב הזה.

  1. לוחצים על הקישור הזה ונכנסים לחשבון Google אישי.
  2. יוצג לכם משהו כזה:

f54628965f465486.png

  1. לוחצים על הלחצן כאן אפשר לגשת לזיכויים. תועברו לדף להגדרת פרופיל החיוב. אם מוצג לכם מסך הרשמה לתקופת ניסיון בחינם, לחצו על 'ביטול' והמשיכו לקשר את החיוב.

20e88842cf2a732e.png

  1. לוחצים על 'אישור'. עכשיו אתם מחוברים לחשבון לחיוב ב-Google Cloud Platform לניסיון.

cdc87f1c57777951.png

הגדרה של חשבון לחיוב לשימוש אישי

אם הגדרתם חיוב באמצעות קרדיטים ל-Google Cloud, אתם יכולים לדלג על השלב הזה.

כדי להגדיר חשבון לחיוב לשימוש אישי, עוברים לכאן כדי להפעיל את החיוב ב-Cloud Console.

הערות:

  • העלות של השלמת ה-Lab הזה במשאבי Cloud צריכה להיות פחות מ-3 דולר ארה"ב.
  • כדי למחוק משאבים ולמנוע חיובים נוספים, אפשר לבצע את השלבים בסוף ה-Lab הזה.
  • משתמשים חדשים זכאים לתקופת ניסיון בחינם בשווי 300$.

מפעילים את Cloud Shell

אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-codelab הזה תשתמשו ב-Google Cloud Shell, סביבת שורת פקודה שפועלת בענן.

ב-מסוף Google Cloud, לוחצים על סמל Cloud Shell בסרגל הכלים שבפינה הימנית העליונה:

הפעלת Cloud Shell

אפשר גם ללחוץ על G ואז על S. אם אתם נמצאים במסוף Google Cloud, או אם אתם משתמשים בקישור הזה, רצף הפעולות הזה יפעיל את Cloud Shell.

יחלפו כמה רגעים עד שההקצאה והחיבור לסביבת העבודה יושלמו. בסיום התהליך, אמור להופיע משהו כזה:

צילום מסך של טרמינל Google Cloud Shell שבו מוצג שהסביבה מחוברת

המכונה הווירטואלית הזו כוללת את כל הכלים שדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר מאוד את הביצועים והאימות ברשת. אפשר לבצע את כל העבודה ב-codelab הזה בדפדפן. לא צריך להתקין שום דבר.

3. לפני שמתחילים

הפעלת Basic API

כדי להשתמש בשירותים מנוהלים של מסדי נתונים כמו Cloud SQL ובשירותים אחרים כדי ליצור ולפרוס את האפליקציה שלכם ב-Cloud Run, אתם צריכים להפעיל את ממשקי ה-API המתאימים בפרויקט בענן שלכם ב-Google Cloud.

בהתאם לגישה שלכם, אתם יכולים לדלג על השלב הזה ולאפשר ל-Gemini CLI להפעיל את כל ממשקי ה-API הנדרשים מאוחר יותר, אבל במקרה כזה יכול להיות שתיתקלו בעיכובים ובשלבים חוזרים במהלך ההרצה.

במסוף Cloud Shell, מוודאים שמזהה הפרויקט מוגדר:

gcloud config set project [YOUR-PROJECT-ID]

מגדירים את משתנה הסביבה PROJECT_ID:

PROJECT_ID=$(gcloud config get-value project)

מפעילים את כל השירותים הנדרשים:

gcloud services enable sqladmin.googleapis.com \
                       aiplatform.googleapis.com \
                       secretmanager.googleapis.com \
                       artifactregistry.googleapis.com \
                       cloudbuild.googleapis.com \
                       run.googleapis.com \
                       containerregistry.googleapis.com

הפלט אמור להיראות כך:

student@cloudshell:~ (test-project-001-402417)$ PROJECT_ID=$(gcloud config get-value project)
Your active configuration is: [cloudshell-14650]
student@cloudshell:~ (test-project-001-402417)$ 
student@cloudshell:~ (test-project-001-402417)$ gcloud services enable sqladmin.googleapis.com \
                       aiplatform.googleapis.com \
                       secretmanager.googleapis.com \
                       artifactregistry.googleapis.com \
                       cloudbuild.googleapis.com \
                       run.googleapis.com \
                       containerregistry.googleapis.com
Operation "operations/acat.p2-812263612774-c2dbeef3-c4c1-4a7d-a4b2-b5380be65044" finished successfully.

מתן הרשאות לחשבון שירות

כדי ליצור ולאחסן תמונות של אפליקציות, צריך לתת הרשאות אדמין של אחסון לחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine.

PROJECT_ID=$(gcloud config get-value project)
 gcloud projects add-iam-policy-binding $PROJECT_ID --member=serviceAccount:$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")-compute@developer.gserviceaccount.com --role=roles/storage.admin

הפעלת שירותי Google MCP

צריך להפעיל באופן מפורש את שירותי ה-MCP של Google Cloud לכל שירות בפרויקט. הם מושבתים כברירת מחדל ועוזרים לווסת את הגישה ל-API ברמת הפרויקט והשירות.

נתחיל עם שירות ה-MCP של Developer Knowledge. כדי להפעיל את Developer Knowledge API ואת שירות Google MCP, צריך להריץ את פקודות gcloud הבאות.

PROJECT_ID=$(gcloud config get-value project)
gcloud beta services mcp enable developerknowledge.googleapis.com --project=$PROJECT_ID

אחרי שמפעילים את ה-API ואת Google MCP for Developer Knowledge, אפשר להמשיך ולהפעיל גם את שירות Google MCP for Cloud SQL.

gcloud beta services mcp enable sqladmin.googleapis.com --project=$PROJECT_ID

בדומה לכל MCP של Google Cloud למסדי נתונים, הגישה וההרשאות ל-MCP מוגדרות בשלבים, ומספקות גישה מפורטת ברמת הפרויקט ל-API עצמו. רק לישות מורשית (משתמש או חשבון שירות) עם התפקיד Service Usage Admin (roles/serviceusage.serviceUsageAdmin) יש הרשאה לעשות זאת.

רק חשבונות ראשיים עם התפקיד משתמש בכלי MCP (roles/mcp.toolUser) יכולים לבצע קריאות ל-Google Cloud MCP API.

לדוגמה, אם אין לכם תפקיד Cloud SQL Admin (roles/cloudsql.admin), לא תוכלו ליצור, לשכפל או לעדכן אף מופע בפרויקט.

מידע נוסף על התפקידים וההרשאות הנדרשים זמין במאמרי עזרה.

כפי שאפשר לראות, ההרשאה המדורגת והמפורטת מגנה עלינו מפני מתקפה לא מורשית גם כשנקודת הקצה של Google Cloud MCP מופעלת, ולכן היא בטוחה מספיק לשימוש בסביבת הייצור.

ה-MCP הבא של Google Cloud שנפעיל הוא עבור שירות Cloud Run. הגישה להפעלה ולגישה של Cloud Run Google Cloud MCP דומה לגישה של Cloud SQL Google Cloud MCP.

מפעילים את שירות Cloud Run MCP באמצעות הפקודה הבאה.

gcloud beta services mcp enable run.googleapis.com --project=$PROJECT_ID

לבסוף, אפשר להשתמש בפקודה הבאה כדי לוודא שכל ה-MCP של Google Cloud מופעלים בפרויקט.

gcloud beta services mcp list --project=$PROJECT_ID

הפלט אמור להיראות כך:

student@cloudshell:~ (test-project-001-402417)$ gcloud beta services mcp list --project=$PROJECT_ID
NAME: services/developerknowledge.googleapis.com
MCP_ENDPOINT: developerknowledge.googleapis.com

NAME: services/run.googleapis.com
MCP_ENDPOINT: run.googleapis.com/mcp

NAME: services/sqladmin.googleapis.com
MCP_ENDPOINT: sqladmin.googleapis.com/mcp

עכשיו, אחרי שהפעלנו את כל ה-API והשירותים, צריך להגדיר את Gemini CLI.

4. הגדרת Gemini CLI

המעבדה מיועדת לשימוש ב-Gemini CLI כסוכן הראשי לביצוע רוב הפעולות, והשלב הראשון הוא להגדיר אותו לעבודה עם שירותי Google Cloud MCP. מומלץ מאוד להשתמש בגרסה העדכנית של Gemini CLI ובגרסה העדכנית של Gemini, כמו Gemini-3.1-pro או Gemini-3-flash (שנמצאות כרגע בגרסת טרום-השקה).

אם כבר יש לכם את הגרסה העדכנית של Gemini CLI והגדרתם אותה לשימוש במודלים העדכניים של Gemini, אתם יכולים לדלג על 2 השלבים הבאים ולעבור ישירות לשלב 3.

1. קבלת מפתח Gemini API

כדי להשתמש במודלים העדכניים של Gemini ב-Gemini CLI, צריך להגדיר אימות באמצעות מפתח API. אפשר לקבל את מפתח ה-API ב-Google AI Studio

  1. בדפדפן, עוברים אל Google AI Studio -> Get API key.
  2. בצד שמאל של המסך, לוחצים על הלחצן Create API key.
  3. בחלון הקופץ בוחרים את הפרויקט או מייבאים אותו אם הוא לא מופיע שם.

683940deabde2975.jpeg

  1. יוצרים את מפתח ה-API.
  2. אפשר להעתיק את המפתח באמצעות לחצן ההעתקה בצד שמאל.

3d97805534c50bf.jpeg

המפתח מוכן ועכשיו אפשר להשתמש בו ב-Gemini CLI

2. הגדרת Gemini CLI

אפשר להגדיר את Gemini CLI באמצעות קובץ הגדרות או באופן אינטראקטיבי באמצעות הפקודה /settings. אנחנו רוצים שההגדרות שלנו יישמרו בקובץ ההגדרות.

קודם ניצור ספריה לפרויקט שלנו. נקרא לספרייה projectmcp ונעבור לספרייה הזו באמצעות הפקודות הבאות.

mkdir ~/projectmcp
cd ~/projectmcp

בספרייה ניצור ספרייה לקובצי ההגדרות של Gemini ונריץ את כל הפקודות שלנו. כברירת מחדל, Gemini CLI משתמש בקובץ תצורה של היקף משתמש ותוספים שמותקנים בספרייה ‎~/.gemini. אבל אנחנו ניצור הגדרה משלנו של היקף הפרויקט בספרייה ‎~/projectmcp. נתחיל ביצירת תיקיית ההגדרות והקבצים.

mkdir ~/projectmcp/.gemini
touch ~/projectmcp/.gemini/settings.json

אחר כך פותחים את הקובץ ~/projectmcp/.gemini/settings.json באמצעות Cloud Shell Editor.

edit ~/projectmcp/.gemini/settings.json

בחלון העורך שנפתח, מוסיפים את ההגדרה הבאה.

{
  "general": {
    "preferredEditor": "vscode",
    "previewFeatures": true,
    "sessionRetention": {
      "enabled": true
    }
  },
  "ide": {
    "enabled": true,
    "hasSeenNudge": true
  },
  "security": {
    "auth": {
      "selectedType": "gemini-api-key"
    }
  },
  "ui": {
    "theme": "Default"
  },
  "tools": {
    "shell": {
      "enableInteractiveShell": false
    }
  }
}

אחרי עריכת הקובץ, אפשר להשתמש ב-ctrl+s כדי לשמור את השינויים ולחזור למסוף בלחיצה על הלחצן Open Terminal.

e152c73931dac892.jpeg

בקובץ settings.json שמופיע למעלה, סוג האימות של Gemini CLI מוגדר כ-gemini-api-key, ואתם צריכים לספק את המפתח למודל. כדי לעשות את זה, יוצרים קובץ ‎ .env בספרייה שרוצים לעבוד איתה ב-Gemini CLI, ושומרים את מפתח ה-API לאימות ב-Gemini CLI כמשתנה סביבה שייקלט כשמפעילים את ה-IDE.

עריכת הקובץ באמצעות Cloud Shell Editor

edit ~/projectmcp/.env

מאחסנים את מפתח ה-API שנוצר בשלב 1.

GEMINI_API_KEY= <YOUR_API_KEY>

עכשיו אפשר לחזור למסוף ולהמשיך. בשלב הבא צריך לעדכן את Gemini CLI לגרסה העדכנית. יכול להיות שהגרסה ב-Google Cloud Shell או בסביבה שלכם תהיה מיושנת, ולא תפעל בצורה תקינה עם ההגדרות העדכניות ועם שירותי ה-MCP. לכן חשוב לעדכן את Gemini CLI לגרסה האחרונה ולהפעיל אותו. במסוף מריצים את הפקודה הבאה. התהליך עשוי להימשך כמה דקות.

cd ~/projectmcp/
npm install -g @google/gemini-cli@latest

עכשיו אפשר לאמת את הגרסה. חשוב לזכור שאם אתם עובדים ב-Google Cloud Shell, יכול להיות שבכל פעם שתפעילו מחדש את ה-Shell הוא יחזור לגרסה הקודמת. השינויים שאתם מבצעים ב-Gemini CLI עצמו לא קבועים ב-Cloud Shell.

gemini --version

צריכה להופיע הגרסה העדכנית של Gemini CLI (גרסה 0.27 בזמן כתיבת המעבדה). כאן אפשר לבדוק את הגרסה העדכנית של Gemini CLI. עכשיו אפשר להפעיל אותו ולוודא שהוא משתמש במודל Gemini העדכני ביותר. מריצים את הפקודה הבאה בתיקיית הפרויקט כדי להפעיל את Gemini CLI.

gemini

כשמפעילים את Gemini CLI, אפשר לבדוק את הגרסה ואת המודל על ידי הרצת הפקודה /about בממשק. אמורה להופיע תמונה כמו זו שלמטה.

dea82957ace33156.jpeg

אפשר לראות שהוא משתמש במודל Gemini-3 העדכני ביותר.

2. הגדרת שרתי MCP ב-Gemini CLI

עכשיו צריך להוסיף את כל שרתי ה-MCP המופעלים. יש שתי דרכים להפעיל אותם ב-Gemini CLI – באמצעות תוספים או ישירות בהגדרות. בשיעור ה-Lab הזה תשתמשו בקובץ setting.json של היקף הפרויקט ותוסיפו אליו את פרטי האימות של שרתי ה-MCP.

  1. בשרת Developer Knowledge MCP, צריך ליצור מפתח API כדי לקבל הרשאה בנקודת הקצה.

אלה השלבים:

  • במסוף Google Cloud, בפרויקט שבו הפעלתם את ה-API, עוברים אל הדף Credentials.
  • לוחצים על Create credentials (יצירת פרטי כניסה) ובתפריט בוחרים באפשרות API key (מפתח API). בתיבת הדו-שיח 'נוצר מפתח API' מוצגת המחרוזת של המפתח החדש שיצרתם.
  • לוחצים על הקישור Edit API key בתיבת הדו-שיח.
  • בשדה Name, נותנים שם למפתח. לדוגמה DK API Key .
  • בקטע API restrictions (הגבלות על ממשקי API), בוחרים באפשרות Restrict key.
  • ברשימה Select APIs (בחירת ממשקי API), מפעילים את Developer Knowledge API ולוחצים על OK (אישור).
  • לוחצים על 'שמירה'.

d0e7c7081e43788e.jpeg

אם תצטרכו להשתמש במפתח, תוכלו לעבור לדף וללחוץ על 'הצגת המפתח' בצד שמאל.

caf35e95bba68c2.jpeg

עכשיו צריך לאחסן את המפתח הזה בהגדרה. הקטע MCP בקובץ settings.json ייראה כך (צריך להזין ערך למפתח ה-API של DK): דוגמה למראה של הקטע [MCP] בקובץ settings.json אם נוסף רק DK API. בהמשך שיעור ה-Lab, תראו גם איך קובץ settings.json אמור להיראות עם כל שרתי ה-MCP ביחד.

    "mcpServers": {
    "DeveloperKnowledge": {
      "httpUrl": "https://developerknowledge.googleapis.com/mcp",
      "headers": {
        "X-Goog-Api-Key": "<Your DK API Key>"
      }
    }
  },
  1. בשלב הבא, אפשר להוסיף הגדרות לשרת ה-MCP של Cloud SQL. ב-Cloud SQL MCP, תשתמשו בפרטי הכניסה שלכם ל-Google במקום ב-API. השיטה הזו מאובטחת יותר ומאפשרת לנו להגדיר תפקידים והיקף פעולות שמותר למשתמש לבצע. זו ההגדרה של שרת ה-MCP. מחליפים את הערך "<YOUR_GCP_PROJECT>" במזהה הפרויקט שלכם.
    "Cloud SQL MCP Server": {
      "httpUrl": "https://sqladmin.googleapis.com/mcp",
      "authProviderType": "google_credentials",
      "oauth": {
        "scopes": [
          "https://www.googleapis.com/auth/cloud-platform"
        ]
      },
      "timeout": 500000,
      "trust": false,
      "headers": {
        "X-Goog-User-Project": "<YOUR_GCP_PROJECT>"
      }
    },
  1. בקטע הבא של JSON מופיעה ההגדרה של שרת Cloud Run MCP. הוא פועל לפי אותו דפוס כמו בדוגמה שלמעלה, ומשתמש בפרטי הכניסה של Google לאימות ולהרשאה. זוהי הגדרת הדוגמה.
    "CloudRun": {
      "httpUrl": "https://run.googleapis.com/mcp",
      "authProviderType": "google_credentials",
      "oauth": {
        "scopes": [
          "https://www.googleapis.com/auth/cloud-platform"
        ]
      }
    }

צריך להוסיף את כל אלה לקובץ ~/projectmcp/.gemini/settings.json.

פותחים את הקובץ ~/projectmcp/.gemini/settings.json באמצעות Cloud Shell Editor.

edit ~/projectmcp/.gemini/settings.json

ומחליפים את התוכן בהגדרה הבאה. צריך להזין את מפתח ה-API ואת מזהה הפרויקט בשדות X-Goog-Api-Key ו-X-Goog-User-Project בהתאם לסביבה.

{
  "general": {
    "preferredEditor": "vscode",
    "previewFeatures": true,
    "sessionRetention": {
      "enabled": true
    }
  },
  "ide": {
    "enabled": true,
    "hasSeenNudge": true
  },
  "security": {
    "auth": {
      "selectedType": "gemini-api-key"
    }
  },
  "mcpServers": {
    "DeveloperKnowledge": {
      "httpUrl": "https://developerknowledge.googleapis.com/mcp",
      "headers": {
        "X-Goog-Api-Key": "<Your DK API Key>"
      }
    },
    "Cloud SQL MCP Server": {
      "httpUrl": "https://sqladmin.googleapis.com/mcp",
      "authProviderType": "google_credentials",
      "oauth": {
        "scopes": [
          "https://www.googleapis.com/auth/cloud-platform"
        ]
      },
      "timeout": 500000,
      "trust": false,
      "headers": {
        "X-Goog-User-Project": "<YOUR_GCP_PROJECT>"
      }
    },
    "CloudRun": {
      "httpUrl": "https://run.googleapis.com/mcp",
      "authProviderType": "google_credentials",
      "oauth": {
        "scopes": [
          "https://www.googleapis.com/auth/cloud-platform"
        ]
      }
    }
  },
  "ui": {
    "theme": "Default"
  },
  "tools": {
    "shell": {
      "enableInteractiveShell": false
    }
  }
}

עכשיו אפשר להפעיל את Gemini CLI ולראות את כל השרתים של MCP שמופעלים שם.

cd ~/projectmcp/
gemini

כשמפעילים את Gemini CLI, אפשר להריץ את הפקודה /mcp כדי לראות את כל שרתי ה-MCP שפועלים.

352638b053783696.png

5. הכנת האפליקציה

בדוגמה הבאה ננסה להעביר את האפליקציה המקומית לדוגמה אל Google Cloud. קודם כול, מתקינים את האפליקציה באופן מקומי ובודקים אותה.

1. שכפול קוד המקור

צריך לשכפל את האפליקציה מהמאגר ב-GitHub. ב-Cloud Shell או בטרמינל המקומי, מריצים את הפקודה בתיקיית הפרויקט.

cd ~/projectmcp
git clone --no-checkout --filter=blob:none --depth=1 https://github.com/google/mcp.git
cd mcp
git sparse-checkout set examples/allstrides
git checkout
cd examples/allstrides

2. הפעלת האפליקציה באופן מקומי

בואו נבדוק את האפליקציה ונטען נתונים לדוגמה

באותו מעטפת, כשאתם בתיקיית האפליקציה, מפעילים את האפליקציה באמצעות הסקריפט start_allstrides.sh.

./start_allstrides.sh

3. בדיקת האפליקציה

אם אתם עובדים ב-Cloud Shell, לוחצים על הלחצן Web preview בחלק העליון של חלון Cloud Shell ובוחרים באפשרות Preview on port 8080.

db0d9210014ade3d.jpeg

תיפתח כרטיסיית דפדפן חדשה עם ממשק האפליקציה, שבו תוכלו למשל ללחוץ על הלחצן Events.

67423438eef0c999.jpeg

נכון לעכשיו, אין לך אירועים.

4. טעינת נתונים לדוגמה

אפשר להירשם לאפליקציה וליצור אירועים, הודעות צ'אט ומשתמשים משלכם, או להשתמש בנתונים לדוגמה שמצורפים לאפליקציה.

פותחים כרטיסייה נוספת ב-Cloud Shell באמצעות הסימן '+' בחלק העליון.

abc505ac4d41f24e.png

בכרטיסייה החדשה של Cloud Shell, עוברים לספריית האפליקציה ומבצעים ייבוא באמצעות כלי sqllite3:

cd ~/projectmcp/mcp/examples/allstrides
sqlite3 allstrides.db < seed_data.sql

אם תחזרו לדף האפליקציה ואז תלחצו שוב על הכפתור 'אירועים', אמורים להופיע כמה אירועים.

5adc772a1d2261f4.jpeg

אפשר גם לבדוק את דף הצ'אט ולראות חלק מההודעות.

עכשיו אפשר לסגור את הכרטיסייה השנייה על ידי הקלדת exit

exit

מפסיקים את האפליקציה בכרטיסייה הראשונה באמצעות צירוף המקשים Ctrl+c.

6. בדיקת הידע של מפתחים ב-MCP

ה-Developer Knowledge MCP מאפשר לנו להשתמש במסמכי Google ישירות מהכלים האגנוסטיים שלנו, ומספק לנו את היכולת לאמת הוראות, ליצור הדרכות ולבצע משימות אחרות שאפשר לשפר באמצעות התיעוד העדכני של Google.

מפעילים את Gemini CLI ומציגים את רשימת כלי ה-MCP שזמינים בשרת ה-MCP של Developer Knowledge.

/mcp

ב-MCP של Developer Knowledge (ידע למפתחים) אמורים להופיע שלושה כלים זמינים:

הפלט אמור להיראות כך:

🟢 DeveloperKnowledge - Ready (3 tools)
  Tools:
  - batch_get_documents
  - get_document
  - search_documents

המשימה שלנו היא להעביר את האפליקציה ל-Google Cloud, ולכן אנחנו צריכים לעבור ממסד נתונים מקומי של Sqlite לפתרון שניתן להרחבה ומתאים לענן. נבקש מ-Gemini לנתח את קוד האפליקציה שלנו ולתת לנו המלצות לגבי פתרון מסד הנתונים.

בהנחיה של Gemini CLI, מקלידים את הטקסט הבא:

Hello, I need to choose a database platform for my allstrides application in Google Cloud. Can you analyze documentation and prepare a tutorial to choose the correct database engine?

‫Gemini CLI יתחיל בניתוח הקוד ואז יבקש להריץ את

הפלט הצפוי

 ?  search_documents (DeveloperKnowledge MCP Server) {"query":"choose google cloud database"}                                                                                                               ← │
│                                                                                                                                                                                                              │
│ MCP Server: DeveloperKnowledge                                                                                                                                                                               │
│ Tool: search_documents                                                                                                                                                                                       │
│                                                                                                                                                                                                              │
│ Allow execution of MCP tool "search_documents" from server "DeveloperKnowledge"?                                                                                                                             │
│                                                                                                                                                                                                              │
│ ● 1. Allow once                                                                                                                                                                                              │
│   2. Allow tool for this session                                                                                                                                                                             │
│   3. Allow all server tools for this session                                                                                                                                                                 │
│   4. No, suggest changes (esc)   

אנחנו יכולים לראות שהכלי משתמש ב-MCP כדי לעגן את התשובה באמצעות תיעוד של Google. אישור הביצוע של בקשת ה-MCP של Developer Knowledge. יכול להיות שהוא יבקש ממך עוד פעם או פעמיים לספק מידע נוסף לפני שהוא ייתן את התשובה. אל תאפש שינויים באפליקציה שלך בשלב הזה.

בסוף התהליך נוצר מדריך עם סיכום שבו Cloud SQL for Postgres הוגדר כבחירה הטובה ביותר למסד נתונים בקצה העורפי. יכול להיות שתקבלו תשובה שונה מעט בגלל האופי הלא דטרמיניסטי של מודלים של AI גנרטיבי.

הפלט אמור להיראות כך:

By switching to Cloud SQL for PostgreSQL, AllStrides gains a robust, scalable foundation suitable for production deployment on Google Cloud. The transition is straightforward due to the use of Sequelize ORM.  

אנחנו יכולים גם לבקש להכין מדריך מפורט להעברת נתונים. שולחים הנחיה חדשה ל-Gemini CLI:

I agree with the recommendation to use Cloud SQL for PostgreSQL as the new database for my application. Can you prepare a detailed migration tutorial based on Google documentation on how to move data from my local database to Cloud SQL in the cloud?

גם כאן אנחנו מצפים ש-Gemini CLI ישתמש ב-MCP של Developer Knowledge כמקור האמת בזמן הכנת המדריך. רצף הפעולות שמבצע Gemini CLI יכול להיות שונה מעט בהתאם לדגם המדויק ולגורמים אחרים. לדוגמה, אפשר לבקש ממנו להכין קודם סקריפטים להעברה ורק אחר כך לעבוד על התיעוד הסופי של ההדרכה.

זו אחת הדוגמאות שבהן המודל מבקש הרשאה להפעיל את ה-MCP של הידע למפתחים:

 ?  search_documents (DeveloperKnowledge MCP Server) {"query":"migrate local database to Cloud SQL for PostgreSQL"}                                                                                         ← │
│                                                                                                                                                                                                              │
│ MCP Server: DeveloperKnowledge                                                                                                                                                                               │
│ Tool: search_documents                                                                                                                                                                                       │
│                                                                                                                                                                                                              │
│ Allow execution of MCP tool "search_documents" from server "DeveloperKnowledge"?                                                                                                                             │
│                                                                                                                                                                                                              │
│ ● 1. Allow once                                                                                                                                                                                              │
│   2. Allow tool for this session                                                                                                                                                                             │
│   3. Allow all server tools for this session                                                                                                                                                                 │
│   4. No, suggest changes (esc)                                                                                                                                                                               │
│                                                                                                                                                                                                              │
│                                                                                                                                                                                                              │
│ ⊷  search_documents (DeveloperKnowledge MCP Server) {"query":"import data into Cloud SQL PostgreSQL"}
 

יכול להיות שבמהלך ההרצה, Gemini CLI יבקש מכם להריץ פקודות מסוימות. לדוגמה, כדי להבין טוב יותר את סכימת הנתונים ולהכין הוראות נכונות להעברת הנתונים.

בסיום, הוא צריך להכין הוראות מפורטות להעברת נתונים.

אחר כך אפשר לבקש מ-Gemini CLI לכתוב את ההדרכה

Please write the tutorial down

ייווצר קובץ Markdown חדש עם מסמך ההדרכה.

הפלט אמור להיראות כך:

✦ I have created a detailed migration guide for you.

  You can find the tutorial in the new file: MIGRATION_GUIDE.md.

  This guide covers:
   1. Exporting your local SQLite data to CSV format.
   2. Creating the PostgreSQL schema with compatible data types.
   3. Uploading data to Google Cloud Storage.
   4. Importing data into Cloud SQL in the correct order to respect relationships.
   5. Resetting ID sequences to ensure new data can be added without errors.

בשלב הבא נשתמש ב-Cloud SQL MCP כדי להכין את מסד הנתונים ולהעביר את הנתונים.

7. בדיקה של Google Cloud MCP ב-Cloud SQL

1. יצירת מופע ב-Cloud SQL

אפשר להתחיל בבדיקת הכלים שזמינים בשרת ה-MCP של Cloud SQL על ידי הקלדת ‎ /mcp ב-Gemini CLI

/mcp

בשלב הזה, הכלים הבאים זמינים לנו.

הפלט אמור להיראות כך:

🟢 Cloud SQL MCP Server - Ready (11 tools)
  Tools:
  - clone_instance
  - create_instance
  - create_user
  - execute_sql
  - get_instance
  - get_operation
  - import_data
  - list_instances
  - list_users
  - update_instance
  - update_user

כבר החלטנו להשתמש ב-Cloud SQL for Postgres כקצה העורפי של האפליקציה שלנו ב-Google Cloud. עכשיו אפשר לבקש מ-Gemini ליצור בשבילנו מכונה של Cloud SQL.

בהנחיה של Gemini CLI, מקלידים את הבקשה כמו בדוגמה הבאה:

Please create a Cloud SQL for Postgres instance with appropriate edition and version in the us-central1 region to be a backend for our application with a public IPs in the current project with 2 CPU and 8 GB memory.

כדי להימנע מביצוע שיחות נוספות לזיהוי הפרויקט הנוכחי, אפשר לציין במפורש את מזהה הפרויקט כשמזינים את ההנחיה. אם שם הפרויקט לא היה בשימוש בהקשר לפני כן, המודל יבקש את מזהה הפרויקט או יבקש להריץ פקודת gcloud כדי לזהות את הפרויקט.

לאחר מכן, המערכת תנתח את הכלים הקיימים ותבקש להפעיל את כלי ה-MCP של Cloud SQL. תוצג לכם בקשת האישור הבאה.

?  create_instance (Cloud SQL MCP Server MCP Server) {"tier":"db-custom-2-8192","region":"us-central1","project":"gleb-test-short-001-486416","databaseVersion":"POSTGRES_17","edition":"ENTERPRISE","nam... ← │
│                                                                                                                                                                                                              │
│ MCP Server: Cloud SQL MCP Server                                                                                                                                                                             │
│ Tool: create_instance                                                                                                                                                                                        │
│                                                                                                                                                                                                              │
│ Allow execution of MCP tool "create_instance" from server "Cloud SQL MCP Server"?                                                                                                                            │
│                                                                                                                                                                                                              │
│ ● 1. Allow once                                                                                                                                                                                              │
│   2. Allow tool for this session                                                                                                                                                                             │
│   3. Allow all server tools for this session                                                                                                                                                                 │
│   4. No, suggest changes (esc)
 

אחרי שמתחילים את ההרצה, המערכת מבקשת לעקוב אחרי סטטוס הפעולה ואחרי בקשות שינה אפשריות בין הבדיקות. משהו כמו הדוגמה הבאה.

✦ I will wait for 30 seconds before checking the status of the instance creation.
╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ ⊶  Shell sleep 30 [current working directory /home/gleb/demo]                                                                                                                                                │
│                                                                                                                                                                                                              │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
⠋ Refining Instance Configuration (esc to cancel, 11s)

אחרי זה יופיע כלי get_operation ל-MCP של Cloud SQL Server.

╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ ?  get_operation (Cloud SQL MCP Server MCP Server) {"project":"gleb-test-short-001-486416","operation":"73c39ca7-65fe-46d1-bdb8-0dfa00000032"}                                                             ← │
│                                                                                                                                                                                                              │
│ MCP Server: Cloud SQL MCP Server                                                                                                                                                                             │
│ Tool: get_operation                                                                                                                                                                                          │
│                                                                                                                                                                                                              │
│ Allow execution of MCP tool "get_operation" from server "Cloud SQL MCP Server"?                                                                                                                              │
│                                                                                                                                                                                                              │
│ ● 1. Allow once

אחרי בקשת get_instance האחרונה, אמור להתקבל מידע על המופע שנוצר. משהו כמו הדוגמה הבאה.

הפלט אמור להיראות כך:

✦ I will wait for 30 seconds before checking the status of the instance creation.
╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ ⊶  Shell sleep 30 [current working directory /home/gleb/demo]                                                                                                                                                │
│                                                                                                                                                                                                              │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
⠋ Refining Instance Configuration (esc to cancel, 11s)

אחרי כן יתבצע שימוש בכלי get_operation עבור Cloud SQL Server MCP ושיחה עם כלי ה-MCP‏ get_insance. יכול להיות שתיתקלו בבדיקות נוספות ובשיחה שבוצעה על ידי Gemini CLI כדי לוודא שהמשימה הושלמה בהצלחה.

The Cloud SQL for Postgres instance allstrides-db has been successfully created in the us-central1 region with 2 vCPUs and 8 GB of RAM.

  Instance Details:
   - Project ID: gleb-test-short-001-486416
   - Instance Name: allstrides-db
   - Public IP Address: 35.226.187.246
   - Database Version: POSTGRES_17
   - Machine Type: db-custom-2-8192 (2 vCPU, 8 GB RAM)
   - Region: us-central1
   - Connection Name: gleb-test-short-001-486416:us-central1:allstrides-db

  The instance is configured with public IP enabled, IAM authentication turned on, and Data API access allowed.

2. העברת נתונים

המכונה מוכנה ועכשיו אפשר להמשיך בהעברת כל הנתונים ממסד הנתונים הקיים של SQLite למסד נתונים חדש בענן.

בהנחיה של Gemini CLI, מקלידים את הבקשה הבאה

Now when we have our Cloud SQL instance ready it is time to move the data from our local database. Please migrate all the  data to a new database in our Cloud SQL instance where the new user for application would be the database owner? Let's call the new database allstrides-db and the user allstrides. Please use our MCP tools whenever it is possible.

במהלך ההרצה, Gemini CLI ינתח את מודל הנתונים שלנו, ולשם כך הוא יבקש הרשאות להרצת פקודות מסוימות. תהליך העבודה לא דטרמיניסטי לחלוטין, ויכול להיות שיהיו הבדלים בין השלבים.

דוגמה לאופן שבו השיחה יכולה להתחיל.

הפלט אמור להיראות כך:

✦ I will read the allstrides/README.md and allstrides/seed_data.sql files to understand the local database structure and data.
╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ ✓  ReadFile allstrides/README.md                                                                                                                                                                             │
│                                                                                                                                                                                                              │
│                                                                                                                                                                                                              │
│ ✓  ReadFile allstrides/seed_data.sql                                                                                                                                                                         │
│                                                                                                                                                                                                              │
╰─────────────────────────────────────────────────────────────────────────

לאחר מכן, אחרי כמה שלבים, המערכת תשתמש ב-Cloud SQL MCP כדי להכין את מסד הנתונים והמשתמש, ובסופו של דבר תעביר את הנתונים. אחת הפעולות הראשונות שהיא מבצעת במסד הנתונים היא להוסיף אתכם כמשתמש IAM ולהעניק לכם הרשאות ליצור מסד נתונים ומשתמש. צריכות להיות לכם הרשאות מספיקות ב-Google Cloud בתור IAM

הנה דוגמה לכמה שלבים בתהליך העבודה

הפלט אמור להיראות כך:

 ✓  execute_sql (Cloud SQL MCP Server MCP Server) {"project":"gleb-test-short-001-486416","instance":"allstrides-db","sqlStatement":"CREATE DATABASE \"allstrides-db\";","database":"postgres"}               │
│                                                                                                                                                                                                              │
│ {                                                                                                                                                                                                            │
│   "messages": [                                                                                                                                                                                              │
│     {                                                                                                                                                                                                        │
│       "message": "Execution complete. 1 result set(s) returned.",                                                                                                                                            │
│       "severity": "INFO"                                                                                                                                                                                     │
│     }                                                                                                                                                                                                        │
│   ],                                                                                                                                                                                                         │
│   "metadata": {                                                                                                                                                                                              │
│     "sqlStatementExecutionTime": "0.075591388s"                                                                                                                                                              │
│   },                                                                                                                                                                                                         │
│   "results": [                                                                                                                                                                                               │
│     {}                                                                                                                                                                                                       │
│   ]                                                                                                                                                                                                          │
│ }                                                                                                                                                                                                            │
│       

3. Deploy Application to Cloud Run

עכשיו, מסד הנתונים נוצר והנתונים של האפליקציה המקומית הועברו למסד הנתונים של CloudSQL. עכשיו אפשר לפרוס את האפליקציה ב-Cloud Run. במהלך הפריסה תשתמשו בשילוב של Google Cloud SDK כדי ליצור את קובץ האימג' ב-Google Cloud, ואז תפרסו אותו באמצעות Cloud Run MCP.

ב-Gemini CLI, מריצים את ההנחיה הבאה.

Now, when all the data is successfully migrated to our Cloud SQL instance allstrides-db we can migrate our allstrides application to Cloud Run and deploy using my Cloud SQL database. Please put the username and the password for my database user user to Secret Manager to not show openly in Cloud Run.
Let's build the image first and then use MCP to create the Cloud Run service.

במהלך ההרצה, המערכת תבדוק את ממשקי ה-API, תכין את הנתונים לניהול הסודות ותיצור את הסודות הנדרשים. בנוסף, הוא יעודכן כדי לפעול עם מסד נתונים של PostgreSQL, ויוסיף את מודולי ה-npm הנדרשים.

לאחר מכן, אחרי בניית האימג' והעברתו ל-Artifact Registry, המערכת משתמשת בשירות MCP כדי לפרוס את האפליקציה ב-Cloud Run.

הנה דוגמה לקריאה ל-MCP של Cloud Run

הפלט אמור להיראות כך:

✦ I will deploy the 'allstrides' service to Cloud Run using the deploy_service_from_image tool. I will configure the environment variables and map the
  database credentials from Secret Manager. Note that the MCP tool's schema does not explicitly expose the Cloud SQL instance attachment parameter, which is
  typically required for the Unix socket connection (/cloudsql/...) to work. I will proceed with the deployment as requested, but if the database connection
  fails due to the missing instance attachment, we may need to use gcloud to update that specific configuration.


╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Action Required                                                                                                                                    1 of 1 │
│                                                                                                                                                           │
│ ?  deploy_service_from_image (CloudRun MCP Server) {"service":{"invokerIamDisabled":true,"name":"projects/gleb-test-short-001-486416/locations/us-centra... │
│                                                                                                                                                           │
│ MCP Server: CloudRun                                                                                                                                      │
│ Tool: deploy_service_from_image                                                                                                                           │
│ Allow execution of MCP tool "deploy_service_from_image" from server "CloudRun"?                                                                           │
│                                                                                                                                                           │
│ ● 1. Allow once                                                                                                                                           │
│   2. Allow tool for this session                                                                                                                          │
│   3. Allow all server tools for this session                                                                                                              │
│   4. No, suggest changes (esc)                                                                                                                            │
│                                                                                                                                                           │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

הנתיב המדויק להשלמת כל הפעולות יכול להשתנות מהרצה להרצה. סוכני ה-AI בוחרים את הנתיב על סמך ההקשר, פלט הפקודה ועוד כמה משתנים. כאן טמונה העוצמה של תוכנה מבוססת-AI – היא יכולה להגיב, לשנות את הגישה ולנסות שוב לבצע שלבים כדי להשלים משימות ולהשיג תוצאות מוצלחות.

עכשיו אפליקציית allstrides פרוסה ופועלת ב-Cloud Run ומחוברת למסד הנתונים של Cloud SQL.

אלה הפרטים שיופיעו בסוף.

הפלט אמור להיראות כך:

✦ The application allstrides has been successfully migrated to Cloud Run and is connected to the Cloud SQL database allstrides-db.

  Deployment Details:


   * Service URL: https://allstrides-812263612774.us-central1.run.app
   * Database: allstrides-db (PostgreSQL)
   * Database User: allstrides (Password updated and stored in Secret Manager)
   * Secrets: db-user and db-pass are mounted as environment variables.
   * Region: us-central1

  Steps Taken:


   1. Database Configuration:
       * Updated the allstrides database user password.
       * Created db-user and db-pass secrets in Google Cloud Secret Manager.
       * Updated database.ts to support PostgreSQL connections via Cloud SQL socket.
   2. Build:
       * Built the container image gcr.io/gleb-test-short-001-486416/allstrides using Cloud Build.
   3. Deployment:
       * Initiated deployment using the MCP deploy_service_from_image tool.
       * Granted the Secret Manager Secret Accessor role to the Cloud Run service account.
       * Attached the Cloud SQL instance connection using gcloud (as the MCP tool currently lacks this specific configuration parameter).


  The application is now serving traffic and successfully connected to the database.

כשפותחים את כתובת ה-URL שסופקה בדפדפן, אמור להופיע דף האפליקציה.

d710de5dbee99720.png

וכל האירועים שלנו צריכים להיות גלויים שם

4ae98d3607718794.png

מעולה! הצלחתם להשתמש בשירותי Gemini CLI ו-Google Cloud MCP כדי להעביר את האפליקציה המקומית שלכם לענן. כך מסתיימת הפריסה ואפשר למחוק את כל המשאבים.

8. ניקוי הסביבה

הדרך הכי קלה לנקות את הסביבה היא לבקש מ-Gemini CLI להסיר את כל הרכיבים שיצרתם. הוא צריך לשמור על כל הנכסים בהקשר. אבל אם מסיבה כלשהי התנתקתם ואין לכם היסטוריה שמורה, אתם יכולים לנסות להיות מדויקים יותר ולבקש לנקות את שירות Cloud Run, את התמונה ואת מופע Cloud SQL. כדי להסיר את השירות, צריך לאמת אותו באמצעות המשתמש שיש לו את ההרשאות הנדרשות ושישתמש בפקודת gcloud.

דוגמה להנחיה

Now, when we've tested the application can you please delete the created Cloud Run service, the image we've built and the Cloud SQL instance we've created in the project. 

אחרי ההסרה, תוכלו להשתמש בשירותי ה-MCP של Google Cloud כדי לוודא שהשירות Cloud Run או מופע Cloud SQL הוסרו בהצלחה.

Can you please list all Cloud SQL instances in the project and Cloud Run services in the project.

בסוף התהליך אמורה להופיע הודעה כמו זו שבהמשך:

הפלט אמור להיראות כך:

✦ There are currently no Cloud SQL instances or Cloud Run services (in us-central1) in the project gleb-test-short-001-486416.

כאן מסתיימים השלבים של שיעור ה-Lab.

9. מזל טוב

כל הכבוד, סיימתם את ה-Codelab.

תוכנית הלימודים של Google Cloud

מה נכלל

  • איך פורסים את Gemini CLI כדי לעבוד עם תצורות MCP של Google Cloud
  • איך משתמשים ב-Development KnowledgeMCP
  • איך משתמשים ב-Cloud SQL MCP כדי להעביר נתונים לענן
  • איך משתמשים ב-Cloud Run MCP כדי לפרוס אפליקציה בענן
  • איך משתמשים ב-Gemini CLI ב-Google Cloud Shell

10. סקר

פלט:

איך תשתמשו במדריך הזה?

רק קוראים את הטקסט קוראים את הטקסט ומבצעים את התרגילים