综合 / 后端 · 2026-10-10 11:58 · 3 阅读 · 0 赞
GitHub 1.6万 Star:谷歌开源数据库 MCP 工具箱,让 AI 安全查库
谷歌开源的 MCP Toolbox for Databases 已获 1.6 万 Star,支持 30+ 数据库。它通过预定义 SQL 模板和参数化调用,让 AI 只能调用受控工具而非自由写 SQL,兼顾连接池、鉴权与可观测性。
MCP Toolbox for Databases 是谷歌开源的数据库 MCP 服务器,目前已有 1.6 万 Star。它原本叫 Gen AI Toolbox for Databases,比 MCP 协议还早几个月出现,后来为对齐 MCP,仓库名改成了 mcp-toolbox。最近正好用到它,分享给大家。

它解决的是什么问题
AI + 数据库这个模式,无论是个人开发者还是公司团队,很多都不太放心。不管是 Claude Code 还是 Codex,把连接串直接扔给模型,让它现场写 SQL,查错表、拼错条件是常有的事,权限一放开,心里就更没底了。
另一条路是自己写函数封装好给模型调,连接池、鉴权、调用日志全都得自己管,每接一个库就得重来一遍。

AI 访问数据库:自由 SQL vs 受控工具
这个工具箱干的就是中间这层的活。我们在配置文件里提前把允许的操作定义成一个个工具,写清楚 SQL 模板和参数,AI 只能调用这些工具,不能自由发挥。 连接池、认证、调用记录这些事,它替我们管。

功能详情
先看支持范围。 主流的 Postgres、MySQL、MariaDB、SQL Server、Oracle、MongoDB、Redis、Elasticsearch、ClickHouse、CockroachDB、Neo4j、Snowflake、SQLite 都在名单里,谷歌云上的 AlloyDB、BigQuery、Spanner、Cloud SQL 也支持,加起来三十多种。有了它,基本不用再给每个数据库单独找一个 MCP 了。

实际用下来,我觉得它的用法可以分两档。
第一档是预置工具,不写任何配置,启动时加个参数就行。 比如 --prebuilt=postgres,AI 助手马上就能列出库里有哪些表、看表结构、执行查询。平时让 AI 帮忙看看数据、查查表结构、生成点跟数据库相关的代码,这一档就够用了。
第二档是自定义工具,也是我平时主要用的方式。 在 tools.yaml 里把每个操作写成一条模板:数据源是哪个、SQL 怎么写、要哪几个参数、参数什么类型,都写清楚。AI 调用的时候只能往里填参数,模板本身它改不了。参数是分开传进去的,SQL 不是拿字符串拼出来的,注入这种老问题基本不用担心。哪些表能访问、能干什么操作,都是我们自己定。

除了工具本身,开发中的杂事也省了不少。连接池默认就有,认证可以接现有的账号体系,调用链路和指标用的是 OpenTelemetry,出了问题能查到是哪次调用慢、哪次调用挂了。改 tools.yaml 不用重启服务,动态重载默认开着,改完保存就生效。
还有个挺实用的小东西:启动时加 --ui 参数,会出来一个网页界面,每个工具都能手动填参数跑一遍,配好先自己点一点,确认没问题再交给 AI 用。

Toolbox UI
如果要嵌进自己写的应用里,官方给了 Python、JS、Go 的 SDK,Java 也有,LangChain、LlamaIndex、谷歌的 ADK 这些框架,文档里都有现成的接入示例,加载一组工具大概十行代码。
它还有个 skills-generate 命令,能把一组工具导出成 Agent Skill 包,有需要的可以研究下。但 Skill 不是强控制,不排除没生效的情况,用到数据库这块要谨慎一些,我是没用这个。
快速开始
我装的时候用的 Homebrew,brew install mcp-toolbox 一条命令完事。没装 Homebrew 的话,npx @toolbox-sdk/server 也能直接跑,Docker 镜像和各平台的二进制包官方都提供了,挑自己顺手的就行。
装完写一个 tools.yaml,我手上有个 Postgres 库,配置大概长这样:
kind: source
name: my-pg
type: postgres
host: 127.0.0.1
port: 5432
database: demo
user: demo
password: demo
---
kind: tool
name: search-user-by-name
type: postgres-sql
source: my-pg
description: 按名字模糊查用户
parameters:
- name: name
type: string
description: 用户名
statement: SELECT * FROM users WHERE name ILIKE '%' || $1 || '%';
然后 toolbox --config tools.yaml 把服务拉起来,默认监听 5000 端口。AI 客户端那边加一段 MCP 配置:
{
"mcpServers": {
"toolbox": {
"type": "http",
"url": "http://127.0.0.1:5000/mcp"
}
}
}
装好以后我们说一句话,它就会去查库里的数据。想调整工具,直接改 tools.yaml 保存就行,服务自己会重新加载,不用重启。
收尾
说下我的看法,AI 要碰数据库,必须只能走提前定义好的工具,连接串不能直接给,这个项目做的就是这件事,模型那边的事它不管。
缺点也得说,每个要开放的操作都得自己写一条 SQL 模板,前期得花点时间。工具多了以后,tools.yaml 本身就变成一个要专门维护的东西了,会需要多花一份精力。
要不要搭这个服务,主要看你的 AI 助手是不是经常要碰数据库。偶尔查一次数据,手动导出来发给 AI 看就行,犯不上专门架个服务。要是助手天天跟库打交道,搭一层这个工具箱还是划算的。