MCP Toolbox 中的 cloud-sql-create-database 工具:通过 MCP 在 Cloud SQL 实例中创建数据库
2026/9/14 4:44:40 网站建设 项目流程

MCP Toolbox 中的 cloud-sql-create-database 工具:通过 MCP 在 Cloud SQL 实例中创建数据库

【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox

MCP Toolbox for Databases 提供了cloud-sql-create-database工具,让 LLM Agent 能够通过 Model Context Protocol 直接在指定的 Cloud SQL 实例中创建新数据库,无需人工登录控制台或调用 Cloud SQL Admin API。本文完整覆盖该工具的参数定义、YAML 配置方式与底层实现,并结合 MCP Toolbox 的源码与预置配置,讲清project参数默认值注入、破坏性操作标注和权限要求等细节,帮助你在自己的 Agent 应用中安全地编排 Cloud SQL 库的自动化创建流程。

工具定位:cloud-sql-admin 源的建库能力

cloud-sql-create-database工具属于 MCP Toolbox 的 Cloud SQL Admin 工具族,其前置依赖是一个cloud-sql-admin类型的 source。根据 Cloud SQL Admin Source 文档,该 source 封装了对 Cloud SQL Admin API 的访问,使工具能够执行创建用户、创建数据库等管理操作。

source 侧的鉴权支持两种模式:

  1. ADC(Application Default Credentials):默认模式,source 使用 ADC 与 API 认证;
  2. Client-side OAuth:当配置useClientOAuth: true时,source 期望由客户端(如浏览器)为每个请求提供 OAuth 2.0 access token。

source 配置示例(引自 source 文档):

kind: source name: my-cloud-sql-admin type: cloud-sql-admin --- kind: source name: my-oauth-cloud-sql-admin type: cloud-sql-admin useClientOAuth: true

source 的完整参考字段如下:

fieldtyperequireddescription
typestringtrue必须为"cloud-sql-admin"
defaultProjectstringfalse用于 Cloud SQL 基础设施工具的 GCP project ID
useClientOAuthbooleanfalsetrue时使用客户端 OAuth 鉴权,否则使用 ADC。默认false
readOnlybooleanfalsetrue时屏蔽所有具备写能力的管理工具。默认false

这些字段在源码 cloud_sql_admin.go 中均有对应:DefaultProjectUseClientOAuthReadOnly三个 YAML 标签直接映射到 source 的解析结构上,GetDefaultProject()UseClientAuthorization()方法则分别向工具暴露默认项目配置与鉴权模式。

工具参数详解

工具的调用参数共 3 个,全部为必填字符串(引自 工具文档):

parametertyperequireddescription
projectstringtrueThe project ID.
instancestringtrueThe ID of the instance where the database will be created.
namestringtrueThe name for the new database. Must be unique within the instance.

project 参数的动态默认值机制

值得注意的是,project参数对 LLM 呈现的形态会随 source 配置而变化。从工具源码 cloudsqlcreatedatabase.go 的buildParams函数可以看到两种分支:

  • 当 source配置defaultProject时,project是一个普通的必填字符串参数,描述为 "The project ID",需要由 LLM 或用户在调用时提供;
  • 当 source配置defaultProject时,该值被烤进(baked into)project参数作为默认值,且参数描述变为:"The GCP project ID. This is pre-configured; do not ask for it unless the user explicitly provides a different one."——明确指示 LLM 不要重复向用户追问项目 ID。

这个设计在 MCP 工具调用中很关键:它既保证了参数 schema 的一致性,又避免了 Agent 在已经预配置项目的环境下产生冗余提问。参数解析与取值逻辑发生在resolveParams中,该方法在工具初始化后通过compatibleSource接口调用source.GetDefaultProject()拿到默认项目,再据此构建参数集。

配置示例与 Reference 字段

在 MCP Toolbox 的 server 配置文件中,将该工具装配进 server 的 YAML 如下(引自工具文档):

kind: tool name: create-cloud-sql-database type: cloud-sql-create-database source: my-cloud-sql-admin-source description: "Creates a new database in a Cloud SQL instance."

工具配置层面的参考字段:

fieldtyperequireddescription
typestringtrue必须为"cloud-sql-create-database"
sourcestringtrue要使用的cloud-sql-adminsource 的名称
descriptionstringfalse工具的描述

从源码 cloudsqlcreatedatabase.go 可以补充两点文档未展开的实现细节:

  1. 默认描述Initialize方法中,若未显式提供description,会回退到内置的 "Creates a new database in a Cloud SQL instance.";
  2. 破坏性操作标注:工具通过tools.NewDestructiveAnnotations应用注解。从源码结构看,这意味着该工具会被 MCP 客户端标记为具有副作用/破坏性语义,便于 Agent 框架在调用前执行确认或审计策略。

单元测试 cloudsqlcreatedatabase_test.go 验证了上述 YAML 能被正确解析为Config结构体(TypeSourceDescription字段逐一比对),确保配置格式与文档一致。

底层调用链:从工具调用到 Cloud SQL Admin API

工具Invoke方法的执行流程是:

  1. 将传入的 source 断言为compatibleSource接口(要求 source 实现GetDefaultProject()UseClientAuthorization()CreateDatabase(...)三个方法),不匹配则返回客户端错误;
  2. 从参数映射中取出projectinstancename,任一缺失都会返回 Agent 错误(如 "missing 'project' parameter");
  3. 调用source.CreateDatabase(ctx, name, project, instance, accessToken),其中accessToken在 client-side OAuth 模式下承载客户端提供的令牌;
  4. 出错时通过util.ProcessGcpError将 GCP API 错误转换为结构化的 Toolbox 错误返回给 MCP 客户端。

source 侧的实际 API 调用在 cloud_sql_admin.go 的CreateDatabase方法中:它构造一个sqladmin.Database资源对象(包含NameProjectInstance三个字段),先通过GetService获取带鉴权的 Cloud SQL Admin API 服务实例,再执行service.Databases.Insert(project, instance, &database).Do(),即标准 Cloud SQL Admin API 的databases.insert调用;失败时错误被包装为 "error creating database" 并沿调用链向上传播。整个链路没有本地状态,是一次直接的 API 透传,因此调用耗时与 Cloud SQL 控制面的响应时间一致。

在预置配置中的装配方式

MCP Toolbox 内置了多个包含该工具的预置配置,均位于 internal/prebuiltconfigs/tools 目录:

  • cloud-sql-postgres-admin.yaml
  • cloud-sql-mysql-admin.yaml
  • cloud-sql-mssql-admin.yaml
  • cloud-sql-postgres.yaml
  • cloud-sql-mysql.yaml
  • cloud-sql-mssql.yaml

cloud-sql-postgres-admin预置配置为例,其 source 与工具的装配方式为:

kind: source name: cloud-sql-admin-source type: cloud-sql-admin defaultProject: ${CLOUD_SQL_POSTGRES_PROJECT:} readOnly: ${CLOUD_SQL_POSTGRES_READONLY:false} --- kind: tool name: create_database type: cloud-sql-create-database source: cloud-sql-admin-source

可以看出两点:

  1. defaultProject通过环境变量CLOUD_SQL_POSTGRES_PROJECT注入(未设置时为空),这正好触发前述"project 参数动态默认值"机制;
  2. readOnly通过CLOUD_SQL_POSTGRES_READONLY控制,置为true时 source 会屏蔽create_database这类写工具,使预置配置可以安全地以只读形态部署。

权限要求

create_database工具的权限要求可在 Cloud SQL for PostgreSQL Admin 预置配置文档 中找到:它归属Cloud SQL Editorroles/cloudsql.editor)角色,即"管理现有资源"的权限层级——低于create_instancecreate_user所需的 Cloud SQL Admin 角色,也高于list_databasesget_instance等 Cloud SQL Viewer 只读工具。部署时为调用身份授予该角色即可使用建库能力,同时不必下放实例级管理权限,符合最小权限原则。

测试与验证

仓库提供了两层测试覆盖该工具:

  • 单元测试 cloudsqlcreatedatabase_test.go:验证 YAML 配置解析,确保kind: tool/type: cloud-sql-create-database的配置块被正确映射到Config结构;
  • 集成测试 cloud_sql_create_database_test.go:在tests/cloudsql目录下针对真实 Cloud SQL 环境验证端到端建库流程。

小结

cloud-sql-create-database是 MCP Toolbox 中 Cloud SQL Admin 工具族的写入类工具,配置成本极低(一个cloud-sql-adminsource 加一个三行 tool 块),核心能力是透传 Cloud SQL Admin API 的databases.insert。工程上使用它时建议关注三点:为 source 配置defaultProject以减少 LLM 追问;利用readOnly开关和roles/cloudsql.editor最小角色控制写入权限;并留意该工具带有 destructive 注解,在 Agent 工作流中可对它施加调用前确认策略。

【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询