BigQuery リモート MCP サーバーを使用する
このドキュメントでは、BigQuery リモート モデル コンテキスト プロトコル(MCP)サーバーを使用して、Gemini CLI、Gemini Code Assist のエージェント モード、Claude Code などの AI アプリケーション、または開発中の AI アプリケーションから BigQuery に接続する方法について説明します。
Model Context Protocol(MCP)は、大規模言語モデル(LLM)と AI アプリケーションまたはエージェントが外部のデータソースに接続する方法を標準化します。MCP サーバーを使用すると、そのツール、リソース、プロンプトを使用してアクションを実行し、バックエンド サービスから更新されたデータを取得できます。
ローカル MCP サーバーは通常、ローカルマシンで実行され、同じデバイス上のサービス間の通信に標準の入力ストリームと出力ストリーム(stdio)を使用します。リモート MCP サーバーはサービスのインフラストラクチャで実行され、AI アプリケーションに HTTPS エンドポイントを提供して、AI MCP クライアントと MCP サーバー間の通信を行います。MCP アーキテクチャの詳細については、MCP アーキテクチャをご覧ください。
Google とリモート MCP サーバーには、次の機能とメリットがあります。 Google Cloud
- 簡素化された一元的な検出
- マネージド グローバルまたはリージョン HTTPS エンドポイント
- きめ細かい認可
- Model Armor 保護によるプロンプトとレスポンスのオプションのセキュリティ
- 一元的な監査ロギング
他の MCP サーバーと、Google Cloud MCP サーバーで使用可能なセキュリティとガバナンスの制御については、Google Cloud MCP サーバーの概要をご覧ください。
BigQuery のローカル MCP サーバーを使用する理由は次のとおりです。
- パラメータ化された SQL クエリの上にカスタムツールを構築する必要があります。
- プロジェクトでリモート MCP サーバーを有効または使用する権限がありません。
ローカル MCP サーバーの使用方法については、MCP を使用して LLM を BigQuery に接続するをご覧ください。次のセクションは、BigQuery リモート MCP サーバーにのみ適用されます。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
このガイドで既存のプロジェクトを使用する場合は、このガイドを完了するために必要な権限があることを確認します。新しいプロジェクトを作成した場合は、必要な権限がすでに付与されています。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
このガイドで既存のプロジェクトを使用する場合は、このガイドを完了するために必要な権限があることを確認します。新しいプロジェクトを作成した場合は、必要な権限がすでに付与されています。
-
Enable the BigQuery API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.新しいプロジェクトでは、BigQuery API が自動的に有効になります。
- (省略可)プロジェクトに対する課金を有効にします。課金を有効にしない場合や、クレジット カードを指定しない場合でも、このドキュメントの手順は行えます。BigQuery には、この手順を実施するためのサンドボックスが用意されています。詳細については、BigQuery サンドボックスを有効にするをご覧ください。
-
プロジェクトで API と MCP サーバーを有効にする: Service Usage 管理者 (
roles/serviceusage.serviceUsageAdmin) -
MCP ツール呼び出しを行う:
MCP ツールユーザー (
roles/mcp.toolUser) -
BigQuery ジョブを実行する: BigQuery ジョブユーザー (
roles/bigquery.jobUser) -
BigQuery データをクエリする: BigQuery データ閲覧者 (
roles/bigquery.dataViewer) -
プロジェクトで MCP サーバーを有効にする:
-
serviceusage.mcppolicy.get -
serviceusage.mcppolicy.update
-
-
MCP ツール呼び出しを行います。
mcp.tools.call -
BigQuery ジョブを実行する:
bigquery.jobs.create -
BigQuery データのクエリ:
bigquery.tables.getData PROJECT_ID: Google Cloud プロジェクト IDSERVICE:bigquery.googleapis.com(BigQuery のグローバル サービス名)- サーバー名: BigQuery MCP サーバー
- サーバー URL またはエンドポイント: bigquery.googleapis.com/mcp
- トランスポート: HTTP
認証の詳細: Google Cloud 認証情報、OAuth クライアント ID とシークレット、またはエージェントの ID と認証情報
選択する認証の詳細は、認証方法によって異なります。詳細については、MCP サーバーに対して認証するをご覧ください。
BigQuery データの分析情報を使用して、問題の作成やメールの作成などの特定のアクションをトリガーするワークフローを構築します。
BigQuery の高度な機能(予測など)を使用して、より高度な分析情報を取得します。
カスタム エージェントの手順を使用して、ユーザー向けの会話型エクスペリエンスを構築します。
- プロジェクト
PROJECT_ID内のデータセットを一覧表示します。 REGIONリージョンの MCP サーバーを使用して、プロジェクトPROJECT_IDで実行したすべてのクエリを検索します。goog-mcp-server:trueタグを使用して、MCP サーバー経由で実行されたクエリジョブを特定します。- プロジェクト
PROJECT_IDのDATASET_IDから、数量別の上位の注文を見つけます。適切なテーブルを特定し、正しいスキーマを見つけて、結果を表示します。 - 将来の年について、テーブル
PROJECT_ID.DATASET_ID.TABLE_IDで予測を作成します。データ列としてCOLUMN_NAMEを使用し、タイムスタンプ列としてCOLUMN_NAMEを使用します。上位 10 件の予測を表示します。 PROJECT_ID: Google Cloud プロジェクト IDREGION: リージョンの名前DATASET_ID: データセットの名前。TABLE_ID: テーブルの名前。COLUMN_NAME: 列の名前Google Cloud プロジェクトで Model Armor を有効にします。
gcloud services enable modelarmor.googleapis.com \ --project=PROJECT_IDPROJECT_IDは、実際の Google Cloud プロジェクト ID に置き換えます。推奨される Model Armor のフロア設定を構成します。
gcloud model-armor floorsettings update \ --full-uri='projects/PROJECT_ID/locations/global/floorSetting' \ --mcp-sanitization=ENABLED \ --malicious-uri-filter-settings-enforcement=ENABLED \ --pi-and-jailbreak-filter-settings-enforcement=ENABLED \ --pi-and-jailbreak-filter-settings-confidence-level=MEDIUM_AND_ABOVEPROJECT_IDは、実際の Google Cloud プロジェクト ID に置き換えます。Model Armor は、悪意のある URL とプロンプト インジェクションとジェイルブレイクの試行をスキャンするように構成されています。
構成可能な Model Armor フィルタの詳細については、Model Armor フィルタをご覧ください。
MCP サービスのコンテンツ セキュリティ プロバイダとして Model Armor を追加します。
gcloud beta services mcp content-security add modelarmor.googleapis.com \ --project=PROJECT_IDPROJECT_IDは、 Google Cloud プロジェクト ID に置き換えます。MCP トラフィックが Model Armor に送信されていることを確認します。
gcloud beta services mcp content-security get \ --project=PROJECT_IDPROJECT_IDは、 Google Cloud プロジェクト ID に置き換えます。- BigQuery MCP リファレンス ドキュメントを読む。
- Google Cloud MCP サーバーの詳細を確認する。
- MCP のサポート対象プロダクトをご覧ください。
必要なロール
BigQuery MCP サーバーを有効にするために必要な権限を取得するには、BigQuery MCP サーバーを有効にするプロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、BigQuery MCP サーバーを有効にするために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
BigQuery MCP サーバーを有効にするには、次の権限が必要です。
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
BigQuery MCP サーバーを有効または無効にする
プロジェクトで BigQuery MCP サーバーを有効または無効にするには、gcloud beta services mcp enable コマンドを使用します。詳細については、以下のセクションをご覧ください。
プロジェクトで BigQuery MCP サーバーを有効にする
サービス アカウント キー、OAuth クライアント ID、API キーなどのクライアント認証情報と、リソースのホスティングに異なるプロジェクトを使用している場合は、両方のプロジェクトで BigQuery サービスと BigQuery リモート MCP サーバーを有効にする必要があります。
Google Cloud プロジェクトで BigQuery MCP サーバーを有効にするには、次のコマンドを実行します。
gcloud beta services mcp enable SERVICE \
--project=PROJECT_ID
次のように置き換えます。
Google Cloud プロジェクトで使用できるように BigQuery リモート MCP サーバーが有効になっている。 Google Cloud プロジェクトで BigQuery サービスが有効になっていない場合は、BigQuery リモート MCP サーバーを有効にする前に、サービスを有効にするよう求められます。
セキュリティのベスト プラクティスとして、AI アプリケーションの機能に必要なサービスに対してのみ MCP サーバーを有効にすることをおすすめします。
プロジェクトで BigQuery MCP サーバーを無効にする
Google Cloud プロジェクトで BigQuery MCP サーバーを無効にするには、次のコマンドを実行します。
gcloud beta services mcp disable SERVICE \
--project=PROJECT_ID
Google Cloud プロジェクトで使用するために BigQuery MCP サーバーが無効になっています。
認証と認可
BigQuery MCP サーバーは、認証と認可に Identity and Access Management(IAM)で OAuth 2.0 プロトコルを使用します。MCP サーバーへの認証では、すべての Google CloudID がサポートされています。
BigQuery リモート MCP サーバーは API キーを受け入れません。
BigQuery MCP の OAuth スコープ
OAuth 2.0 では、スコープと認証情報を使用して、認証されたプリンシパルがリソースに対して特定のアクションを実行する権限があるかどうかを判断します。Google の OAuth 2.0 スコープの詳細については、OAuth 2.0 を使用して Google API にアクセスするをご覧ください。
BigQuery には、次の MCP ツール OAuth スコープがあります。
| gcloud CLI のスコープ URI | 説明 |
|---|---|
https://www.googleapis.com/auth/bigquery |
BigQuery のデータの参照、管理、Google アカウントのメールアドレスの参照。 |
ツール呼び出し中にアクセスされるリソースに追加のスコープが必要になる場合があります。BigQuery に必要なスコープのリストを表示するには、BigQuery API v2 の OAuth 2.0 スコープをご覧ください。
BigQuery MCP サーバーを使用するように MCP クライアントを構成する
Claude や Gemini CLI などのホスト プログラムは、単一の MCP サーバーに接続する MCP クライアントをインスタンス化できます。ホスト プログラムには、異なる MCP サーバーに接続する複数のクライアントを設定できます。リモート MCP サーバーに接続するには、MCP クライアントがリモート MCP サーバーの URL を認識している必要があります。
ホストで、リモート MCP サーバーに接続する方法を探します。サーバーの詳細(名前や URL など)を入力するよう求められます。
BigQuery MCP サーバーの場合は、必要に応じて次の情報を入力します。
ホスト固有のガイダンスについては、以下をご覧ください。
一般的なガイダンスについては、リモート MCP サーバーに接続するをご覧ください。
使用可能なツール
読み取り専用の MCP ツールでは、MCP 属性 mcp.tool.isReadOnly が true に設定されています。組織のポリシーを使用して、特定の環境で読み取り専用ツールのみを許可することがあります。
BigQuery MCP サーバーで使用可能な MCP ツールの詳細とその説明を表示するには、BigQuery MCP リファレンスをご覧ください。
ツールの一覧表示
MCP インスペクタを使用してツールを一覧表示するか、tools/list HTTP リクエストを BigQuery リモート MCP サーバーに直接送信します。tools/list メソッド: 認証を必要としません。
POST /mcp HTTP/1.1
Host: bigquery.googleapis.com
Content-Type: application/json
{
"jsonrpc": "2.0",
"method": "tools/list",
}
サンプルのユースケース
BigQuery MCP サーバーのユースケースの例を次に示します。
サンプル プロンプト
次のサンプル プロンプトを使用すると、BigQuery リソースに関する情報を取得し、分析情報を取得して、BigQuery データを分析できます。
プロンプトでは、次のように置き換えます。
セキュリティと安全に関するオプションの構成
MCP ツールで実行できるアクションが多岐にわたるため、MCP には新たなセキュリティ リスクと考慮事項が導入されます。これらのリスクを最小限に抑えて管理するために、Google Cloud は、 Google Cloud組織またはプロジェクトでの MCP ツールの使用を制御するためのデフォルトのポリシーとカスタマイズ可能なポリシーを提供します。
MCP のセキュリティとガバナンスの詳細については、AI のセキュリティと安全性をご覧ください。
Model Armor
Model Armor は、AI アプリケーションのセキュリティと安全性を強化するために設計された Google Cloud サービスです。LLM のプロンプトとレスポンスを事前にスクリーニングすることで、さまざまなリスクから保護し、責任ある AI への取り組みをサポートします。クラウド環境に AI をデプロイする場合でも、外部のクラウド プロバイダにデプロイする場合でも、Model Armor は、悪意のある入力の防止、コンテンツの安全性の検証、機密データの保護、コンプライアンスの維持、多様な AI 環境全体での AI の安全性とセキュリティ ポリシーの一貫した適用に役立ちます。
Model Armor は、特定のリージョン ロケーションでのみ使用できます。プロジェクトで Model Armor が有効になっていて、サポートされていないリージョンからそのプロジェクトへの呼び出しが行われた場合、Model Armor はリージョン間の呼び出しを行います。詳細については、Model Armor のロケーションをご覧ください。
Model Armor を有効にする
Model Armor を有効にするには、次の操作を行います。
Model Armor のロギング
Model Armor の監査ログとプラットフォーム ログについては、Model Armor の監査ロギングをご覧ください。
プロジェクトで Model Armor を無効にする
Google Cloud プロジェクトで Model Armor を無効にするには、次のコマンドを実行します。
gcloud beta services mcp content-security remove modelarmor.googleapis.com \
--project=PROJECT_ID
PROJECT_ID は、 Google Cloud プロジェクト ID に置き換えます。
Google Cloud の MCP トラフィックは、指定されたプロジェクトの Model Armor によってスキャンされません。
Model Armor による MCP トラフィックのスキャンを無効にする
プロジェクトで Model Armor を引き続き使用するが、Model Armor による MCP トラフィックのスキャンを停止する場合は、次のコマンドを実行します。
gcloud model-armor floorsettings update \
--full-uri='projects/PROJECT_ID/locations/global/floorSetting' \
--mcp-sanitization=DISABLED
PROJECT_ID は、 Google Cloud プロジェクト ID に置き換えます。
Model Armor は Google Cloudで MCP トラフィックをスキャンしません。
組織レベルの MCP 制御
gcp.managed.allowedMCPService 制約を使用して、 Google Cloud 組織での MCP サーバーの使用を制御するカスタムの組織のポリシーを作成できます。詳細と使用例については、IAM によるアクセス制御をご覧ください。
割り当てと上限
BigQuery リモート MCP サーバーには独自の割り当てがありません。MCP サーバーに対して行える呼び出しの数に制限はありません。
MCP サーバーツールによって呼び出される API によって適用される割り当ては引き続き適用されます。MCP サーバーツールは次の API メソッドを呼び出します。
| ツール | API メソッド | 割り当て |
|---|---|---|
list_dataset_ids |
datasets.list |
データセットの割り当てと上限 |
list_table_ids |
tables.list |
テーブルの割り当てと上限 |
get_dataset_info |
datasets.get |
データセットの割り当てと上限 |
get_table_info |
tables.get |
テーブルの割り当てと上限 |
execute_sql |
jobs.Query |
クエリジョブの割り当てと上限 |
BigQuery の割り当ての詳細については、割り当てと上限をご覧ください。