Lokal zu Cloud: Full-Stack-App-Migration mit Gemini CLI und Cloud SQL MCP

1. Einführung

AllStrides ist eine umfassende Eventmanagement-Plattform für Fitness-Communities. Obwohl es viele Funktionen bietet, ist es derzeit nur lokal verfügbar. Es basiert auf einer lokalen SQLite-Datenbank und der manuellen Ausführung von Node.js. Damit die Community wachsen kann, benötigt AllStrides die Skalierbarkeit, Zuverlässigkeit und Sicherheit von Google Cloud.

In diesem Codelab führen Sie keine herkömmliche Migration durch. Stattdessen agieren Sie als Produktarchitekt und verwenden die Gemini CLI als agentischen Partner. Wenn Sie Gemini mit drei Google Cloud Model Context Protocol-Servern (MCP) ausstatten, kann die KI direkt auf Google Cloud-Dienste zugreifen und mit ihnen interagieren. Zuerst verwenden Sie den Developer Knowledge MCP, um die beste Google Cloud-Datenbank für die Allstrides-App zu ermitteln. Anschließend nutzen Sie den Cloud SQL MCP, um mit einem einzigen Prompt eine Datenbankinstanz bereitzustellen und Ihre lokalen Community-Daten in die Cloud zu verschieben. Schließlich verwenden Sie den Cloud Run-MCP, um die Anwendung in einem Container zu platzieren und AllStrides live und global zugänglich zu machen.

e031fbb4ae5d2afc.png

Voraussetzungen

  • Grundlegende Kenntnisse der Google Cloud Console
  • Grundkenntnisse in der Befehlszeile und Cloud Shell

Lerninhalte

  • Gemini CLI für die Verwendung mit einem Remote-MCP konfigurieren
  • MCP-Server für Entwicklerwissen verwenden
  • Cloud SQL-Remote-MCP-Server zum Migrieren von Daten in die Cloud verwenden
  • Remote-MCP-Server von Cloud Run zum Bereitstellen von Anwendungen in der Cloud verwenden
  • Gemini CLI in Google Cloud Shell verwenden

Voraussetzungen

  • Ein Google Cloud-Konto und ein Google Cloud-Projekt
  • Ein Webbrowser wie Chrome, der die Google Cloud Console und die Cloud Shell unterstützt

2. Einrichtung und Anforderungen

Projekteinrichtung

  1. Melden Sie sich in der Google Cloud Console an. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.

Verwenden Sie ein privates Konto anstelle eines Arbeitskontos oder eines Kontos einer Bildungseinrichtung.

  1. Erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes. Klicken Sie zum Erstellen eines neuen Projekts in der Google Cloud Console in der Kopfzeile auf die Schaltfläche „Projekt auswählen“, um ein Pop-up-Fenster zu öffnen.

295004821bab6a87.png

Klicken Sie im Fenster „Projekt auswählen“ auf die Schaltfläche „Neues Projekt“, um ein Dialogfeld für das neue Projekt zu öffnen.

37d264871000675d.png

Geben Sie im Dialogfeld den gewünschten Projektnamen ein und wählen Sie den Speicherort aus.

96d86d3d5655cdbe.png

  • Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Der Projektname wird von Google APIs nicht verwendet und kann jederzeit geändert werden.
  • Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich. Sie kann also nicht mehr geändert werden, nachdem sie festgelegt wurde. In der Google Cloud Console wird automatisch eine eindeutige ID generiert, die Sie aber anpassen können. Wenn Ihnen die generierte ID nicht gefällt, können Sie eine weitere zufällige ID generieren oder eine eigene ID angeben, um die Verfügbarkeit zu prüfen. In den meisten Codelabs müssen Sie auf Ihre Projekt-ID verweisen, die in der Regel mit dem Platzhalter PROJECT_ID angegeben wird.
  • Zur Information: Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten

Abrechnung aktivieren

Privates Rechnungskonto einrichten

Wenn Sie die Abrechnung mit Google Cloud-Guthaben einrichten, können Sie diesen Schritt überspringen.

  1. Klicken Sie auf diesen Link und melden Sie sich mit einem privaten Google-Konto an.
  2. Die Ansicht sieht ungefähr so aus:

f54628965f465486.png

  1. Klicken Sie auf die Schaltfläche HIER KLICKEN, UM AUF IHRE GUTHABENPUNKTE ZUZUGREIFEN. Sie werden dann auf eine Seite weitergeleitet, auf der Sie Ihr Abrechnungsprofil einrichten können. Wenn ein Bildschirm zur Anmeldung für ein Probeabo angezeigt wird, klicke auf „Abbrechen“ und fahre mit dem Verknüpfen der Abrechnung fort.

20e88842cf2a732e.png

  1. Klicken Sie auf „Bestätigen“. Sie sind jetzt mit einem Google Cloud Platform-Testrechnungskonto verbunden.

cdc87f1c57777951.png

Privates Rechnungskonto einrichten

Wenn Sie die Abrechnung mit Google Cloud-Guthaben einrichten, können Sie diesen Schritt überspringen.

Hier können Sie die Abrechnung in der Cloud Console aktivieren, um ein privates Rechnungskonto einzurichten.

Hinweise:

  • Die Cloud-Ressourcen, die Sie für dieses Lab benötigen, sollten weniger als 3 $kosten.
  • Sie können die Schritte am Ende dieses Labs ausführen, um Ressourcen zu löschen und so weitere Kosten zu vermeiden.
  • Neue Nutzer haben Anspruch auf den kostenlosen Testzeitraum mit einem Guthaben von 300$.

Cloud Shell starten

Während Sie Google Cloud von Ihrem Laptop aus per Fernzugriff nutzen können, wird in diesem Codelab Google Cloud Shell verwendet, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.

Klicken Sie in der Google Cloud Console rechts oben in der Symbolleiste auf das Cloud Shell-Symbol:

Cloud Shell aktivieren

Alternativ können Sie auch G und dann S drücken. Mit dieser Sequenz wird Cloud Shell aktiviert, wenn Sie sich in der Google Cloud Console befinden oder diesen Link verwenden.

Die Bereitstellung und Verbindung mit der Umgebung sollte nur wenige Augenblicke dauern. Anschließend sehen Sie in etwa Folgendes:

Screenshot des Google Cloud Shell-Terminals, auf dem zu sehen ist, dass die Umgebung verbunden ist

Diese virtuelle Maschine verfügt über sämtliche Entwicklertools, die Sie benötigen. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft in Google Cloud, was die Netzwerkleistung und Authentifizierung erheblich verbessert. Alle Aufgaben in diesem Codelab können in einem Browser ausgeführt werden. Sie müssen nichts installieren.

3. Hinweis

Basic API aktivieren

Wenn Sie verwaltete Datenbankdienste wie Cloud SQL und andere Dienste verwenden möchten, um Ihre Anwendung in Cloud Run zu erstellen und bereitzustellen, müssen Sie die entsprechenden APIs in Ihrem Google Cloud-Projekt aktivieren.

Je nach Vorgehensweise können Sie den Schritt optional überspringen und die Gemini CLI alle erforderlichen APIs später aktivieren lassen. In diesem Fall kann es jedoch zu Verzögerungen und wiederholten Schritten während der Ausführung kommen.

Prüfen Sie im Cloud Shell-Terminal, ob Ihre Projekt-ID eingerichtet ist:

gcloud config set project [YOUR-PROJECT-ID]

Legen Sie die Umgebungsvariable PROJECT_ID fest:

PROJECT_ID=$(gcloud config get-value project)

Aktivieren Sie alle erforderlichen Dienste:

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

Erwartete Ausgabe:

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.

Dienstkonto Berechtigungen erteilen

Sie müssen dem Compute Engine-Standarddienstkonto Speicheradministratorberechtigungen gewähren, damit Anwendungs-Images erstellt und gespeichert werden können. Wie im vorherigen Schritt haben Sie die Möglichkeit, die Aufgabe später während der Ausführung an die Gemini CLI zu delegieren.

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

Remote-MCP aktivieren

Die Remote-MCP-Dienste müssen für jeden Dienst in einem Projekt explizit aktiviert werden. Sie sind standardmäßig deaktiviert und helfen, den API-Zugriff auf Projekt- und Dienstebene zu regulieren.

Beginnen wir mit dem MCP-Dienst „Developer Knowledge“. Führen Sie die folgenden gcloud-Befehle aus, um die Developer Knowledge API und den Remote-MCP-Dienst zu aktivieren.

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

Wenn die API und der Remote-MCP für Developer Knowledge aktiviert sind, können Sie mit dem Cloud SQL-Remote-MCP-Dienst fortfahren und dasselbe tun.

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

Wie bei allen Remote-MCPs für Datenbanken werden der MCP-Zugriff und die Berechtigungen stufenweise bereitgestellt, um einen detaillierten Zugriff auf Projektebene auf die API selbst zu ermöglichen. Nur ein Prinzipal (Nutzer oder Dienstkonto) mit der Rolle Service Usage Admin (roles/serviceusage.serviceUsageAdmin) kann dies tun.

Nur Principals mit der Rolle MCP Tool User (roles/mcp.toolUser) können die Remote-MCP-API aufrufen.

Wenn Sie beispielsweise nicht die Rolle Cloud SQL-Administrator (roles/cloudsql.admin) haben, können Sie keine Instanz im Projekt erstellen, klonen oder aktualisieren.

Weitere Informationen zu den erforderlichen Rollen und Berechtigungen finden Sie in der Dokumentation.

Wie wir sehen, schützt uns die stufenweise und detaillierte Autorisierung vor unbefugten Angriffen, auch wenn der Remote-MCP-Endpunkt aktiviert ist. Das macht sie sicher genug für unsere Produktion.

Als Nächstes aktivieren wir den Remote-MCP für den Cloud Run-Dienst. Der Ansatz für die Aktivierung und den Zugriff auf den Remote-MCP für Cloud Run ähnelt dem Remote-MCP für Cloud SQL.

Aktivieren Sie den Cloud Run-MCP-Dienst mit dem folgenden Befehl.

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

Schließlich können wir mit dem folgenden Befehl überprüfen, ob alle Remote-MCPs in unserem Projekt aktiviert sind.

gcloud beta services mcp list --project=$PROJECT_ID

Erwartete Ausgabe:

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

Nachdem alle APIs und Dienste aktiviert sind, müssen wir die Gemini CLI konfigurieren.

4. Gemini CLI konfigurieren

In diesem Lab wird die Gemini CLI als Haupt-Agent verwendet, um die meisten Aktionen auszuführen. Der erste Schritt besteht darin, sie für die Verwendung mit Remote-MCP-Servern zu konfigurieren. Außerdem wird dringend empfohlen, die aktuelle Version der Gemini CLI und die aktuelle Version von Gemini wie Gemini-3-pro oder Gemini-3-flash (derzeit als Vorabversion) zu verwenden.

Wenn Sie bereits die aktuelle Version der Gemini CLI haben und sie für die Verwendung der neuesten Gemini-Modelle konfiguriert haben, können Sie die nächsten beiden Schritte überspringen und direkt zu Schritt 3 gehen.

1. Gemini API-Schlüssel anfordern

Wenn Sie die neuesten Gemini-Modelle in Ihrer Gemini CLI verwenden möchten, muss sie mit der API-Schlüsselauthentifizierung konfiguriert sein. Wir können den API-Schlüssel entweder in Google AI Studio

  1. Rufen Sie in Ihrem Browser Google AI Studio -> API-Schlüssel abrufen auf.
  2. Klicken Sie rechts auf dem Bildschirm auf die Schaltfläche Create API key.
  3. Wählen Sie im Pop-up-Fenster Ihr Projekt aus oder importieren Sie es, falls es dort nicht angezeigt wird.

683940deabde2975.jpeg

  1. Erstellen Sie den API-Schlüssel.
  2. Sie können den Schlüssel mit der Schaltfläche „Kopieren“ auf der rechten Seite kopieren.

3d97805534c50bf.jpeg

Der Schlüssel ist vorbereitet und kann jetzt für die Gemini CLI verwendet werden.

2. Gemini CLI konfigurieren

Die Gemini CLI kann über die Datei mit den Einstellungen oder interaktiv mit dem Befehl /settings konfiguriert werden. Wir möchten, dass unsere Einstellungen in unserer Einstellungsdatei beibehalten werden.

Zuerst erstellen wir ein Verzeichnis für unser Projekt. Nennen wir das Verzeichnis projectmcp und wechseln wir mit den folgenden Befehlen in dieses Verzeichnis.

mkdir ~/projectmcp
cd ~/projectmcp

In diesem Verzeichnis erstellen wir ein Verzeichnis für Gemini-Konfigurationsdateien und führen alle unsere Befehle aus. Standardmäßig verwendet die Gemini CLI eine Konfigurationsdatei für Nutzerbereiche und Erweiterungen, die im Verzeichnis „~/.gemini“ installiert sind. Wir erstellen jedoch eine eigene Projektbereichskonfiguration in unserem Verzeichnis „~/projectmcp“. Zuerst erstellen wir das Konfigurationsverzeichnis und die Konfigurationsdateien.

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

Öffnen Sie dann die Datei ~/projectmcp/.gemini/settings.json mit dem Cloud Shell-Editor.

edit ~/projectmcp/.gemini/settings.json

Fügen Sie im geöffneten Editorfenster die folgende Konfiguration hinzu.

{
  "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
    }
  }
}

Nachdem Sie die Datei bearbeitet haben, können Sie ctrl+s verwenden, um Ihre Änderungen zu speichern und zum Terminal zurückzukehren. Klicken Sie dazu auf die Schaltfläche Open Terminal.

e152c73931dac892.jpeg

In den oben genannten settings.json-Dateien wird der Authentifizierungstyp für die Gemini CLI auf „gemini-api-key“ festgelegt. Sie müssen den Schlüssel für das Modell angeben. Dazu erstellen Sie eine .env-Datei in dem Verzeichnis, in dem Sie mit der Gemini CLI arbeiten möchten, und speichern Ihren API-Schlüssel für die Gemini CLI-Authentifizierung als Umgebungsvariable. Diese wird beim Start der IDE übernommen.

Datei mit dem Cloud Shell-Editor bearbeiten

edit ~/projectmcp/.env

Speichern Sie den in Schritt 1 erstellten API-Schlüssel.

GEMINI_API_KEY= <YOUR_API_KEY>

Sie können jetzt zum Terminal zurückkehren und fortfahren. Im nächsten Schritt aktualisieren Sie Ihre Gemini CLI auf die neueste Version. Die Version in Google Cloud Shell oder in Ihrer Umgebung kann veraltet sein und funktioniert möglicherweise nicht richtig mit den neuesten Konfigurationen und MCP-Diensten. Es ist daher wichtig, dass Sie die Gemini CLI auf die neueste Version aktualisieren und starten. Führen Sie im Terminal Folgendes aus.

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

Jetzt können Sie die Version überprüfen. Wenn Sie in Google Cloud Shell arbeiten, wird bei jedem Neustart der Shell möglicherweise die vorherige Version wiederhergestellt. Die Änderungen, die Sie an der Gemini CLI selbst vornehmen, sind in Cloud Shell nicht dauerhaft.

gemini --version

Es sollte die aktuelle Version der Gemini CLI angezeigt werden (Version 0.27 zum Zeitpunkt der Erstellung dieses Labs). Die aktuelle Version der Gemini CLI finden Sie hier. Jetzt können wir es starten und darauf achten, dass das neueste Gemini-Modell verwendet wird. Führen Sie den folgenden Befehl in Ihrem Projektordner aus, um die Gemini CLI zu starten.

gemini

Wenn die Gemini CLI gestartet wird, können Sie die Version und das Modell mit dem Befehl /about in der Benutzeroberfläche prüfen. Die Ausgabe sollte in etwa so aussehen:

dea82957ace33156.jpeg

Sie sehen, dass das neueste Gemini 3-Modell verwendet wird.

2. MCP-Server in der Gemini CLI konfigurieren

Jetzt ist es an der Zeit, alle aktivierten MCP-Server hinzuzufügen. Sie haben zwei Möglichkeiten, sie in der Gemini CLI zu aktivieren: über Erweiterungen oder direkt in den Einstellungen. In diesem Lab verwenden Sie die Datei „settings.json“ Ihres Projekts und fügen dort die Authentifizierungsdetails für die MCP-Server hinzu.

  1. Für den Developer Knowledge MCP-Server müssen Sie einen API-Schlüssel erstellen, um am Endpunkt autorisiert zu werden.

Und so gehts:

  • Rufen Sie in der Google Cloud Console für das Projekt, in dem Sie die API aktiviert haben, die Seite „Anmeldedaten“ auf.
  • Klicken Sie auf „Anmeldedaten erstellen“ und wählen Sie im Menü „API-Schlüssel“ aus. Das Dialogfeld „API-Schlüssel erstellt“ enthält den String für den neu erstellten Schlüssel.
  • Klicken Sie im Dialogfeld auf den Link Edit API key.
  • Geben Sie im Feld Name einen Namen für den Schlüssel ein. Beispiel: DK API Key .
  • Wählen Sie unter „API-Einschränkungen“ die Option Restrict key aus.
  • Aktivieren Sie in der Liste „APIs auswählen“ die Option Developer Knowledge API und klicken Sie auf „OK“.
  • Klicken Sie auf „Speichern“.

d0e7c7081e43788e.jpeg

Wenn Sie den Schlüssel benötigen, können Sie auf der Seite rechts auf „Schlüssel anzeigen“ klicken.

caf35e95bba68c2.jpeg

Jetzt müssen Sie diesen Schlüssel in der Konfiguration speichern. Der MCP-Abschnitt unserer Datei „settings.json“ würde so aussehen (Sie müssen dort einen Wert für Ihren DK API-Schlüssel eingeben). Hier ist ein Beispiel dafür, wie der MCP-Abschnitt der Datei „settings.json“ aussieht, wenn nur die DK API hinzugefügt wird. Später in diesem Lab sehen Sie auch, wie die Datei settings.json mit allen MCP-Servern aussehen sollte.

    "mcpServers": {
    "DeveloperKnowledge": {
      "httpUrl": "https://developerknowledge.googleapis.com/mcp",
      "headers": {
        "X-Goog-Api-Key": "<Your DK API Key>"
      }
    }
  },
  1. Als Nächstes können Sie die Konfiguration für unseren Cloud SQL-MCP-Server hinzufügen. Für das Cloud SQL-MCP verwenden Sie Ihre Google-Anmeldedaten anstelle der API. Es ist sicherer und ermöglicht uns, Rollen und den Umfang der für einen Nutzer zulässigen Aktionen zu definieren. Hier ist die Konfiguration für den MCP-Server. Ersetzen Sie „<YOUR_GCP_PROJECT>“ durch Ihre eigene Projekt-ID.
    "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. Der nächste JSON-Abschnitt enthält die Konfiguration für den Cloud Run-MCP-Server. Es folgt demselben Muster wie das obige Beispiel und verwendet Google-Anmeldedaten für die Authentifizierung und Autorisierung. Hier ist die Beispielkonfiguration.
    "CloudRun": {
      "httpUrl": "https://run.googleapis.com/mcp",
      "authProviderType": "google_credentials",
      "oauth": {
        "scopes": [
          "https://www.googleapis.com/auth/cloud-platform"
        ]
      }
    }

Alle müssen der Datei ~/projectmcp/.gemini/settings.json hinzugefügt werden.

Öffnen Sie die Datei ~/projectmcp/.gemini/settings.json mit dem Cloud Shell-Editor.

edit ~/projectmcp/.gemini/settings.json

Ersetzen Sie den Inhalt durch die folgende Konfiguration. Geben Sie Ihren API-Schlüssel und Ihre Projekt-ID entsprechend Ihrer Umgebung in die Felder „X-Goog-Api-Key“ und „X-Goog-User-Project“ ein.

{
  "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
    }
  }
}

Jetzt können wir die Gemini CLI starten und alle unsere MCP-Server werden dort angezeigt.

cd ~/projectmcp/
gemini

Wenn die Gemini CLI gestartet ist, können Sie den Befehl /mcp ausführen, um alle MCP-Server zu sehen, die ausgeführt werden.

352638b053783696.png

5. Anwendung vorbereiten

Im folgenden Beispiel migrieren Sie Ihre lokale Beispielanwendung zu Google Cloud. Zuerst installieren wir die Anwendung lokal und testen sie.

1. Quellcode klonen

Wir müssen unsere Anwendung aus dem GitHub-Repository klonen. Führen Sie den Befehl in der Cloud Shell oder in Ihrem lokalen Terminal im Projektordner aus.

git clone https://github.com/google/mcp.git

2. Anwendung lokal starten

Testen Sie die Anwendung und laden Sie einige Beispieldaten.

Wechseln Sie in derselben Shell in den Anwendungsordner und starten Sie die Anwendung mit dem

cd mcp/examples/allstrides
./start_allstrides.sh

3. Anwendung testen

Wenn Sie in Cloud Shell arbeiten, drücken Sie oben im Cloud Shell-Fenster die Taste Web preview und wählen Sie Preview on port 8080 aus.

db0d9210014ade3d.jpeg

Dadurch wird ein neuer Browsertab mit der Anwendungsoberfläche geöffnet, in der Sie beispielsweise auf die Schaltfläche Events klicken können.

67423438eef0c999.jpeg

Derzeit haben Sie keine Ereignisse.

4. Beispieldaten laden

Sie können sich optional in der Anwendung registrieren und eigene Ereignisse, Chatnachrichten und Nutzer erstellen oder die mit der Anwendung bereitgestellten Beispieldaten verwenden.

Öffnen Sie oben einen weiteren Cloud Shell-Tab, indem Sie auf das Pluszeichen (+) klicken.

abc505ac4d41f24e.png

Wechseln Sie auf dem neuen Cloud Shell-Tab in das Anwendungsverzeichnis und führen Sie den Import mit dem Dienstprogramm „sqlite3“ aus:

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

Wenn Sie zur Anwendungsseite zurückkehren und noch einmal auf die Schaltfläche „Events“ klicken, sollten Sie mehrere Ereignisse sehen.

5adc772a1d2261f4.jpeg

Sie können auch die Chatseite testen und sich dort einige Nachrichten ansehen.

Sie können den zweiten Tab jetzt schließen, indem Sie exit eingeben.

exit

Beenden Sie die Anwendung auf dem ersten Tab mit der Tastenkombination Strg + C.

6. Testing Developer Knowledge MCP

Mit dem Developer Knowledge MCP können wir Google-Dokumente direkt in unseren agnostischen Tools verwenden, um Anleitungen zu überprüfen, Tutorials zu erstellen und andere Aufgaben auszuführen, die durch die aktuelle Google-Dokumentation ergänzt werden können.

Starten Sie die Gemini CLI und listen Sie die verfügbaren MCP-Tools auf dem Developer Knowledge-MCP-Server auf.

/mcp

Für den MCP „Developer Knowledge“ sollten drei Tools verfügbar sein:

Erwartete Ausgabe:

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

Wir müssen unsere Anwendung in die Google Cloud migrieren. Das bedeutet, dass wir von der lokalen SQLite-Datenbank zu einer skalierbareren und cloudnativen Lösung wechseln müssen. Wir bitten Gemini, unseren Anwendungscode zu analysieren und uns zur Datenbanklösung zu beraten.

Geben Sie in der Gemini CLI den folgenden Prompt ein:

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 beginnt mit der Analyse Ihres Codes und fragt dann, ob der

Erwartete Ausgabe

 ?  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)   

Wir sehen, dass das Tool MCP verwendet, um die Antwort anhand der Google-Dokumentation zu fundieren. Die Ausführung der MCP-Anfrage für Entwicklerwissen zulassen. Möglicherweise werden Sie ein- oder zweimal um weitere Informationen gebeten, bevor die Antwort generiert wird. Lassen Sie ab sofort keine Änderungen an Ihrer Bewerbung zu.

Am Ende wurde eine Anleitung mit einer Zusammenfassung erstellt, in der Cloud SQL for Postgres als beste Wahl für das Datenbank-Backend definiert wurde. Aufgrund der nicht deterministischen Natur von Modellen der generativen KI erhalten Sie möglicherweise eine leicht abweichende Antwort.

Erwartete Ausgabe:

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.  

Wir können Sie auch bitten, eine detaillierte Anleitung für die Datenmigration zu erstellen. Geben Sie einen neuen Prompt in die Gemini CLI ein:

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?

Auch hier erwarten wir, dass die Gemini CLI den Developer Knowledge MCP als Source of Truth verwendet, wenn sie das Tutorial vorbereitet. Die Reihenfolge der von Gemini CLI ausgeführten Aktionen kann je nach Modell und anderen Faktoren leicht variieren. So kann es beispielsweise darum bitten, zuerst Migrationsskripts vorzubereiten und erst danach an der endgültigen Tutorialdokumentation zu arbeiten.

Hier ist eines der Beispiele, in denen um die Berechtigung zur Ausführung des Developer Knowledge MCP gebeten wird:

 ?  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"}
 

Während der Ausführung werden Sie von der Gemini CLI möglicherweise aufgefordert, einige Befehle auszuführen. So können Sie beispielsweise das Datenschema besser nachvollziehen, um die richtigen Anweisungen für die Datenmigration vorzubereiten.

Am Ende sollte eine Schritt-für-Schritt-Anleitung für die Datenmigration erstellt werden.

Anschließend können Sie die Gemini CLI bitten, das Tutorial zu schreiben.

Please write the tutorial down

Es wird eine neue Markdown-Datei mit dem Anleitungsdokument erstellt.

Erwartete Ausgabe:

✦ 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.

Im nächsten Schritt arbeiten wir mit Cloud SQL MCP, um unsere Datenbank vorzubereiten und Daten zu migrieren.

7. Cloud SQL Remote MCP testen

1. Cloud SQL-Instanz erstellen

Sie können damit beginnen, die verfügbaren Tools auf dem Cloud SQL-MCP-Server zu prüfen, indem Sie /mcp in die Gemini CLI eingeben.

/mcp

Derzeit stehen uns die folgenden Tools zur Verfügung.

Erwartete Ausgabe:

🟢 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

Wir haben uns bereits entschieden, Cloud SQL for Postgres als Backend für unsere Anwendung in der Google Cloud zu verwenden. Jetzt können wir Gemini bitten, eine Cloud SQL-Instanz für uns zu erstellen.

Geben Sie in der Gemini CLI-Eingabeaufforderung Ihre Anfrage wie folgt ein:

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.

Um zusätzliche Aufrufe zur Identifizierung Ihres aktuellen Projekts zu vermeiden, können Sie Ihre Projekt-ID explizit angeben, wenn Sie Ihren Prompt eingeben. Wenn der Projektname im Kontext noch nicht verwendet wurde, wird das Modell entweder nach der Projekt-ID gefragt oder es wird aufgefordert, den gcloud-Befehl auszuführen, um das Projekt zu identifizieren.

Anschließend werden vorhandene Tools analysiert und Sie werden aufgefordert, Cloud SQL MCP-Tools auszuführen. Sie sollten die folgende Genehmigungsanfrage sehen.

?  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)
 

Nach dem Start der Ausführung werden Sie aufgefordert, den Vorgangsstatus und mögliche Ruheanfragen zwischen den Prüfungen zu überwachen. In etwa so:

✦ 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)

Danach würde ein get_operation-Tool für Cloud SQL Server MCP folgen.

╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ ?  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

Nach der letzten get_instance-Anfrage sollten Sie Informationen zur erstellten Instanz erhalten. In etwa so:

Erwartete Ausgabe:

✦ 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)

Danach folgt das get_operation-Tool für Cloud SQL Server MCP und der get_insance-MCP-Toolaufruf. Möglicherweise werden zusätzliche Prüfungen und Aufrufe durch die Gemini CLI ausgeführt, um den erfolgreichen Abschluss der Aufgabe zu bestätigen.

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. Daten migrieren

Die Instanz ist bereit und wir können nun alle unsere Daten aus der vorhandenen SQLite-Datenbank in eine neue Datenbank in der Cloud migrieren.

Geben Sie in der Gemini CLI den folgenden Prompt ein:

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.

Während der Ausführung analysiert die Gemini CLI unser Datenmodell. Dazu werden Berechtigungen zum Ausführen einiger Befehle angefordert. Der Workflow ist nicht zu 100% deterministisch und einige Schritte können sich unterscheiden.

Hier ist ein Beispiel für den Beginn eines solchen Gesprächs.

Erwartete Ausgabe:

✦ 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                                                                                                                                                                         │
│                                                                                                                                                                                                              │
╰─────────────────────────────────────────────────────────────────────────

Nach einigen Schritten wird Cloud SQL MCP verwendet, um die Datenbank und den Nutzer vorzubereiten und schließlich Daten zu migrieren. Eine der ersten Aktionen, die für die Datenbank ausgeführt werden, ist, Sie als IAM-Nutzer hinzuzufügen und Ihnen Berechtigungen zum Erstellen von Datenbanken und Nutzern zu erteilen. Sie sollten in Google Cloud als IAM über ausreichende Berechtigungen verfügen.

Hier sehen Sie ein Beispiel für einige Schritte im Workflow.

Erwartete Ausgabe:

 ✓  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. Anwendung in Cloud Run bereitstellen

Die Datenbank wurde erstellt und die lokalen Anwendungsdaten wurden in Ihre Cloud SQL-Datenbank migriert. Sie können Ihre Anwendung jetzt in Cloud Run bereitstellen. Bei der Bereitstellung verwenden Sie eine Kombination aus Google Cloud SDK, um das Image in Google Cloud zu erstellen, und Cloud Run MCP, um es bereitzustellen.

Führen Sie in der Gemini CLI den folgenden Prompt aus.

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.

Während der Ausführung werden die APIs geprüft, die Daten für den Secret Manager vorbereitet und die erforderlichen Secrets erstellt. Außerdem wird die Anwendung aktualisiert, damit sie mit der PostgreSQL-Datenbank funktioniert, und die erforderlichen npm-Module werden hinzugefügt.

Nachdem das Image erstellt und in der Artifact Registry platziert wurde, wird die Anwendung mit dem MCP-Dienst in Cloud Run bereitgestellt.

Hier ist ein Beispiel für den Aufruf des Cloud Run-MCP:

Erwartete Ausgabe:

✦ 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)                                                                                                                            │
│                                                                                                                                                           │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

Der genaue Pfad zum Ausführen aller Vorgänge kann von Ausführung zu Ausführung variieren. KI-Agents wählen den Pfad basierend auf dem Kontext, der Befehlsausgabe und mehreren anderen Variablen aus. Und genau hier liegt die Stärke von KI-Agentensoftware: Sie kann reagieren, ihren Ansatz anpassen und Schritte wiederholen, um Aufgaben zu erledigen und erfolgreiche Ergebnisse zu liefern.

Ihre allstrides-Anwendung sollte jetzt in Cloud Run bereitgestellt und ausgeführt werden und mit Ihrer Cloud SQL-Datenbank verbunden sein.

So könnte das Ergebnis aussehen.

Erwartete Ausgabe:

✦ 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.

Wenn Sie die bereitgestellte URL im Browser öffnen, sollte die Anwendungsseite angezeigt werden.

d710de5dbee99720.png

Alle unsere Events sollten dort sichtbar sein.

4ae98d3607718794.png

Glückwunsch! Sie konnten die Gemini CLI und die Remote-MCP-Dienste von Google Cloud verwenden, um Ihre lokale Anwendung in die Cloud zu migrieren. Die Bereitstellung ist damit abgeschlossen und alle Ressourcen können bereinigt werden.

8. Umgebung bereinigen

Am einfachsten bereinigen Sie die Umgebung, indem Sie die Gemini CLI bitten, alle von Ihnen erstellten Komponenten zu entfernen. Alle Assets sollten im Kontext bleiben. Wenn Sie jedoch aus irgendeinem Grund abgemeldet wurden und keinen gespeicherten Verlauf haben, können Sie versuchen, genauer zu sein und den Cloud Run-Dienst, das Image und die Cloud SQL-Instanz zu bereinigen. Damit der Dienst entfernt werden kann, muss er mit dem Nutzer authentifiziert werden, der die erforderlichen Berechtigungen hat und den gcloud-Befehl verwendet.

Hier ist ein Beispiel für einen Prompt:

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. 

Nach dem Entfernen können Sie mit den Remote-MCP-Diensten überprüfen, ob der Cloud Run-Dienst oder die Cloud SQL-Instanz erfolgreich entfernt wurde.

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

Am Ende sollte eine Meldung wie die folgende angezeigt werden:

Erwartete Ausgabe:

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

Damit sind die Schritte des Labs abgeschlossen.

9. Glückwunsch

Herzlichen Glückwunsch zum Abschluss des Codelabs.

Google Cloud-Lernpfad

Behandelte Themen

  • Gemini CLI für die Verwendung mit Remote-MCPs von Google Cloud konfigurieren
  • Development KnowledgeMCP verwenden
  • Cloud SQL MCP zum Migrieren von Daten in die Cloud verwenden
  • Anwendung mit Cloud Run MCP in der Cloud bereitstellen
  • Gemini CLI in der Google Cloud Shell verwenden

10. Umfrage

Ausgabe:

Wie werden Sie diese Anleitung verwenden?

Nur lesen Lesen und Übungen durchführen