Claude Media
ClaudeからGoogle Compute Engineを操作するMCP接続の手順

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. 1

    プロジェクトと課金を確認する

    対象プロジェクトで課金が有効になっていることを確認します。新しく試すなら、削除しやすい検証用プロジェクトを作るのが安全です。

  2. 2

    gcloudを初期化する

    gcloud CLIをインストールしてgcloud initで初期化し、gcloud config set projectで対象プロジェクトを選びます。

  3. 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」から、クライアントを作成します。

  1. アプリケーションの種類に「ウェブアプリケーション」を選ぶ
  2. 承認済みリダイレクトURIにhttps://claude.ai/api/mcp/auth_callbackを追加する
  3. Claude.aiから接続する場合は、承認済みJavaScript生成元にもhttps://claude.aiを追加する
  4. 作成後に表示されるクライアントシークレットを控える(コピーできるのは一度きりです)

あとは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を制御できる範囲

IAMで制御できる

Google Cloud MCPサーバー

MCP Tool User(roles/mcp.toolUser)ロールと、IAMのallow/denyポリシーが使えます。Compute Engineのような、Google Cloudのプロダクトが公開するサーバーが対象です。

IAMでは制御できない

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を毎回の確認に残し、参照系だけを自動で許可する運用が、最初の設定として扱いやすい形です。

動作確認のプロンプト例

接続できたら、まず参照系だけで確かめます。次の順で頼むと、ツールの動きが追いやすくなります。

  1. 「プロジェクトYOUR_PROJECT_IDのus-central1-aにあるVMをlist_instancesで一覧にして」
  2. 「そのうち停止中のものについて、マシンタイプとアタッチされたディスクを教えて」
  3. 「list_machine_typesで、vCPUが4でメモリが16GB前後のものを探して」

3つ目は、サイズ変更の前の下調べとして使えます。list_machine_typesは、vCPU数・メモリ・共有CPUかどうか・アーキテクチャーを返します。GPUを使うなら、list_accelerator_typesで、そのゾーンで使えるアクセラレーターと、1インスタンスあたりの最大枚数を確認できます。

接続できないときの切り分け

接続やツール呼び出しが失敗したときは、上から順に確かめます。

切り分け

Compute Engine MCPがつながらないときの順番

  1. QCompute Engine APIはプロジェクトで有効ですか?
    答えがいいえのとき

    gcloud services enable compute.googleapis.comで有効化します。有効化にはroles/serviceusage.serviceUsageAdminが必要です。

    答えがはい
  2. Qトークンの期限は切れていませんか?
    答えがいいえのとき

    ヘッダー方式(方法3)なら、gcloud auth application-default print-access-tokenで取り直して登録し直します。

    答えがはい
  3. 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.toolUsergcloud 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のドキュメントの勧める形です。

この記事を共有:XはてブLinkedIn