MCP Tools Reference: cloudcli.googleapis.com

ツール: run_bq_command

単一の BigQuery CLI(bq)コマンドを実行します。このツールを使用すると、GCP リソースの作成、更新、削除を行うコマンド(ミューテーション)など、ユーザーのプロジェクトで任意の bq コマンドを実行できます。

重大な安全上の警告(破壊的な可能性がある): このツールは、BigQuery リソース(bq rmbq cancelbq query など)を作成、更新、削除できます。読み取り専用コマンドに限定されません。十分に注意します。

禁止されているコマンド: エージェントは、以下の bq コマンドを実行してはなりません: bq initbq pyshellbq shell

厳格な実行ルール:

  1. コマンド文字列には、--project_id または --quota_project_id の少なくとも 1 つを指定する必要があります。
  2. プロジェクト ID と割り当てプロジェクト: --project_id フラグは、コマンドが動作するリソース プロジェクトを指定します(gcloud の --project フラグを反映)。--quota_project_id フラグは、ダウンストリーム BigQuery API 呼び出しの課金/割り当ての対象となるプロジェクトを指定します(gcloud の --billing-project フラグを反映)。コマンドで --project_id が指定されている場合は、課金/割り当てプロジェクトとして使用されます。--project_id が指定されていない場合、または --quota_project_id が追加で指定されている場合は、課金/割り当てプロジェクトは --quota_project_id フラグで設定されたプロジェクトになります。
  3. フラグの形式: すべての長いオプションで、フラグキーとその値を区切るには、常に '=' 記号を使用する必要があります。正しい例: '--project_id=my-project' または '--location=us'。誤った例: '--project_id my-project' または '--location us'。フラグとその値の間にスペースを使用しないでください。
  4. デフォルト構成なし: bq コマンドはステートレスで実行されます。 .bigqueryrc などのローカル構成ファイルは読み込まれません。したがって、すべてのリージョン オペレーション(データセットの作成やリージョン データセットのクエリなど)では、--location フラグ(--location=us--location=EU など)を明示的に指定する必要があります。
  5. 非同期オペレーション: 一部のコマンドは、同期的な長時間実行オペレーション(クエリジョブの実行など)を開始します。エージェントのタイムアウトを防ぐため、これらのコマンドには常に --nosync フラグを渡す必要があります。
  6. コマンドの制限: bq initbq pyshellbq shell の bq コマンドは使用しないでください。コマンドのパイプ処理やチェーン処理はサポートされていません。
  7. 自己修正: コマンドがエラーを返す場合は、stderr を分析し、構文またはフラグを修正して、次の反復で再試行します。

ミューテーション bq コマンドの例としては、bq mkbq rmbq updatebq insertbq query--dry_run なし)などがあります。使用方法: RunBq(command="bq query --project_id=PROJECT_ID 'SELECT 1'", project="projects/PROJECT_ID", input_files=[{"path": "PATH", "contents": "CONTENTS"}]) 'command' パラメータには、完全な bq コマンドを 1 つの文字列として指定する必要があります。課金、API の有効化、割り当て消費量の確認を行う API 実行プロジェクトとして、'project' パラメータ(形式: projects/PROJECT_ID)を指定する必要があります。

bq コマンド/パターンの例:

  1. クエリを実行する: bq query --use_legacy_sql=false --project_id=PROJECT_ID 'SELECT * FROMproject.dataset.tableLIMIT 10'
  2. データセットを作成する: bq mk --dataset --location=us --project_id=PROJECT_ID myDataset
  3. テーブルを作成する: bq mk --table --project_id=PROJECT_ID myDataset.myTable name:string,value:integer
  4. データセットを削除する: bq rm -f --dataset --project_id=PROJECT_ID myDataset
  5. テーブルを削除する: bq rm -f -t --project_id=PROJECT_ID myDataset.myTable
  6. テーブルの説明を更新する: bq update --description="New description" --project_id=PROJECT_ID myDataset.myTable
  7. プロジェクト内のデータセットを一覧表示する: bq ls --datasets=true --project_id=PROJECT_ID

次のコードサンプルは、curl を使用して run_bq_command MCP ツールを呼び出す方法を示しています。

Curl リクエスト
curl --location 'https://cloudcli.googleapis.com/mcp' \
--header 'content-type: application/json' \
--header 'accept: application/json, text/event-stream' \
--data '{
  "method": "tools/call",
  "params": {
    "name": "run_bq_command",
    "arguments": {
      // provide these details according to the tool's MCP specification
    }
  },
  "jsonrpc": "2.0",
  "id": 1
}'

入力スキーマ

RunBq のリクエスト メッセージです。

RunBqRequest

JSON 表現
{
  "project": string,
  "command": string,
  "inputFiles": [
    {
      object (File)
    }
  ]
}
フィールド
project

string

必須。CloudCli API の API 有効化と割り当て消費量のプロジェクト。

形式は projects/ または projects/

command

string

必須。1 つの文字列として実行する完全な bq コマンドライン。例: "bq ls my-dataset --location=us"

LLM は、タイムアウトを回避するために、長時間実行オペレーションに --nosync フラグを使用するように指示されます。

inputFiles[]

object (File)

省略可。bq コマンドの実行に使用できるファイル。

ファイル

JSON 表現
{
  "path": string,
  "contents": string
}
フィールド
path

string

必須。ホーム ディレクトリからの相対ファイルパス。親ディレクトリのトラバーサル(..)やシェル拡張を含めることはできません。

contents

string

必須。ファイルの内容。

出力スキーマ

RunBq のレスポンス メッセージです。

RunBqResponse

JSON 表現
{
  "response": {
    object (CliExecutionResponse)
  },
  "outputFiles": [
    {
      object (File)
    }
  ]
}
フィールド
response

object (CliExecutionResponse)

CLI ツールの実行からのレスポンス。独立した stdout、stderr ストリームと終了コードが含まれます。

outputFiles[]

object (File)

実行時に bq コマンドによって生成されたファイル。

CliExecutionResponse

JSON 表現
{
  "stdout": string,
  "stderr": string,
  "exitCode": string
}
フィールド
stdout

string

CLI ツールの実行からの stdout ストリーム。

stderr

string

CLI ツールの実行からの stderr ストリーム。

exitCode

string (int64 format)

CLI ツールの実行の終了コード。

ファイル

JSON 表現
{
  "path": string,
  "contents": string
}
フィールド
path

string

必須。ホーム ディレクトリからの相対ファイルパス。親ディレクトリのトラバーサル(..)やシェル拡張を含めることはできません。

contents

string

必須。ファイルの内容。

ツールのアノテーション

破壊的ヒント: ✅ | べき等ヒント: ❌ | 読み取り専用ヒント: ❌ | オープン ワールド ヒント: ❌