Claude Media
Claude BigQuery連携 — Google公式MCPサーバーで自然言語クエリーを投げる

Claude BigQuery連携 — Google公式MCPサーバーで自然言語クエリーを投げる

GoogleはBigQuery用のマネージドMCPサーバーを公式提供しています。エンドポイント・権限・制限事項を一次ソースから確認し、Claude Codeへの接続手順をまとめます。

Google CloudはBigQuery向けのMCP(Model Context Protocol)サーバーを、Googleが自社で運用するマネージドサービスとして公式提供しています。エンドポイントはbigquery.googleapis.com/mcpで、Googleのドキュメント自身が接続先クライアントの例としてClaudeを名指ししています。サーバーを自分でホストする必要がなく、IAMの権限設定だけで接続できる点が、他社のBigQuery向けMCPサーバーとの大きな違いです。

Claude BigQuery連携の仕組み

BigQuery MCPサーバーは、Googleのインフラ上で動くマネージドエンドポイントです。自然言語のプロンプトを受け取ったClaude側がSQLを組み立て、execute_sqlexecute_sql_readonlyといったツール経由でBigQueryのジョブとして実行を依頼する、という役割分担になっています。認証はOAuth 2.0とIAMを組み合わせた方式で、Googleアカウントの権限をそのまま流用できます。エージェント専用のIDを別途作って権限を分離することも推奨されています。

利用できるツールのうち代表的なものは次の2つです。

ツール内容
execute_sql内容SQLの実行(書き込みを伴う操作も含む唯一のツール)
execute_sql_readonly内容読み取り専用のSQL実行。DML・DDL・Python UDFは非対応

読み取りだけで運用したい場合は、execute_sqlへのアクセスを拒否ポリシーで止めておけば、execute_sql_readonlyだけが残る構成にできます。

必要な権限

BigQuery MCPサーバーを使うには、対象プロジェクトで次の3つのIAMロールが必要です。

ロール用途
roles/mcp.toolUser用途MCPツールの呼び出し自体を許可
roles/bigquery.jobUser用途BigQueryジョブの実行
roles/bigquery.dataViewer用途BigQueryデータの参照

管理者に依頼してこの3つのロールを付与してもらう、というのが最初のステップになります。カスタムロールで同等の権限を組み合わせることも可能です。

Claude Codeへの接続手順

BigQuery MCPサーバーはHTTPトランスポートのリモートサーバーなので、claude mcp addで追加します。

claude mcp add --transport http bigquery https://bigquery.googleapis.com/mcp

追加しただけでは認証が済んでいないため、Claude Code内で/mcpを実行してOAuthのサインインを完了させます。

/mcp

ブラウザが自動で開かない場合は、表示されたURLを手動で開いて認証を進めます。認証トークンは安全に保存され、以降は自動的に更新されるため、毎回のサインインは不要です。claude mcp addのオプションやスコープの詳細はClaude Code MCP設定ガイドで扱っています。

Claude.aiやCoworkから同じサーバーに接続したい場合は、「Customize > Connectors」の「Add custom connector」からエンドポイントURLを入力する形になります。接続の仕組み自体はClaude Codeと共通で、クライアントごとに個別の認証が必要になる点も同じです。

制限事項

Googleのドキュメントには、BigQuery MCPサーバーの制限事項が明記されています。

  • execute_sqlexecute_sql_readonlyとも、Google Driveの外部テーブルへのクエリーには対応しない
  • クエリーの処理時間は既定で3分まで。超過すると自動的にキャンセルされる
  • クエリー結果は最大3,000行までしか返らない
  • execute_sql_readonlyはDML文・DDL文・Python UDFを実行できない(読み取り専用)

大量データの集計や長時間かかる分析クエリーをそのまま投げると、行数上限や時間制限に引っかかりやすい設計です。集計は事前にBigQuery側でビューやマテリアライズドビューとして作っておき、MCP経由ではその結果を参照するだけにする、という役割分担が現実的です。MCPサーバー全般の権限設計とリスクの考え方はMCPセキュリティガイドにまとめています。

書き込みツールへのアクセスを制限する

execute_sqlだけが書き込みを伴う唯一のツールなので、組織で読み取り専用の運用に統一したい場合はこのツールをまとめて拒否ポリシーで止められます。Googleのドキュメントでは、読み書き系のMCPツール利用を制限する拒否ポリシーの作成手順が案内されています。個人で試す段階では、そもそも付与するIAMロールをbigquery.dataViewerまでに留め、書き込みに必要な追加権限を渡さないという運用でも同等の効果が得られます。

利用可能なツールの一覧は、認証なしでtools/listメソッドを直接呼び出すことでも確認できます。

curl -X POST https://bigquery.googleapis.com/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"tools/list"}'

MCP Inspectorのようなツールを使えば、コマンドラインを経由せずに同じ一覧をGUIで確認することもできます。

いつMCP経由が向き、いつbq CLIが向くか

BigQueryへのアクセス手段はMCP経由だけではありません。使い分けの目安は次の通りです。

用途向く手段理由
自然言語でテーブル構造を探索しながら分析したい向く手段BigQuery MCP理由スキーマを都度確認しながら対話的にクエリーを組める
定型のバッチ集計をスクリプトで自動化したい向く手段bq CLIやクライアントライブラリ理由3分の時間制限や3,000行の上限に縛られない
3,000行を超える全件データが必要向く手段bq CLIやエクスポート機能理由MCP経由の結果行数上限に収まらない
フォーキャストのような高度な分析を会話しながら試したい向く手段BigQuery MCP理由サンプルプロンプトのようにモデル呼び出しまで自然言語で完結する

探索的な分析や、会話をしながら仮説を検証していく作業はMCP経由が向いています。逆に定期実行するバッチ処理や大規模なデータ移動は、既存のCLIやAPIをそのまま使う方が制限に引っかかりません。

クエリー課金への注意

BigQueryはオンデマンド料金の場合、スキャンしたバイト数に応じて課金される仕組みです。MCP経由の場合はClaudeが自然言語のプロンプトからSQLを組み立てて実行を依頼するため、あなた自身がクエリー文を書くとき以上に「意図せず全件スキャンするクエリーが実行される」リスクを意識しておく必要があります。特に巨大なテーブルに対して「全期間のデータを集計して」のような曖昧な指示を出すと、想定より広い範囲をスキャンしてしまうことがあります。

対策としては、プロンプトの中で対象期間やパーティション列を具体的に指定する、あるいは組織側でクエリーのバイト数上限をプロジェクト設定で決めておく、という2つが現実的です。パーティション化されたテーブルであれば、日付範囲を明示するだけでスキャン量を大きく抑えられます。定額料金(Editions)を契約している組織では影響が出にくい一方、オンデマンド課金の環境ほどこの確認を丁寧にやる価値があります。

使用例

Googleが挙げているサンプルプロンプトには、次のようなものがあります。

  • 「プロジェクトPROJECT_IDのデータセット一覧を教えて」
  • DATASET_IDの中で受注量の多い注文を上位順に並べて、該当するテーブルとスキーマを特定した上で見せて」
  • 「テーブルTABLE_IDについて、COLUMN_NAMEを対象カラムとした将来予測を作って、上位10件を見せて」

3つ目の予測系プロンプトはBigQueryのフォーキャスト機能を呼び出す例で、集計だけでなく将来予測のような高度な分析もMCP経由で扱える範囲に含まれます。読み取り専用データベースへの接続設計全般についてはClaude CodeでMCPからデータベースに接続する方法でも扱っているので、BigQuery以外のデータベースと比較検討する際の参考になります。

よくあるつまずき

  • 権限不足でジョブが実行できない: bigquery.jobUserロールがないと、クエリー自体は組み立てられてもジョブの実行段階でエラーになります
  • 3分の時間制限を超える集計を投げる: 複雑な結合や大規模スキャンを含むクエリーは、あらかじめBigQuery側で事前集計しておく設計に切り替えた方が確実です
  • 3,000行の上限を超えて結果を取得しようとする: 全件が必要な場合はMCP経由ではなく、BigQueryのエクスポート機能やクライアントライブラリを使う方が適しています
  • OAuthの認証状態が切れたまま気づかない: /mcpで接続状態を確認する習慣をつけておくと、認証エラーで初めて気づくという事態を避けられます

まとめ — どこから始めるか

Claude BigQuery連携は、Googleが公式に運用するマネージドMCPサーバーに接続するだけで始められます。まずはbigquery.jobUserbigquery.dataViewerの権限を確認し、execute_sql_readonlyだけを使う読み取り専用の運用から試すのが無理のない始め方です。書き込みを伴うexecute_sqlは、必要になったタイミングで個別に許可を検討します。

よくある質問

BigQueryのサンドボックス(無料枠)でも使えますか

使えます。ドキュメント上は課金を有効化しなくてもサンドボックスの範囲でBigQuery MCPサーバーの手順が動作すると案内されています。

Claude以外のクライアントからも同じサーバーに接続できますか

できます。GoogleのドキュメントはClaudeやAntigravityなど複数のAIアプリケーションを接続先クライアントの例として挙げており、MCPプロトコルに対応したクライアントであればエンドポイントは共通です。

書き込み系の操作を完全に止めることはできますか

できます。書き込みを伴うのはexecute_sqlだけなので、このツールへのアクセスを拒否ポリシーで制限すれば、execute_sql_readonlyによる読み取り専用の利用に絞り込めます。

Model Armorとは何ですか、設定は必須ですか

Model Armorは、MCP経由でやり取りされるプロンプトとレスポンスを走査し、不審な入力やデータ漏えいのリスクを検知するGoogle Cloudのセキュリティサービスです。BigQuery MCPサーバーを使うために必須ではありませんが、組織のデータガバナンス要件によっては有効化を検討する価値があります。ログを有効にすると通信内容がログに残る点は、機密データを扱う場合に踏まえておく必要があります。

エラー処理のログはどこで確認できますか

MCPサーバーへのリクエストは通常のBigQueryジョブとして実行されるため、Google Cloudコンソールのジョブ履歴からクエリー内容と実行結果を追跡できます。goog-mcp-server:trueというタグが付いたジョブを絞り込めば、MCP経由の呼び出しだけを他の実行と区別して確認できます。

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