ClaudeからGoogle Compute Engineを操作するMCP接続の手順
Compute Engineの公式リモートMCPサーバー(compute.googleapis.com/mcp)をClaudeにつなぐ手順と、29個のツールの内訳、書き込み6個の扱い方をまとめます。
Compute Engineには、Googleがホストするリモート型のMCPサーバーがあります。エンドポイントはhttps://compute.googleapis.com/mcpで、VMインスタンスの作成・起動・停止・削除と、ディスクやインスタンステンプレート、予約(reservation)、確約利用(commitment)の参照ができます。ClaudeやClaude Codeから「このゾーンで止まっているVMを洗い出して」と頼める構成です。
ツールは全部で29個です。そのうち書き込みを伴うのは6個だけで、残り23個は参照系です。接続前に決めておくのは、この6個をどう扱うかです。
Compute EngineのMCPサーバーでできること
このサーバーは、Compute Engine APIをMCPツールとして公開したものです。ローカルでgcloudをラップする方式ではなく、Google側のエンドポイントにHTTPで接続します。ローカルで動くgcloud MCPサーバーとの違いはgcloud MCPサーバーをClaude Codeに追加する手順で扱っています。
ツールの入力は、基本的にプロジェクト・ゾーン・リソース名の3点です。リージョン単位のcommitment系だけは、ゾーンの代わりにリージョンを渡します。
| 区分 | ツール | 数 |
|---|---|---|
| VMの操作(書き込み) | ツールcreate_instance / delete_instance / start_instance / stop_instance / reset_instance / set_instance_machine_type | 数6 |
| VMの参照 | ツールlist_instances / get_instance_basic_info / list_instance_attached_disks | 数3 |
| 管理インスタンスグループ(MIG) | ツールlist_instance_group_managers / get_instance_group_manager_basic_info / list_managed_instances | 数3 |
| インスタンステンプレート | ツールlist_instance_templates / get_instance_template_basic_info / get_instance_template_properties | 数3 |
| ディスクとスナップショット | ツールlist_disks / get_disk_basic_info / get_disk_performance_config / list_snapshots | 数4 |
| マシンタイプ・GPU・イメージ | ツールlist_machine_types / list_accelerator_types / list_images | 数3 |
| 予約と確約利用 | ツールlist_reservations / get_reservation_basic_info / get_reservation_details / list_commitments / get_commitment_basic_info / list_commitment_reservations | 数6 |
| 操作の状態確認 | ツールget_zone_operation | 数1 |
書き込み系ツールの説明文には、共通の指示が入っています。レスポンスにエラーがなく、操作のステータスがDONEになってから先へ進むこと、詳細はget_zone_operationで調べることです。Claudeは「VMを止めた」と報告する前に、操作の完了を確かめる流れで動きます。
一覧にない操作は、このサーバーではできない
ツール一覧に載っているのは、上の29個だけです。ファイアウォールルール、VPCネットワーク、メタデータの変更、ディスクの作成・削除、スナップショットの作成は、一覧にツールがありません。SSHでVMに入る操作もありません。
つまりこのサーバー単体で頼めるのは、次のような仕事です。
- 稼働状況の棚卸し: ゾーン内のVMの状態・マシンタイプ・GPUの有無を一覧にする
- 起動と停止の切り替え: 開発用VMを夜間に止める、朝に起動する
- サイズ変更: 停止中のVMのマシンタイプを変える
- 構成の確認: テンプレートやMIGの設定、ディスクのIOPSやスループットを読む
- 予約と確約利用の確認: 割り当て済みの容量と確約の期間を確認する
ネットワークの設定変更やディスクの削除まで任せたいなら、gcloudコマンドを実行するMCPサーバーと併用する形になります。その場合は、権限を絞る仕組みが別になる点に注意が必要です。
接続前に必要な準備
Google CloudのMCPサーバーは、ツール単位で接続する前に、プロジェクトでAPIを有効にしておく必要があります。手順は次のとおりです。
接続前の準備(Google Cloud側)
- 1
プロジェクトと課金を確認する
対象プロジェクトで課金が有効になっていることを確認します。新しく試すなら、削除しやすい検証用プロジェクトを作るのが安全です。
- 2
gcloudを初期化する
gcloud CLIをインストールして
gcloud initで初期化し、gcloud config set projectで対象プロジェクトを選びます。 - 3
Compute Engine APIを有効にする
APIを有効にするには、Service Usage Admin(
roles/serviceusage.serviceUsageAdmin)が必要です。このロールはserviceusage.services.enableを含みます。
gcloud services enable compute.googleapis.comサービス名はMCPサーバーごとに違い、Compute Engineはcompute.googleapis.comです。有効化していないサービスは、権限を整えても接続できません。
Claudeにつなぐ3つの方法
認証方式は、クライアントによって選べるものが変わります。Googleの手順では、Claude.ai、Claude Code、Claude Desktopは、OAuthクライアントIDとシークレットを使うカスタムコネクタとして接続します。
方法1: OAuthクライアントを作ってカスタムコネクタにする
Google Cloudコンソールの「Google Auth Platform」から、クライアントを作成します。
- アプリケーションの種類に「ウェブアプリケーション」を選ぶ
- 承認済みリダイレクトURIに
https://claude.ai/api/mcp/auth_callbackを追加する - Claude.aiから接続する場合は、承認済みJavaScript生成元にも
https://claude.aiを追加する - 作成後に表示されるクライアントシークレットを控える(コピーできるのは一度きりです)
あとはClaude側でカスタムコネクタを追加し、URLにhttps://compute.googleapis.com/mcpを入れます。クライアントIDとシークレットは、詳細設定(Advanced settings)に入力します。Googleのドキュメントは、シークレットをパスワードと同じ扱いで保管するよう求めています。コネクタ側の一般的な仕組みはリモートMCPのOAuth認証にまとめています。
方法2: Claude Codeに--client-id付きで登録する
Claude Codeのclaude mcp addには、事前登録したOAuthクライアントを渡すオプションがあります。次のような形になります(Claude Codeの公式ドキュメントにある書式を、Compute Engineのエンドポイントに当てはめた例です)。
claude mcp add --transport http \
--client-id YOUR_CLIENT_ID --client-secret --callback-port 8080 \
compute https://compute.googleapis.com/mcp--client-secretを値なしで付けると、シークレットは対話入力になります。MCP_CLIENT_SECRET環境変数で渡す方法もあり、CIなど非対話の場面で使えます。
ただし、Googleの手順が登録を求めるリダイレクトURIはhttps://claude.ai/api/mcp/auth_callbackです。一方、--callback-portはローカルのhttp://localhost:ポート/callbackを使います。URIが食い違うと、認証の途中でリダイレクトURIの不一致エラーになるおそれがあります。この組み合わせでの動作は、Googleのドキュメントには書かれていません。うまく通らない場合は、方法1のカスタムコネクタか、次の方法3に切り替えてください。
方法3: アクセストークンをヘッダーで渡す
アクセストークンをAuthorizationヘッダーで受け取れるクライアント向けの方法です。Googleの手順では、ADC(Application Default Credentials)のトークンを使います。
gcloud auth application-default login
gcloud auth application-default print-access-token得られたトークンを、Authorization: Bearer ...とx-goog-user-project(課金先のプロジェクトID)のヘッダーに入れます。Claude Codeなら--headerで渡せます。
claude mcp add --transport http compute \
https://compute.googleapis.com/mcp \
--header "Authorization: Bearer YOUR_TOKEN" \
--header "x-goog-user-project: YOUR_PROJECT_ID"トークンは使い捨てに近い扱いです。Googleのドキュメントも、ヘッダー方式はクライアントIDとシークレットより安全性が高い一方で、OAuthトークンを定期的に更新する必要があると書いています。更新したらclaude mcp removeで登録し直すか、claude mcp add-jsonで設定ごと入れ替えます。トークンは設定ファイルに平文で残るため、チームで共有する.mcp.jsonにはコミットしないでください。Claude Code側のスコープやヘッダーの仕様はClaude Code MCP設定ガイドで扱っています。
本番では自分の資格情報で動かさない
認証にあなた自身のIDを使うと、MCPクライアントはあなたと同じ範囲のリソースにアクセスでき、操作もあなたの操作として記録されます。Googleのドキュメントは、本番のワークロードでは自分のIDではなく、専用のエージェントIDやワークロードIDを作るよう勧めています。IAMのロールとポリシーで、クライアントの操作範囲を絞れるためです。MCP経由の操作がログで追える点も、理由に挙げられています。
ここで一つ、混同しやすい点があります。IAMでMCPの利用を制御できる範囲は、サーバーの種類によって違います。
IAMでMCPを制御できる範囲
Google Cloud MCPサーバー
MCP Tool User(roles/mcp.toolUser)ロールと、IAMのallow/denyポリシーが使えます。Compute Engineのような、Google Cloudのプロダクトが公開するサーバーが対象です。
Googleの他のリモートMCPサーバー
roles/mcp.toolUserは不要で、IAMのポリシーやパーミッションでアクセスを制御することもできません。
Compute Engineはプロジェクトにひもづくリソースを扱うため、前者の仕組みで読み取り専用でないツールだけを止めるといった制御を組めます。ポリシーの書き方はGoogle CloudのMCPサーバーをIAMで権限制御するに具体例があります。このCompute Engineのリファレンスページ自体には、IAMロールやOAuthスコープの記載はありません。実際の権限は、IAMのドキュメントと突き合わせて決めてください。
書き込み6個の扱い方
参照系の23個は、VMの状態を変えません。リスクが出るのは次の6個です。
| ツール | 起きること | 取り消せるか |
|---|---|---|
create_instance | 起きることVMを新規作成。指定がなければe2-medium、debian-12(debian-cloudプロジェクト) | 取り消せるか作成後に削除すれば戻せる(課金は発生) |
start_instance | 起きること停止中のVMを起動 | 取り消せるかstop_instanceで戻せる |
stop_instance | 起きることVMを停止 | 取り消せるかstart_instanceで戻せる |
reset_instance | 起きることVMをリセット | 取り消せるか実行中のプロセスは戻らない |
set_instance_machine_type | 起きること停止中のVMのマシンタイプを変更 | 取り消せるか同じツールで元に戻せる |
delete_instance | 起きることVMを削除 | 取り消せるか削除を戻すツールはない |
create_instanceは、マシンタイプとイメージを省略すると既定値で作られます。「VMを1台作って」という曖昧な指示だと、意図しないスペックで課金が始まる余地があります。プロジェクト・ゾーン・マシンタイプは、プロンプトで明示しておきます。
set_instance_machine_typeが操作できるのは停止中のインスタンスです。ツールの説明文に書かれた前提なので、Claudeは変更の前にstop_instanceを呼び、完了を確かめてから進める流れになります。
落とし穴
削除と停止は、同じ「VMを消す」でも別の操作です
delete_instanceは戻せません。「使っていないVMを片付けて」という指示では、Claudeが停止ではなく削除を選ぶ余地があります。次のようにプロンプトに線を引いておくと、事故を減らせます。
「list_instancesで状態を一覧にして、止めてよいVMを提案してください。実行するのはstop_instanceだけで、delete_instanceは私が名前を指定したときにだけ呼んでください」
Claude Codeには、ツール単位で許可・確認を設定する仕組みがあります。delete_instanceとcreate_instanceを毎回の確認に残し、参照系だけを自動で許可する運用が、最初の設定として扱いやすい形です。
動作確認のプロンプト例
接続できたら、まず参照系だけで確かめます。次の順で頼むと、ツールの動きが追いやすくなります。
- 「プロジェクトYOUR_PROJECT_IDのus-central1-aにあるVMを
list_instancesで一覧にして」 - 「そのうち停止中のものについて、マシンタイプとアタッチされたディスクを教えて」
- 「
list_machine_typesで、vCPUが4でメモリが16GB前後のものを探して」
3つ目は、サイズ変更の前の下調べとして使えます。list_machine_typesは、vCPU数・メモリ・共有CPUかどうか・アーキテクチャーを返します。GPUを使うなら、list_accelerator_typesで、そのゾーンで使えるアクセラレーターと、1インスタンスあたりの最大枚数を確認できます。
接続できないときの切り分け
接続やツール呼び出しが失敗したときは、上から順に確かめます。
Compute Engine MCPがつながらないときの順番
- QCompute Engine APIはプロジェクトで有効ですか?答えがいいえのとき答えがはい
gcloud services enable compute.googleapis.comで有効化します。有効化にはroles/serviceusage.serviceUsageAdminが必要です。 - Qトークンの期限は切れていませんか?答えがいいえのとき答えがはい
ヘッダー方式(方法3)なら、
gcloud auth application-default print-access-tokenで取り直して登録し直します。 - Q認証したIDにCompute Engineの権限とMCPの権限がありますか?答えがいいえのとき答えがはい
リソース側の権限と
mcp.tools.callの両方が必要です。片方だけでは呼び出しが失敗します。
それでも失敗するとき
tools/listでツール一覧が返るかをcurlで確かめ、クライアント側の問題かサーバー側の問題かを切り分けます。
ツール一覧の確認は、リファレンスにあるJSON-RPCのリクエストをそのまま送れます。認証が必要なので、ヘッダーにトークンを付けます。
curl --location 'https://compute.googleapis.com/mcp' \
--header 'content-type: application/json' \
--header 'accept: application/json, text/event-stream' \
--header "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
--data '{"method": "tools/list", "jsonrpc": "2.0", "id": 1}'返ってくる一覧は、リファレンスの29個と照合できます。ドキュメントの一覧と食い違いがあれば、実際の応答を優先して確かめてください。
gcloud MCPとの使い分け
Compute Engineを触るMCPは、ほかにもgcloudをラップするOSS版があります。どちらを選ぶかは、何を任せたいかで決まります。
| 観点 | Compute Engine MCP(本記事) | gcloud MCPサーバー |
|---|---|---|
| 実行場所 | Compute Engine MCP(本記事)Googleがホスト(リモート) | gcloud MCPサーバー手元のマシン(ローカル) |
| 操作範囲 | Compute Engine MCP(本記事)一覧の29ツールに限る | gcloud MCPサーバーgcloudの任意のサブコマンド |
| 認証 | Compute Engine MCP(本記事)OAuthクライアントかアクセストークン | gcloud MCPサーバーローカルのgcloudのアカウント |
| 権限の絞り方 | Compute Engine MCP(本記事)IAMのallow/denyポリシーとmcp.toolUser | gcloud MCPサーバー--configの許可・拒否リスト |
範囲が狭いぶん、Compute Engine MCPは何ができて何ができないかが読みやすく、権限設計もIAMに寄せられます。ネットワークやメタデータまで触る必要があるなら、gcloud MCPサーバーに任せる範囲を別に決めます。
まとめ
Compute Engine MCPは、VMの起動・停止・削除と、構成の参照に絞った29ツールのサーバーです。つなぐ前にAPIの有効化を済ませ、認証はカスタムコネクタのOAuthか、ADCのトークンのヘッダーから選びます。
最初は参照系の23個だけで棚卸しに使い、create_instanceとdelete_instanceは確認付きにしておくと、事故の幅を小さくできます。本番では自分のIDを渡さず、専用のIDとIAMポリシーで書き込みを絞る構成が、Googleのドキュメントの勧める形です。