1. 简介
隆重推出 AllStrides,一款面向健身社区的全栈活动管理平台。尽管功能丰富,但其当前状态为“仅限本地”。它依赖于本地 SQLite 数据库和手动 Node.js 执行。为了让社区不断发展壮大,AllStrides 需要 Google Cloud 提供的规模、可靠性和安全性。
在此 Codelab 中,您不会执行传统迁移。相反,您将扮演产品架构师的角色,将 Gemini CLI 用作您的智能体合作伙伴。通过为 Gemini 配备三个 Google Cloud Model Context Protocol (MCP) 服务器,您可以让 AI“触达”并直接与 Google Cloud 服务互动。您将首先使用 Developer Knowledge MCP 来确定最适合 allstrides 应用的 Google Cloud 数据库。然后,您将使用 Cloud SQL MCP 来预配数据库实例,并通过单个提示将本地社区数据迁移到云端。最后,您将使用 Cloud Run MCP 将应用容器化,使 AllStrides 能够上线并可供全球用户访问。

前提条件
- 对 Google Cloud 控制台有基本的了解
- 具备命令行界面和 Cloud Shell 方面的基本技能
学习内容
- 如何部署 Gemini CLI 以使用远程 MCP
- 如何使用 Development Knowledge MCP 服务器
- 如何使用 Cloud SQL 远程 MCP 服务器将数据迁移到云端
- 如何使用 Cloud Run 远程 MCP 服务器在云端部署应用
- 如何在 Google Cloud Shell 中使用 Gemini CLI
所需条件
- Google Cloud 账号和 Google Cloud 项目
- 支持 Google Cloud 控制台和 Cloud Shell 的网络浏览器,例如 Chrome
2. 设置和要求
项目设置
- 登录 Google Cloud 控制台。如果您还没有 Gmail 或 Google Workspace 账号,则必须创建一个。
请改用个人账号,而非工作账号或学校账号。
- 创建新项目或重复使用现有项目。如需在 Google Cloud 控制台中创建新项目,请在标题中点击“选择项目”按钮,系统随即会打开一个弹出式窗口。

在“选择项目”窗口中,按“新建项目”按钮,系统随即会打开一个用于创建新项目的对话框。

在对话框中,输入您偏好的项目名称,然后选择位置。

- 项目名称是此项目参与者的显示名称。Google API 不会使用项目名称,并且您可以随时更改项目名称。
- 项目 ID 在所有 Google Cloud 项目中是唯一的,并且是不可变的(一经设置便无法更改)。Google Cloud 控制台会自动生成一个唯一 ID,但您可以自定义该 ID。如果您不喜欢生成的 ID,可以生成另一个随机 ID,也可以提供自己的 ID 来检查其可用性。在大多数 Codelab 中,您都需要引用项目 ID,该 ID 通常用占位符 PROJECT_ID 标识。
- 此外,还有第三个值,即部分 API 使用的项目编号,供您参考。如需详细了解所有这三个值,请参阅文档。
启用结算功能
设置个人结算账号
如果您使用 Google Cloud 抵用金设置了结算,则可以跳过此步骤。
- 点击此链接,然后使用个人 Google 账号登录。
- 您会看到类似如下的内容:

- 点击点击此处访问您的积分按钮。然后,您会进入一个页面,可以在其中设置结算资料。如果您看到免费试用订阅界面,请点击“取消”,然后继续关联结算信息。

- 点击“确认”,系统会显示“您现已关联到 Google Cloud Platform 试用结算账号”。

设置个人结算账号
如果您使用 Google Cloud 抵用金设置了结算,则可以跳过此步骤。
如需设置个人结算账号,请点击此处在 Cloud 控制台中启用结算功能。
注意事项:
- 完成本实验的 Cloud 资源费用应低于 3 美元。
- 您可以按照本实验末尾的步骤删除资源,以避免产生更多费用。
- 新用户符合参与 $300 USD 免费试用计划的条件。
启动 Cloud Shell
虽然可以通过笔记本电脑对 Google Cloud 进行远程操作,但在此 Codelab 中,您将使用 Google Cloud Shell,这是一个在云端运行的命令行环境。
在 Google Cloud 控制台 中,点击右上角工具栏中的 Cloud Shell 图标:

或者,您也可以先按 G,再按 S。如果您位于 Google Cloud 控制台中,或者使用此链接,此序列将激活 Cloud Shell。
预配和连接到环境应该只需要片刻时间。完成后,您应该会看到如下内容:

这个虚拟机已加载了您需要的所有开发工具。它提供了一个持久的 5 GB 主目录,并且在 Google Cloud 中运行,大大增强了网络性能和身份验证功能。您在此 Codelab 中的所有工作都可以在浏览器中完成。您无需安装任何程序。
3. 准备工作
启用基本 API
如需使用 Cloud SQL 等托管式数据库服务和其他服务来构建应用并将其部署到 Cloud Run,您需要在 Google Cloud 项目中启用这些服务各自的 API。
您可以根据自己的方法选择跳过此步骤,让 Gemini CLI 稍后启用所有必需的 API,但在这种情况下,执行过程中可能会出现一些延迟和重复步骤。
在 Cloud Shell 终端中,确保项目 ID 已设置:
gcloud config set project [YOUR-PROJECT-ID]
设置环境变量 PROJECT_ID:
PROJECT_ID=$(gcloud config get-value project)
启用所有必要的服务:
gcloud services enable sqladmin.googleapis.com \
aiplatform.googleapis.com \
secretmanager.googleapis.com \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
run.googleapis.com \
containerregistry.googleapis.com
预期输出:
student@cloudshell:~ (test-project-001-402417)$ PROJECT_ID=$(gcloud config get-value project)
Your active configuration is: [cloudshell-14650]
student@cloudshell:~ (test-project-001-402417)$
student@cloudshell:~ (test-project-001-402417)$ gcloud services enable sqladmin.googleapis.com \
aiplatform.googleapis.com \
secretmanager.googleapis.com \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
run.googleapis.com \
containerregistry.googleapis.com
Operation "operations/acat.p2-812263612774-c2dbeef3-c4c1-4a7d-a4b2-b5380be65044" finished successfully.
向服务账号授予权限
您需要向默认的计算服务账号提供存储管理员权限,才能构建和存储应用映像。与上一步一样,您也可以选择在执行期间将此权限委托给 Gemini CLI。
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
启用远程 MCP
应为项目中的每个服务明确启用远程 MCP 服务。默认情况下,这些限制处于停用状态,有助于在项目和服务级别上规范 API 访问。
我们先从 Developer Knowledge MCP 服务开始。如需启用 Developer Knowledge API 和远程 MCP 服务,您应运行以下 gcloud 命令。
PROJECT_ID=$(gcloud config get-value project)
gcloud beta services mcp enable developerknowledge.googleapis.com --project=$PROJECT_ID
在启用开发者知识 API 和远程 MCP 后,您可以继续操作,并对 Cloud SQL 远程 MCP 服务执行相同的操作。
gcloud beta services mcp enable sqladmin.googleapis.com --project=$PROJECT_ID
与所有数据库的远程 MCP 一样,MCP 访问权限和许可权限是分阶段提供的,可在项目级层对 API 本身进行精细访问,并且只有具有 Service Usage Admin (roles/serviceusage.serviceUsageAdmin) 角色的正文(用户或服务账号)才能执行此操作。
只有具有 MCP Tool User (roles/mcp.toolUser) 角色的正文才能调用远程 MCP API。
例如,如果您没有 Cloud SQL Admin (roles/cloudsql.admin) 角色,则无法在项目中创建、克隆或更新任何实例。
如需详细了解所需的角色和权限,请参阅文档。
如上所示,分阶段的精细授权可保护我们免遭未经授权的攻击,即使远程 MCP 端点已启用,也能确保生产环境足够安全。
接下来,我们将为 Cloud Run 服务启用远程 MCP。Cloud Run 远程 MCP 的启用和访问方法与 Cloud SQL 远程 MCP 类似。
使用以下命令启用 Cloud Run MCP 服务。
gcloud beta services mcp enable run.googleapis.com --project=$PROJECT_ID
最后,我们可以使用以下命令验证项目中是否已启用所有远程 MCP。
gcloud beta services mcp list --project=$PROJECT_ID
预期输出:
student@cloudshell:~ (test-project-001-402417)$ gcloud beta services mcp list --project=$PROJECT_ID NAME: services/developerknowledge.googleapis.com MCP_ENDPOINT: developerknowledge.googleapis.com NAME: services/run.googleapis.com MCP_ENDPOINT: run.googleapis.com/mcp NAME: services/sqladmin.googleapis.com MCP_ENDPOINT: sqladmin.googleapis.com/mcp
现在,所有 API 和服务均已启用,我们需要配置 Gemini CLI。
4. 配置 Gemini CLI
本实验旨在将 Gemini CLI 用作执行大多数操作的主要代理,第一步是将其配置为与远程 MCP 服务器搭配使用。此外,强烈建议您使用最新版本的 Gemini CLI 和最新版本的 Gemini,例如 Gemini-3-pro 或 Gemini-3-flash(目前处于预览版阶段)。
如果您已拥有最新版本的 Gemini CLI 并将其配置为使用最新的 Gemini 模型,则可以跳过接下来的 2 个步骤,直接前往第 3 步。
1. 获取 Gemini API 密钥
如需在 Gemini CLI 中使用最新的 Gemini 模型,您需要使用 API 密钥身份验证来配置 Gemini CLI。我们可以在 Google AI Studio 中获取 API 密钥
- 在浏览器中前往 Google AI Studio -> 获取 API 密钥。
- 点击屏幕右侧的
Create API key按钮 - 在弹出式窗口中,选择您的项目;如果该项目未显示在此处,请导入该项目

- 创建 API 密钥。
- 您可以使用右侧的复制按钮复制密钥。

密钥已准备就绪,现在可用于 Gemini CLI
2. 配置 Gemini CLI
您可以通过设置配置文件或使用 /settings 命令以交互方式配置 Gemini CLI。我们希望设置保留在设置文件中。
首先,我们将为项目创建一个目录。我们不妨将该目录命名为 projectmcp,并使用以下命令切换到该目录。
mkdir ~/projectmcp
cd ~/projectmcp
在此目录中,我们将创建一个用于存放 Gemini 配置文件的目录,并运行所有命令。默认情况下,Gemini CLI 使用用户范围的配置文件和安装在 ~/.gemini 目录中的扩展程序。不过,我们将在 ~/projectmcp 目录中创建自己的项目范围配置。我们先从创建配置目录和文件开始。
mkdir ~/projectmcp/.gemini
touch ~/projectmcp/.gemini/settings.json
然后,我们使用 Cloud Shell 编辑器打开 ~/projectmcp/.gemini/settings.json 文件。
edit ~/projectmcp/.gemini/settings.json
在打开的编辑器窗口中添加以下配置。
{
"general": {
"preferredEditor": "vscode",
"previewFeatures": true,
"sessionRetention": {
"enabled": true
}
},
"ide": {
"enabled": true,
"hasSeenNudge": true
},
"security": {
"auth": {
"selectedType": "gemini-api-key"
}
},
"ui": {
"theme": "Default"
},
"tools": {
"shell": {
"enableInteractiveShell": false
}
}
}
修改完文件后,您可以使用 ctrl+s 保存更改,然后点击 Open Terminal 按钮切换回终端

上述 settings.json 文件将 Gemini CLI 身份验证类型设置为 gemini-api-key,您需要向模型提供密钥。为此,您可以在要使用 Gemini CLI 的目录中创建一个 .env 文件,并将 Gemini CLI 身份验证的 API 密钥存储为环境变量,当您启动 IDE 时,系统会提取该变量。
我们来使用 Cloud Shell 编辑器修改文件
edit ~/projectmcp/.env
并存储您在第 1 步中创建的 API 密钥。
GEMINI_API_KEY= <YOUR_API_KEY>
现在,您可以返回到终端并继续操作。下一步是将 Gemini CLI 更新为最新版本。Google Cloud Shell 或您环境中的版本可能已过时,无法与最新的配置和 MCP 服务正常搭配使用。因此,请务必将 Gemini CLI 更新到最新版本并启动它。在终端中执行以下操作。
cd ~/projectmcp/
npm install -g @google/gemini-cli@latest
现在,您可以验证版本。请注意,如果您在 Google Cloud Shell 中工作,每次重启 shell 时,它都可能会恢复到之前的版本。您对 Gemini CLI 本身所做的更改在 Cloud Shell 中不是永久性的。
gemini --version
它应显示最新的 Gemini CLI 版本(在编写本实验时为 0.27 版)。您可以点击此处验证 Gemini CLI 的最新版本。现在,我们可以启动该应用,并确保它使用的是最新的 Gemini 模型。在项目文件夹中运行以下命令以启动 Gemini CLI。
gemini
当 Gemini CLI 启动时,您可以在界面中运行 /about 命令来查看版本和模型。您应该会看到类似下图的内容。

您可以看到,它使用的是最新的 Gemini-3 模型。
2. 在 Gemini CLI 中配置 MCP 服务器
现在,该添加所有已启用的 MCP 服务器了。您可以通过两种方式在 Gemini CLI 中启用它们:通过扩展程序或直接在设置中启用。在本实验中,您将使用项目范围的 setting.json 文件,并在其中添加 MCP 服务器身份验证详细信息。
- 对于 Developer Knowledge MCP 服务器,您需要创建 API 密钥才能在端点上获得授权。
具体步骤如下所示:
- 在您启用 API 的项目的 Google Cloud 控制台中,前往“凭据”页面。
- 点击“创建凭据”,然后从菜单中选择“API 密钥”。“已创建的 API 密钥”对话框会显示新创建的密钥的字符串。
- 点击对话框中的
Edit API key链接。 - 在
Name字段中,提供密钥的名称。例如DK API Key。 - 在“API 限制”下,选择
Restrict key。 - 在“选择 API”列表中,启用
Developer Knowledge API,然后点击“确定”。 - 点击“保存”。

现在,如果您需要使用密钥,可以前往相应页面,然后点击右侧的“显示密钥”。

现在,您需要将该密钥存储在配置中。我们 settings.json 文件的 MCP 部分将如下所示(您需要在其中放置 DK API 密钥的值)。下面是一个示例,展示了如果仅添加 DK API,settings.json 文件的 MCP 部分会是什么样子。在本实验的后续部分,您还将了解包含所有 MCP 服务器的 settings.json 文件应是什么样子。
"mcpServers": {
"DeveloperKnowledge": {
"httpUrl": "https://developerknowledge.googleapis.com/mcp",
"headers": {
"X-Goog-Api-Key": "<Your DK API Key>"
}
}
},
- 接下来,您可以为 Cloud SQL MCP 服务器添加配置。对于 Cloud SQL MCP,您将使用 Google 凭据而不是 API。这种方式更安全,并且让我们能够定义用户可执行的操作的角色和范围。以下是 MCP 服务器的配置。请将“<YOUR_GCP_PROJECT>”替换为您自己的项目 ID。
"Cloud SQL MCP Server": {
"httpUrl": "https://sqladmin.googleapis.com/mcp",
"authProviderType": "google_credentials",
"oauth": {
"scopes": [
"https://www.googleapis.com/auth/cloud-platform"
]
},
"timeout": 500000,
"trust": false,
"headers": {
"X-Goog-User-Project": "<YOUR_GCP_PROJECT>"
}
},
- 以下 JSON 代码块包含 Cloud Run MCP 服务器的配置。它遵循与上述示例相同的模式,并使用 Google 凭据进行身份验证和授权。以下是配置示例。
"CloudRun": {
"httpUrl": "https://run.googleapis.com/mcp",
"authProviderType": "google_credentials",
"oauth": {
"scopes": [
"https://www.googleapis.com/auth/cloud-platform"
]
}
}
所有这些都需要添加到 ~/projectmcp/.gemini/settings.json 文件中。
使用 Cloud Shell 编辑器打开 ~/projectmcp/.gemini/settings.json 文件。
edit ~/projectmcp/.gemini/settings.json
然后将内容替换为以下配置。请根据您的环境将 API 密钥和项目 ID 分别放入“X-Goog-Api-Key”和“X-Goog-User-Project”字段中。
{
"general": {
"preferredEditor": "vscode",
"previewFeatures": true,
"sessionRetention": {
"enabled": true
}
},
"ide": {
"enabled": true,
"hasSeenNudge": true
},
"security": {
"auth": {
"selectedType": "gemini-api-key"
}
},
"mcpServers": {
"DeveloperKnowledge": {
"httpUrl": "https://developerknowledge.googleapis.com/mcp",
"headers": {
"X-Goog-Api-Key": "<Your DK API Key>"
}
},
"Cloud SQL MCP Server": {
"httpUrl": "https://sqladmin.googleapis.com/mcp",
"authProviderType": "google_credentials",
"oauth": {
"scopes": [
"https://www.googleapis.com/auth/cloud-platform"
]
},
"timeout": 500000,
"trust": false,
"headers": {
"X-Goog-User-Project": "<YOUR_GCP_PROJECT>"
}
},
"CloudRun": {
"httpUrl": "https://run.googleapis.com/mcp",
"authProviderType": "google_credentials",
"oauth": {
"scopes": [
"https://www.googleapis.com/auth/cloud-platform"
]
}
}
},
"ui": {
"theme": "Default"
},
"tools": {
"shell": {
"enableInteractiveShell": false
}
}
}
现在,我们可以启动 Gemini CLI,并查看其中已启用的所有 MCP 服务器。
cd ~/projectmcp/
gemini
启动 Gemini CLI 后,您可以执行 /mcp 命令来查看所有正在运行的 MCP 服务器。

5. 准备应用
在以下示例中,您将尝试将本地示例应用迁移到 Google Cloud。首先,我们在本地安装应用并进行测试。
1. 克隆源代码
我们需要从 GitHub 代码库克隆应用。在 Cloud Shell 或项目文件夹中的本地终端中执行。
git clone https://github.com/google/mcp.git
2. 在本地启动应用
让我们测试应用并加载一些示例数据
在同一 shell 中,切换到应用文件夹,然后使用以下命令启动应用:
cd mcp/examples/allstrides
./start_allstrides.sh
3. 测试应用
如果您使用的是 Cloud Shell,请按 Cloud Shell 窗口顶部的 Web preview 按钮,然后选择 Preview on port 8080

系统会打开一个包含应用界面的新浏览器标签页,您可以在其中点击 Events 按钮。

您目前没有任何活动。
4. 加载示例数据
您可以选择在应用中注册并创建自己的活动、聊天消息和用户,也可以使用应用随附的示例数据。
使用顶部的“+”号打开另一个 Cloud Shell 标签页。

在新 Cloud Shell 标签页中,执行以下命令以切换到应用目录,并使用 sqlite3 实用程序执行导入:
cd ~/projectmcp/mcp/examples/allstrides
sqlite3 allstrides.db < seed_data.sql
如果您返回到应用页面,然后再次点击“事件”按钮,您应该会看到多个事件。

您还可以测试聊天页面,并在其中查看一些消息。
现在,您可以输入 exit 来关闭第二个标签页
exit
然后,使用 Ctrl+C 组合键停止第一个标签页中的应用。
6. 测试开发者知识 MCP
借助 Developer Knowledge MCP,我们可以直接通过不可知的工具使用 Google 文档,从而能够验证说明、创建教程以及执行其他任务,而这些任务可以通过最新的 Google 文档得到增强。
启动 Gemini CLI,并列出 Developer Knowledge MCP 服务器中的可用 MCP 工具。
/mcp
对于“开发者知识”MCP,您应该会看到三个可用的工具:
预期输出:
🟢 DeveloperKnowledge - Ready (3 tools) Tools: - batch_get_documents - get_document - search_documents
我们的任务是将应用迁移到 Google Cloud,这意味着我们需要从本地 Sqlite 数据库切换到更具可伸缩性的云原生解决方案。我们让 Gemini 分析我们的应用代码,并就数据库解决方案提供建议。
在 Gemini CLI 提示中,输入以下内容:
Hello, I need to choose a database platform for my allstrides application in Google Cloud. Can you analyze documentation and prepare a tutorial to choose the correct database engine?
Gemini CLI 将从分析您的代码开始,然后要求执行
预期输出
? search_documents (DeveloperKnowledge MCP Server) {"query":"choose google cloud database"} ← │
│ │
│ MCP Server: DeveloperKnowledge │
│ Tool: search_documents │
│ │
│ Allow execution of MCP tool "search_documents" from server "DeveloperKnowledge"? │
│ │
│ ● 1. Allow once │
│ 2. Allow tool for this session │
│ 3. Allow all server tools for this session │
│ 4. No, suggest changes (esc)
我们可以看到,该工具正在使用 MCP 通过 Google 文档来确定回答。允许执行开发者知识 MCP 请求。在提供回答之前,它可能会再问你一两次问题,以获取更多信息。目前不允许对您的申请进行任何更改。
最后,它创建了一个教程,其中包含一个总结,将 Cloud SQL for Postgres 定义为数据库后端的最佳选择。由于生成式 AI 模型具有不确定性,您可能会得到略有不同的回答。
预期输出:
By switching to Cloud SQL for PostgreSQL, AllStrides gains a robust, scalable foundation suitable for production deployment on Google Cloud. The transition is straightforward due to the use of Sequelize ORM.
我们还可以要求您准备一份分步数据迁移指南。向 Gemini CLI 发出新提示:
I agree with the recommendation to use Cloud SQL for PostgreSQL as the new database for my application. Can you prepare a detailed migration tutorial based on Google documentation on how to move data from my local database to Cloud SQL in the cloud?
同样,我们希望 Gemini CLI 在准备教程时使用开发者知识 MCP 作为可信来源。Gemini CLI 采取的操作顺序可能会因确切的模型和其他因素而略有不同。例如,它可以要求先准备迁移脚本,然后再处理最终的教程文档。
下面是一个示例,其中要求获得执行“开发者知识”MCP 的权限:
? search_documents (DeveloperKnowledge MCP Server) {"query":"migrate local database to Cloud SQL for PostgreSQL"} ← │
│ │
│ MCP Server: DeveloperKnowledge │
│ Tool: search_documents │
│ │
│ Allow execution of MCP tool "search_documents" from server "DeveloperKnowledge"? │
│ │
│ ● 1. Allow once │
│ 2. Allow tool for this session │
│ 3. Allow all server tools for this session │
│ 4. No, suggest changes (esc) │
│ │
│ │
│ ⊷ search_documents (DeveloperKnowledge MCP Server) {"query":"import data into Cloud SQL PostgreSQL"}
在执行过程中,Gemini CLI 可能会要求您执行一些命令。例如,更好地了解数据架构,以便为数据迁移准备正确的说明。
最后,它应准备一份有关数据迁移的分步说明。
然后,您可以让 Gemini CLI 将教程写下来
Please write the tutorial down
然后,它会创建一个包含教程文档的新 Markdown 文件。
预期输出:
✦ I have created a detailed migration guide for you. You can find the tutorial in the new file: MIGRATION_GUIDE.md. This guide covers: 1. Exporting your local SQLite data to CSV format. 2. Creating the PostgreSQL schema with compatible data types. 3. Uploading data to Google Cloud Storage. 4. Importing data into Cloud SQL in the correct order to respect relationships. 5. Resetting ID sequences to ensure new data can be added without errors.
在下一步中,我们将使用 Cloud SQL MCP 准备数据库并迁移数据。
7. 测试 Cloud SQL 远程 MCP
1. 创建 Cloud SQL 实例
您可以先在 Gemini CLI 中输入 /mcp,查看 Cloud SQL MCP 服务器中的可用工具
/mcp
目前,我们提供以下工具。
预期输出:
🟢 Cloud SQL MCP Server - Ready (11 tools) Tools: - clone_instance - create_instance - create_user - execute_sql - get_instance - get_operation - import_data - list_instances - list_users - update_instance - update_user
我们已决定使用 Cloud SQL for Postgres 作为 Google Cloud 中应用的后端。现在,我们可以让 Gemini 为我们创建 Cloud SQL 实例。
在 Gemini CLI 提示中,输入如下请求:
Please create a Cloud SQL for Postgres instance with appropriate edition and version in the us-central1 region to be a backend for our application with a public IPs in the current project with 2 CPU and 8 GB memory.
为避免进行额外的调用来识别当前项目,您可以在输入提示时明确指定项目 ID。如果项目名称之前未在上下文中出现,模型会询问项目 ID 或要求执行 gcloud 命令来识别项目。
然后,它会分析现有工具,并要求执行 Cloud SQL MCP 工具。您应该会看到以下审批请求。
? create_instance (Cloud SQL MCP Server MCP Server) {"tier":"db-custom-2-8192","region":"us-central1","project":"gleb-test-short-001-486416","databaseVersion":"POSTGRES_17","edition":"ENTERPRISE","nam... ← │
│ │
│ MCP Server: Cloud SQL MCP Server │
│ Tool: create_instance │
│ │
│ Allow execution of MCP tool "create_instance" from server "Cloud SQL MCP Server"? │
│ │
│ ● 1. Allow once │
│ 2. Allow tool for this session │
│ 3. Allow all server tools for this session │
│ 4. No, suggest changes (esc)
开始执行后,它会要求在检查之间监控操作状态和可能的休眠请求。如下所示。
✦ I will wait for 30 seconds before checking the status of the instance creation. ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ ⊶ Shell sleep 30 [current working directory /home/gleb/demo] │ │ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ⠋ Refining Instance Configuration (esc to cancel, 11s)
接下来是 Cloud SQL Server MCP 的 get_operation 工具。
╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ ? get_operation (Cloud SQL MCP Server MCP Server) {"project":"gleb-test-short-001-486416","operation":"73c39ca7-65fe-46d1-bdb8-0dfa00000032"} ← │
│ │
│ MCP Server: Cloud SQL MCP Server │
│ Tool: get_operation │
│ │
│ Allow execution of MCP tool "get_operation" from server "Cloud SQL MCP Server"? │
│ │
│ ● 1. Allow once
在最终的 get_instance 请求之后,您应该会收到有关所创建实例的信息。如下所示。
预期输出:
✦ I will wait for 30 seconds before checking the status of the instance creation. ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ ⊶ Shell sleep 30 [current working directory /home/gleb/demo] │ │ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ⠋ Refining Instance Configuration (esc to cancel, 11s)
接下来是 Cloud SQL Server MCP 的 get_operation 工具和 get_insance MCP 工具调用。您可能会看到 Gemini CLI 执行的其他检查和调用,以验证任务是否已成功完成。
The Cloud SQL for Postgres instance allstrides-db has been successfully created in the us-central1 region with 2 vCPUs and 8 GB of RAM. Instance Details: - Project ID: gleb-test-short-001-486416 - Instance Name: allstrides-db - Public IP Address: 35.226.187.246 - Database Version: POSTGRES_17 - Machine Type: db-custom-2-8192 (2 vCPU, 8 GB RAM) - Region: us-central1 - Connection Name: gleb-test-short-001-486416:us-central1:allstrides-db The instance is configured with public IP enabled, IAM authentication turned on, and Data API access allowed.
2. 迁移数据
实例已准备就绪,现在我们可以继续将所有数据从现有的 SQLite 数据库迁移到云端的新数据库。
在 Gemini CLI 提示中,输入以下请求
Now when we have our Cloud SQL instance ready it is time to move the data from our local database. Please migrate all the data to a new database in our Cloud SQL instance where the new user for application would be the database owner? Let's call the new database allstrides-db and the user allstrides. Please use our MCP tools whenever it is possible.
在执行过程中,Gemini CLI 将分析我们的数据模型,为此,它会请求运行一些命令的权限。工作流程并非 100% 确定,某些步骤可能会有所不同。
以下是一个可能的开头示例。
预期输出:
✦ I will read the allstrides/README.md and allstrides/seed_data.sql files to understand the local database structure and data. ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ ✓ ReadFile allstrides/README.md │ │ │ │ │ │ ✓ ReadFile allstrides/seed_data.sql │ │ │ ╰─────────────────────────────────────────────────────────────────────────
然后,经过几个步骤,它将使用 Cloud SQL MCP 准备数据库、用户并最终迁移数据。它对数据库执行的首批操作之一是将您添加为 IAM 用户,并授予您创建数据库和用户的权限。您应在 Google Cloud 中拥有足够的权限,例如 IAM
以下是工作流程中的一些步骤示例
预期输出:
✓ execute_sql (Cloud SQL MCP Server MCP Server) {"project":"gleb-test-short-001-486416","instance":"allstrides-db","sqlStatement":"CREATE DATABASE \"allstrides-db\";","database":"postgres"} │
│ │
│ { │
│ "messages": [ │
│ { │
│ "message": "Execution complete. 1 result set(s) returned.", │
│ "severity": "INFO" │
│ } │
│ ], │
│ "metadata": { │
│ "sqlStatementExecutionTime": "0.075591388s" │
│ }, │
│ "results": [ │
│ {} │
│ ] │
│ } │
│
3. 将应用部署到 Cloud Run
现在,数据库已创建,本地应用数据已迁移到 Cloud SQL 数据库。现在,您可以将应用部署到 Cloud Run 了。在部署期间,您将使用 Google Cloud SDK 在 Google Cloud 中构建映像,然后使用 Cloud Run MCP 部署该映像。
在 Gemini CLI 中,运行以下提示。
Now, when all the data is successfully migrated to our Cloud SQL instance allstrides-db we can migrate our allstrides application to Cloud Run and deploy using my Cloud SQL database. Please put the username and the password for my database user user to Secret Manager to not show openly in Cloud Run.
Let's build the image first and then use MCP to create the Cloud Run service.
在执行期间,它会检查 API,为 Secret Manager 准备数据,并创建所需的密文。此外,它还会更新应用以使其与 PostgreSQL 数据库搭配使用,并添加必要的 npm 模块。
然后,在构建映像并将其放置到制品注册表后,它会使用 MCP 服务将应用部署到 Cloud Run。
以下是调用 Cloud Run MCP 的示例
预期输出:
✦ I will deploy the 'allstrides' service to Cloud Run using the deploy_service_from_image tool. I will configure the environment variables and map the
database credentials from Secret Manager. Note that the MCP tool's schema does not explicitly expose the Cloud SQL instance attachment parameter, which is
typically required for the Unix socket connection (/cloudsql/...) to work. I will proceed with the deployment as requested, but if the database connection
fails due to the missing instance attachment, we may need to use gcloud to update that specific configuration.
╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Action Required 1 of 1 │
│ │
│ ? deploy_service_from_image (CloudRun MCP Server) {"service":{"invokerIamDisabled":true,"name":"projects/gleb-test-short-001-486416/locations/us-centra... │
│ │
│ MCP Server: CloudRun │
│ Tool: deploy_service_from_image │
│ Allow execution of MCP tool "deploy_service_from_image" from server "CloudRun"? │
│ │
│ ● 1. Allow once │
│ 2. Allow tool for this session │
│ 3. Allow all server tools for this session │
│ 4. No, suggest changes (esc) │
│ │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
完成所有操作的确切路径可能因执行情况而异。AI 代理会根据上下文、命令输出和多个其他变量来选择路径。这正是 AI 智能体软件的优势所在 - 它可以做出反应、调整方法并重试步骤,从而完成任务并取得成功的结果。
现在,您应该已将 allstrides 应用部署到 Cloud Run 并在其中运行,并且已连接到 Cloud SQL 数据库。
以下是您最终可能会看到的内容。
预期输出:
✦ The application allstrides has been successfully migrated to Cloud Run and is connected to the Cloud SQL database allstrides-db.
Deployment Details:
* Service URL: https://allstrides-812263612774.us-central1.run.app
* Database: allstrides-db (PostgreSQL)
* Database User: allstrides (Password updated and stored in Secret Manager)
* Secrets: db-user and db-pass are mounted as environment variables.
* Region: us-central1
Steps Taken:
1. Database Configuration:
* Updated the allstrides database user password.
* Created db-user and db-pass secrets in Google Cloud Secret Manager.
* Updated database.ts to support PostgreSQL connections via Cloud SQL socket.
2. Build:
* Built the container image gcr.io/gleb-test-short-001-486416/allstrides using Cloud Build.
3. Deployment:
* Initiated deployment using the MCP deploy_service_from_image tool.
* Granted the Secret Manager Secret Accessor role to the Cloud Run service account.
* Attached the Cloud SQL instance connection using gcloud (as the MCP tool currently lacks this specific configuration parameter).
The application is now serving traffic and successfully connected to the database.
在浏览器中打开提供的网址时,您应该会看到应用页面。

我们所有的活动都应该显示在那里

恭喜!您能够使用 Gemini CLI 和 Google Cloud 远程 MCP 服务将本地应用迁移到云端。至此,部署已完成,您可以清理所有资源。
8. 清理环境
清理环境的最简单方法是让 Gemini CLI 移除您创建的所有组件。它应在上下文中保留所有资源。但是,如果您不知何故被退出登录,并且没有任何已保存的历史记录,那么您可以尝试更精确地请求清理 Cloud Run 服务、映像和 Cloud SQL 实例。如需移除服务,必须使用具有所需权限的用户进行身份验证,并使用 gcloud 命令。
以下是一个提示示例
Now, when we've tested the application can you please delete the created Cloud Run service, the image we've built and the Cloud SQL instance we've created in the project.
移除后,您可以使用远程 MCP 服务来验证 Cloud Run 服务或 Cloud SQL 实例是否已成功移除。
Can you please list all Cloud SQL instances in the project and Cloud Run services in the project.
您应该会在最后看到类似如下的消息:
预期输出:
✦ There are currently no Cloud SQL instances or Cloud Run services (in us-central1) in the project gleb-test-short-001-486416.
本实验的步骤到此结束。
9. 恭喜
恭喜您完成此 Codelab。
Google Cloud 学习路线
所学内容
- 如何部署 Gemini CLI 并将其配置为与 Google Cloud 远程 MCP 搭配使用
- 如何使用 Development KnowledgeMCP
- 如何使用 Cloud SQL MCP 将数据迁移到云端
- 如何使用 Cloud Run MCP 在云端部署应用
- 如何在 Google Cloud Shell 中使用 Gemini CLI
10. 调查问卷
输出如下: