MCP Tools Reference: cloudcli.googleapis.com

工具:run_bq_command

运行单个 BigQuery CLI (bq) 命令。此工具允许您在用户的项目中运行任何 bq 命令,包括创建、更新或删除 GCP 资源的命令(即突变)。

严重安全警告(可能具有破坏性):此工具可以创建、更新或删除 BigQuery 资源(例如 bq rmbq cancelbq query)。它不限于只读命令。请务必格外小心。

禁止使用的命令:代理不得执行以下 bq 命令:bq initbq pyshellbq shell

严格的执行规则

  1. 必须在命令字符串中指定 --project_id--quota_project_id 中的至少一个。
  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 命令:bq initbq pyshellbq shell。不支持命令管道或链。
  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 命令。您必须提供“project”参数(格式:projects/PROJECT_ID)作为 API 执行项目,以进行结算、API 启用和配额消耗检查。

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

必需。要作为单个字符串运行的完整 bq 命令行。示例:“bq ls my-dataset --location=us”

LLM 会被指示针对长时间运行的操作使用 --nosync 标志,以避免超时。

inputFiles[]

object (File)

可选。供 bq 命令执行的文件。

文件

JSON 表示法
{
  "path": string,
  "contents": string
}
字段
path

string

必需。相对于主目录的文件路径。不得包含父目录遍历 (..) 或 shell 扩展。

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

必需。相对于主目录的文件路径。不得包含父目录遍历 (..) 或 shell 扩展。

contents

string

必需。文件的内容。

工具注释

破坏性提示:✅ | 等幂性提示:❌ | 只读提示:❌ | 开放世界提示:❌