ツール: run_bq_command
単一の BigQuery CLI(bq)コマンドを実行します。このツールを使用すると、GCP リソースの作成、更新、削除を行うコマンド(ミューテーション)など、ユーザーのプロジェクトで任意の bq コマンドを実行できます。
重大な安全上の警告(破壊的な可能性がある): このツールは、BigQuery リソース(bq rm、bq cancel、bq query など)を作成、更新、削除できます。読み取り専用コマンドに限定されません。十分に注意します。
禁止されているコマンド: エージェントは、以下の bq コマンドを実行してはなりません: bq init、bq pyshell、bq shell。
厳格な実行ルール:
- コマンド文字列には、
--project_idまたは--quota_project_idの少なくとも 1 つを指定する必要があります。 - プロジェクト ID と割り当てプロジェクト: --project_id フラグは、コマンドが動作するリソース プロジェクトを指定します(gcloud の --project フラグを反映)。--quota_project_id フラグは、ダウンストリーム BigQuery API 呼び出しの課金/割り当ての対象となるプロジェクトを指定します(gcloud の
--billing-projectフラグを反映)。コマンドで--project_idが指定されている場合は、課金/割り当てプロジェクトとして使用されます。--project_idが指定されていない場合、または--quota_project_idが追加で指定されている場合は、課金/割り当てプロジェクトは--quota_project_idフラグで設定されたプロジェクトになります。 - フラグの形式: すべての長いオプションで、フラグキーとその値を区切るには、常に '=' 記号を使用する必要があります。正しい例:
'--project_id=my-project'または'--location=us'。誤った例:'--project_id my-project'または'--location us'。フラグとその値の間にスペースを使用しないでください。 - デフォルト構成なし: bq コマンドはステートレスで実行されます。 .bigqueryrc などのローカル構成ファイルは読み込まれません。したがって、すべてのリージョン オペレーション(データセットの作成やリージョン データセットのクエリなど)では、
--locationフラグ(--location=usや--location=EUなど)を明示的に指定する必要があります。 - 非同期オペレーション: 一部のコマンドは、同期的な長時間実行オペレーション(クエリジョブの実行など)を開始します。エージェントのタイムアウトを防ぐため、これらのコマンドには常に
--nosyncフラグを渡す必要があります。 - コマンドの制限:
bq init、bq pyshell、bq shellの bq コマンドは使用しないでください。コマンドのパイプ処理やチェーン処理はサポートされていません。 - 自己修正: コマンドがエラーを返す場合は、stderr を分析し、構文またはフラグを修正して、次の反復で再試行します。
ミューテーション bq コマンドの例としては、bq mk、bq rm、bq update、bq insert、bq 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 コマンド/パターンの例:
- クエリを実行する:
bq query --use_legacy_sql=false --project_id=PROJECT_ID 'SELECT * FROMproject.dataset.tableLIMIT 10' - データセットを作成する:
bq mk --dataset --location=us --project_id=PROJECT_ID myDataset - テーブルを作成する:
bq mk --table --project_id=PROJECT_ID myDataset.myTable name:string,value:integer - データセットを削除する:
bq rm -f --dataset --project_id=PROJECT_ID myDataset - テーブルを削除する:
bq rm -f -t --project_id=PROJECT_ID myDataset.myTable - テーブルの説明を更新する:
bq update --description="New description" --project_id=PROJECT_ID myDataset.myTable - プロジェクト内のデータセットを一覧表示する:
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 ( |
| フィールド | |
|---|---|
project |
必須。CloudCli API の API 有効化と割り当て消費量のプロジェクト。 形式は projects/ |
command |
必須。1 つの文字列として実行する完全な bq コマンドライン。例: "bq ls my-dataset --location=us" LLM は、タイムアウトを回避するために、長時間実行オペレーションに |
inputFiles[] |
省略可。bq コマンドの実行に使用できるファイル。 |
ファイル
| JSON 表現 |
|---|
{ "path": string, "contents": string } |
| フィールド | |
|---|---|
path |
必須。ホーム ディレクトリからの相対ファイルパス。親ディレクトリのトラバーサル(..)やシェル拡張を含めることはできません。 |
contents |
必須。ファイルの内容。 |
出力スキーマ
RunBq のレスポンス メッセージです。
RunBqResponse
| JSON 表現 |
|---|
{ "response": { object ( |
| フィールド | |
|---|---|
response |
CLI ツールの実行からのレスポンス。独立した stdout、stderr ストリームと終了コードが含まれます。 |
outputFiles[] |
実行時に bq コマンドによって生成されたファイル。 |
CliExecutionResponse
| JSON 表現 |
|---|
{ "stdout": string, "stderr": string, "exitCode": string } |
| フィールド | |
|---|---|
stdout |
CLI ツールの実行からの stdout ストリーム。 |
stderr |
CLI ツールの実行からの stderr ストリーム。 |
exitCode |
CLI ツールの実行の終了コード。 |
ファイル
| JSON 表現 |
|---|
{ "path": string, "contents": string } |
| フィールド | |
|---|---|
path |
必須。ホーム ディレクトリからの相対ファイルパス。親ディレクトリのトラバーサル(..)やシェル拡張を含めることはできません。 |
contents |
必須。ファイルの内容。 |
ツールのアノテーション
破壊的ヒント: ✅ | べき等ヒント: ❌ | 読み取り専用ヒント: ❌ | オープン ワールド ヒント: ❌