Da locale al cloud: migrazione di app full-stack con Gemini CLI e Cloud SQL MCP

1. Introduzione

Scopri AllStrides, una piattaforma di gestione degli eventi full-stack per le community di fitness. Nonostante sia ricco di funzionalità, il suo stato attuale è "Solo locale". Si basa su un database SQLite locale e sull'esecuzione manuale di Node.js. Per crescere, la community AllStrides ha bisogno della scalabilità, dell'affidabilità e della sicurezza di Google Cloud.

In questo codelab non eseguirai una migrazione tradizionale. Invece, agirai come Product Architect, utilizzando Gemini CLI come partner autonomo. Dotando Gemini di tre server Model Context Protocol (MCP) di Google Cloud, consentirai all'AI di "contattare" e interagire direttamente con i servizi Google Cloud. Inizierai utilizzando il MCP Developer Knowledge per identificare il miglior database Google Cloud per l'app allstrides. Poi utilizzerai il MCP Cloud SQL per eseguire il provisioning di un'istanza di database e spostare i dati della community locale nel cloud con un unico prompt. Infine, utilizzerai Cloud Run MCP per containerizzare l'applicazione, rendendo AllStrides live e accessibile a livello globale.

e031fbb4ae5d2afc.png

Prerequisiti

  • Una conoscenza di base della console Google Cloud
  • Competenze di base nell'interfaccia a riga di comando e in Cloud Shell

Cosa imparerai a fare

  • Come eseguire il deployment di Gemini CLI per funzionare con MCP remoto
  • Come utilizzare il server MCP Development Knowledge
  • Come utilizzare il server MCP remoto Cloud SQL per eseguire la migrazione dei dati al cloud
  • Come utilizzare il server MCP remoto di Cloud Run per eseguire il deployment dell'applicazione nel cloud
  • Come utilizzare Gemini CLI in Google Cloud Shell

Che cosa ti serve

  • Un account Google Cloud e un progetto Google Cloud
  • Un browser web come Chrome che supporta la console Google Cloud e Cloud Shell

2. Configurazione e requisiti

Configurazione del progetto

  1. Accedi alla console Google Cloud. Se non hai ancora un account Gmail o Google Workspace, devi crearne uno.

Utilizza un account personale anziché un account di lavoro o della scuola.

  1. Crea un nuovo progetto o riutilizzane uno esistente. Per creare un nuovo progetto nella console Google Cloud, fai clic sul pulsante Seleziona un progetto nell'intestazione per aprire una finestra popup.

295004821bab6a87.png

Nella finestra Seleziona un progetto, premi il pulsante Nuovo progetto per aprire una finestra di dialogo per il nuovo progetto.

37d264871000675d.png

Nella finestra di dialogo, inserisci il nome del progetto che preferisci e scegli la posizione.

96d86d3d5655cdbe.png

  • Il nome del progetto è il nome visualizzato per i partecipanti a questo progetto. Il nome del progetto non viene utilizzato dalle API Google e può essere modificato in qualsiasi momento.
  • L'ID progetto è univoco in tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo l'impostazione). La console Google Cloud genera automaticamente un ID univoco, ma puoi personalizzarlo. Se non ti piace l'ID generato, puoi generarne un altro casuale o fornire il tuo per verificarne la disponibilità. Nella maggior parte dei codelab, devi fare riferimento all'ID progetto, in genere identificato con il segnaposto PROJECT_ID.
  • Per tua informazione, esiste un terzo valore, un numero di progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.

Abilita fatturazione

Configurare un account di fatturazione personale

Se hai configurato la fatturazione utilizzando i crediti Google Cloud, puoi saltare questo passaggio.

  1. Fai clic su questo link e accedi con un Account Google personale.
  2. Visualizzerai un riquadro simile al seguente:

f54628965f465486.png

  1. Fai clic sul pulsante CLICCA QUI PER ACCEDERE AI TUOI CREDITI. Verrà visualizzata una pagina per configurare il tuo profilo di fatturazione. Se viene visualizzata una schermata di registrazione alla prova senza costi, fai clic su Annulla e continua a collegare la fatturazione.

20e88842cf2a732e.png

  1. Fai clic su Conferma. Ora sei connesso a un account di fatturazione di prova di Google Cloud.

cdc87f1c57777951.png

Configurare un account di fatturazione personale

Se hai configurato la fatturazione utilizzando i crediti Google Cloud, puoi saltare questo passaggio.

Per configurare un account di fatturazione personale, vai qui per abilitare la fatturazione nella console Cloud.

Alcune note:

  • Il completamento di questo lab dovrebbe costare meno di 3 $in risorse cloud.
  • Per evitare ulteriori addebiti, puoi seguire i passaggi alla fine di questo lab per eliminare le risorse.
  • I nuovi utenti hanno diritto alla prova senza costi di 300$.

Avvia Cloud Shell

Sebbene Google Cloud possa essere gestito da remoto dal tuo laptop, in questo codelab utilizzerai Google Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud.

Nella console Google Cloud, fai clic sull'icona di Cloud Shell nella barra degli strumenti in alto a destra:

Attiva Cloud Shell

In alternativa, puoi premere G e poi S. Questa sequenza attiverà Cloud Shell se ti trovi nella console Google Cloud o utilizza questo link.

Bastano pochi istanti per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere un risultato simile a questo:

Screenshot del terminale Google Cloud Shell che mostra che l'ambiente è connesso

Questa macchina virtuale è caricata con tutti gli strumenti per sviluppatori di cui avrai bisogno. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud, migliorando notevolmente le prestazioni e l'autenticazione della rete. Tutto il lavoro in questo codelab può essere svolto all'interno di un browser. Non devi installare nulla.

3. Prima di iniziare

Abilita l'API Basic

Per utilizzare servizi di database gestiti come Cloud SQL e altri servizi per creare e implementare l'applicazione in Cloud Run, devi abilitare le rispettive API nel tuo progetto Google Cloud.

A seconda dell'approccio, puoi facoltativamente saltare il passaggio e lasciare che Gemini CLI abiliti tutte le API richieste in un secondo momento, ma in questo caso potresti riscontrare alcuni ritardi e ripetere i passaggi durante l'esecuzione.

All'interno del terminale Cloud Shell, assicurati che l'ID progetto sia configurato:

gcloud config set project [YOUR-PROJECT-ID]

Imposta la variabile di ambiente PROJECT_ID:

PROJECT_ID=$(gcloud config get-value project)

Attiva tutti i servizi necessari:

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

Output previsto:

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.

Concedi le autorizzazioni al service account

Devi fornire le autorizzazioni di amministratore dell'archiviazione al service account Compute predefinito per poter creare e archiviare le immagini dell'applicazione. Come nel passaggio precedente, hai la possibilità di delegarlo a Gemini CLI in un secondo momento durante l'esecuzione.

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

Abilitare MCP remoto

I servizi MCP remoti devono essere abilitati esplicitamente per ogni servizio in un progetto. Sono disabilitate per impostazione predefinita e contribuiscono a regolare l'accesso alle API a livello di progetto e servizio.

Iniziamo con il servizio MCP Developer Knowledge. Per abilitare l'API Developer Knowledge e il servizio MCP remoto, devi eseguire i seguenti comandi gcloud.

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

Quando l'API e l'MCP remoto per Developer Knowledge sono abilitati, puoi procedere e fare lo stesso per il servizio MCP remoto Cloud SQL.

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

Come per tutti gli MCP remoti per i database, l'accesso e le autorizzazioni MCP vengono organizzati in modo da fornire un accesso granulare a livello di progetto all'API stessa e solo un principal (utente o service account) con il ruolo Amministratore utilizzo servizi (roles/serviceusage.serviceUsageAdmin) può farlo.

Solo i principal con il ruolo Utente dello strumento MCP (roles/mcp.toolUser) possono effettuare chiamate all'API MCP remota.

Ad esempio, se non disponi del ruolo Amministratore Cloud SQL (roles/cloudsql.admin), non potrai creare, clonare o aggiornare alcuna istanza nel progetto.

Puoi scoprire di più sui ruoli e sulle autorizzazioni richiesti nella documentazione.

Come possiamo vedere, l'autorizzazione in più fasi e granulare ci protegge da un attacco non autorizzato anche quando l'endpoint MCP remoto è abilitato, rendendolo sufficientemente sicuro per la nostra produzione.

Il successivo MCP remoto che abiliteremo è per il servizio Cloud Run. L'approccio per l'attivazione e l'accesso di MCP remoto di Cloud Run è simile a quello di MCP remoto di Cloud SQL.

Abilita il servizio Cloud Run MCP con il seguente comando.

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

Infine, possiamo verificare che tutti i MCP remoti siano abilitati nel nostro progetto utilizzando il seguente comando.

gcloud beta services mcp list --project=$PROJECT_ID

Output previsto:

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

Ora che tutte le nostre API e i nostri servizi sono abilitati, dobbiamo configurare la CLI Gemini.

4. Configura Gemini CLI

Il lab è progettato per utilizzare Gemini CLI come agente principale per eseguire la maggior parte delle azioni e il primo passaggio consiste nel configurarlo per funzionare con i server MCP remoti. Inoltre, è consigliabile utilizzare l'ultima versione di Gemini CLI e l'ultima versione di Gemini, ad esempio Gemini 3 Pro o Gemini 3 Flash (attualmente in anteprima).

Se hai già l'ultima versione di Gemini CLI e l'hai configurata per utilizzare gli ultimi modelli Gemini, puoi saltare i due passaggi successivi e andare direttamente al passaggio 3.

1. Ottieni una chiave API Gemini

Per utilizzare i modelli Gemini più recenti nella tua Gemini CLI, devi configurarla con l'autenticazione con chiave API. Possiamo ottenere la chiave API in Google AI Studio

  1. Vai a Google AI Studio -> Ottieni chiave API nel browser.
  2. Sul lato destro dello schermo, fai clic sul pulsante Create API key.
  3. Nella finestra popup, scegli il tuo progetto o importalo se non è visibile.

683940deabde2975.jpeg

  1. Crea la chiave API.
  2. Puoi copiare la chiave utilizzando il pulsante di copia sul lato destro.

3d97805534c50bf.jpeg

La chiave è preparata e ora possiamo utilizzarla per Gemini CLI

2. Configurare Gemini CLI

Gemini CLI può essere configurata tramite il file di configurazione delle impostazioni o in modo interattivo utilizzando il comando /settings. Vogliamo che le nostre impostazioni vengano mantenute nel file delle impostazioni.

Per prima cosa, creiamo una directory per il nostro progetto. Chiamiamo la directory projectmcp e passiamo a questa directory utilizzando i seguenti comandi.

mkdir ~/projectmcp
cd ~/projectmcp

Nella directory creeremo una directory per i file di configurazione di Gemini ed eseguiremo tutti i nostri comandi. Per impostazione predefinita, Gemini CLI utilizza un file di configurazione dell'ambito utente e le estensioni installate nella directory ~/.gemini. Tuttavia, creeremo la nostra configurazione dell'ambito del progetto nella directory ~/projectmcp. Iniziamo creando la directory e i file di configurazione.

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

Poi apriamo il file ~/projectmcp/.gemini/settings.json utilizzando l'editor di Cloud Shell.

edit ~/projectmcp/.gemini/settings.json

Nella finestra dell'editor aperta, aggiungi la seguente configurazione.

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

Dopo aver modificato il file, puoi utilizzare ctrl+s per salvare le modifiche e tornare al terminale facendo clic sul pulsante Open Terminal.

e152c73931dac892.jpeg

I file settings.json precedenti impostano il tipo di autenticazione dell'interfaccia a riga di comando Gemini come gemini-api-key e devi fornire la chiave al modello. Puoi farlo creando un file .env nella directory in cui vuoi lavorare con Gemini CLI e memorizzando la chiave API per l'autenticazione di Gemini CLI come variabile di ambiente che verrà rilevata all'avvio dell'IDE.

Modifichiamo il file utilizzando l'editor di Cloud Shell

edit ~/projectmcp/.env

e memorizza la chiave API creata nel passaggio 1.

GEMINI_API_KEY= <YOUR_API_KEY>

Ora puoi tornare al terminale e continuare. Il passaggio successivo consiste nell'aggiornare Gemini CLI all'ultima versione. La versione in Google Cloud Shell o nel tuo ambiente potrebbe essere obsoleta e non funzionare correttamente con le configurazioni e i servizi MCP più recenti. Pertanto, è importante aggiornare Gemini CLI all'ultima versione e avviarla. Nel terminale, esegui questo comando.

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

Ora puoi verificare la versione. Tieni presente che se lavori in Google Cloud Shell, ogni volta che riavvii la shell potrebbe tornare alla versione precedente. Le modifiche apportate alla Gemini CLI stessa non sono permanenti in Cloud Shell.

gemini --version

Dovrebbe essere visualizzata l'ultima versione della CLI Gemini (versione 0.27 al momento della stesura del lab). Puoi verificare l'ultima versione di Gemini CLI qui. Ora possiamo avviarlo e assicurarci che utilizzi l'ultimo modello Gemini. Esegui questo comando nella cartella del progetto per avviare Gemini CLI.

gemini

Quando Gemini CLI viene avviata, puoi controllare la versione e il modello eseguendo il comando /about nell'interfaccia. Dovresti ottenere un risultato simile a quello mostrato nell'immagine qui sotto.

dea82957ace33156.jpeg

Puoi vedere che utilizza l'ultimo modello Gemini-3.

2. Configurare i server MCP in Gemini CLI

Ora è il momento di aggiungere tutti i server MCP abilitati. Puoi attivarle in due modi nella Gemini CLI: tramite le estensioni o direttamente nelle impostazioni. In questo lab utilizzerai il file setting.json dell'ambito del progetto e aggiungerai i dettagli di autenticazione dei server MCP.

  1. Per il server MCP Developer Knowledge, devi creare una chiave API per essere autorizzato sull'endpoint.

Procedi nel seguente modo:

  • Nella console Google Cloud per il progetto in cui hai attivato l'API, vai alla pagina Credenziali.
  • Fai clic su Crea credenziali, quindi seleziona Chiave API dal menu. La finestra di dialogo Chiave API creata mostra la stringa della chiave appena creata.
  • Fai clic sul link Edit API key nella finestra di dialogo.
  • Nel campo Name, fornisci un nome per la chiave. Ad esempio DK API Key .
  • In Restrizioni delle API, seleziona Restrict key.
  • Nell'elenco Seleziona API, attiva Developer Knowledge API e fai clic su OK.
  • Fai clic su Salva.

d0e7c7081e43788e.jpeg

Ora, se devi utilizzare la chiave, puoi andare alla pagina e fare clic su Mostra chiave a destra.

caf35e95bba68c2.jpeg

Ora devi memorizzare la chiave nella configurazione. La sezione MCP del nostro file settings.json avrebbe il seguente aspetto (devi inserire un valore per la tua chiave API DK). Ecco un esempio di come appare la sezione MCP del file settings.json se viene aggiunta solo l'API DK. Più avanti nel lab, vedrai anche l'aspetto che dovrebbe avere il file settings.json con tutti i server MCP insieme.

    "mcpServers": {
    "DeveloperKnowledge": {
      "httpUrl": "https://developerknowledge.googleapis.com/mcp",
      "headers": {
        "X-Goog-Api-Key": "<Your DK API Key>"
      }
    }
  },
  1. Successivamente, puoi aggiungere la configurazione per il nostro server Cloud SQL MCP. Per Cloud SQL MCP, utilizzerai le tue credenziali Google anziché l'API. È più sicuro e ci consente di definire i ruoli e l'ambito delle azioni consentite per un utente. Ecco la configurazione del server MCP. Sostituisci "<YOUR_GCP_PROJECT>" con il tuo ID progetto.
    "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. Il blocco JSON successivo contiene la configurazione per il server MCP di Cloud Run. Segue lo stesso pattern dell'esempio precedente e utilizza le credenziali Google per l'autenticazione e l'autorizzazione. Ecco la configurazione di esempio.
    "CloudRun": {
      "httpUrl": "https://run.googleapis.com/mcp",
      "authProviderType": "google_credentials",
      "oauth": {
        "scopes": [
          "https://www.googleapis.com/auth/cloud-platform"
        ]
      }
    }

Tutti questi elementi devono essere aggiunti al file ~/projectmcp/.gemini/settings.json.

Apri il file ~/projectmcp/.gemini/settings.json utilizzando l'editor di Cloud Shell.

edit ~/projectmcp/.gemini/settings.json

e sostituisci i contenuti con la seguente configurazione. Inserisci la chiave API e l'ID progetto nei campi "X-Goog-Api-Key" e "X-Goog-User-Project" in base al tuo ambiente.

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

Ora possiamo avviare Gemini CLI e visualizzare tutti i nostri server MCP abilitati.

cd ~/projectmcp/
gemini

Quando viene avviata Gemini CLI, puoi eseguire il comando /mcp per visualizzare tutti i server MCP in esecuzione.

352638b053783696.png

5. Preparazione della richiesta

Nell'esempio seguente, proverai a eseguire la migrazione della tua applicazione locale di esempio a Google Cloud. Innanzitutto, installiamo l'applicazione localmente e la testiamo.

1. Clona il codice sorgente

Dobbiamo clonare la nostra applicazione dal repository GitHub. In Cloud Shell o nel terminale locale nella cartella del progetto, esegui.

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

2. Avviare l'applicazione in locale

Proviamo l'applicazione e carichiamo alcuni dati di esempio

Nella stessa shell, passa alla cartella dell'applicazione e avvia l'applicazione utilizzando il comando

cd mcp/examples/allstrides
./start_allstrides.sh

3. Testa l'applicazione

Se stai lavorando in Cloud Shell, premi il pulsante Web preview nella parte superiore della finestra di Cloud Shell e scegli Preview on port 8080.

db0d9210014ade3d.jpeg

Si aprirà una nuova scheda del browser con l'interfaccia dell'applicazione, in cui puoi, ad esempio, fare clic sul pulsante Events.

67423438eef0c999.jpeg

Al momento non hai eventi.

4. Carica dati di esempio

Puoi registrarti facoltativamente nell'applicazione e creare i tuoi eventi, messaggi di chat e utenti oppure puoi utilizzare i dati di esempio forniti con l'applicazione.

Apri un'altra scheda di Cloud Shell utilizzando il segno "+" in alto.

abc505ac4d41f24e.png

Nella nuova scheda di Cloud Shell, passa alla directory dell'applicazione ed esegui l'importazione utilizzando l'utilità sqllite3:

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

Se torni alla pagina dell'applicazione, dopo aver fatto di nuovo clic sul pulsante Eventi dovresti visualizzare più eventi.

5adc772a1d2261f4.jpeg

Puoi anche testare la pagina della chat e visualizzare alcuni messaggi.

Ora puoi chiudere la seconda scheda digitando exit

exit

e interrompi l'applicazione nella prima scheda utilizzando la combinazione Ctrl+C.

6. Testing Developer Knowledge MCP

Il Developer Knowledge MCP ci consente di utilizzare i documenti Google direttamente dai nostri strumenti indipendenti, fornendo la possibilità di verificare le istruzioni, creare tutorial e altre attività che possono essere integrate con la documentazione Google più recente.

Avvia Gemini CLI ed elenca gli strumenti MCP disponibili nel server MCP Developer Knowledge.

/mcp

Per l'MCP Developer Knowledge, dovresti vedere tre strumenti disponibili:

Output previsto:

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

Il nostro compito è spostare l'applicazione su Google Cloud, il che significa che dobbiamo passare dal database Sqlite locale a una soluzione più scalabile e nativa per il cloud. Chiediamo a Gemini di analizzare il codice della nostra applicazione e di consigliarci la soluzione di database.

Nel prompt di Gemini CLI, digita quanto segue:

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 inizierà analizzando il codice e poi chiederà di eseguire il

Output previsto:

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

Possiamo vedere che lo strumento utilizza MCP per basare la risposta sulla documentazione di Google. Consenti l'esecuzione della richiesta MCP di Developer Knowledge. Potrebbe chiederti una o due volte ulteriori informazioni prima di fornire la risposta. Non consentire modifiche alla tua richiesta a partire da ora.

Alla fine è stato creato un tutorial con un riepilogo in cui Cloud SQL per Postgres è stato definito la scelta migliore per il backend del database. Potresti ricevere una risposta leggermente diversa a causa della natura non deterministica dei modelli di AI generativa.

Output previsto:

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.  

Possiamo anche chiedere di preparare una guida passo passo per la migrazione dei dati. Inserisci un nuovo prompt nell'interfaccia a riga di comando di Gemini:

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?

Anche in questo caso, prevediamo che Gemini CLI utilizzi Developer Knowledge MCP come fonte attendibile durante la preparazione del tutorial. La sequenza di azioni intraprese da Gemini CLI può variare leggermente a seconda del modello esatto e di altri fattori. Ad esempio, può chiedere di preparare prima gli script di migrazione e solo dopo lavorare sulla documentazione finale del tutorial.

Ecco uno degli esempi in cui viene richiesta l'autorizzazione per eseguire l'MCP Developer Knowledge:

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

Durante l'esecuzione, Gemini CLI potrebbe chiederti di eseguire alcuni comandi. Ad esempio, per comprendere meglio lo schema dei dati e preparare istruzioni corrette per la migrazione dei dati.

Alla fine, deve preparare un'istruzione passo passo per la migrazione dei dati.

Poi puoi chiedere a Gemini CLI di scrivere il tutorial.

Please write the tutorial down

Verrà creato un nuovo file Markdown con il documento del tutorial.

Output previsto:

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

Nel passaggio successivo lavoreremo con Cloud SQL MCP per preparare il database e migrare i dati.

7. Test di Cloud SQL Remote MCP

1. Crea l'istanza Cloud SQL

Puoi iniziare controllando gli strumenti disponibili nel server MCP di Cloud SQL digitando /mcp nella Gemini CLI

/mcp

Al momento sono disponibili i seguenti strumenti.

Output previsto:

🟢 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

Abbiamo già deciso di utilizzare Cloud SQL per Postgres come backend della nostra applicazione in Google Cloud. Ora possiamo chiedere a Gemini di creare un'istanza Cloud SQL per noi.

Nel prompt di Gemini CLI, digita la tua richiesta come segue:

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.

Per evitare chiamate aggiuntive per identificare il progetto attuale, puoi specificare esplicitamente l'ID progetto quando inserisci il prompt. Se il nome del progetto non è stato utilizzato nel contesto, il modello chiederà l'ID progetto o di eseguire il comando gcloud per identificare il progetto.

Dopodiché analizzerà gli strumenti esistenti e chiederà di eseguire gli strumenti MCP di Cloud SQL. Dovresti visualizzare la seguente richiesta di approvazione.

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

Dopo aver avviato l'esecuzione, ti verrà chiesto di monitorare lo stato dell'operazione e le possibili richieste di sospensione tra i controlli. Qualcosa di simile a quanto segue.

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

Seguirà uno strumento get_operation per il server MCP di Cloud SQL.

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

Dopo l'ultima richiesta get_instance, dovresti ricevere informazioni sull'istanza creata. Qualcosa di simile a quanto segue.

Output previsto:

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

Seguirà uno strumento get_operation per Cloud SQL Server MCP e la chiamata allo strumento MCP get_insance. Potresti riscontrare controlli e chiamate aggiuntivi eseguiti da Gemini CLI per verificare il completamento della richiesta.

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. Esegui la migrazione dei dati

L'istanza è pronta e ora possiamo continuare a eseguire la migrazione di tutti i nostri dati dal database SQLite esistente a un nuovo database nel cloud.

Nel prompt di Gemini CLI, digita la seguente richiesta

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.

Durante l'esecuzione, la CLI Gemini analizzerà il nostro modello di dati e, per farlo, chiederà le autorizzazioni per eseguire alcuni comandi. Il flusso di lavoro non è deterministico al 100% e alcuni passaggi possono essere diversi.

Ecco un esempio di come potrebbe iniziare.

Output previsto:

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

Dopo diversi passaggi, utilizzerà Cloud SQL MCP per preparare il database, l'utente ed eseguire la migrazione dei dati. Una delle prime azioni che esegue sul database è aggiungerti come utente IAM e concederti le autorizzazioni per creare database e utenti. Devi disporre di privilegi sufficienti in Google Cloud come IAM

Ecco un esempio di alcuni passaggi del flusso di lavoro

Output previsto:

 ✓  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. Esegui il deployment dell'applicazione in Cloud Run

Ora il database è stato creato e i dati dell'applicazione locale sono stati migrati al database CloudSQL. Ora puoi eseguire il deployment della tua applicazione in Cloud Run. Durante il deployment utilizzerai una combinazione di Google Cloud SDK per creare l'immagine in Google Cloud e poi eseguirne il deployment utilizzando Cloud Run MCP.

In Gemini CLI, esegui il seguente prompt.

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.

Durante l'esecuzione, controllerà le API, preparerà i dati per Secret Manager e creerà i secret richiesti. Inoltre, aggiornerà l'applicazione in modo che funzioni con il database PostgreSQL e aggiungerà i moduli npm necessari.

Dopo aver creato l'immagine e averla inserita in Artifact Registry, utilizza il servizio MCP per eseguire il deployment dell'applicazione in Cloud Run.

Ecco un esempio di chiamata al MCP di Cloud Run

Output previsto:

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

Il percorso esatto per completare tutte le operazioni può variare da un'esecuzione all'altra. Gli agenti AI scelgono il percorso in base al contesto, all'output del comando e a molte altre variabili. Ed è qui che risiede la forza del software di agenti AI: può reagire, modificare il proprio approccio e riprovare i passaggi per completare le attività e ottenere risultati positivi.

Ora l'applicazione allstrides dovrebbe essere implementata ed eseguita in Cloud Run e connessa al database Cloud SQL.

Ecco cosa potresti vedere alla fine.

Output previsto:

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

Quando apri l'URL fornito nel browser, dovresti visualizzare la pagina dell'applicazione.

d710de5dbee99720.png

e tutti i nostri eventi dovrebbero essere visibili lì.

4ae98d3607718794.png

Complimenti! Hai potuto utilizzare Gemini CLI e i servizi MCP remoti di Google Cloud per spostare la tua applicazione locale sul cloud. Il deployment è terminato e tutte le risorse possono essere pulite.

8. Pulizia dell'ambiente

Il modo più semplice per pulire l'ambiente è chiedere a Gemini CLI di rimuovere tutti i componenti che hai creato. Deve mantenere tutti gli asset nel contesto. Tuttavia, se per qualche motivo hai eseguito la disconnessione e non hai una cronologia salvata, puoi provare a essere più preciso e richiedere la pulizia del servizio Cloud Run, dell'immagine e dell'istanza Cloud SQL. Per rimuovere il servizio, è necessario autenticarsi con l'utente che dispone delle autorizzazioni richieste e che utilizzerà il comando gcloud.

Ecco un esempio di 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. 

Dopo la rimozione, puoi utilizzare i servizi MCP remoti per verificare la rimozione riuscita del servizio Cloud Run o dell'istanza Cloud SQL.

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

Alla fine dovresti vedere un messaggio simile al seguente:

Output previsto:

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

I passaggi del lab sono terminati.

9. Complimenti

Congratulazioni per aver completato il codelab.

Percorso di apprendimento di Google Cloud

Argomenti trattati

  • Come configurare il deployment dell'interfaccia a riga di comando Gemini per funzionare con i MCP remoti di Google Cloud
  • Come utilizzare Development KnowledgeMCP
  • Come utilizzare Cloud SQL MCP per eseguire la migrazione dei dati al cloud
  • Come utilizzare Cloud Run MCP per eseguire il deployment dell'applicazione nel cloud
  • Come utilizzare Gemini CLI in Google Cloud Shell

10. Sondaggio

Output:

Come utilizzerai questo tutorial?

Solo leggere Leggere e completare gli esercizi