← 返回目录
D

DBMCP Database MCP Server

社区
单二进制 SQL 数据库 MCP 服务器,内置 PII 脱敏与写保护
GitHub 源仓库 ↗
★ 30 Stars 分类 · 数据库 热门
67FMRS · C

DBMCP 是一个工程质量较高的数据库 MCP 服务器:单一约 7 MB 二进制覆盖 MySQL/MariaDB、PostgreSQL 与 SQLite,默认只读并辅以 AST 级 SQL 校验、单语句限制和危险函数拦截,安全设计到位;可选的 46 类 PII 正则脱敏与 ONNX NER 检测(fail-closed)是突出亮点。工具面完整(模式发现、查询、执行计划、可选写操作),支持 stdio 与 HTTP 双传输及游标分页。注意事项:脱敏默认关闭,写模式需自行评估风险,官方性上它是第三方项目而非数据库厂商官方出品。

可靠性
9/20
安全与权限
15/20
维护活跃度
13/20
文档质量
17/20
安装易用性
13/20
查看 FMRS 评分方法 →

DBMCP(ai.haymon/dbmcp)是一个由 haymon-ai 维护的开源(MIT 许可)数据库 MCP 服务器,支持 MySQL/MariaDB、PostgreSQL 和 SQLite。它以约 7 MB 的单一二进制形式发布,无 Python/Node/Docker 运行时依赖,支持 stdio 与 HTTP(streamable-http)两种传输方式。默认以只读模式运行(写工具被隐藏),并可选启用基于正则的 PII 脱敏(46 种内置实体类型、7 大类别)与可选的 ONNX Runtime ML/NER 检测(人名、地点等)。连接支持 SSL/TLS、连接池与查询超时配置。

工具能力

listDatabases
列出可访问的数据库,通过 cursor/nextCursor 分页;不支持 SQLite。
listTables
列出数据库中的表,支持搜索与 detailed 模式(含 schema、列、约束、索引、触发器等元数据),分页返回。
listViews
列出数据库中的视图,支持搜索与详细元数据(各后端字段不同),分页返回。
listTriggers
列出用户定义的表触发器(排除内部约束/外键触发器),支持搜索与详细模式,分页返回。
listFunctions
列出用户定义的 SQL 函数(MySQL/MariaDB 与 PostgreSQL),支持搜索与详细模式,分页返回。
listProcedures
列出用户定义的存储过程(MySQL/MariaDB 与 PostgreSQL 11+),支持搜索与详细模式,分页返回。
listMaterializedViews
列出 public 模式下的物化视图(仅 PostgreSQL),支持搜索与详细模式,分页返回。
readQuery
执行只读 SQL 查询(SELECT、SHOW、DESCRIBE、USE、EXPLAIN),强制 SQL 校验,SELECT 结果支持分页。
writeQuery
执行写 SQL(INSERT、UPDATE、DELETE、CREATE、ALTER、DROP);仅在关闭只读模式时可用。
createDatabase
创建不存在的数据库;仅关闭只读模式时可用,不支持 SQLite。
dropDatabase
删除已有数据库(拒绝删除当前连接的数据库);仅关闭只读模式时可用,不支持 SQLite。
dropTable
从数据库中删除表;PostgreSQL 可用 cascade 参数强制级联删除;仅关闭只读模式时可用。
explainQuery
返回 SQL 执行计划,可选 analyze 获取实际执行统计(PostgreSQL/MySQL);只读模式下仅允许对只读语句做 EXPLAIN ANALYZE。

安装接入

macOS/Linux/WSL:运行 curl -fsSL https://dbmcp.haymon.ai/install.sh | bash;Windows PowerShell:irm https://dbmcp.haymon.ai/install.ps1 | iex;Windows CMD:curl -fsSL https://dbmcp.haymon.ai/install.cmd -o install.cmd && install.cmd && del install.cmd。也可通过 Docker(ghcr.io/haymon-ai/dbmcp)、Cargo 等方式安装。安装后在项目根目录添加 .mcp.,配置 dbmcp stdio 子命令并通过 DB_BACKEND、DB_HOST、DB_USER、DB_PASSWORD、DB_NAME 等环境变量指定数据库连接。

claude_desktop_config.json
{"mcpServers":{"dbmcp":{"command":"dbmcp","args":["stdio"],"env":{"DB_BACKEND":"mysql","DB_HOST":"127.0.0.1","DB_PORT":"3306","DB_USER":"root","DB_PASSWORD":"secret","DB_NAME":"mydb"}}}}

选型与风险

适合谁

  • 需要安全只读访问 SQL 数据库的 AI 助手用户
  • 重视数据隐私、需要 PII 脱敏的团队
  • 希望零依赖、单二进制部署的开发者
  • 同时使用多种数据库后端的环境

不适合谁

  • 不提供数据库凭据、无法配置连接的用户
  • 需要 AI 直接执行写操作且未理解写模式风险的用户
  • 需要除 MySQL/MariaDB、PostgreSQL、SQLite 之外数据库的用户

所需权限

  • 需要数据库主机、端口、用户名与密码(DB_PASSWORD 视为密钥)
  • 默认只读;关闭只读模式后 AI 可执行写操作、建库/删库/删表
  • SSL/TLS 连接需提供 DB_SSL_CA/CERT/KEY 证书路径
  • 可选 NER 脱敏需提供本地 ONNX 模型目录

风险与副作用

  • 关闭只读模式后,AI 可直接修改或删除数据(包括 dropDatabase/dropTable)
  • PII 脱敏默认关闭,未启用时查询结果中的敏感数据会原样返回给 LLM
  • 正则脱敏非绝对可靠,ML/NER 检测依赖模型质量且 v1 仅支持英文
  • HTTP 模式若未正确配置 allowed-origins/allowed-hosts,可能暴露数据库访问接口
  • EXPLAIN ANALYZE 会实际执行查询,需注意副作用与开销

常见排障

  1. 确认已指定子命令(stdio 或 http),无子命令会报错退出
  2. 检查 DB_BACKEND 是否为 mysql、mariadb、postgres 或 sqlite 之一
  3. 验证数据库主机、端口(MySQL 3306 / PostgreSQL 5432)与凭据是否正确
  4. 若看不到写工具,检查 DB_READ_ONLY 是否保持默认 true
  5. HTTP 连接失败时检查 host/port(默认 127.0.0.1:9001)及 allowed-origins/allowed-hosts 配置
  6. 启用 NER 时确认模型目录包含 config.、tokenizer.、model.onnx,模型加载失败会中止启动
  7. 可用 npx @modelcontextprotocol/inspector 调试 stdio 模式,或 curl 测试 HTTP 端点

使用场景

让 AI 助手以只读方式安全探索生产/开发数据库的模式与数据
对 MySQL、PostgreSQL、SQLite 做统一的数据查询与分析
对查询输出中的敏感个人信息进行自动脱敏后再交给 LLM
通过 explainQuery 分析慢查询的执行计划

支持客户端

Claude Desktop完整支持
Cursor完整支持
Claude Code完整支持