1. Introducción
Conoce AllStrides, una plataforma de administración de eventos de pila completa para comunidades de fitness. A pesar de ser rica en funciones, su estado actual es "Solo local". Se basa en una base de datos SQLite local y en la ejecución manual de Node.js. Para que la comunidad crezca, AllStrides necesita la escala, la confiabilidad y la seguridad de Google Cloud.
En este codelab, no realizarás una migración tradicional. En su lugar, actuarás como arquitecto de productos y usarás Gemini CLI como tu socio agente. Si equipas a Gemini con tres servidores del Protocolo de contexto del modelo (MCP) de Google Cloud, permitirás que la IA "se comunique" y que interactúe directamente con los servicios de Google Cloud. Comenzarás por usar el MCP de conocimiento del desarrollador para identificar la mejor base de datos de Google Cloud para la app de allstrides. Luego, usarás el MCP de Cloud SQL para aprovisionar una instancia de base de datos y trasladar tus datos locales de la comunidad a la nube con una sola instrucción. Por último, usarás el MCP de Cloud Run para contenerizar la aplicación, lo que hará que AllStrides esté disponible y sea accesible a nivel global.

Requisitos previos
- Conocimientos básicos sobre la consola de Google Cloud
- Habilidades básicas de la interfaz de línea de comandos y de Cloud Shell
Qué aprenderás
- Cómo implementar y configurar Gemini CLI para que funcione con un MCP remoto
- Cómo usar el servidor de MCP de Development Knowledge
- Cómo usar el servidor MCP remoto de Cloud SQL para migrar datos a la nube
- Cómo usar el servidor de MCP remoto de Cloud Run para implementar la aplicación en la nube
- Cómo usar Gemini CLI en Google Cloud Shell
Requisitos
- Una cuenta de Google Cloud y un proyecto de Google Cloud
- Un navegador web, como Chrome, que admita la consola de Google Cloud y Cloud Shell
2. Configuración y requisitos
Configuración del proyecto
- Accede a la consola de Google Cloud. Si aún no tienes una cuenta de Gmail o de Google Workspace, debes crear una.
Usa una cuenta personal en lugar de una cuenta de trabajo o institución educativa.
- Crea un proyecto nuevo o reutiliza uno existente. Para crear un proyecto nuevo en la consola de Google Cloud, haz clic en el botón Seleccionar un proyecto en el encabezado, lo que abrirá una ventana emergente.

En la ventana Selecciona un proyecto, presiona el botón Proyecto nuevo, que abrirá un cuadro de diálogo para el proyecto nuevo.

En el cuadro de diálogo, ingresa el nombre del proyecto que prefieras y elige la ubicación.

- El Nombre del proyecto es el nombre visible de los participantes de este proyecto. El nombre del proyecto no se usa en las APIs de Google y se puede cambiar en cualquier momento.
- El ID del proyecto es único en todos los proyectos de Google Cloud y es inmutable (no se puede cambiar después de configurarlo). La consola de Google Cloud genera automáticamente un ID único, pero puedes personalizarlo. Si no te gusta el ID generado, puedes generar otro aleatorio o proporcionar el tuyo para verificar su disponibilidad. En la mayoría de los codelabs, deberás hacer referencia al ID de tu proyecto, que suele identificarse con el marcador de posición PROJECT_ID.
- Recuerda que hay un tercer valor, un número de proyecto, que usan algunas APIs. Obtén más información sobre estos tres valores en la documentación.
Habilitar facturación
Configura una cuenta de facturación personal
Si configuraste la facturación con créditos de Google Cloud, puedes omitir este paso.
- Haz clic en este vínculo y accede con una Cuenta de Google personal.
- Verá un resultado similar al que se detalla a continuación:

- Haz clic en el botón HAZ CLIC AQUÍ PARA ACCEDER A TU CRÉDITO. Esto te dirigirá a una página para configurar tu perfil de facturación. Si aparece una pantalla de registro de prueba gratuita, haz clic en Cancelar y continúa con la vinculación de la facturación.

- Haz clic en Confirmar. Ahora estás conectado a una cuenta de facturación de prueba de Google Cloud Platform.

Configura una cuenta de facturación personal
Si configuraste la facturación con créditos de Google Cloud, puedes omitir este paso.
Para configurar una cuenta de facturación personal, ve aquí para habilitar la facturación en la consola de Cloud.
Algunas notas:
- Completar este lab debería costar menos de USD 3 en recursos de Cloud.
- Puedes seguir los pasos al final de este lab para borrar recursos y evitar cargos adicionales.
- Los usuarios nuevos pueden acceder a la prueba gratuita de USD 300.
Inicia Cloud Shell
Si bien Google Cloud y Spanner se pueden operar de manera remota desde tu laptop, en este codelab usarás Google Cloud Shell, un entorno de línea de comandos que se ejecuta en la nube.
En Google Cloud Console, haz clic en el ícono de Cloud Shell en la barra de herramientas en la parte superior derecha:

También puedes presionar G y, luego, S. Esta secuencia activará Cloud Shell si estás en la consola de Google Cloud o usas este vínculo.
El aprovisionamiento y la conexión al entorno deberían tomar solo unos minutos. Cuando termine el proceso, debería ver algo como lo siguiente:

Esta máquina virtual está cargada con todas las herramientas de desarrollo que necesitarás. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud, lo que permite mejorar considerablemente el rendimiento de la red y la autenticación. Todo tu trabajo en este codelab se puede hacer en un navegador. No es necesario que instales nada.
3. Antes de comenzar
Habilita la API básica
Para usar servicios de bases de datos administradas, como Cloud SQL, y otros servicios para compilar e implementar tu aplicación en Cloud Run, debes habilitar sus APIs respectivas en tu proyecto de Google Cloud.
Según tu enfoque, puedes omitir este paso de forma opcional y permitir que Gemini CLI habilite todas las APIs requeridas más adelante, pero es posible que experimentes algunos retrasos y pasos repetidos durante la ejecución en ese caso.
En la terminal de Cloud Shell, asegúrate de que tu ID del proyecto esté configurado:
gcloud config set project [YOUR-PROJECT-ID]
Configura la variable de entorno PROJECT_ID:
PROJECT_ID=$(gcloud config get-value project)
Habilita todos los servicios necesarios con el siguiente comando:
gcloud services enable sqladmin.googleapis.com \
aiplatform.googleapis.com \
secretmanager.googleapis.com \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
run.googleapis.com \
containerregistry.googleapis.com
Resultado esperado:
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.
Otorga permisos a la cuenta de servicio
Debes proporcionar permisos de administrador de almacenamiento a la cuenta de servicio de Compute predeterminada para poder compilar y almacenar imágenes de aplicaciones. Al igual que en el paso anterior, tienes la opción de delegarlo en Gemini CLI más adelante durante la ejecución.
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
Habilita el MCP remoto
Los servicios de MCP remotos deben habilitarse de forma explícita para cada servicio en un proyecto. Están inhabilitadas de forma predeterminada y ayudan a regular el acceso a la API a nivel del proyecto y del servicio.
Comencemos con el servicio MCP de Developer Knowledge. Para habilitar la API de Developer Knowledge y el servicio MCP remoto, debes ejecutar los siguientes comandos de gcloud.
PROJECT_ID=$(gcloud config get-value project)
gcloud beta services mcp enable developerknowledge.googleapis.com --project=$PROJECT_ID
Cuando se habiliten la API y el MCP remoto para Developer Knowledge, puedes continuar y hacer lo mismo para el servicio de MCP remoto de Cloud SQL.
gcloud beta services mcp enable sqladmin.googleapis.com --project=$PROJECT_ID
Al igual que con todos los MCP remotos para bases de datos, el acceso y los permisos del MCP se organizan por etapas, lo que proporciona acceso detallado a nivel del proyecto a la API en sí, y solo una principal (cuenta de usuario o de servicio) con el rol de Administrador de uso del servicio (roles/serviceusage.serviceUsageAdmin) puede hacerlo.
Además, solo las entidades principales con el rol de Usuario de la herramienta de MCP (roles/mcp.toolUser) pueden realizar llamadas a la API de MCP remota.
Por ejemplo, si no tienes el rol de administrador de Cloud SQL (roles/cloudsql.admin), no podrás crear, clonar ni actualizar ninguna instancia en el proyecto.
Puedes obtener más información sobre los roles y permisos necesarios en la documentación.
Como podemos ver, la autorización granular y por etapas nos protege de un ataque no autorizado, incluso cuando el extremo MCP remoto está habilitado, lo que lo hace lo suficientemente seguro para nuestra producción.
El siguiente MCP remoto que habilitaremos es para el servicio de Cloud Run. El enfoque para habilitar y acceder al MCP remoto de Cloud Run es similar al del MCP remoto de Cloud SQL.
Habilita el servicio de MCP de Cloud Run con el siguiente comando.
gcloud beta services mcp enable run.googleapis.com --project=$PROJECT_ID
Por último, podemos verificar todos los MCP remotos habilitados en nuestro proyecto con el siguiente comando.
gcloud beta services mcp list --project=$PROJECT_ID
Resultado esperado:
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
Ahora que todas nuestras APIs y servicios están habilitados, debemos configurar Gemini CLI.
4. Configura Gemini CLI
El lab está diseñado para usar la CLI de Gemini como el agente principal para realizar la mayoría de las acciones, y el primer paso es configurarla para que funcione con servidores de MCP remotos. También se recomienda usar la versión más reciente de Gemini CLI y la versión más reciente de Gemini, como Gemini-3-pro o Gemini-3-flash (actualmente en versión preliminar).
Si ya tienes la versión más reciente de Gemini CLI y la configuraste para usar los modelos de Gemini más recientes, puedes omitir los próximos 2 pasos y pasar directamente al paso 3.
1. Obtén una clave de API de Gemini
Para usar los modelos de Gemini más recientes en tu CLI de Gemini, debes configurarla con una autenticación de clave de API. Podemos obtener la clave de API en Google AI Studio
- Ve a Google AI Studio -> Obtener clave de API en tu navegador.
- En el lado derecho de la pantalla, haz clic en el botón
Create API key. - En la ventana emergente, elige tu proyecto o impórtalo si no se ve allí.

- Crea la clave de API.
- Puedes copiar la clave con el botón de copiar que se encuentra en el lado derecho.

La clave está preparada y ahora podemos usarla para Gemini CLI
2. Configura Gemini CLI
Puedes configurar Gemini CLI a través del archivo de configuración de parámetros o de forma interactiva con el comando /settings. Queremos que la configuración se conserve en el archivo de configuración.
Primero, crearemos un directorio para nuestro proyecto. Llamemos al directorio projectmcp y cambiemos a ese directorio con los siguientes comandos.
mkdir ~/projectmcp
cd ~/projectmcp
En el directorio, crearemos otro para los archivos de configuración de Gemini y ejecutaremos todos nuestros comandos. De forma predeterminada, Gemini CLI usa un archivo de configuración de alcance del usuario y extensiones instaladas en el directorio ~/.gemini. Sin embargo, crearemos nuestra propia configuración de alcance del proyecto en nuestro directorio ~/projectmcp. Comencemos por crear el directorio y los archivos de configuración.
mkdir ~/projectmcp/.gemini
touch ~/projectmcp/.gemini/settings.json
Luego, abrimos el archivo ~/projectmcp/.gemini/settings.json con el editor de Cloud Shell.
edit ~/projectmcp/.gemini/settings.json
En la ventana del editor que se abrió, agrega la siguiente configuración.
{
"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
}
}
}
Después de editar el archivo, puedes usar ctrl+s para guardar los cambios y volver a la terminal haciendo clic en el botón Open Terminal.

Los archivos settings.json anteriores establecen tu tipo de autenticación de Gemini CLI como gemini-api-key, y debes proporcionar la clave al modelo. Para ello, crea un archivo .env en el directorio con el que deseas trabajar con Gemini CLI y almacena tu clave de API para la autenticación de Gemini CLI como una variable de entorno que se seleccionará cuando inicies el IDE.
Editemos el archivo con el editor de Cloud Shell
edit ~/projectmcp/.env
Almacena la clave de API que creaste en el paso 1.
GEMINI_API_KEY= <YOUR_API_KEY>
Ahora puedes volver a la terminal y continuar. El siguiente paso es actualizar Gemini CLI a la versión más reciente. La versión en Google Cloud Shell o en tu entorno puede estar desactualizada y es posible que no funcione correctamente con las configuraciones y los servicios de MCP más recientes. Por lo tanto, es importante que actualices Gemini CLI a la versión más reciente y la inicies. En la terminal, ejecuta lo siguiente.
cd ~/projectmcp/
npm install -g @google/gemini-cli@latest
Ahora puedes verificar la versión. Ten en cuenta que, si trabajas en Google Cloud Shell, cada vez que reinicies el shell, es posible que vuelva a la versión anterior. Los cambios que realices en la CLI de Gemini no son permanentes en Cloud Shell.
gemini --version
Debería mostrar la versión más reciente de Gemini CLI (versión 0.27 en el momento de escribir el lab). Puedes verificar la versión más reciente de Gemini CLI aquí. Ahora podemos iniciarlo y asegurarnos de que esté usando el modelo de Gemini más reciente. Ejecuta el siguiente comando en la carpeta de tu proyecto para iniciar Gemini CLI.
gemini
Cuando se inicie Gemini CLI, puedes verificar la versión y el modelo ejecutando el comando /about en la interfaz. Deberías obtener algo similar a la siguiente imagen.

Puedes ver que usa el modelo Gemini-3 más reciente.
2. Configura servidores de MCP en Gemini CLI
Ahora es el momento de agregar todos nuestros servidores de MCP habilitados. Tienes dos formas de habilitarlas en Gemini CLI: a través de extensiones o directamente en la configuración. En este lab, usarás el archivo setting.json del alcance de tu proyecto y agregarás allí los detalles de autenticación de los servidores de MCP.
- Para el servidor MCP de Developer Knowledge, debes crear una clave de API para autorizar el extremo.
A continuación, se indican los pasos que debes seguir:
- En la consola de Google Cloud del proyecto en el que habilitaste la API, ve a la página Credenciales.
- Haz clic en Crear credenciales y, luego, selecciona Clave de API en el menú. El diálogo “Se creó la clave de API” mostrará la cadena de la clave que acabas de crear.
- Haz clic en el vínculo
Edit API keydel diálogo. - En el campo
Name, proporciona un nombre para la clave. Por ejemplo,DK API Key. - En Restricciones de API, selecciona
Restrict key. - En la lista Seleccionar APIs, habilita
Developer Knowledge APIy haz clic en Aceptar. - Haz clic en Guardar.

Ahora, si necesitas usar la clave, puedes ir a la página y hacer clic en Mostrar clave a la derecha.

Ahora debes almacenar esa clave en la configuración. La sección de MCP de nuestro archivo settings.json se vería de la siguiente manera (debes ingresar un valor para tu clave de API de DK): A continuación, se muestra un ejemplo de cómo se ve la sección de MCP del archivo settings.json si solo se agrega la API de DK. Más adelante en el lab, también verás cómo debería verse el archivo settings.json con todos los servidores de MCP juntos.
"mcpServers": {
"DeveloperKnowledge": {
"httpUrl": "https://developerknowledge.googleapis.com/mcp",
"headers": {
"X-Goog-Api-Key": "<Your DK API Key>"
}
}
},
- A continuación, puedes agregar la configuración para nuestro servidor de MCP de Cloud SQL. En el MCP de Cloud SQL, usarás tus credenciales de Google en lugar de la API. Es más seguro y nos permite definir roles y el alcance de las acciones permitidas para un usuario. Esta es la configuración del servidor de MCP. Reemplaza "<YOUR_GCP_PROJECT>" por tu propio ID del proyecto.
"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>"
}
},
- El siguiente fragmento de JSON contiene la configuración del servidor de MCP de Cloud Run. Sigue el mismo patrón que el ejemplo anterior y usa credenciales de Google para la autenticación y la autorización. Esta es la configuración de muestra.
"CloudRun": {
"httpUrl": "https://run.googleapis.com/mcp",
"authProviderType": "google_credentials",
"oauth": {
"scopes": [
"https://www.googleapis.com/auth/cloud-platform"
]
}
}
Todos estos elementos deben agregarse al archivo ~/projectmcp/.gemini/settings.json.
Abre el archivo ~/projectmcp/.gemini/settings.json con el editor de Cloud Shell.
edit ~/projectmcp/.gemini/settings.json
Reemplaza el contenido por la siguiente configuración. Coloca tu clave de API y el ID del proyecto en los campos "X-Goog-Api-Key" y "X-Goog-User-Project" según tu entorno.
{
"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
}
}
}
Ahora podemos iniciar Gemini CLI y ver todos nuestros servidores de MCP habilitados allí.
cd ~/projectmcp/
gemini
Cuando se inicia Gemini CLI, puedes ejecutar el comando /mcp para ver todos los servidores de MCP en funcionamiento.

5. Cómo preparar la aplicación
En el siguiente ejemplo, intentarás migrar tu aplicación local de muestra a Google Cloud. Primero, instalaremos la aplicación de forma local y la probaremos.
1. Clonar código fuente
Debemos clonar nuestra aplicación desde el repositorio de GitHub. En Cloud Shell o en tu terminal local, ejecuta el siguiente comando en la carpeta del proyecto.
git clone https://github.com/google/mcp.git
2. Inicia la aplicación de forma local
Probemos la aplicación y carguemos algunos datos de muestra
En la misma shell, cambia a la carpeta de la aplicación y, luego, inicia la aplicación con el siguiente comando:
cd mcp/examples/allstrides
./start_allstrides.sh
3. Prueba la aplicación
Si trabajas en Cloud Shell, presiona el botón Web preview en la parte superior de la ventana de Cloud Shell y elige Preview on port 8080.

Se abrirá una nueva pestaña del navegador con la interfaz de la aplicación en la que, por ejemplo, puedes hacer clic en el botón Events.

Por el momento, no tienes ningún evento.
4. Cargar datos de muestra
De manera opcional, puedes registrarte en la aplicación y crear tus propios eventos, mensajes de chat y usuarios, o bien usar los datos de muestra que se proporcionan con la aplicación.
Abre otra pestaña de Cloud Shell con el signo "+" en la parte superior.

En la nueva pestaña de Cloud Shell, cambia al directorio de la aplicación y ejecuta la importación con la utilidad sqlite3:
cd ~/projectmcp/mcp/examples/allstrides
sqlite3 allstrides.db < seed_data.sql
Si vuelves a la página de la aplicación y, luego, vuelves a hacer clic en el botón Events, deberías ver varios eventos.

También puedes probar la página de chat y ver algunos mensajes allí.
Ahora puedes cerrar la segunda pestaña escribiendo exit.
exit
Detén la aplicación en la primera pestaña con la combinación Ctrl + C.
6. Prueba de conocimientos del desarrollador sobre el MCP
El MCP de conocimiento del desarrollador nos permite usar documentos de Google directamente desde nuestras herramientas independientes, lo que nos brinda la capacidad de verificar instrucciones, crear instructivos y otras tareas que se pueden complementar con la documentación más reciente de Google.
Inicia Gemini CLI y enumera las herramientas de MCP disponibles en el servidor de MCP de Developer Knowledge.
/mcp
En el MCP de Developer Knowledge, deberías ver tres herramientas disponibles:
Resultado esperado:
🟢 DeveloperKnowledge - Ready (3 tools) Tools: - batch_get_documents - get_document - search_documents
Nuestra tarea es migrar nuestra aplicación a Google Cloud, lo que significa que debemos cambiar de la base de datos Sqlite local a una solución más escalable y nativa de la nube. Le pediremos a Gemini que analice el código de nuestra aplicación y nos dé consejos sobre la solución de la base de datos.
En la instrucción de Gemini CLI, escribe lo siguiente:
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 comenzará analizando tu código y, luego, te pedirá que ejecutes el
Resultado esperado
? 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)
Podemos ver que la herramienta usa MCP para fundamentar la respuesta con la documentación de Google. Permite la ejecución de la solicitud de MCP de Developer Knowledge. Es posible que te haga una o dos preguntas más para obtener más información antes de brindarte la respuesta. Por el momento, no permitas ningún cambio en tu solicitud.
Al final, se creó un instructivo con un resumen en el que se definió Cloud SQL para PostgreSQL como la mejor opción para el backend de la base de datos. Es posible que obtengas una respuesta ligeramente diferente debido a la naturaleza no determinística de los modelos de IA generativa.
Resultado esperado:
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.
También podemos solicitar que se prepare una guía paso a paso para la migración de datos. Envía una nueva instrucción a Gemini CLI:
I agree with the recommendation to use Cloud SQL for PostgreSQL as the new database for my application. Can you prepare a detailed migration tutorial based on Google documentation on how to move data from my local database to Cloud SQL in the cloud?
Y, aquí también, esperamos que Gemini CLI use el MCP de Developer Knowledge como fuente de información mientras prepara el instructivo. La secuencia de acciones que realiza Gemini CLI puede ser ligeramente diferente según el modelo exacto y otros factores. Por ejemplo, puede pedir que se preparen primero los scripts de migración y solo después trabajar en la documentación final del instructivo.
Este es uno de los ejemplos en los que se solicita permiso para ejecutar el MCP de 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 la ejecución, Gemini CLI podría pedirte que ejecutes algunos comandos. Por ejemplo, para comprender mejor el esquema de datos y preparar las instrucciones correctas para la migración de datos.
Y, al final, debe preparar instrucciones paso a paso para la migración de datos.
Luego, puedes pedirle a Gemini CLI que escriba el instructivo.
Please write the tutorial down
Se creará un nuevo archivo Markdown con el documento del instructivo.
Resultado esperado:
✦ 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.
En el siguiente paso, trabajaremos con el MCP de Cloud SQL para preparar nuestra base de datos y migrar los datos.
7. Prueba del MCP remoto de Cloud SQL
1. Crear instancia de Cloud SQL
Para comenzar, escribe /mcp en Gemini CLI para consultar las herramientas disponibles en el servidor de MCP de Cloud SQL.
/mcp
Actualmente, tenemos las siguientes herramientas disponibles.
Resultado esperado:
🟢 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
Ya decidimos usar Cloud SQL para Postgres como backend de nuestra aplicación en Google Cloud. Ahora podemos pedirle a Gemini que cree una instancia de Cloud SQL para nosotros.
En la instrucción de Gemini CLI, escribe tu solicitud de la siguiente manera:
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.
Para evitar llamadas adicionales para identificar tu proyecto actual, puedes especificar explícitamente el ID del proyecto cuando ingreses tu instrucción. Si el nombre del proyecto no se usó en el contexto antes, el modelo preguntará el ID del proyecto o pedirá que se ejecute el comando de gcloud para identificar el proyecto.
Luego, analizará las herramientas existentes y pedirá que se ejecuten las herramientas de MCP de Cloud SQL. Deberías ver la siguiente solicitud de aprobación.
? 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)
Después de iniciar la ejecución, se te pedirá que supervises el estado de la operación y las posibles solicitudes de suspensión entre las verificaciones. Algo como lo siguiente:
✦ 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)
A continuación, se incluiría una herramienta get_operation para el MCP de Cloud SQL Server.
╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ ? get_operation (Cloud SQL MCP Server MCP Server) {"project":"gleb-test-short-001-486416","operation":"73c39ca7-65fe-46d1-bdb8-0dfa00000032"} ← │
│ │
│ MCP Server: Cloud SQL MCP Server │
│ Tool: get_operation │
│ │
│ Allow execution of MCP tool "get_operation" from server "Cloud SQL MCP Server"? │
│ │
│ ● 1. Allow once
Después de la solicitud final de get_instance, deberías obtener información sobre la instancia creada. Algo como lo siguiente:
Resultado esperado:
✦ 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)
A continuación, se llamaría a la herramienta get_operation para el MCP de Cloud SQL Server y a la llamada a la herramienta get_insance de MCP. Es posible que Gemini CLI ejecute verificaciones y llamadas adicionales para verificar que la tarea se haya completado correctamente.
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. Migrar datos
La instancia está lista y ahora podemos seguir migrando todos nuestros datos de la base de datos existente de SQLite a una nueva base de datos en la nube.
En la instrucción de Gemini CLI, escribe la siguiente solicitud:
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 la ejecución, la CLI de Gemini analizará nuestro modelo de datos y, para ello, pedirá permiso para ejecutar algunos comandos. El flujo de trabajo no es 100% determinista y algunos pasos pueden ser diferentes.
Este es un ejemplo de cómo podría comenzar.
Resultado esperado:
✦ 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 │ │ │ ╰─────────────────────────────────────────────────────────────────────────
Luego, después de varios pasos, usará Cloud SQL MCP para preparar la base de datos, el usuario y, finalmente, migrar los datos. Una de las primeras acciones que realiza en la base de datos es agregarte como usuario de IAM y otorgarte permisos para crear bases de datos y usuarios. Debes tener privilegios suficientes en Google Cloud como IAM
Este es un ejemplo de algunos pasos durante el flujo de trabajo
Resultado esperado:
✓ 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. Implementa la aplicación en Cloud Run
Ahora, se creó la base de datos y se migraron los datos de la aplicación local a tu base de datos de Cloud SQL. Ahora puedes implementar tu aplicación en Cloud Run. Durante la implementación, usarás una combinación del SDK de Google Cloud para compilar la imagen en Google Cloud y, luego, implementarla con Cloud Run MCP.
En Gemini CLI, ejecuta la siguiente instrucción.
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 la ejecución, se verificarán las APIs, se prepararán los datos para el administrador de secretos y se crearán los secretos necesarios. También actualizará la aplicación para que funcione con la base de datos de PostgreSQL y agregará los módulos npm necesarios.
Luego, después de compilar la imagen y colocarla en Artifact Registry, usa el servicio de MCP para implementar la aplicación en Cloud Run.
Este es un ejemplo de cómo llamar al MCP de Cloud Run
Resultado esperado:
✦ 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) │
│ │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
La ruta exacta para completar todas las operaciones puede variar de una ejecución a otra. Los agentes de IA eligen la ruta según el contexto, el resultado del comando y muchas otras variables. Y aquí radica la fortaleza del software de agentes de IA: puede reaccionar, ajustar su enfoque y volver a intentar los pasos para completar tareas y ofrecer resultados exitosos.
Ahora deberías tener tu aplicación allstrides implementada y en ejecución en Cloud Run, y conectada a tu base de datos de Cloud SQL.
Esto es lo que podrías ver al final.
Resultado esperado:
✦ 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.
Cuando abras la URL proporcionada en el navegador, deberías ver la página de la aplicación.

Y todos nuestros eventos deberían estar visibles allí.

¡Felicitaciones! Pudiste usar Gemini CLI y los servicios remotos de MCP de Google Cloud para trasladar tu aplicación local a la nube. Con esto, se completa la implementación y se pueden limpiar todos los recursos.
8. Limpia el entorno
La forma más sencilla de limpiar el entorno es pedirle a Gemini CLI que quite todos los componentes que creaste. Debe mantener todos los recursos en el contexto. Sin embargo, si, de alguna manera, cerraste la sesión y no tienes ningún historial guardado, puedes intentar ser más preciso y solicitar que se limpie el servicio de Cloud Run, la imagen y la instancia de Cloud SQL. Para quitar el servicio, se debe autenticar con el usuario que tiene los permisos necesarios y que usará el comando de gcloud.
Aquí tienes un ejemplo de instrucción:
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.
Después de la eliminación, puedes usar los servicios de MCP remotos para verificar que se haya quitado correctamente el servicio de Cloud Run o la instancia de Cloud SQL.
Can you please list all Cloud SQL instances in the project and Cloud Run services in the project.
Al final, deberías ver un mensaje como el siguiente:
Resultado esperado:
✦ There are currently no Cloud SQL instances or Cloud Run services (in us-central1) in the project gleb-test-short-001-486416.
Con esto, concluyen los pasos del lab.
9. Felicitaciones
Felicitaciones por completar el codelab.
Ruta de aprendizaje de Google Cloud
Temas abordados
- Cómo implementar y configurar la CLI de Gemini para que funcione con los MCP remotos de Google Cloud
- Cómo usar Development KnowledgeMCP
- Cómo usar el MCP de Cloud SQL para migrar datos a la nube
- Cómo usar el MCP de Cloud Run para implementar una aplicación en la nube
- Cómo usar Gemini CLI en Google Cloud Shell
10. Encuesta
Resultado: