ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

MCP Toolbox for Databases 实战:深入解析 cloud-sql-mysql-create-instance 工具

2026/9/14 7:09:43 拓冰建站 浏览量
MCP Toolbox for Databases 实战:深入解析 cloud-sql-mysql-create-instance 工具 MCP Toolbox for Databases 实战深入解析 cloud-sql-mysql-create-instance 工具【免费下载链接】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下称 mcp-toolbox仓库中的工具文档 cloudsqlmysqlcreateinstance.md讲解cloud-sql-mysql-create-instance工具如何在tools.yaml中配置、各参数如何影响实例的硬件规格与高可用形态并结合仓库源码还原其完整调用链与鉴权机制。读完本文你可以将该工具接入 MCP 客户端让 Agent 安全、可控地在 Google Cloud 项目中创建 Cloud SQL for MySQL 实例。工具定位面向 Cloud SQL Admin API 的实例创建能力cloud-sql-mysql-create-instance工具用于在指定的 Google Cloud 项目中创建一个全新的 Cloud SQL for MySQL 实例。它属于 mcp-toolbox 中 Cloud SQL 管理类admin工具族的一员因此必须挂载在cloud-sql-admin类型的 source 上cloud-sql-adminsource 提供了一个访问 Cloud SQL Admin APIsource 的鉴权方式二选一默认使用Application Default CredentialsADC若将 source 的useClientOAuth置为true则改为由客户端如 Web 浏览器为每次请求提供 OAuth 2.0 访问令牌。该工具的完整配套工具集create_instance、get_instance、list_instances、wait_for_operation等 10 个工具可以直接通过内置配置cloud-sql-mysql-admin一键启用参见 Cloud SQL for MySQL Admin 预置配置文档。参数详解五个入参决定实例的“骨架”文档中的参数表定义了工具的核心入参。结合 实现源码 中buildParams的参数定义可补全默认值信息参数类型必填默认值说明projectstringtrue—可被 source 预置Google Cloud 项目 ID。若cloud-sql-adminsource 配置了defaultProject该值会作为默认值注入且参数描述会明确提示 Agent“无需再向用户询问”除非用户显式给出其他项目。namestringtrue—要创建的实例名称。databaseVersionstringfalseMYSQL_8_4MySQL 数据库版本。不指定时默认为最新可用版本如MYSQL_8_4源码中通过parameters.WithStringDefault(MYSQL_8_4)注入默认值。rootPasswordstringtrue—实例的 root 密码将随DatabaseInstance.RootPassword提交给 Admin API。editionPresetstringfalseDevelopment实例版本预设取值Production或Development决定机器规格、可用区类型与磁盘配置。两点实现细节值得注意editionPreset校验发生在调用阶段Invoke 方法 使用strings.ToLower做大小写不敏感匹配非Production/Development的取值会返回 Agent 可读错误invalid editionPreset: ... Must be either Production or Development从而引导 Agent 纠正参数而不是抛底层异常。databaseVersion在 Invoke 中按必传处理源码结构上Invoke会对缺失的project/name/databaseVersion/rootPassword/editionPreset逐一返回missing param parameter错误但由于参数构建阶段已附带默认值MYSQL_8_4、DevelopmentAgent 省略这两个可选参数时仍能得到有效取值——文档中“required: false”即源于此默认值机制。Production 与 Development 预设预设背后的具体规格文档示例的description中描述的预设差异可以在 源码中的 switch 分支 中得到逐字印证。工具将预设翻译为一组固定的sqladmin.Settings配置项Production 预设Development 预设可用区类型AvailabilityTypeREGIONALHA/区域级ZONAL非 HA/单可用区版本EditionENTERPRISE_PLUSENTERPRISE_PLUS机器档位Tierdb-perf-optimized-N-88 vCPU / 64 GiB RAMdb-perf-optimized-N-22 vCPU / 16 GiB RAM数据盘250 GiBPD_SSD100 GiBPD_SSD即两个预设统一使用 Enterprise Plus 版本差异集中在“区域级高可用 8 vCPU”与“单可用区 2 vCPU”的定位上。这意味着该工具走的是“模板化创建”路线Agent 不需要了解 GCP 的机型命名规则只需选择业务场景开发还是生产其余规格由工具固化兼顾了创建操作的确定性与 Agent 交互的简洁性。tools.yaml 配置示例与 Reference 字段文档给出的完整配置示例如下source与tool两段以---分隔kind: source name: my-cloud-sql-admin-source type: cloud-sql-admin --- kind: tool name: create_my_mysql_instance type: cloud-sql-mysql-create-instance source: my-cloud-sql-admin-source description: Creates a MySQL instance using Production and Development presets. For the Development template, it chooses a 2 vCPU, 16 GiB RAM, 100 GiB SSD configuration with Non-HA/zonal availability. For the Production template, it chooses an 8 vCPU, 64 GiB RAM, 250 GiB SSD configuration with HA/regional availability. The Enterprise Plus edition is used in both cases. The default database version is MYSQL_8_4. The agent should ask the user if they want to use a different version.需要注意description是可选的。若省略Initialize 方法 会自动注入与上述示例相同的默认描述文案即“Development/Production 预设 Enterprise Plus 默认MYSQL_8_4 提示 Agent 主动询问用户是否更换版本”。这段描述最终会传递给 Agent直接影响其创建实例时的提问策略。文档中的 Reference 部分定义了tools.yaml中 tool 段落的配置字段字段类型必填说明typestringtrue必须为cloud-sql-mysql-create-instance。sourcestringtrue要使用的cloud-sql-adminsource 名称。descriptionstringfalse传递给 Agent 的工具描述。配置结构在源码中由 Config 结构体 定义Type与Source均带validate:required标签另支持可选的annotations字段。YAML 解析行为由 TestParseFromYaml 测试 固化解析kind: tooltype: cloud-sql-mysql-create-instance的片段后应得到字段值完全一致的Config。调用链与鉴权从 Agent 请求到 Admin API从源码结构看该工具的完整执行路径为入口与 source 校验Invoke首先断言 source 实现了compatibleSource接口要求提供GetDefaultProject、UseClientAuthorization、CreateInstance三个方法不满足则返回 500 级客户端错误source used is not compatible with the tool参数与预设翻译按上文规则构造sqladmin.Settings将editionPreset映射为具体的 tier、磁盘与可用区配置Admin API 调用交由 cloud-sql-admin source 的 CreateInstance 方法 组装sqladmin.DatabaseInstance含Name、DatabaseVersion、RootPassword、Settings、Project最终调用service.Instances.Insert(project, instance).Do()发起创建错误归一化GCP 侧错误经util.ProcessGcpError包装后返回便于 Agent 理解失败原因。鉴权上有两个与文档互补的设计绕过请求级鉴权服务Authorized方法恒返回true源码注释说明这类 admin 工具有意跳过按请求的 auth-service 检查访问控制交由服务端凭据ADC/OAuth 令牌承担客户端 OAuth 透传RequiresClientAuthorization委托给 source 的UseClientAuthorization()当 source 配置useClientOAuth: true时MCP 客户端会在每次调用中携带访问令牌令牌随调用链传入CreateInstance。此外工具初始化时应用 destructive 注解tools.NewDestructiveAnnotations向 MCP 客户端声明这是一个会产生真实资源与费用的操作便于客户端侧做确认或风险提示。快速接入使用内置预置配置除了手工编写tools.yaml仓库内置了现成配置 cloud-sql-mysql-admin.yaml启动时以--prebuilt cloud-sql-mysql-admin加载即可。其 source 段由两个环境变量驱动CLOUD_SQL_MYSQL_PROJECT可选为 Cloud SQL 基础设施工具预置默认项目 ID对应上文project参数的默认值机制CLOUD_SQL_MYSQL_READONLY可选置为true时抑制具备写能力的 admin 工具包括create_instance默认false。预置配置中的create_instance工具即本文介绍的cloud-sql-mysql-create-instance并附带wait_for_operationmultiplier: 4用于轮询异步操作直至完成。IAM 权限方面按 预置配置文档create_instance属于roles/cloudsql.adminCloud SQL Admin角色覆盖的工具低于cloudsql.editor/cloudsql.viewer的权限无法执行创建操作。小结cloud-sql-mysql-create-instance是 mcp-toolbox 将 GCP Cloud SQL 管理 API 暴露给 Agent 的典型样本文档层面只需声明 source 与 5 个参数实现层面则以Production/Development两个固化的sqladmin.Settings模板Enterprise Plus、db-perf-optimized-N-8/N-2、100/250 GiB PD_SSD、ZONAL/REGIONAL保证创建结果的确定性同时通过defaultProject参数注入、destructive 注解、客户端 OAuth 透传和 IAM 权限分层cloudsql.admin控制这一高危操作的边界。理解这套“文档参数 → 预设翻译 → Admin API Insert”的链路后你可以参照同目录下 cloudsqlmssqlcreateinstance.md 与 cloudsqlpgcreateinstances.md 快速掌握其他引擎的实例创建工具。【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考