十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

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

MCP Toolbox 中的 cloud-sql-create-database 工具:通过 MCP 在 Cloud SQL 实例中创建数据库 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-toolboxMCP 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 侧的鉴权支持两种模式ADCApplication Default Credentials默认模式source 使用 ADC 与 API 认证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: truesource 的完整参考字段如下fieldtyperequireddescriptiontypestringtrue必须为cloud-sql-admindefaultProjectstringfalse用于 Cloud SQL 基础设施工具的 GCP project IDuseClientOAuthbooleanfalse为true时使用客户端 OAuth 鉴权否则使用 ADC。默认falsereadOnlybooleanfalse为true时屏蔽所有具备写能力的管理工具。默认false这些字段在源码 cloud_sql_admin.go 中均有对应DefaultProject、UseClientOAuth、ReadOnly三个 YAML 标签直接映射到 source 的解析结构上GetDefaultProject()与UseClientAuthorization()方法则分别向工具暴露默认项目配置与鉴权模式。工具参数详解工具的调用参数共 3 个全部为必填字符串引自 工具文档parametertyperequireddescriptionprojectstringtrueThe 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 intoproject参数作为默认值且参数描述变为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.工具配置层面的参考字段fieldtyperequireddescriptiontypestringtrue必须为cloud-sql-create-databasesourcestringtrue要使用的cloud-sql-adminsource 的名称descriptionstringfalse工具的描述从源码 cloudsqlcreatedatabase.go 可以补充两点文档未展开的实现细节默认描述Initialize方法中若未显式提供description会回退到内置的 Creates a new database in a Cloud SQL instance.破坏性操作标注工具通过tools.NewDestructiveAnnotations应用注解。从源码结构看这意味着该工具会被 MCP 客户端标记为具有副作用/破坏性语义便于 Agent 框架在调用前执行确认或审计策略。单元测试 cloudsqlcreatedatabase_test.go 验证了上述 YAML 能被正确解析为Config结构体Type、Source、Description字段逐一比对确保配置格式与文档一致。底层调用链从工具调用到 Cloud SQL Admin API工具Invoke方法的执行流程是将传入的 source 断言为compatibleSource接口要求 source 实现GetDefaultProject()、UseClientAuthorization()与CreateDatabase(...)三个方法不匹配则返回客户端错误从参数映射中取出project、instance、name任一缺失都会返回 Agent 错误如 missing project parameter调用source.CreateDatabase(ctx, name, project, instance, accessToken)其中accessToken在 client-side OAuth 模式下承载客户端提供的令牌出错时通过util.ProcessGcpError将 GCP API 错误转换为结构化的 Toolbox 错误返回给 MCP 客户端。source 侧的实际 API 调用在 cloud_sql_admin.go 的CreateDatabase方法中它构造一个sqladmin.Database资源对象包含Name、Project、Instance三个字段先通过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.yamlcloud-sql-mysql-admin.yamlcloud-sql-mssql-admin.yamlcloud-sql-postgres.yamlcloud-sql-mysql.yamlcloud-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可以看出两点defaultProject通过环境变量CLOUD_SQL_POSTGRES_PROJECT注入未设置时为空这正好触发前述project 参数动态默认值机制readOnly通过CLOUD_SQL_POSTGRES_READONLY控制置为true时 source 会屏蔽create_database这类写工具使预置配置可以安全地以只读形态部署。权限要求create_database工具的权限要求可在 Cloud SQL for PostgreSQL Admin 预置配置文档 中找到它归属Cloud SQL Editorroles/cloudsql.editor角色即管理现有资源的权限层级——低于create_instance、create_user所需的 Cloud SQL Admin 角色也高于list_databases、get_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),仅供参考
返回列表