1. はじめに
フィットネス コミュニティ向けのフルスタック イベント管理プラットフォームである AllStrides をご紹介します。機能は豊富ですが、現在の状態は「ローカルのみ」です。ローカル SQLite データベースと手動の Node.js 実行に依存しています。コミュニティを成長させるには、AllStrides に Google Cloud のスケーラビリティ、信頼性、セキュリティが必要です。
この Codelab では、従来の移行は行いません。代わりに、プロダクト アーキテクトとして、エージェント パートナーとして Gemini CLI を使用します。Gemini に 3 つの Google Cloud Model Context Protocol(MCP)サーバーを装備することで、AI が Google Cloud サービスに直接アクセスしてやり取りできるようになります。まず、Developer Knowledge MCP を使用して、allstrides アプリに最適な Google Cloud データベースを特定します。次に、Cloud SQL MCP を使用してデータベース インスタンスをプロビジョニングし、ローカル コミュニティ データを 1 つのプロンプトでクラウドに移動します。最後に、Cloud Run MCP を使用してアプリケーションをコンテナ化し、AllStrides をライブでグローバルにアクセスできるようにします。

前提条件
- Google Cloud コンソールの基本的な知識
- コマンドライン インターフェースと Cloud Shell の基本的なスキル
学習内容
- リモート MCP で動作するように Gemini CLI を構成してデプロイする方法
- 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 を指定して使用可能かどうかを確認できます。ほとんどの Codelab では、プロジェクト ID を参照する必要があります。通常、プロジェクト ID はプレースホルダ PROJECT_ID で識別されます。
- なお、3 つ目の値として、一部の API が使用するプロジェクト番号があります。これら 3 つの値について詳しくは、こちらのドキュメントをご覧ください。
課金を有効にする
個人用の請求先アカウントを設定する
Google Cloud クレジットを使用して課金を設定した場合は、この手順をスキップできます。
- こちらのリンクをクリックし、個人の Google アカウントでログインします。
- 次のような出力が表示されます。

- [クレジットにアクセスするにはこちらをクリック] ボタンをクリックします。お支払い情報を設定するページが表示されます。無料トライアルの登録画面が表示された場合は、[キャンセル] をクリックして、お支払い情報のリンクに進みます。

- [確認] をクリックします。これで、Google Cloud Platform 無料トライアルの請求先アカウントに接続されました。

個人用の請求先アカウントを設定する
Google Cloud クレジットを使用して課金を設定した場合は、この手順をスキップできます。
個人用の請求先アカウントを設定するには、Cloud コンソールでこちらに移動して課金を有効にします。
注意事項:
- このラボを完了するのにかかる Cloud リソースの費用は 3 米ドル未満です。
- このラボの最後の手順に沿ってリソースを削除すると、それ以上の料金は発生しません。
- 新規ユーザーは、300 米ドル分の無料トライアルをご利用いただけます。
Cloud Shell の起動
Google Cloud はノートパソコンからリモートで操作できますが、この Codelab では、Google Cloud Shell(Cloud 上で動作するコマンドライン環境)を使用します。
Google Cloud Console で、右上のツールバーにある Cloud Shell アイコンをクリックします。

または、G キーを押してから S キーを押します。このシーケンスは、Google Cloud コンソール内からアクセスした場合、またはこのリンクを使用した場合に Cloud Shell をアクティブにします。
プロビジョニングと環境への接続にはそれほど時間はかかりません。完了すると、次のように表示されます。

この仮想マシンには、必要な開発ツールがすべて用意されています。永続的なホーム ディレクトリが 5 GB 用意されており、Google Cloud で稼働します。そのため、ネットワークのパフォーマンスと認証機能が大幅に向上しています。この Codelab での作業はすべて、ブラウザ内から実行できます。インストールは不要です。
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 をメイン エージェントとして使用してほとんどのアクションを実行するように設計されています。最初の手順は、リモート MCP サーバーと連携するように構成することです。また、Gemini CLI の最新バージョンと、Gemini-3-pro や Gemini-3-flash(現在プレビュー版)などの Gemini の最新バージョンを使用することを強くおすすめします。
Gemini CLI の最新バージョンがすでにインストールされていて、最新の Gemini モデルを使用するように構成されている場合は、次の 2 つのステップをスキップして、ステップ 3 に直接進むことができます。
1. Gemini API キーを取得する
Gemini CLI で最新の Gemini モデルを使用するには、API キー認証で構成する必要があります。API キーは、Google AI Studio で取得できます。
- ブラウザで Google AI Studio -> [ API キーを取得] に移動します。
- 画面の右側にある
Create API keyボタンをクリックします。 - ポップアップ ウィンドウでプロジェクトを選択するか、表示されていない場合はインポートします。

- API キーを作成します。
- キーは、右側のコピーボタンを使用してコピーできます。

キーが準備され、Gemini CLI で使用できるようになりました。
2. Gemini CLI を構成する
Gemini CLI は、設定構成ファイルを使用して構成するか、/settings コマンドを使用してインタラクティブに構成できます。設定ファイルに設定を保持します。
まず、プロジェクトのディレクトリを作成します。ディレクトリを 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 で作業している場合、シェルを再起動するたびに以前のバージョンに戻る可能性があります。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 で拡張機能または設定から直接有効にする 2 つの方法があります。このラボでは、プロジェクト スコープの 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を有効にして、[OK] をクリックします。 - [保存] をクリックします。

キーを使用する必要がある場合は、ページに移動して右側の [キーを表示] をクリックします。

次に、このキーを構成に保存する必要があります。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 では、API ではなく Google 認証情報を使用します。セキュリティが強化され、ユーザーに許可されるロールとアクションの範囲を定義できるようになります。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 タブで、アプリケーション ディレクトリに切り替えて、sqllite3 ユーティリティを使用してインポートを実行します。
cd ~/projectmcp/mcp/examples/allstrides
sqlite3 allstrides.db < seed_data.sql
アプリケーション ページに戻って [Events] ボタンをもう一度クリックすると、複数のイベントが表示されます。

チャットページをテストして、メッセージを確認することもできます。
「exit」と入力して 2 つ目のタブを閉じます。
exit
最初のタブで ctrl+c の組み合わせを使用してアプリケーションを停止します。
6. デベロッパーの知識をテストする MCP
Developer Knowledge MCP を使用すると、アグノスティック ツールから Google ドキュメントを直接使用して、手順の確認、チュートリアルの作成、その他のタスクを行うことができます。これらのタスクは、最新の Google ドキュメントで補完できます。
Gemini CLI を起動し、Developer Knowledge MCP サーバーで使用可能な MCP ツールを一覧表示します。
/mcp
Developer Knowledge MCP では、次の 3 つのツールを利用できます。
予想される出力:
🟢 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)
このツールは、Google ドキュメントでレスポンスをグラウンディングするために MCP を使用していることがわかります。Developer Knowledge MCP リクエストの実行を許可します。回答を提供する前に、1 ~ 2 回ほど追加の情報を求められることがあります。現時点では、アプリケーションの変更は許可されていません。
最後に、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 が Developer Knowledge MCP を信頼できる情報源として使用することを想定しています。Gemini CLI が実行するアクションの順序は、正確なモデルやその他の要因によって若干異なる場合があります。たとえば、最初に移行スクリプトを準備し、その後に最終的なチュートリアル ドキュメントを作成するように指示できます。
Developer Knowledge 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
チュートリアル ドキュメントを含む新しいマークダウン ファイルが作成されます。
予想される出力:
✦ 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 でアプリケーションのバックエンドとして Cloud SQL for Postgres を使用することはすでに決定しています。これで、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 を使用してデータベースとユーザーを準備し、最終的にデータを移行します。データベースに対して最初に行うアクションの 1 つは、ユーザーを 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 にアプリケーションをデプロイする
これで、データベースが作成され、ローカル アプリケーション データが CloudSQL データベースに移行されました。これで、アプリケーションを 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.
指定された URL をブラウザで開くと、アプリケーション ページが表示されます。

すべてのイベントがそこに表示されます

おめでとうございます!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 学習プログラム
学習した内容
- Google Cloud リモート MCP と連携するように Gemini CLI を構成してデプロイする方法
- Development KnowledgeMCP の使用方法
- Cloud SQL MCP を使用してデータをクラウドに移行する方法
- Cloud Run MCP を使用してクラウドにアプリケーションをデプロイする方法
- Google Cloud Shell で Gemini CLI を使用する方法
10. アンケート
出力: