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 サーバーにのみ適用されます。

始める前に

  1. 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.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. このガイドで既存のプロジェクトを使用する場合は、このガイドを完了するために必要な権限があることを確認します。新しいプロジェクトを作成した場合は、必要な権限がすでに付与されています。

  4. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. このガイドで既存のプロジェクトを使用する場合は、このガイドを完了するために必要な権限があることを確認します。新しいプロジェクトを作成した場合は、必要な権限がすでに付与されています。

  6. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

    新しいプロジェクトでは、BigQuery API が自動的に有効になります。

  7. (省略可)プロジェクトに対する課金を有効にします。課金を有効にしない場合や、クレジット カードを指定しない場合でも、このドキュメントの手順は行えます。BigQuery には、この手順を実施するためのサンドボックスが用意されています。詳細については、BigQuery サンドボックスを有効にするをご覧ください。
  8. 必要なロール

    BigQuery MCP サーバーを有効にするために必要な権限を取得するには、BigQuery MCP サーバーを有効にするプロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。

    ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

    これらの事前定義ロールには、BigQuery MCP サーバーを有効にするために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

    必要な権限

    BigQuery MCP サーバーを有効にするには、次の権限が必要です。

    • プロジェクトで MCP サーバーを有効にする:
      • serviceusage.mcppolicy.get
      • serviceusage.mcppolicy.update
    • MCP ツール呼び出しを行います。 mcp.tools.call
    • BigQuery ジョブを実行する: bigquery.jobs.create
    • BigQuery データのクエリ: bigquery.tables.getData

    カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

    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
    

    次のように置き換えます。

    • PROJECT_ID: Google Cloud プロジェクト ID
    • SERVICE: bigquery.googleapis.com(BigQuery のグローバル サービス名)

    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 サーバーの場合は、必要に応じて次の情報を入力します。

    • サーバー名: BigQuery MCP サーバー
    • サーバー URL またはエンドポイント: bigquery.googleapis.com/mcp
    • トランスポート: HTTP
    • 認証の詳細: Google Cloud 認証情報、OAuth クライアント ID とシークレット、またはエージェントの ID と認証情報

      選択する認証の詳細は、認証方法によって異なります。詳細については、MCP サーバーに対して認証するをご覧ください。

    ホスト固有のガイダンスについては、以下をご覧ください。

    一般的なガイダンスについては、リモート MCP サーバーに接続するをご覧ください。

    使用可能なツール

    読み取り専用の MCP ツールでは、MCP 属性 mcp.tool.isReadOnlytrue に設定されています。組織のポリシーを使用して、特定の環境で読み取り専用ツールのみを許可することがあります。

    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 の高度な機能(予測など)を使用して、より高度な分析情報を取得します。

    • カスタム エージェントの手順を使用して、ユーザー向けの会話型エクスペリエンスを構築します。

    サンプル プロンプト

    次のサンプル プロンプトを使用すると、BigQuery リソースに関する情報を取得し、分析情報を取得して、BigQuery データを分析できます。

    • プロジェクト PROJECT_ID 内のデータセットを一覧表示します。
    • REGION リージョンの MCP サーバーを使用して、プロジェクト PROJECT_ID で実行したすべてのクエリを検索します。goog-mcp-server:true タグを使用して、MCP サーバー経由で実行されたクエリジョブを特定します。
    • プロジェクト PROJECT_IDDATASET_ID から、数量別の上位の注文を見つけます。適切なテーブルを特定し、正しいスキーマを見つけて、結果を表示します。
    • 将来の年について、テーブル PROJECT_ID.DATASET_ID.TABLE_ID で予測を作成します。データ列として COLUMN_NAME を使用し、タイムスタンプ列として COLUMN_NAME を使用します。上位 10 件の予測を表示します。

    プロンプトでは、次のように置き換えます。

    • PROJECT_ID: Google Cloud プロジェクト ID
    • REGION: リージョンの名前
    • DATASET_ID: データセットの名前。
    • TABLE_ID: テーブルの名前。
    • COLUMN_NAME: 列の名前

    セキュリティと安全に関するオプションの構成

    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 を有効にするには、次の操作を行います。

    1. Google Cloud プロジェクトで Model Armor を有効にします。

      gcloud services enable modelarmor.googleapis.com \
          --project=PROJECT_ID
      

      PROJECT_ID は、実際の Google Cloud プロジェクト ID に置き換えます。

    2. 推奨される 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_ABOVE
      

      PROJECT_ID は、実際の Google Cloud プロジェクト ID に置き換えます。

      Model Armor は、悪意のある URLプロンプト インジェクションとジェイルブレイクの試行をスキャンするように構成されています。

      構成可能な Model Armor フィルタの詳細については、Model Armor フィルタをご覧ください。

    3. MCP サービスのコンテンツ セキュリティ プロバイダとして Model Armor を追加します。

      gcloud beta services mcp content-security add modelarmor.googleapis.com \
          --project=PROJECT_ID
      

      PROJECT_ID は、 Google Cloud プロジェクト ID に置き換えます。

    4. MCP トラフィックが Model Armor に送信されていることを確認します。

      gcloud beta services mcp content-security get \
          --project=PROJECT_ID
      

      PROJECT_ID は、 Google Cloud プロジェクト ID に置き換えます。

    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 の割り当ての詳細については、割り当てと上限をご覧ください。

    次のステップ