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サーバー |
|---|---|
| URL | Cloud 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
gcloudで認証してトークンを用意する
Google Cloud CLIを入れて
gcloud initを済ませます。前提条件にある手順です。 - 2
リモートMCPとして登録する
HTTPのリモートサーバーは
--transport httpで追加します。認証ヘッダーは--headerで渡せます。 - 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 というバケットを作り、
バナー用のコピーをテキストで保存してください。この流れでは、一覧、読み取り、バケット作成、テキスト保存の順にツールが呼ばれます。画像そのものを生成して保存する指示は、書き込みがテキストのみという制限に当たります。
書き込みの指示を制限に合わせる
通りにくい頼み方
「生成したバナー画像をcampaign-q3-assetsに保存して」
制限に収まる頼み方
「バナーのコピーと配色のメモをテキストで保存して。画像はこちらで別にアップロードする」
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プラグインの記事が次の読み先です。