工具:run_bq_command
运行单个 BigQuery CLI (bq) 命令。此工具允许您在用户的项目中运行任何 bq 命令,包括创建、更新或删除 GCP 资源的命令(即突变)。
严重安全警告(可能具有破坏性):此工具可以创建、更新或删除 BigQuery 资源(例如 bq rm、bq cancel、bq query)。它不限于只读命令。请务必格外小心。
禁止使用的命令:代理不得执行以下 bq 命令:bq init、bq pyshell、bq shell。
严格的执行规则:
- 必须在命令字符串中指定
--project_id或--quota_project_id中的至少一个。 - 项目 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 命令:
bq init、bq pyshell、bq shell。不支持命令管道或链。 - 自我修正:如果命令返回错误,请分析 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 命令。您必须提供“project”参数(格式:projects/PROJECT_ID)作为 API 执行项目,以进行结算、API 启用和配额消耗检查。
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 |
必需。要作为单个字符串运行的完整 bq 命令行。示例:“bq ls my-dataset --location=us” LLM 会被指示针对长时间运行的操作使用 |
inputFiles[] |
可选。供 bq 命令执行的文件。 |
文件
| JSON 表示法 |
|---|
{ "path": string, "contents": string } |
| 字段 | |
|---|---|
path |
必需。相对于主目录的文件路径。不得包含父目录遍历 (..) 或 shell 扩展。 |
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 |
必需。相对于主目录的文件路径。不得包含父目录遍历 (..) 或 shell 扩展。 |
contents |
必需。文件的内容。 |
工具注释
破坏性提示:✅ | 等幂性提示:❌ | 只读提示:❌ | 开放世界提示:❌