ClaudeとBigQueryの連携手順|書き込みを防ぐ権限設定

AI アシスタントとデータウェアハウスが接続され、間に鍵と権限の切り替えが描かれたイラスト Google Cloud
Claude と BigQuery をコネクタで連携し、ツール権限で書き込みを防ぐ

はじめに

Claude に BigQuery のデータを直接集計させたいと考え、Claude の公式コネクタで接続しました。OAuth クライアント(Google のログインを外部アプリから使うための登録情報)を自分で作らずに、Google アカウントの認証だけで Claude と BigQuery を連携できます

一方で、OAuth の同意画面で許可するスコープ(外部アプリに許可する操作の範囲)は読み取り専用にできません。読み取りだけに絞るか、書き込みも許すかは、接続した後にコネクタのツール権限で調整します。本記事では、接続の手順とツール権限の設定を、実際の画面とあわせて解説します。

Claude に BigQuery について質問し、集計結果が返ってきた画面
Claude が BigQuery のコネクタを使ってクエリを実行し、結果を返した画面

本記事のまとめ

  • Claude の Google Cloud BigQuery コネクタを使えば、OAuth クライアントの作成は不要。Google Cloud 側では API の有効化とロールの付与だけを行う。
  • OAuth の同意画面で許可するスコープは「BigQuery のデータの閲覧と管理」で、読み取り専用は選べない
  • そのため、書き込みはコネクタのツール権限で Execute sql を「ブロック」にして止める。「承認が必要」は、会話の自動承認を有効にしていると確認なしで通る。
  • ツールは時期によって増えていたので、ときどきツール権限の画面を見直す。

Claude の BigQuery コネクタと事前準備

Claude から BigQuery に接続するには、Claude に用意されている公式コネクタを使います。Google Cloud 側で必要な準備は、MCP サーバーの有効化と、認証するユーザーへのロールの付与です

MCP(Model Context Protocol)は、Claude のような AI アプリケーションが外部のツールやデータに接続するための共通の仕組みです。Google は BigQuery 用の MCP サーバーをインターネット上で提供しており、これをリモート MCP サーバーと呼びます。Claude のGoogle Cloud BigQuery コネクタは、このリモート MCP サーバー(https://bigquery.googleapis.com/mcp)につながります。

OAuth クライアントを自分で作る必要はありません。認証の途中で表示されるアプリ名は「Claude for BigQuery」で、Anthropic が用意した OAuth クライアントが使われます。

API を有効にする

公式ドキュメント「BigQuery リモート MCP サーバーを使用する」では、BigQuery API(bigquery.googleapis.com)に加えて、BigQuery の MCP サーバーを有効にする手順が示されています。PROJECT_ID は自分のプロジェクト ID に置き換えてください。

gcloud beta services mcp enable bigquery.googleapis.com --project=PROJECT_ID

認証するユーザーにロールを付与する

同じ公式ドキュメントでは、MCP ツールを使うユーザーに次のロールが必要とされています。

ロール用途
MCP ツールユーザー(roles/mcp.toolUserMCP のツールを呼び出す
BigQuery ジョブユーザー(roles/bigquery.jobUserクエリをジョブとして実行する
BigQuery データ閲覧者(roles/bigquery.dataViewerデータセットとテーブルを読む

Terraform で管理する場合は、次のように定義します。PROJECT_IDUSER_EMAIL(Claude の接続時に認証する Google アカウント)は、自分の環境に合わせて置き換えてください。

locals {
  bigquery_mcp_roles = [
    "roles/mcp.toolUser",
    "roles/bigquery.jobUser",
    "roles/bigquery.dataViewer",
  ]
}

resource "google_project_iam_member" "claude_bigquery" {
  for_each = toset(local.bigquery_mcp_roles)

  project = "PROJECT_ID"
  role    = each.value
  member  = "user:USER_EMAIL"
}

なお、私の環境では認証したユーザーがプロジェクトのオーナー(roles/owner)だったため、ロールを個別に付けずに接続できました。表の 3 つのロールだけで接続できるかは検証していません。オーナー権限のままだと Claude 経由でできることも広がるので、用途に合わせて適切なロールを付与してください。

Claude でコネクタを接続する手順

接続は Claude の画面から行い、Google アカウントでログインして権限を許可すれば完了します。流れは次のとおりです。

  1. Claude の設定からコネクタの一覧を開き、「Google Cloud BigQuery」の「Claudeに接続」を押す。
  2. ブラウザに接続の確認画面が表示されるので、続行する。
  3. Google アカウントの選択画面で、上で準備したアカウントを選ぶ。アプリ名が「Claude for BigQuery」になっていることを確認する。
  4. OAuth の同意画面で内容を確認し、許可する。
  5. 認証完了の画面が表示されたら、Claude Desktop に戻る。
  6. コネクタが「接続済み」になっていることを確認する。

2 の確認画面には「Claude Desktop からコネクタの接続を開始した場合のみ続行してください。リンク単体でアカウントに何かを接続することはできません」と表示されます。第三者から送られたリンクを開いただけでは接続されない仕組みで、フィッシング対策になっています。

Google アカウントの選択画面。アプリ名が Claude for BigQuery になっている
接続先のアプリ名は「Claude for BigQuery」と表示される

同意画面のスコープは読み取り専用にできない

同意画面で Claude に許可するのは 2 つだけで、読み取り専用のスコープはありませんでした。「View and manage your data in Google BigQuery」(BigQuery のデータの閲覧と管理)と、メールアドレスの参照です。

つまり、スコープの上では Claude に書き込みも許可していることになります。ただし接続した後に、ツール権限で書き込み系のツールを止められます(次の章で説明します)。

Google の OAuth 同意画面。BigQuery のデータの閲覧と管理とメールアドレス参照の 2 つのスコープが表示されている
同意画面で許可するスコープは 2 つだけで、読み取り専用は選べない

スコープで絞れないため、Claude が実際にできることは次の 2 つで決まります。

  • 認証したユーザーが持つ IAM ロール(Google Cloud でユーザーに与える権限のまとまり。前の章で付与したもの)
  • Claude 側のコネクタのツール権限(次の章で設定するもの)

オーナー権限のユーザーで認証すると、スコープと IAM の両方で制限がかからない状態になります。ツール権限の設定がより重要になるのはこのためです。

ツール権限で書き込みを防ぐ

コネクタのツールは「読み取り専用ツール」と「書き込み/削除ツール」に分かれており、ツールごとに「常に許可」「承認が必要」「ブロック」の 3 段階で使い方を選べます。私は Execute sql だけを「ブロック」に変え、それ以外は既定の「承認が必要」のままにしています

Claude のコネクタのツール権限画面。ツールごとに常に許可・承認が必要・ブロックを選ぶ
ツールごとに「常に許可」「承認が必要」「ブロック」を選べる

Execute sql は任意の SQL を実行できるため、テーブルの更新や削除もできてしまいます。読み取りのクエリは Execute sql readonly で実行できるので、分析の用途なら Execute sql をブロックしても困りません。

読み取り系の「承認が必要」は既定の設定で、ツールごとに「常に許可」へ変えることもできます。ただし後述のとおり、会話で自動承認を有効にしていると確認は出ません。BigQuery のオンデマンド料金はクエリで読み取ったデータ量に応じてかかるため、大きなテーブルを全件読むようなクエリには注意してください。

ツールは時期によって増えていた

2026 年 7 月に接続したときと 9 月に見直したときで、ツールの数が変わっていました。増えていたのは次の 2 つです。

  • 読み取り専用に Get query results が増えた(5 個 → 6 個)
  • 書き込み/削除に Cancel job が増えた(1 個 → 2 個)

追加されたツールの設定が意図したものになっているか、ときどきこの画面を開いて確認してください。

なお、コネクタの詳細画面(接続前でも見られる画面)には、execute_sql など 5 個のツールしか載っていません。実際に Claude が使えるツールと設定の対象は、接続後の「ツールの権限」に表示される 8 個です。詳細画面だけを見ると Execute sql readonly が無いように見えるので、権限は必ず接続後の画面で確認してください。

Claude のコネクタ詳細画面。ツールが 5 個だけ表示されている
コネクタの詳細画面に載っているツールは 5 個

実際にクエリを実行して確認する

接続できたら、Claude に日本語で質問してみます。Claude が BigQuery に対してクエリを組み立てて実行し、結果を表にまとめて返してくれます

たとえば「bigquery-public-data.samples.shakespeare で出現回数の多い単語を 5 件教えて」のように、テーブルと知りたいことを伝えます。

Claude から BigQuery にクエリを実行したときの画面
Claude に質問すると、コネクタ経由でクエリが実行される

私が自分のデータで試したときは、回答の最後に実行した SQL と読み取ったデータ量が示されました。どのテーブルをどの条件で読んだかを確認できるので、結果が期待どおりでないときの切り分けにも役立ちます。

なお、読み取り系のツールは「承認が必要」のままでしたが、私が試したときは確認を求められずに実行されました。試した会話で自動承認を有効にしていたためで、会話の自動承認はツールごとの「承認が必要」より優先されます。一方、「ブロック」にしたツールは自動承認の会話でも Claude から呼び出せません。

書き込みを確実に防いでいるのは Execute sql「ブロック」なので、書き込みを止めたいツールは「承認が必要」ではなく「ブロック」にしてください。

まとめ

Claude の公式コネクタを使うと、OAuth クライアントを作らずに Claude と BigQuery を連携できました。公式ドキュメントでは、Google Cloud 側で MCP サーバーの有効化と、認証するユーザーへのロールの付与が求められています。

注意点は、同意画面のスコープが読み書きになることです。接続した後にツール権限で Execute sql をブロックしてください。書き込みを確実に止めるのはこの設定で、「承認が必要」は、会話の自動承認を有効にしていると確認なしで通ります。

これから試す場合は、オーナーではなく公式ドキュメントの 3 つのロールを持つユーザーで接続するのがおすすめです(この構成での接続は未検証です)。あわせて、ツールが追加されていないかも定期的に確認してください。