使用 MCP Toolbox 管理 Cloud SQL for SQL Server 实例:Admin 预置工具完整配置指南
【免费下载链接】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(本仓库为googleapis/mcp-toolbox的开源实现)将 Cloud SQL for SQL Server 的实例、数据库与用户管理能力以 MCP(Model Context Protocol)工具的形式暴露给你的 AI 开发助手,支持 Cursor、Windsurf、Visual Studio Code(Copilot)、Cline、Claude Desktop、Claude Code、Gemini CLI 与 Gemini Code Assist。读完本文,你将掌握从 IAM 权限准备、二进制安装到各类 MCP 客户端接入的完整流程,并理解cloud-sql-mssql-admin预置配置背后 10 个管理工具的底层实现与参数细节。
方案概览:为什么用 Admin 预置而不是直连数据库
cloud-sql-mssql-admin与同仓库的cloud-sql-mssql预置配置定位不同:Admin 侧重实例生命周期与资源管理(创建实例、克隆、备份、恢复、建库、建用户),通过 Cloud SQL Admin API 完成,不要求建立数据库连接;而cloud-sql-mssql侧重对既有实例执行 SQL。当你的助手需要"创建一个 SQL Server 实例并初始化数据库"这类运维动作时,Admin 预置是正确选择。
该预置配置定义于 internal/prebuiltconfigs/tools/cloud-sql-mssql-admin.yaml,包含一个cloud-sql-admin类型的源(source)与一个名为cloud_sql_mssql_admin_tools的工具集(toolset),启动时通过--prebuilt cloud-sql-mssql-admin参数直接加载。
开始之前:项目、计费与 IAM 权限准备
在配置任何 MCP 客户端之前,需要依次完成三项前置准备:
- 创建或选择 Google Cloud 项目:在 Google Cloud 控制台的项目选择器页面创建或选择一个项目,后续所有工具调用都发生在该项目范围内。
- 为项目启用结算(billing):创建实例、备份等操作会产生费用,必须确认项目已启用结算。
- 为运行 MCP 服务器的用户授予 IAM 角色:工具集实际暴露哪些工具,取决于授予的 Cloud SQL 角色,三层角色权限递进关系如下:
| IAM 角色 | 可用的工具 | 权限说明 |
|---|---|---|
roles/cloudsql.viewer | get_instance、list_instances、list_databases、wait_for_operation | 只读访问现有资源 |
roles/cloudsql.editor | 全部 viewer 工具 +create_database、create_backup | 管理既有资源的权限 |
roles/cloudsql.admin | 全部 editor 与 viewer 工具 +create_instance、create_user、clone_instance、restore_backup | 对所有资源的完全控制 |
从源码看,工具在调用失败时会通过util.ProcessGcpError(err)将 GCP API 错误转换为可读的 Toolbox 错误信息返回给助手(见 internal/tools/cloudsql/cloudsqlcreateusers/cloudsqlcreateusers.go),因此权限不足时助手能收到明确的错误提示。
安装 MCP Toolbox
版本要求与下载
要求使用 ToolboxV0.15.0 及以上版本。官方发布渠道提供以下平台/架构的预编译二进制,请按本机环境选择对应下载命令(将<版本>替换为实际版本号):
# linux/amd64 curl -O https://<下载地址>/<版本>/linux/amd64/toolbox # darwin/arm64(Apple Silicon Mac) curl -O https://<下载地址>/<版本>/darwin/arm64/toolbox # darwin/amd64(Intel Mac) curl -O https://<下载地址>/<版本>/darwin/amd64/toolbox # windows/amd64 curl -O https://<下载地址>/<版本>/windows/amd64/toolbox.exe # windows/arm64 curl -O https://<下载地址>/<版本>/windows/arm64/toolbox.exe赋予执行权限并验证
chmod +x toolbox ./toolbox --version--version输出正常即表示安装成功。此后在所有 MCP 客户端配置中,将./PATH/TO/toolbox替换为二进制实际路径即可。
配置你的 MCP 客户端
所有客户端均通过"本地启动 toolbox 进程 + stdio 传输"的方式接入,核心参数完全一致:--prebuilt cloud-sql-mssql-admin指定加载 Admin 预置配置,--stdio指定使用标准输入输出作为 MCP 传输层。差异仅在于配置文件存放位置与 JSON 结构。下文逐一给出 8 种客户端的完整配置。
Claude Code
- 安装 Claude Code。
- 在项目根目录创建
.mcp.json(若不存在)。 - 写入以下配置并保存:
{ "mcpServers": { "cloud-sql-mssql-admin": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","cloud-sql-mssql-admin","--stdio"], "env": { } } } }- 重启 Claude Code 使配置生效。
Claude Desktop
- 打开 Claude Desktop 并进入 Settings(设置)。
- 在Developer选项卡下点击Edit Config打开配置文件。
- 写入以下配置并保存:
{ "mcpServers": { "cloud-sql-mssql-admin": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","cloud-sql-mssql-admin","--stdio"], "env": { } } } }- 重启 Claude Desktop。
- 在新聊天界面中,应能看到锤子(MCP)图标以及可用的新 MCP 服务器。
Cline(VS Code 扩展)
- 在 VS Code 中打开 Cline 扩展,点击MCP Servers图标。
- 点击Configure MCP Servers打开配置文件。
- 写入以下配置并保存:
{ "mcpServers": { "cloud-sql-mssql-admin": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","cloud-sql-mssql-admin","--stdio"], "env": { } } } }- 服务器成功连接后,应看到绿色 active 状态标识。
Cursor
- 在项目根目录创建
.cursor目录(若不存在)。 - 创建并打开
.cursor/mcp.json(若不存在)。 - 写入以下配置并保存:
{ "mcpServers": { "cloud-sql-mssql-admin": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","cloud-sql-mssql-admin","--stdio"], "env": { } } } }- 在 Cursor 中进入Settings > Cursor Settings > MCP,连接成功后应看到绿色 active 状态。
Visual Studio Code(Copilot)
- 打开 VS Code,在项目根目录创建
.vscode目录(若不存在)。 - 创建并打开
.vscode/mcp.json(若不存在)。 - 注意 VS Code 的 JSON 顶层键是
servers而非mcpServers,写入并保存:
{ "servers": { "cloud-sql-mssql-admin": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","cloud-sql-mssql-admin","--stdio"], "env": { } } } }Windsurf(Codium)
- 打开 Windsurf 并进入 Cascade 助手。
- 点击锤子(MCP)图标,再点击Configure打开配置文件。
- 写入以下配置并保存:
{ "mcpServers": { "cloud-sql-mssql-admin": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","cloud-sql-mssql-admin","--stdio"], "env": { } } } }Gemini CLI
- 安装 Gemini CLI。
- 在工作目录中创建名为
.gemini的文件夹,并在其中创建settings.json。 - 写入以下配置并保存:
{ "mcpServers": { "cloud-sql-mssql-admin": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","cloud-sql-mssql-admin","--stdio"], "env": { } } } }Gemini Code Assist
- 在 Visual Studio Code 中安装 Gemini Code Assist 扩展。
- 在 Gemini Code Assist 对话中启用Agent Mode。
- 在工作目录中创建名为
.gemini的文件夹,并在其中创建settings.json。 - 写入以下配置并保存:
{ "mcpServers": { "cloud-sql-mssql-admin": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","cloud-sql-mssql-admin","--stdio"], "env": { } } } }关于默认项目的配置技巧
预置配置的源声明了defaultProject: ${CLOUD_SQL_MSSQL_PROJECT:}(见 internal/prebuiltconfigs/tools/cloud-sql-mssql-admin.yaml),即从环境变量CLOUD_SQL_MSSQL_PROJECT读取默认 GCP 项目 ID。因此你可以在客户端配置的env字段中注入该环境变量,例如:
{ "mcpServers": { "cloud-sql-mssql-admin": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","cloud-sql-mssql-admin","--stdio"], "env": { "CLOUD_SQL_MSSQL_PROJECT": "my-gcp-project-id" } } } }配置后,工具的project参数会以该默认值预填,助手无需再向用户询问项目 ID(源码中表现为WithStringDefault(project)的默认参数烘焙逻辑,见 internal/tools/cloudsql/cloudsqlcreatedatabase/cloudsqlcreatedatabase.go)。
可用的管理工具清单
连接成功后,cloud-sql-mssql-admin服务器会向你的 AI 工具暴露以下 10 个管理工具:
- create_instance:创建一个新的 Cloud SQL for SQL Server 实例。
- get_instance:获取 Cloud SQL 实例的信息。
- list_instances:列出项目中的 Cloud SQL 实例。
- create_database:在 Cloud SQL 实例中创建新数据库。
- list_databases:列出 Cloud SQL 实例的全部数据库。
- create_user:在 Cloud SQL 实例中创建新用户。
- wait_for_operation:等待 Cloud SQL 操作完成。
- clone_instance:克隆现有的 Cloud SQL for SQL Server 实例。
- create_backup:在 Cloud SQL 实例上创建备份。
- restore_backup:恢复 Cloud SQL 实例的备份。
这 10 个工具在预置配置中按顺序注册到工具集cloud_sql_mssql_admin_tools,其类型与底层实现一一对应(internal/prebuiltconfigs/tools/cloud-sql-mssql-admin.yaml)。
核心工具的参数细节与实现原理
以下参数信息均来自各工具源码中的buildParams函数,是助手实际会向 LLM 暴露的 MCP 参数契约。
create_instance:面向 SQL Server 的实例创建
这是唯一一个 SQL Server 专属实现(类型为cloud-sql-mssql-create-instance),实现于 internal/tools/cloudsqlmssql/cloudsqlmssqlcreateinstance/cloudsqlmssqlcreateinstance.go。核心参数:
| 参数 | 说明 |
|---|---|
project | GCP 项目 ID |
name | 新实例名称 |
databaseVersion | 数据库版本,默认SQLSERVER_2022_STANDARD |
rootPassword | root 用户密码 |
editionPreset | 资源配置预置,Production或Development |
从源码描述看,该工具内置两套预置模板(见 cloudsqlmssqlcreateinstance.go):
- Development:2 vCPU、8 GiB RAM(
db-custom-2-8192),Non-HA/zonal 可用性; - Production:4 vCPU、26 GiB RAM(
db-custom-4-26624),HA/regional 可用性。
两种预置均使用 Enterprise 版。由于默认版本为SQLSERVER_2022_STANDARD,源码提示助手应询问用户是否需要不同版本。本仓库在 tests/cloudsqlmssql/cloud_sql_mssql_create_instance_integration_test.go 中提供了完整的集成测试用例可参考。
create_user:支持内置用户与 IAM 用户
实现于 internal/tools/cloudsql/cloudsqlcreateusers/cloudsqlcreateusers.go,参数如下:
| 参数 | 是否必填 | 说明 |
|---|---|---|
project | 是 | GCP 项目 ID |
instance | 是 | 创建用户的实例 ID |
name | 是 | 新用户名,须在实例内唯一 |
password | 否(IAM 用户) | 新用户密码;IAM 用户无需提供 |
iamUser | 否 | 置为true时创建 Cloud IAM 用户 |
源码明确支持内置与 IAM 两类用户:IAM 用户以邮箱作为用户名,是更安全、官方推荐的管理方式;源码注释要求助手在创建前必须询问用户需要哪种类型(cloudsqlcreateusers.go)。运行时校验逻辑为:非 IAM 用户但未提供password时直接返回"missing password"的 Agent 错误(cloudsqlcreateusers.go)。
create_database 与 list_databases:数据库管理
create_database参数为project、instance、name(新数据库名,须在实例内唯一),实现于 internal/tools/cloudsql/cloudsqlcreatedatabase/cloudsqlcreatedatabase.go。list_databases对应cloud-sql-list-databases类型,用于列出实例下的全部数据库。
clone_instance:克隆与时间点恢复
实现于 internal/tools/cloudsql/cloudsqlcloneinstance/cloudsqlcloneinstance.go:
| 参数 | 是否必填 | 说明 |
|---|---|---|
project | 是 | GCP 项目 ID |
sourceInstanceName | 是 | 被克隆的源实例名 |
destinationInstanceName | 是 | 克隆产生的新实例名 |
pointInTime | 否 | RFC 3339 格式时间戳,用于时间点恢复(PITR)克隆 |
preferredZone | 否 | 新实例首选可用区 |
preferredSecondaryZone | 否 | 新实例首选备用可用区 |
克隆是异步操作,调用会返回 Cloud SQL Operation 对象;源码描述明确提示之后必须调用wait_for_operation轮询直到操作标记为 DONE,且轮询 multiplier 应使用 4(cloudsqlcloneinstance.go)。这一约定与预置配置中wait_for_operation工具声明的multiplier: 4完全对应(cloud-sql-mssql-admin.yaml)。
create_backup 与 restore_backup:备份与恢复
create_backup(类型cloud-sql-create-backup)参数为project、instance、location(备份运行位置,可选)、backup_description(备份描述,可选),实现于 internal/tools/cloudsql/cloudsqlcreatebackup/cloudsqlcreatebackup.go。
restore_backup(类型cloud-sql-restore-backup)参数为target_project、target_instance、backup_id、source_project(可选)、source_instance(可选),实现于 internal/tools/cloudsql/cloudsqlrestorebackup/cloudsqlrestorebackup.go。其中backup_id可以是 BackupRun ID、备份名称或 BackupDR 备份名称,源码要求"使用完整的备份 ID,不要自行解析";只有当backup_id是 BackupRun ID 时才需要提供source_project与source_instance。
wait_for_operation:异步操作的完成判定
所有创建、克隆、备份、恢复类操作均为异步,统一通过wait_for_operation轮询状态。该工具在预置配置中声明了multiplier: 4,即轮询等待时间的倍率为 4,用于适配实例创建/克隆这类耗时较长的大操作。
版本与兼容性注意事项
- 预置工具(Prebuilt tools)目前处于pre-1.0 阶段,工具定义在不同版本之间可能发生调整;不过 LLM 会自适应当前可用的工具集合,因此对大多数用户的实际使用影响有限。
- 本文所有配置均以仓库当前版本的
cloud-sql-mssql-admin预置配置为准,若升级 Toolbox 版本后工具行为异常,可对照 internal/prebuiltconfigs/tools/cloud-sql-mssql-admin.yaml 检查工具注册情况。 - 认证通过 MCP Toolbox 的客户端授权机制完成,具体可参考仓库 internal/auth 目录下的通用与 Google 认证实现。
至此,你的 AI 开发助手已具备通过自然语言创建、查询、克隆、备份和恢复 Cloud SQL for SQL Server 实例的完整能力,日常的"建一个开发库""给生产实例做备份"等请求均可直接交由助手完成。
【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考