让 AI 助手安全地查数据库:MCP Toolbox 数据库 MCP 服务器实践指南
【免费下载链接】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 是一个开源(Apache 2.0 协议)的数据库 MCP 服务器:它把 PostgreSQL、MySQL、BigQuery 这类数据库封装成标准 MCP 工具,让 Claude Code、Gemini CLI 等 AI 客户端用自然语言查数据,也让你自己的应用代码通过 SDK 加载同一套工具。
设想一个常见需求:团队想让 AI"顺便帮我查下数据"。直接放开数据库权限不敢,怕模型写出任意 SQL;每接一种数据库又得重写一遍连接、认证代码;给 LangChain 写的工具接到 LlamaIndex 上又得重做一遍。MCP Toolbox 把这三件事收敛到一个进程里:数据库连接、认证、连接池它管,你只定义"哪些工具被允许存在"。
MCP Toolbox 帮你解决哪三类问题
第一是权限收敛。传统做法是给 agent 一个数据库账号,它能执行什么取决于账号权限;Toolbox 让你在配置里声明一组参数化工具(比如"按名字搜订单"),agent 只能通过这些入口操作数据库,拿不到裸 SQL 执行权。
第二是连接与认证的复用。一个 source 配置定义一次连接(主机、端口、凭证、IAM 身份),多个工具共享同一个连接池,凭证支持从环境变量注入。
第三是跨框架复用。同一份工具定义,MCP 客户端直接走协议,Python/JS/Go/Java 应用各自用官方 SDK 加载,工具实现只在internal/sources/下维护一份(每个数据库一个目录,PostgreSQL、MySQL、Oracle、MongoDB、Redis、Elasticsearch、ClickHouse、Neo4j、Snowflake 以及 Google Cloud 的 BigQuery、Cloud SQL、Spanner、AlloyDB 等都有对应实现)。
这张架构图说明了 Toolbox 的居中角色:左侧是各种 AI 客户端和应用程序,中间是 Toolbox 服务器,右侧是它支持的各类数据库,所有访问都经过同一层工具定义。
最快路径:一条命令启动 MCP Toolbox
安装最简单的是 Homebrew:brew install mcp-toolbox(macOS/Linux);也可以从 Releases 页下载官方二进制,或用 Node 直接跑npx @toolbox-sdk/server(官方注明这种方式图省事,性能非最优)。
# 安装(任选其一) brew install mcp-toolbox npx @toolbox-sdk/server --help # 免安装体验 # 零配置启动:加载 PostgreSQL 预置工具,启动 Web UI(默认端口 5000) ./toolbox --prebuilt=postgres --ui加--stdio则不走 HTTP,直接以 MCP 标准输入输出模式挂到 IDE 客户端上,适合本地开发。服务器默认启用配置热重载,改完 YAML 不用重启;不需要时加--disable-reload。
tools.yaml 只有三种资源:source、tool、toolset
自定义模式的核心是一份tools.yaml,全部字段参考 docs/en/documentation/configuration/:
kind: source name: my-pg-source type: postgres host: 127.0.0.1 port: 5432 database: toolbox_db user: toolbox_user password: ${POSTGRES_PASSWORD} --- kind: tool name: search-hotels type: postgres-sql source: my-pg-source description: 按名称搜索酒店。 parameters: - name: name type: string description: 酒店名称关键词。 statement: SELECT * FROM hotels WHERE name ILIKE '%' || $1 || '%'; --- kind: toolset name: hotel-ops tools: - search-hotels三种资源各管一件事:source定义连接凭证($1这类占位参数与数据库的预处理语句绑定,天然防注入);tool声明一个带参数 schema 的受限操作,agent 只能按参数调用;toolset把工具分组,客户端按需只加载某一组,避免把无关工具全塞进模型上下文。凭证等敏感值支持${ENV_NAME:默认值}环境变量插值(实现见cmd/internal/config.go),不必把密码写死在文件里。
这张截图是 Toolbox UI 的工具集(toolset)管理页,可以看到每个工具集下挂了哪些工具,用于核对暴露范围。
--prebuilt 预置工具:不改一行配置先跑起来
不想手写 YAML 时,--prebuilt=postgres会加载内置的一套通用工具(list_tables、查 schema、执行 SQL 等),预置配置源码就在仓库的internal/prebuiltconfigs/tools/目录,每个数据库一份 YAML。还可以按--prebuilt=postgres/data只加载其中的 SQL 工具集,并且能与--config组合,即"预置 + 自定义"混用。
官方文档对这个模式有一条明确的告诫(见docs/en/documentation/configuration/prebuilt-configs/):预置工具面向"构建期"场景,即帮助可信开发者工作;动态execute_sql类工具不是数据库安全边界,生产上应给 agent 单独建一个只读账号,固定流程则改用参数化自定义工具。调试单个工具不用起客户端,直接用子命令:toolbox invoke <tool-name> '<json参数>'。
MCP 客户端和应用怎么接进来
服务器起来后有两种接入方式:
- MCP 客户端:在
mcp.json里指向http://127.0.0.1:5000/mcp;只想暴露某个工具集时用http://127.0.0.1:5000/mcp/{toolset_name}。 - 应用 SDK:官方提供四语言客户端 SDK,核心用法都是"连上服务器 URL,按工具集名加载工具":
| 语言 | 主要包 | 典型场景 |
|---|---|---|
| Python | toolbox-core、toolbox-langchain、toolbox-llamaindex | ADK、LangChain、LlamaIndex 代理框架 |
| JavaScript | @toolbox-sdk/core、@toolbox-sdk/adk | Node 服务、ADK/Genkit 应用 |
| Go | mcp-toolbox-sdk-go | 高并发后端 |
| Java | mcp-toolbox-sdk-java | 企业 Java 应用 |
加--ui启动后,浏览器里可以直接看到工具清单、填参数试跑,调试配置时比翻日志直观:
这张图展示的是 Toolbox UI 的工具页:左边是工具列表,选中后可填写参数并在线执行,等价于toolbox invoke。
上生产前值得知道的三个进阶配置
认证。内置认证模块支持 Google IAM 与通用认证(internal/auth/),MCP 协议层的服务器级认证可通过--mcp-prm-file提供 PRM 元数据;完整 CLI 参数表见 docs/en/reference/cli.md。
可观测性。--telemetry-otlp把 metrics/tracing 按 OpenTelemetry 协议导出到自建 collector,--telemetry-gcp直出 Google Cloud Monitoring;--sql-commenter会在执行的 SQL 里追加 traceparent、工具名等注释,方便在数据库侧的审计日志里回溯"这条 SQL 是哪个工具发起的"。
网络面。--address/--port控制监听(默认127.0.0.1:5000),--tls-cert/--tls-key上 TLS,--allowed-origins/--allowed-hosts防 CORS 滥用和 DNS 重绑定。
MCP Toolbox 适合谁,不适合谁
- 适合:维护多个 AI 客户端或多个语言应用、想让它们共享同一套数据库工具层的团队;想给 agent 做最小权限而不是给完整账号的场景。
- 适合:大量使用 Google Cloud 数据库(BigQuery、Cloud SQL、Spanner、AlloyDB、Firestore)且有 IAM 认证需求的用户。
- 不适合:脚本里临时连一个库取几张表——直接用驱动更快;需要 agent 具备库级管理权限的场景,"受限工具"的设计反而会增加摩擦。
- 注意:预置的动态 SQL 工具官方明确标注不适用于不受信运行时,生产接入必须自己写受限工具。
想深入阅读源码可从仓库 https://gitcode.com/GitHub_Trending/ge/mcp-toolbox 克隆,重点看internal/sources/(各数据库实现)、internal/tools/(工具框架)和docs/en/documentation/(完整配置参考)。
【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考