Claude Media
Cloud Storage MCPをClaudeにつなぐ手順 — バケットとオブジェクトを扱う

Cloud Storage MCPをClaudeにつなぐ手順 — バケットとオブジェクトを扱う

GoogleがホストするCloud StorageリモートMCPサーバーのURL・認証・OAuthスコープと、Claude Codeへの追加コマンド、8 MiBの上限などの制限をまとめます。

Cloud StorageのリモートMCPサーバーは、Googleが運用するエンドポイント https://storage.googleapis.com/storage/mcp にClaudeをつなぎ、バケットの作成やオブジェクトの一覧・読み書きを自然言語で頼めるようにする仕組みです。ローカルに何もインストールせず、認証はOAuth 2.0とIAMで行います。

つなぐ前に押さえたいのは3点です。書き込みはテキストファイルだけ、読み書きとも1ファイル8 MiBまで、エンドポイントはグローバルのみ。この3つに収まる用途なら、Claude Codeへの追加は1コマンドで済みます。

Cloud Storage MCPサーバーとは — Googleがホストする管理型エンドポイント

Google Cloudのリモート型MCPサーバーは、Googleが管理するグローバルまたはリージョンのHTTPエンドポイントとして提供されます。ドキュメントが挙げる特長は、探しやすい一元的な公開、細かい認可、Model Armorによる任意のプロンプト・応答の保護、集中的な監査ログです。Cloud Storage版もこの系統の1つです。

同じ名前の別物が1つあります。@google-cloud/storage-mcp というnpmパッケージは、ローカルで動くstdio型のサーバーです。こちらはgcloud MCPサーバーの解説記事で兄弟サーバーとして触れています。本記事が扱うのは、URLを指定してつなぐホスト型のほうです。

項目Cloud StorageリモートMCPサーバー
URLCloud StorageリモートMCPサーバーhttps://storage.googleapis.com/storage/mcp
トランスポートCloud StorageリモートMCPサーバーStreamable HTTP
認証Cloud StorageリモートMCPサーバーOAuth 2.0 + IAM(APIキーは不可)
エンドポイントCloud StorageリモートMCPサーバーグローバルのみ
読み取りCloud StorageリモートMCPサーバーテキストとバイナリ(PDF・画像・音声・動画)
書き込みCloud StorageリモートMCPサーバーテキストファイルのみ
サイズ上限Cloud StorageリモートMCPサーバー読み書きとも最大8 MiB

つなぐ前に決める — ツール権限とストレージ権限は別に要る

Cloud Storage MCPの権限は、1つのロールで済みません。ツールを呼ぶ権限と、ストレージ自体の権限が別々に要ります。

権限

必要なIAMロール

  • MCPツールを呼ぶ

    roles/mcp.toolUser(MCP Tool User)。mcp.tools.call を含みます。

  • 読む

    roles/storage.objectViewer。オブジェクトの一覧・内容・メタデータの取得に使います。

  • 書く・消す

    書き込みは roles/storage.objectCreator。削除は roles/storage.objectUser か roles/storage.objectAdmin。

  • バケットを作る・消す

    roles/storage.admin。バケットの作成・一覧・削除に使います。

これらは「ロールを付与するのは管理者」という前提で書かれています。個人で試すなら、新しいプロジェクトを作ると必要な権限をすでに持っている、という案内です。既存プロジェクトを使うときは、自分に上のロールがあるかを先に見ます。

認証については、ドキュメントが「エージェント用に別のIDを作る」ことを勧めています。アクセスを絞り、監視しやすくするためです。人間のアカウントでClaudeを動かすと、Claudeの操作がそのまま自分の権限で実行されます。

OAuthスコープは読み取り専用から選ぶ

接続時に指定するスコープは2種類です。

スコープ許可される範囲
https://www.googleapis.com/auth/devstorage.read_only許可される範囲データの読み取りのみ
https://www.googleapis.com/auth/devstorage.read_write許可される範囲データの読み取りと変更

分析や調査が目的なら read_only で足ります。IAMでストレージの書き込みロールを持っていても、スコープ側で読み取り専用にしておけば、二重に止まります。BigQueryなど他のサービスも同じエージェントから触るなら、そのサービス分のスコープも別に必要です。

Claude Codeに追加する

Cloud Storage側のドキュメントが示す接続項目は汎用のもので、サーバー名、URL、Streamable HTTP、認証情報、OAuthスコープの5つです。Claude Code向けの個別コマンドは載っていません。そこで、Claude Codeの claude mcp add の書式に当てはめて組み立てます。

手順

Claude Codeへの追加手順

  1. 1

    gcloudで認証してトークンを用意する

    Google Cloud CLIを入れて gcloud init を済ませます。前提条件にある手順です。

  2. 2

    リモートMCPとして登録する

    HTTPのリモートサーバーは --transport http で追加します。認証ヘッダーは --header で渡せます。

  3. 3

    接続状態を見る

    claude mcp get か claude mcp list で状態を確かめます。

次は、アクセストークンをヘッダーで渡す例です。ページの tools/call の例が Authorization: Bearer OAUTH2_TOKEN の形なので、それに合わせました。

claude mcp add --transport http gcs \
  https://storage.googleapis.com/storage/mcp \
  --header "Authorization: Bearer $(gcloud auth print-access-token)"
 
claude mcp get gcs

この形では、トークンを登録した時点の値が設定に書かれます。アクセストークンには期限があるため、接続が拒否されたら claude mcp remove gcs で外し、新しいトークンで登録し直します。長く使うなら、OAuthクライアントIDを用意して --client-id と --client-secret で渡す方法もあります。Claude Code側の詳しい仕様はClaude Code MCP設定ガイドにまとめています。

OAuth対応のサーバーに claude mcp add で登録すると、セッション内の /mcp から認証を進められます。ただし、Cloud Storageのドキュメントが動的クライアント登録(自動のOAuth設定)に対応していると書いているわけではありません。「Incompatible auth server」のようなエラーが出たら、事前に作ったOAuthクライアントの情報を渡す経路になります。

接続できたかは、ツール一覧で確かめます。tools/list はHTTPで直接送れ、認証は要らないと書かれています。

curl -X POST https://storage.googleapis.com/TOOLSET_ENDPOINT \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'MCP-Protocol-Version: MCP_PROTOCOL_VERSION' \
  -H 'Mcp-Method: tools/list' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

上はcurl例を短くした形です。TOOLSET_ENDPOINT はサービス名より後ろの部分(Cloud Storageなら mcp/toolset-name のような形)、MCP_PROTOCOL_VERSION にはMCPのプロトコルバージョン(例: 2026-07-28)を入れます。実際のリクエストではこのほかに params._meta も付けます。

バケットとオブジェクトに頼めること

ドキュメントのユースケースに、ツール名が出てきます。名前が確認できるのは次のとおりです。

ツール使われ方
list_buckets使われ方プロジェクト内のバケットを一覧する(projectId を渡す)
list_objects使われ方バケットやプレフィックスの下のオブジェクトを探す
read_object使われ方オブジェクトの内容を取得する(8 MiBまで)
write_text使われ方テキストを保存する(8 MiB未満)
create_bucket使われ方新しいバケットを作る

表のツールは使用例に登場するものです。全ツールは上の tools/list で取得できます。

使用例を、Claudeへの依頼文に置き換えると次のようになります。サンプルプロンプトは英語なので、日本語に直した一例です。

product-images バケットから SKU-123 の画像を list_objects で探して、
商品説明文の下書きを作ってください。
そのあと campaign-q3-assets というバケットを作り、
バナー用のコピーをテキストで保存してください。

この流れでは、一覧、読み取り、バケット作成、テキスト保存の順にツールが呼ばれます。画像そのものを生成して保存する指示は、書き込みがテキストのみという制限に当たります。

前と後

書き込みの指示を制限に合わせる

BEFORE

通りにくい頼み方

「生成したバナー画像をcampaign-q3-assetsに保存して」

AFTER

制限に収まる頼み方

「バナーのコピーと配色のメモをテキストで保存して。画像はこちらで別にアップロードする」

8 MiBと書き込みの制限に当たる場面

制限は3つで、どれも読み書きの設計を決めます。

  • 読み取りはPDF・画像・音声・動画も対象ですが、上限は8 MiBです。会議の録音や高解像度の動画は、この枠に入らないことがあります
  • 書き込みはテキストのみです。CSV・JSON・Markdownのようなテキスト形式は保存できますが、PDFや画像の書き出しは対象外です
  • エンドポイントはグローバルだけです。リージョン固定のエンドポイントを求める要件には使えません

使用例にある「決算説明の音声を読み込んで要約する」型の依頼も、ファイルが8 MiBを超えると成立しません。大きなファイルは、BigQueryやStorage Insightsなど別のツールと組み合わせる前提で設計します。

Claude Codeで誤操作を減らす

Claude Code側でもツール単位で止められます。MCPツールの名前は mcp__<サーバー名>__<ツール名> の形です。サーバー名を gcs で登録したなら、書き込みと作成のツールは次のように書けます。

{
  "permissions": {
    "ask": [
      "mcp__gcs__write_text",
      "mcp__gcs__create_bucket"
    ]
  }
}

これは .claude/settings.json に置く想定の例です。書き込み系は毎回承認を挟み、読み取りと一覧は通します。IAMやdeny policyで組織単位に止める方法はGoogle CloudのMCPサーバーをIAMで権限制御するに分けてあります。

CLAUDE.mdに運用ルールを書いておく方法もあります。

## Cloud Storage MCP
- 本番バケット(prod- で始まるもの)は読み取りのみ。write_text は使わない
- 書き込み先は sandbox- で始まるバケットに限る
- 8 MiB を超えるファイルは読まず、サイズだけ報告する

CLAUDE.mdは助言であって強制ではありません。止めたい操作はpermissionsかIAMで制限します。

Model Armorとログの注意

Model Armorを有効にしてロギングを付けると、ペイロード全体がログに残り、機密情報が見える可能性があります。保護を強めた結果、ログに中身が出るという副作用です。

設定は、Model Armorのfloor settingでMCPのサニタイズを有効にします。例では gcloud model-armor floorsettings update に --add-integrated-services=GOOGLE_MCP_SERVER と --google-mcp-server-enforcement-type=INSPECT_AND_BLOCK を付けます。自然言語のデータが流れない用途では、プロンプトインジェクションとジェイルブレイクのフィルターを有効にしないよう注意書きがあります。

floor settingはMCPだけに効くものではありません。Vertex AIなど他の統合サービスの検査にも影響します。止めたいときは --remove-integrated-services=GOOGLE_MCP_SERVER です。

つまずきやすい点

落とし穴

MCP Tool Userだけではバケットを読めない

roles/mcp.toolUser が与えるのは mcp.tools.call だけです。list_objects や read_object を通すには、storage.objects.list と storage.objects.get を含むロールも別に要ります。ツールは見えるのに権限エラーになるときは、この組み合わせを疑います。

落とし穴

APIキーでは認証できない

Cloud Storage MCPサーバーはすべての要求にIAMの認可を求めるため、APIキーを受け付けません。キーを渡す設定の流用はできません。

よくある質問

書き込めるのはテキストだけなのに、バケット作成はできるのか

できます。制限は「オブジェクトの書き込みがテキストファイルのみ」という意味です。バケットの作成・削除は roles/storage.admin の範囲です。

スコープをread_onlyにすると何が防げるのか

devstorage.read_only で接続すれば、スコープの面から書き込みが許可されません。IAMのロールが付いていても、そのトークンでは変更できない構成にできます。

まとめ

Cloud Storage MCPは、制限が明確なぶん使い分けがしやすいサーバーです。調査や要約が中心なら読み取り専用スコープで始め、テキストの保存が要る場面だけ read_write に上げる、という段階の踏み方が収まりがよい構成です。画像や動画を書き出す、8 MiBを超えるファイルを扱う、という用途は、このサーバーの外側で組み立てることになります。BigQuery側を触る場合は、BigQueryプラグインの記事が次の読み先です。

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