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

资讯详情

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

MCP Toolbox Cloud SQL for MySQL Admin 预构建配置详解:环境变量、权限模型与 10 个管理工具

MCP Toolbox Cloud SQL for MySQL Admin 预构建配置详解:环境变量、权限模型与 10 个管理工具 MCP Toolbox Cloud SQL for MySQL Admin 预构建配置详解环境变量、权限模型与 10 个管理工具【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox本文以 MCP Toolbox 的cloud-sql-mysql-admin预构建配置为对象系统讲解其环境变量语义、IAM 权限分级、全部 10 个管理工具的用途以及该配置在仓库内部的 YAML 声明与源码实现机制。读完本文你将能够直接通过--prebuiltcloud-sql-mysql-admin启动一个面向 Cloud SQL for MySQL 的 MCP 管理服务器并清楚每个工具对应的权限边界与底层 API 调用。预构建配置概览一条命令拉起 MySQL 管理服务器MCP Toolbox 允许以--prebuiltdatabase方式启动服务器官方说明见 README.md。其中 Cloud SQL for MySQL 的管理型预构建配置名称为cloud-sql-mysql-admin定义在 internal/prebuiltconfigs/tools/cloud-sql-mysql-admin.yaml。该配置与面向连接查询的cloud-sql-mysql预构建配置不同它聚焦于基础设施管理创建实例、克隆实例、创建用户与数据库、备份与恢复等运维操作而非执行 SQL 查询。从配置文件的kind字段可以看出它由三部分组成一个 sourcecloud-sql-admin-source类型cloud-sql-admin提供 Cloud SQL Admin API 客户端十个 tool分别映射到仓库中对应的工具实现一个 toolsetcloud_sql_mysql_admin_tools将全部工具聚合为一个工具集便于统一加载。该预构建配置已被单元测试显式验证见 internal/prebuiltconfigs/prebuiltconfigs_test.go 中的cloudsqlmysql_admin_config : getOrFatal(t, cloud-sql-mysql-admin)。环境变量项目默认值与只读开关官方文档为本配置定义了两个可选环境变量环境变量必填默认值含义CLOUD_SQL_MYSQL_PROJECT否空作为 Cloud SQL 基础设施工具的默认 GCP 项目 IDCLOUD_SQL_MYSQL_READONLY否false设为true时抑制所有具备写能力的管理工具这两个变量在预构建 YAML 中被直接引用为 source 配置kind: source name: cloud-sql-admin-source type: cloud-sql-admin defaultProject: ${CLOUD_SQL_MYSQL_PROJECT:} readOnly: ${CLOUD_SQL_MYSQL_READONLY:false}其中${VAR:default}语法表示当环境变量未设置时使用冒号后的默认值。因此未配置CLOUD_SQL_MYSQL_PROJECT时defaultProject为空字符串工具执行时需由 Agent 在参数中显式提供项目 ID配置后该值会被烘焙进工具的project参数默认值中对应源码 internal/tools/cloudsql/cloudsqlcreatebackup/cloudsqlcreatebackup.go 的buildParams逻辑。这两个字段与cloud-sql-adminsource 的完整配置项一一对应。source 参考文档见 docs/en/integrations/cloud-sql-admin/source.md其Config结构体定义在 internal/sources/cloudsqladmin/cloud_sql_admin.go字段类型必填说明typestring是固定为cloud-sql-admindefaultProjectstring否Cloud SQL 基础设施工具使用的默认 GCP 项目 IDuseClientOAuthboolean否为true时使用客户端 OAuth 授权否则使用 ADCApplication Default Credentials默认falsereadOnlyboolean否为true时抑制具备写能力的工具默认false值得注意预构建 YAML 未暴露useClientOAuth字段因此默认走 ADC 认证路径。从 internal/sources/cloudsqladmin/cloud_sql_admin.go 的Initialize实现可以确认ADC 模式下代码调用google.FindDefaultCredentials获取凭证再以oauth2.NewClient包装成带 User-Agent 的 HTTP 客户端最终创建sqladmin.NewService指向https://sqladmin.googleapis.com而useClientOAuth: true时则期望客户端如浏览器为每个请求提供 OAuth 2.0 access token由GetService按 token 动态创建服务。权限模型三个角色逐级覆盖预构建配置本身不做鉴权实际的权限边界由 GCP IAM 角色决定。官方文档按cloudsql.viewer、cloudsql.editor、cloudsql.admin三级角色划分了工具可用范围Cloud SQL Viewerroles/cloudsql.viewer提供资源的只读访问可调用get_instancelist_instanceslist_databaseswait_for_operationCloud SQL Editorroles/cloudsql.editor在 Viewer 基础上可管理已有资源额外开放全部 Viewer 工具create_databasecreate_backupCloud SQL Adminroles/cloudsql.admin对全部资源拥有完全控制权在 Editor 基础上再开放全部 Editor 与 Viewer 工具create_instancecreate_userclone_instancerestore_backup这三级权限在 YAML 工具列表中也能得到印证只读类工具get_instance、list_instances、list_databases与wait_for_operation对应 Viewer 边界而create_instance、clone_instance、restore_backup等写操作被标记为破坏性工具。例如 internal/tools/cloudsql/cloudsqlcreatebackup/cloudsqlcreatebackup.go 使用tools.NewDestructiveAnnotations为创建备份这类写操作标注破坏性注解MCP 客户端如 Gemini CLI、Claude Code可据此在调用前向用户确认。工具清单十个管理工具的用途与实现预构建 YAML 中按顺序声明了如下十个工具name为 Agent 可见的工具名type为仓库中的工具类型注册名工具名类型用途create_instancecloud-sql-mysql-create-instance创建新的 Cloud SQL for MySQL 实例get_instancecloud-sql-get-instance获取 Cloud SQL 实例信息list_instancescloud-sql-list-instances列出项目中的 Cloud SQL 实例create_databasecloud-sql-create-database在实例中创建新数据库list_databasescloud-sql-list-databases列出实例的全部数据库create_usercloud-sql-create-users在实例中创建新用户wait_for_operationcloud-sql-wait-for-operation等待 Cloud SQL 操作完成clone_instancecloud-sql-clone-instance克隆现有 Cloud SQL for MySQL 实例create_backupcloud-sql-create-backup为实例创建备份restore_backupcloud-sql-restore-backup恢复实例备份create_instance生产/开发双预设该工具是唯一的 MySQL 专属类型。其实现位于 internal/tools/cloudsqlmysql/cloudsqlmysqlcreateinstance/cloudsqlmysqlcreateinstance.goInvoke会根据editionPreset参数自动生成sqladmin.SettingsProductionREGIONAL高可用多区域可用性、ENTERPRISE_PLUS版本、db-perf-optimized-N-8机型8 vCPU / 64 GiB、250 GiB PD_SSDDevelopment默认ZONAL可用性、ENTERPRISE_PLUS版本、db-perf-optimized-N-2机型2 vCPU / 16 GiB、100 GiB PD_SSD。参数包括project配置了默认项目后自动预填、name、databaseVersion默认MYSQL_8_4源码提示 Agent 应询问用户是否需要其他版本、rootPassword、editionPreset默认Development。非法预设值会返回invalid editionPreset错误。wait_for_operation等待完成并生成连接指引Cloud SQL 的实例创建、克隆、备份等均为异步长操作因此该工具位于 Viewer 权限之下却承担关键角色。其实现internal/tools/cloudsql/cloudsqlwaitforoperation/cloudsqlwaitforoperation.go会轮询service.Operations.Get当操作状态为DONE时返回结果。若操作类型是CREATE_DATABASE还会通过generateCloudSQLConnectionMessageinternal/sources/cloudsqladmin/cloud_sql_admin.go从targetLink正则解析出项目、实例与数据库并结合实例的区域与数据库版本生成一段可直接粘贴的 MCP 连接配置模板含CLOUD_SQL_MYSQL_PROJECT、CLOUD_SQL_MYSQL_REGION、CLOUD_SQL_MYSQL_INSTANCE、CLOUD_SQL_MYSQL_DATABASE、CLOUD_SQL_MYSQL_USER、CLOUD_SQL_MYSQL_PASSWORD等环境变量。预构建 YAML 中还为该工具设置了multiplier: 4即轮询等待间隔按 4 倍系数放大避免短轮询高频请求 API。其余工具get_instance / list_instances / list_databases分别调用service.Instances.Get、Instances.List、Databases.List并将响应裁剪为精简单一结构如实例仅返回name与instanceType数据库返回name、charset、collation减少传给 Agent 的 token 开销见 internal/sources/cloudsqladmin/cloud_sql_admin.gocreate_database构造sqladmin.Database后调用Databases.Insertcreate_user支持内置用户BUILT_IN需密码与 Cloud IAM 用户CLOUD_IAM_USER无需密码两种类型见CreateUsers实现internal/sources/cloudsqladmin/cloud_sql_admin.goclone_instance接受pointInTime、preferredZone、preferredSecondaryZone等可选参数构造CloneContext后调用Instances.Clonecreate_backup可选参数location与backup_description调用BackupRuns.Insertrestore_backup支持三种备份标识——纯数字时间戳标准备份需源项目与源实例、BackupDR 完整资源路径projects/.../backupVaults/.../backups/...、以及projects/{project}/backups/{backup-uid}形式分别填充RestoreBackupContext、BackupdrBackup与Backup字段见 internal/sources/cloudsqladmin/cloud_sql_admin.go。只读模式CLOUD_SQL_MYSQL_READONLY 的生效方式当CLOUD_SQL_MYSQL_READONLYtrue时readOnly: true会被解析进 source 的Config.ReadOnly字段。source 通过IsReadOnly()方法暴露该状态internal/sources/cloudsqladmin/cloud_sql_admin.go。从整体机制看Toolbox 的 toolset 加载层会依据 source 的只读状态抑制具备写能力的工具从而把 Agent 可调用的集合收缩为仅剩get_instance、list_instances、list_databases与wait_for_operation这四个 Viewer 级工具实现只读运维的安全兜底。该字段在 source 参考文档docs/en/integrations/cloud-sql-admin/source.md中被描述为When set totrue, suppresses write-capable admin tools。配置加载机制embed 与自动注册预构建配置之所以能开箱即用依赖于 internal/prebuiltconfigs/prebuiltconfigs.go 的加载逻辑tools/*.yaml目录通过//go:embed嵌入二进制init()中调用loadPrebuiltToolYAMLs读取全部 YAML每个文件名去掉.yaml后缀后作为预构建键如cloud-sql-mysql-admin注册进prebuiltToolYAMLsmap同时追加到prebuiltToolsSources列表Get(cloud-sql-mysql-admin)即可按名取出完整配置字节流供启动流程解析为 source、tool 与 toolset。配置中的每个type均对应仓库中的注册实现source 类型cloud-sql-admin在 internal/sources/cloudsqladmin/cloud_sql_admin.go 通过sources.Register注册工具类型如cloud-sql-mysql-create-instance、cloud-sql-create-backup则通过各自包内的tools.Register注册。这种YAML 声明 运行时注册表查找的架构使得新增数据库只需追加一个 YAML 文件即可。快速使用MCP 客户端配置示例参照 README 中预构建工具的标准接入方式README.md以 npx 方式在 MCP 客户端如claude_desktop_config.json中启动本配置{ mcpServers: { cloud-sql-mysql-admin: { command: npx, args: [ -y, toolbox-sdk/server, --prebuiltcloud-sql-mysql-admin, --stdio ], env: { CLOUD_SQL_MYSQL_PROJECT: your-gcp-project-id, CLOUD_SQL_MYSQL_READONLY: false } } } }启动后Agent 将获得create_instance、clone_instance、create_backup、restore_backup、create_user、create_database、get_instance、list_instances、list_databases、wait_for_operation十个工具可据此完成从创建实例 → 建库建用户 → 等待操作完成 → 备份/恢复的完整 Cloud SQL for MySQL 生命周期管理。若服务账号仅授予roles/cloudsql.viewer则 Agent 只会看到四个只读工具权限边界与 IAM 角色保持一致。结语cloud-sql-mysql-admin预构建配置将 Cloud SQL for MySQL 的常用管理操作封装为 10 个标准 MCP 工具通过两个环境变量即可完成默认项目与只读模式的配置权限边界则由cloudsql.viewer/editor/admin三级 IAM 角色天然约束。结合 internal/prebuiltconfigs/tools/cloud-sql-mysql-admin.yaml 的声明与 internal/sources/cloudsqladmin/cloud_sql_admin.go 的源码实现你可以按需调整参数、理解每个操作的 API 语义或参考该模式为其他数据库定制属于自己的预构建配置。【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表