MCP Reference: cloudcli.googleapis.com

Cloud CLI MCP 服务器提供可在远程沙盒环境中运行 Cloud CLI 命令的工具。

Model Context Protocol (MCP) 服务器充当外部服务(为大语言模型 [LLM] 或 AI 应用提供上下文、数据或功能)与 LLM 或 AI 应用之间的代理。MCP 服务器将 AI 应用连接到数据库和 Web 服务等外部系统,并将这些系统的响应转换为 AI 应用可理解的格式。

服务器设置

您必须先启用 MCP 服务器设置身份验证,然后才能使用。如需详细了解如何使用 Google 和 Google Cloud 远程 MCP 服务器,请参阅 Google Cloud MCP 服务器概览

服务器端点

MCP 服务端点是 MCP 服务器的网络地址和通信接口(通常是网址),AI 应用(MCP 客户端的宿主)使用该端点来建立安全、标准化的连接。它是 LLM 请求上下文、调用工具或访问资源的交互点。Google MCP 端点可以是全球性的,也可以是区域性的。

Cloud CLI Execution API MCP 服务器具有以下全局 MCP 端点:

  • https://cloudcli.googleapis.com/mcp

MCP 工具

MCP 工具是 MCP 服务器向 LLM 或 AI 应用公开的函数或可执行功能,用于在现实世界中执行操作。

工具

cloudcli.googleapis.com MCP 服务器具有以下工具:

MCP 工具
run_gcloud_command

在用户的 Google Cloud 项目中执行单个 gcloud CLI 命令。严重安全警告(可能具有破坏性):此工具可以创建、更新或删除 GCP 资源(例如,gcloud compute instances delete)。它不限于只读命令。请务必格外小心。禁止的命令:代理不得执行以下 gcloud 命令(包括其 Alpha/Beta 版):app deployapp instances sshauthbillingcomponentsconfigdockerfeedbackinfoinitmetasurvey。严格执行规则:

  1. 使用此工具时,您必须提供“project”参数(即 project="projects/PROJECT_ID"),该参数用于 Cloud CLI Execution API 启用检查、结算、配额等。这与用于指定 gcloud 运行的项目的 gcloud 命令中的 --project 标志不同。
  2. 标志格式:对于所有长选项,您必须始终使用“=”符号将标志键与其值分隔开。正确:--zone=us-central1-a--project=my-project。不正确:--zone us-central1-a--project my-project
  3. 结算项目:您无法在执行环境中采用任何预配置的项目或结算设置。对于非项目范围的命令(例如文件夹或组织级命令)或特定场景(例如 Cloud Storage 付款方付费),您必须传递 --billing-project=PROJECT 标志。对于项目范围的命令,您还可以指定 --billing-project=PROJECT 来替换配额项目,这对于不支持资源项目替换的 GCP API 将生效。
  4. 项目范围:对于项目范围的命令,您应始终传递 --project=PROJECT_ID 标志。请勿将其用于组织级或文件夹级命令。如果您未为项目级命令提供 --project 标志,资源项目将默认设置为 --billing-project 标志中设置的项目。
  5. 如果在 gcloud 命令中指定 --billing-project 标志,请确保该值是项目 ID 或项目编号。该值不得为特殊值(即 LEGACY、CURRENT_PROJECT、CURRENT_PROJECT_WITH_FALLBACK)。
  6. 命令字符串中必须至少指定 --project 或 --billing-project 之一。
  7. 异步操作:对于长时间运行的同步操作(例如,创建虚拟机或数据库),您应始终传递 --async 标志,以防止代理超时。
  8. 日志速率限制:使用 gcloud logging read 时,您必须始终包含 --limit 标志(例如 --limit=100),以防止出现凭据和连接超时。
  9. 自我修正:如果命令返回错误,请分析 stderr,更正语法或标志,然后在下一次迭代中重试。
  10. input_files:(可选)要在运行命令之前在环境中创建的文件列表。每个文件都必须具有“路径”(相对于当前目录)和“内容”。“内容”必须是表示文件内容的纯文本。这对于从文件读取的命令(例如 gcloud builds submit --config=cloudbuild.yaml --async --project=PROJECT_ID)非常有用。

gcloud 命令/模式示例:

  1. 读取严重程度大于或等于 ERROR 的 GCE 实例日志:gcloud logging read "severity>=ERROR AND resource.type='gce_instance'" --limit=10 --order=DESC --project=PROJECT_ID
    • 请注意,过滤表达式使用了英文引号。
  2. 列出所有 PSC 端点:gcloud compute forwarding-rules list --project=PROJECT_ID
  3. 描述 PSC 端点:gcloud compute forwarding-rules describe FORWARDING_RULE_NAME --region=REGION --project=PROJECT_ID
    • 请注意,--region 标志使用了“=”。
  4. 列出所有集群:gcloud container clusters list --project=PROJECT_ID
  5. 描述集群:gcloud container clusters describe CLUSTER_NAME --region=REGION --project=PROJECT_ID
  6. 列出计算实例:gcloud compute instances list --project=PROJECT_ID
  7. 获取项目的 IAM 政策:gcloud projects get-iam-policy PROJECT_ID --project=PROJECT_ID

默认情况下,响应字符串会格式化为终端输出(stdout 或 stderr)。使用 --format 标志更改格式。

run_bq_command

运行单个 BigQuery CLI (bq) 命令。借助此工具,您可以在用户的项目中运行任何 bq 命令,包括创建、更新或删除 GCP 资源的命令(即突变)。严重安全警告(可能具有破坏性):此工具可以创建、更新或删除 BigQuery 资源(例如,bq rm、bq cancel、bq query)。它不限于只读命令。请务必格外小心。禁止的命令:智能体不得执行以下 bq 命令:bq initbq loadbq 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 init、bq pyshell、bq shell。不支持命令管道或链。
  7. 自我修正:如果命令返回错误,请分析 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 命令/模式示例:

  1. 运行查询:bq query --use_legacy_sql=false --project_id=PROJECT_ID 'SELECT * FROM project.dataset.table LIMIT 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="新说明" --project_id=PROJECT_ID myDataset.myTable
  7. 列出项目中的数据集:bq ls --datasets=true --project_id=PROJECT_ID

获取 MCP 工具规范

如需获取 MCP 服务器中所有工具的 MCP 工具规范,请使用 tools/list 方法。下面的示例演示了如何使用 curl 列出 MCP 服务器中当前可用的所有工具及其规范。

Curl 请求
                      
curl --location 'https://cloudcli.googleapis.com/mcp' \
--header 'content-type: application/json' \
--header 'accept: application/json, text/event-stream' \
--data '{
    "method": "tools/list",
    "jsonrpc": "2.0",
    "id": 1
}'