1. 簡介
歡迎使用 AllStrides,這是專為健身社群設計的全方位活動管理平台。雖然功能豐富,但目前狀態為「僅限本機」。這項服務依賴本機 SQLite 資料庫和手動執行的 Node.js。為了擴大社群規模,AllStrides 需要 Google Cloud 的規模、可靠性和安全性。
在本程式碼研究室中,您不會執行傳統的遷移作業。您將扮演產品架構師,並使用 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 來檢查是否可用。在大多數程式碼研究室中,您需要參照專案 ID,通常會以 PROJECT_ID 預留位置識別。
- 請注意,有些 API 會使用第三個值,也就是「專案編號」。如要進一步瞭解這三種值,請參閱說明文件。
啟用計費功能
設定個人帳單帳戶
如果使用 Google Cloud 抵免額設定計費,則可略過此步驟。
- 按一下這個連結,然後登入個人 Google 帳戶。
- 您將看見類似下方的內容:

- 按一下「按這裡存取抵免額」按鈕。系統會將您帶往設定帳單資料的頁面。如果系統顯示免費試用註冊畫面,請按一下「取消」,然後繼續連結帳單資訊。

- 按一下「確認」,您現在已連結至 Google Cloud Platform 試用帳單帳戶。

設定個人帳單帳戶
如果使用 Google Cloud 抵免額設定計費,則可略過此步驟。
如要設定個人帳單帳戶,請前往這裡在 Cloud 控制台中啟用帳單功能。
注意事項:
- 完成本實驗室的 Cloud 資源費用應不到 $3 美元。
- 您可以按照本實驗室結尾的步驟刪除資源,以免產生後續費用。
- 新使用者可獲得價值 $300 美元的免費試用期。
啟動 Cloud Shell
雖然可以透過筆電遠端操作 Google Cloud,但在本程式碼研究室中,您將使用 Google Cloud Shell,這是可在雲端執行的指令列環境。
在 Google Cloud 控制台中,點選右上工具列的 Cloud Shell 圖示:

你也可以依序按下 G 鍵和 S 鍵。如果您位於 Google Cloud 控制台中,或使用這個連結,這個序列會啟動 Cloud Shell。
佈建並連線至環境的作業需要一些時間才能完成。完成後,您應該會看到如下的內容:

這部虛擬機器搭載各種您需要的開發工具,並提供永久的 5GB 主目錄,而且在 Google Cloud 運作,能大幅提升網路效能並強化驗證功能。您可以在瀏覽器中完成本程式碼研究室的所有作業。您不需要安裝任何軟體。
3. 事前準備
啟用 Basic 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
啟用 Developer Knowledge 的 API 和遠端 MCP 後,請繼續為 Cloud SQL 遠端 MCP 服務執行相同操作。
gcloud beta services mcp enable sqladmin.googleapis.com --project=$PROJECT_ID
與所有資料庫的遠端 MCP 相同,MCP 存取權和權限會分階段提供,在專案層級提供 API 的精細存取權,只有具備「服務使用管理員」 (roles/serviceusage.serviceUsageAdmin) 角色的主體 (使用者或服務帳戶) 才能執行此操作。
只有具備 MCP 工具使用者 (roles/mcp.toolUser) 角色的主體,才能呼叫遠端 MCP API。
舉例來說,如果您沒有 Cloud SQL 管理員 (roles/cloudsql.admin) 角色,就無法在專案中建立、複製或更新任何執行個體。
如要進一步瞭解必要角色和權限,請參閱說明文件。
如我們所見,階段式和精細的授權機制可保護我們免於未經授權的攻擊,即使遠端 MCP 端點已啟用,也能確保生產環境的安全。
接下來要啟用的遠端 MCP 是 Cloud Run 服務。啟用及存取 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 做為主要代理程式來執行大部分動作,第一步是設定 Gemini CLI,以便與遠端 MCP 伺服器搭配運作。此外,我們強烈建議使用最新版 Gemini CLI 和最新版 Gemini,例如 Gemini-3-pro 或 Gemini-3-flash (目前為預先發布版)。
如果您已安裝最新版 Gemini CLI,並設定使用最新版 Gemini 模型,可以略過接下來的 2 個步驟,直接前往步驟 3。
1. 取得 Gemini API 金鑰
如要在 Gemini CLI 中使用最新的 Gemini 模型,必須透過 API 金鑰驗證進行設定。我們可以在 Google AI Studio 中取得 API 金鑰

- 建立 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 中透過擴充功能或直接在設定中啟用這些功能。在本實驗室中,您將使用專案範圍設定的 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 金鑰的值)。以下範例顯示 settings.json 檔案的 MCP 區段,其中只新增了 DK API。在實驗室的後續步驟中,您也會看到所有 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. 在本機啟動應用程式
測試應用程式並載入一些範例資料
在同一個殼層中,切換至應用程式資料夾,然後使用下列指令啟動應用程式:
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
開發人員知識 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 文件提供回覆。允許執行 Developer Knowledge MCP 要求。在提供回覆前,Gemini 可能會再詢問一到兩次,以取得更多資訊。請勿允許變更申請。
最後,這項工具會建立教學課程,並提供摘要,其中 PostgreSQL 適用的 Cloud SQL 是資料庫後端的最佳選擇。由於生成式 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 在準備教學課程時,以 Developer Knowledge 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
我們已決定在 Google Cloud 中使用 PostgreSQL 適用的 Cloud SQL 做為應用程式的後端。現在我們可以請 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、準備密鑰管理工具的資料,並建立必要的密鑰。此外,這項作業也會更新應用程式,使其能與 PostgreSQL 資料庫搭配運作,並新增必要的 npm 模組。
然後在建構映像檔並放置到 Artifact Registry 後,使用 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. 恭喜
恭喜您完成本程式碼研究室。
Google Cloud 學習路徑
涵蓋內容
- 如何部署及設定 Gemini CLI,以便搭配 Google Cloud 遠端 MCP 使用
- 如何使用 Development KnowledgeMCP
- 如何使用 Cloud SQL MCP 將資料遷移至雲端
- 如何使用 Cloud Run MCP 在雲端部署應用程式
- 如何在 Google Cloud Shell 中使用 Gemini CLI
10. 問卷調查
輸出內容: