MCP Toolbox for Databases 实操指南:让 AI 客户端直连企业数据库
【免费下载链接】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 是一个开源的数据库 MCP 服务器,夹在 IDE、CLI、应用等 MCP 客户端与 PostgreSQL、MySQL、BigQuery 等数据库之间,把数据库能力封装成一组模型可调用的工具。你不用为每个客户端手写连接逻辑,也不必把数据库的完整权限交给智能体。
为什么需要数据库 MCP 服务器
🧩 设想这个场景:团队里三个人分别用不同的 AI 客户端,都要访问同一批数据库。每接一个客户端,就得配一遍连接串、认证方式,凭证散落在各处的配置里;而如果直接把数据库的完整 SQL 权限开放给模型,生产环境跑一条DELETE谁也不敢放心。
MCP Toolbox for Databases 的做法是把连接、认证、连接池、OpenTelemetry 可观测性统一收进一个进程,你只需要声明"允许被调用哪些工具"。它有两种用法:一是直接挂预置工具(比如list_tables、execute_sql)给 MCP 客户端用;二是把它当框架,在配置文件里定义参数化查询、受限访问的定制工具,给生产环境用。
安装与启动:五分钟跑通第一个工具
当前版本是 1.10.0,四种安装路径任选:brew install mcp-toolbox、拉容器镜像、go install装模块,或直接下二进制。容器方式最省事:
docker pull us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:1.10.0准备一份最小的tools.yaml,三种资源类型:source(数据源)、tool(工具)、toolset(工具分组):
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-by-name 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: my_first_toolset tools: - search-hotels-by-name注意密码用了${POSTGRES_PASSWORD}环境变量占位符,凭证不落盘。然后用./toolbox --config "tools.yaml"启动,服务默认监听 5000 端口;MCP 客户端配置里把 url 指到http://127.0.0.1:5000/mcp即可加载全部工具,加上/{toolset名}后缀(如/mcp/my_first_toolset)则只暴露那一个工具集。调试时加--ui参数,浏览器里可以直接跑工具看结果。
如果你只想先看看效果,跳过写配置:--prebuilt=postgres会直接加载 PostgreSQL 的预置工具集,--prebuilt=postgres/data则只加载 SQL 相关的子集。
tools.yaml 怎么写
配置文件就是 source → tool → toolset 的声明:source 定义数据源(连接参数),tool 定义动作(类型、绑定的 source、参数、查询语句),toolset 按业务或客户端把工具分组,方便不同 Agent 各取所需。toolset 也可以按需动态组合,比如给数据分析师只给只读工具,给 DBA 加上锁和活跃查询这类监控工具。
核心能力清单
- 连接管理:每个 source 底层就是一个连接池或客户端,多个 tool 复用同一个 source,连接参数(如
queryParams)集中在 source 上配。 - 工具定义:预置工具开箱即用,覆盖 PostgreSQL、MySQL、BigQuery、Cloud SQL、Spanner、MongoDB、Redis、Neo4j、Snowflake 等二十余种数据库;定制工具则用
statement写参数化查询,配parameters声明入参,模型只能按你给的结构传参。 - 可观测性:内置 OpenTelemetry,指标和链路追踪不用额外搭。
- 多语言 SDK:Python(
toolbox-core,另有 LangChain、LlamaIndex 适配包)、JS/TS(@toolbox-sdk/core)、Go、Java 四套客户端,加载工具集基本是两行代码:
from toolbox_core import ToolboxClient async with ToolboxClient("http://127.0.0.1:5000") as client: tools = await client.load_toolset("my_first_toolset")进阶:性能、安全与自定义工具
| 需求 | 做法 |
|---|---|
| 改配置不重启 | 动态重载默认开启,热更新 tools.yaml;--disable-reload关闭 |
| 凭证不进文件 | source 里全部用${ENV_VAR}占位,认证支持 IAM 等集成方式 |
| 限制模型能干什么 | 工具只暴露预置的statement,参数化绑定,不让模型拼 SQL |
| 高并发场景 | 连接复用走 source 级连接池,参数见 source 配置文档 |
| 自己写工具逻辑 | 参考 工具实现 与 数据源实现 的源码结构 |
预置工具集的完整清单在 internal/prebuiltconfigs/tools/,每个数据库一个 yaml,照着抄就能改出自己的。
值不值得用
适合:多个 MCP 客户端要访问同一批数据库;需要接入两三种以上数据库类型,想统一管理认证和连接;要让 Agent 碰库但必须把它的权限锁死在几条查询里;需要观察 Agent 实际执行了哪些查询。
用不着:就一个数据库、一个应用,自己的 ORM 已够用;或者你想给模型完全不受限的数据库访问权——这个项目的整个设计就是限制访问,目标相反;纯脚本场景不需要 MCP 协议,直接写客户端代码更直接。
从tools.yaml里写一个 source 和一条搜索工具开始,用--ui跑通第一次查询,再挂进你的 IDE 验证 MCP 链路——这三步走完,再考虑扩到更多数据库和更细的权限划分。
【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考