news 2026/9/14 18:29:54

MCP Toolbox 预置配置详解:用 cloud-sql-postgres-admin 一键搭建 Cloud SQL for PostgreSQL 管理工具

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MCP Toolbox 预置配置详解:用 cloud-sql-postgres-admin 一键搭建 Cloud SQL for PostgreSQL 管理工具

MCP Toolbox 预置配置详解:用 cloud-sql-postgres-admin 一键搭建 Cloud SQL for PostgreSQL 管理工具

【免费下载链接】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 通过--prebuilt标志提供开箱即用的工具集合,其中cloud-sql-postgres-admin是面向 Cloud SQL for PostgreSQL 基础设施管理的预置配置,基于cloud-sql-adminsource 暴露了实例创建、克隆、备份恢复、用户与数据库管理等 11 个 MCP 工具。读完本文,你将了解该预置配置的完整工具清单、环境变量与 IAM 权限模型,并能在源码层面理解每个工具的实现细节与默认参数,从而正确地把 LLM Agent 接入自己的 Cloud SQL 管理工作流。

预置配置概览

cloud-sql-postgres-admin是 mcp-toolbox 内置的预置配置之一,其--prebuilt取值就是cloud-sql-postgres-admin。它对应的完整配置定义在仓库的 cloud-sql-postgres-admin.yaml 中,该文件声明了一个名为cloud-sql-admin-source的 source,以及挂载在它上面的全部工具,最终打包为一个名为cloud_sql_postgres_admin_tools的 toolset:

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_instance type: cloud-sql-postgres-create-instance source: cloud-sql-admin-source # ... 其余工具定义(get_instance、list_instances 等) --- kind: toolset name: cloud_sql_postgres_admin_tools tools: - create_instance - get_instance - list_instances - create_database - list_databases - create_user - wait_for_operation - postgres_upgrade_precheck - clone_instance - create_backup - restore_backup

官方文档对该配置的说明见 cloud-sql-for-postgresql-admin.md。

环境变量与 Source 配置

该预置配置只依赖两个可选环境变量,均通过 YAML 模板语法${VAR:default}注入到 source 的字段中:

环境变量默认值作用
CLOUD_SQL_POSTGRES_PROJECT为 Cloud SQL 基础设施类工具提供默认 GCP 项目 ID,对应 source 的defaultProject字段
CLOUD_SQL_POSTGRES_READONLYfalse设为true时抑制所有具备写能力的管理工具,对应 source 的readOnly字段

这两个字段的实际解析逻辑在 cloud_sql_admin.go 的Config结构体中(L62-L68):

type Config struct { Name string `yaml:"name" validate:"required"` Type string `yaml:"type" validate:"required"` DefaultProject string `yaml:"defaultProject"` UseClientOAuth bool `yaml:"useClientOAuth"` ReadOnly bool `yaml:"readOnly"` }

从源码结构看,defaultProject会直接影响工具参数:以create_instance为例,cloudsqlpgcreateinstances.go 的buildParams(L175-L187)检测到 source 配置了默认项目后,会把project参数改造为带默认值的参数,并在描述中写明 “This is pre-configured; do not ask for it unless the user explicitly provides a different one”,从而避免 Agent 反复向用户追问项目 ID。

cloud-sql-adminsource 的完整字段参考(含useClientOAuth客户端 OAuth 模式)见 source.md。source 初始化时默认使用 Application Default Credentials 认证并创建sqladmin服务客户端(Initialize,cloud_sql_admin.go L75-L108);当ReadOnlytrue时,Source.IsReadOnly()返回true,用于在工具暴露阶段过滤掉破坏性/写入类工具。

工具清单与参数详解

该预置配置共暴露 11 个工具。下表给出文档声明的功能与对应的工具实现类型,便于与源码对照:

工具名工具类型(type)功能
create_instancecloud-sql-postgres-create-instance创建新的 Cloud SQL for PostgreSQL 实例
get_instancecloud-sql-get-instance查询单个实例信息
list_instancescloud-sql-list-instances列出项目中的实例
create_databasecloud-sql-create-database在实例中创建数据库
list_databasescloud-sql-list-databases列出实例中的所有数据库
create_usercloud-sql-create-users在实例中创建用户
wait_for_operationcloud-sql-wait-for-operation轮询等待异步操作完成
clone_instancecloud-sql-clone-instance克隆已有实例
postgres_upgrade_precheckpostgres-upgrade-precheck主版本升级前检查
create_backupcloud-sql-create-backup创建备份
restore_backupcloud-sql-restore-backup恢复备份

create_instance:内置 Production / Development 预设

该工具是 PostgreSQL 专属的实例创建工具,实现位于 cloudsqlpgcreateinstances.go。它接受 5 个参数:projectnamedatabaseVersion(默认POSTGRES_17)、rootPasswordeditionPreset(默认Development)。

预设直接映射为 Cloud SQL 的Settings配置(L136-L152):

预设可用性版本系列机型数据盘
DevelopmentZONAL(非 HA)ENTERPRISE_PLUSdb-perf-optimized-N-2(2 vCPU / 16 GiB)100 GiBPD_SSD
ProductionREGIONAL(HA)ENTERPRISE_PLUSdb-perf-optimized-N-8(8 vCPU / 64 GiB)250 GiBPD_SSD

工具默认描述中还会提示 Agent:如果用户想使用其他数据库版本,应主动询问。该工具标注为破坏性操作(tools.NewDestructiveAnnotations),在CLOUD_SQL_POSTGRES_READONLY=true时会被抑制。

get_instance / list_instances / list_databases / create_database

这些工具最终都落到cloud-sql-adminsource 上对sqladminAPI 的封装:

  • GetInstance调用service.Instances.Get(project, instance).Do()(cloud_sql_admin.go L228-L239);
  • ListInstance返回精简后的nameinstanceType列表(L273-L301);
  • ListDatabase返回每个数据库的namecharsetcollation(L241-L271);
  • CreateDatabase调用service.Databases.Insert(...)(L181-L198),属于写操作,受readOnly控制。

create_user:支持 IAM 用户与内置用户

source 的CreateUsers方法(cloud_sql_admin.go L200-L226)根据是否指定 IAM 用户切换user.Type:IAM 用户为CLOUD_IAM_USER,内置用户为BUILT_IN且强制要求password参数,否则返回missing 'password' parameter for non-IAM user错误。

wait_for_operation:指数退避轮询 + 连接指引

wait_for_operation用于等待create_instance等工具返回的长时操作(LRO)完成,实现位于 cloudsqlwaitforoperation.go。它的默认轮询参数值得注意:

  • 初始delay3 秒,maxDelay4 分钟,maxRetries10 次,整体超时 30 分钟;
  • 预置配置中额外把multiplier设为4(cloud-sql-postgres-admin.yaml L52-L55),意味着轮询间隔按 4 倍指数增长:3s → 12s → 48s → 3.2min → 4min(封顶)……

当被等待的操作是CREATE_DATABASE时,source 还会解析操作结果中的targetLink,取出项目/区域/实例/库名,并结合实例的databaseVersion判定引擎类型,最后渲染一份内置连接指引模板(generateCloudSQLConnectionMessage,cloud_sql_admin.go L447-L520),直接告诉用户如何用CLOUD_SQL_POSTGRES_*环境变量把数据面 MCP server 拉起来。

clone_instance:支持时间点克隆与可用区偏好

CloneInstance(cloud_sql_admin.go L152-L179)构造CloneContext,支持四个可选维度:目标实例名(必填)、PointInTime(时间点克隆)、PreferredZonePreferredSecondaryZone,最终调用service.Instances.Clone(project, sourceInstanceName, rb).Do()发起克隆。

postgres_upgrade_precheck:主版本升级前检查

PostgreSQL 专属工具,实现位于 cloudsqlpgupgradeprecheck.go。参数为projectinstancetargetDatabaseVersion(默认POSTGRES_18)。它调用Instances.PreCheckMajorVersionUpgrade发起 LRO,随后以 5 秒间隔、最长 20 秒窗口轮询操作状态(L180-L211),完成后返回preCheckResponse数组。每条结果包含三级信息:

  • ERROR:Action Required,阻断升级,必须先按actionsRequired处理;
  • WARNING:Review Recommended,不阻断但建议复核;
  • INFO:No Action Needed,仅提示。

该工具使用只读注解(tools.NewReadOnlyAnnotations),即使在readOnly模式下也会保留。

create_backup / restore_backup:三种备份标识的兼容处理

create_backup通过 source 的InsertBackupRun(cloud_sql_admin.go L383-L403)调用service.BackupRuns.Insert,支持指定locationbackupDescription

restore_backup的参数设计比较讲究(cloudsqlrestorebackup.go L86-L98):target_projecttarget_instancebackup_id必填,source_projectsource_instance仅当backup_id是 BackupRun ID 时才需要。source 端RestoreBackup(cloud_sql_admin.go L405-L445)对backup_id做了三种形态的自动判别:

  1. 能解析为 int64 的 BackupRun ID → 填充RestoreBackupContext(此时必须提供 source 项目与实例);
  2. 匹配projects/{p}/locations/{l}/backupVaults/{v}/dataSources/{ds}/backups/{uid}的 BackupDR 备份名 → 填充BackupdrBackup字段;
  3. 其余按projects/{p}/backups/{uid}形式填充Backup字段。

这两个工具均标注为破坏性操作,受readOnly模式约束。

IAM 权限与工具可见性的对应关系

官方文档按 Google 角色层级给出了各工具的权限要求,可直接用于设计最小权限策略:

IAM 角色可用的工具
Cloud SQL Viewer(roles/cloudsql.viewerget_instancelist_instanceslist_databaseswait_for_operation
Cloud SQL Editor(roles/cloudsql.editor全部 viewer 工具 +create_databasecreate_backup
Cloud SQL Admin(roles/cloudsql.admin全部 editor/viewer 工具 +create_instancecreate_userclone_instancerestore_backup

从源码结构看,工具侧通过注解(只读/破坏性)+ source 的readOnly标志实现“抑制写工具”,而具体能否调用成功仍由 GCP IAM 最终裁决,因此建议按上表为服务账号分配角色,与预置配置的工具集对齐。

运行方式与预置配置加载机制

使用预置配置启动 server 只需一条命令,无需手写 YAML:

./toolbox serve --prebuilt cloud-sql-postgres-admin --stdio

--prebuilt值的解析机制在 prebuiltconfigs.go 中:包级变量通过//go:embed tools/*.yaml在编译期把 internal/prebuiltconfigs/tools/ 目录下所有 YAML 嵌入二进制(L24-L32),init时按“去掉.yaml后缀的文件名”作为 key 建立映射(loadPrebuiltToolYAMLs,L62-L92)。因此cloud-sql-postgres-admin.yaml就对应--prebuilt cloud-sql-postgres-admin;若传入不存在的名称,Get会返回not found错误并列出所有可用预置名称(L48-L59)。启动后可通过 Toolbox 内置 Web UI 或 MCP 客户端列举cloud_sql_postgres_admin_toolstoolset 中的工具。

小结

cloud-sql-postgres-admin预置配置把 Cloud SQL for PostgreSQL 的日常基础设施运维浓缩为 11 个语义清晰的 MCP 工具:用两个环境变量即可完成默认项目与只读模式配置,用 IAM 三级角色即可做权限对齐,用--prebuilt cloud-sql-postgres-admin一条命令即可启动。实例创建自带 Production/Development 两套 Enterprise Plus 预设,备份恢复兼容 BackupRun ID 与 BackupDR 命名,长时操作有指数退避轮询兜底——再结合源码中各工具的参数默认值与错误分支(如 cloudsqlpgcreateinstances.go、cloud_sql_admin.go),可以在部署前准确预判 Agent 的实际行为边界。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/14 18:27:37

Pulsar Developer Day 2025:云原生消息中间件技术与应用

1. Pulsar Developer Day 2025:消息中间件领域的年度技术盛会 Pulsar Developer Day作为Apache Pulsar社区的年度旗舰活动,将在COSCon25大会期间重磅登场。这场技术盛会聚焦云原生消息中间件的最新进展和实践经验,为开发者提供了一个深度交流…

作者头像 李华
网站建设 2026/9/14 18:26:35

Flutter与鸿蒙开发白噪音APP实战指南

1. 项目背景与核心价值作为一名经历过多个跨平台开发项目的移动端开发者,我最近用Flutter框架为鸿蒙系统开发了一款睡眠白噪音APP。这个技术组合带来的开发效率提升令人惊喜——同一套Dart代码经过适配后,既能运行在鸿蒙设备上,又能兼容Andro…

作者头像 李华
网站建设 2026/9/14 18:25:24

小爱音箱接ChatGPT:MiGPT完整配置教程

小爱音箱接ChatGPT:MiGPT完整配置教程 【免费下载链接】mi-gpt 🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。 项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt MiGPT 把小爱音箱接入 ChatGPT、豆包等大模型&…

作者头像 李华