← 返回目录
D

DBMCP Database MCP Server

社区
单二进制 SQL 数据库 MCP 服务器,内置 PII 脱敏与写保护
分类
数据库 第 12 / 58
Stars
★ 33 热门
传输方式
stdio(本地进程) · Streamable HTTP
运行环境
预编译二进制
凭据
无需凭据
许可证
MIT
最近提交
工具数
13
67FMRS · C

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

最强项 · 文档质量 17/20 最弱项 · 可靠性 9/20

可靠性
9/20
安全与权限
15/20
维护活跃度
13/20
文档质量
17/20
安装易用性
13/20
查看各项评分依据
可靠性 9/20
README声称有CI徽章、`cargo test --workspace`单元测试及需要Docker的集成测试脚本`./tests/run.sh`,工具列表与描述(listDatabases/listTables/readQuery/writeQuery等)也给出了较细的行为说明,读写模式切换、分页游标等细节描述自洽。但本次为纯静态审查,未实际执行CI或测试用例,也未看到具体测试文件内容或CI运行记录来验证声明的真实性,四种后端(MySQL/MariaDB/Postgres/SQLite)的差异化行为(如某些工具不支持SQLite)只能从文档推断,无法核实真实运行结果。按静态校准规则,没有可验证的执行证据,不能给出高于12分的可靠性分数,故评为9分。
安全与权限 15/20
默认启用只读模式(DB_READ_ONLY=true),写工具(writeQuery/createDatabase/dropDatabase/dropTable)仅在显式关闭只读后才暴露;声称有AST级SQL校验、单语句强制、危险函数(LOAD_FILE/INTO OUTFILE等)检测、标识符校验;HTTP传输默认绑定127.0.0.1并支持Origin/Host白名单;密码等敏感信息标记为isSecret且声称不出现在日志中;支持SSL/TLS。整体设计体现了最小权限意识。扣分点:一旦用户关闭只读模式,dropDatabase/dropTable等不可逆操作仅由该全局启动标志控制,没有针对单次调用的二次确认机制;HTTP传输仅靠Origin/Host白名单而非身份认证令牌来保护/mcp端点,对远程部署存在一定暴露面;PII/NER能力为默认关闭的可选项,默认配置下无脱敏保护。未见到已知CVE或明显红线问题,故评为15分(安全主线清晰但缺少逐操作确认与传输层身份认证)。
维护活跃度 13/20
项目非archived状态,采用MIT许可证,30星、9个未关闭issue,版本号0.13.2显示为活跃的1.0前迭代阶段,README中CI徽章和Release徽章暗示有持续集成与发布流程。但仅凭提供材料无法核实commit频率、issue响应时长、依赖更新节奏或是否有明确的安全问题上报渠道(如SECURITY.md),治理透明度证据不足,故评为13分。
文档质量 17/20
README内容详实,覆盖安装(多平台脚本/包管理器)、快速开始(stdio与HTTP两种传输的.mcp.json示例)、配置项分层说明(CLI标志/环境变量/默认值三线对照表)、逐工具参数与分页/搜索语义说明、安全特性清单、测试命令、项目结构说明,层次清晰、示例充分。扣分点:缺少专门的故障排查(troubleshooting)章节,部分细节(如PII 46种实体类型的具体规则、NER模型的准确率/成本)依赖外部文档站点链接而非仓库内可核查内容,且外部文档内容本身无法在本次审查中验证,故评为17分。
安装易用性 13/20
提供curl/iex一键安装脚本(macOS/Linux/WSL及Windows PowerShell/CMD),并给出Docker镜像标识符与stdio/HTTP两种传输的.mcp.json配置示例,步骤简洁清晰,接入主流客户端(Claude Desktop/Cursor/Claude Code)路径明确。但根据静态校准规则,在没有实际运行验证(如真实执行安装脚本、启动服务并完成MCP握手)的证据支持下,安装易用性分数不能超过15分;同时Docker/二进制安装依赖外部下载脚本的可信度、跨平台一致性无法在静态审查中确认,故评为13分。

静态评测 · 未实际运行收录于 2026-09-07

查看 FMRS 评分方法 →

选型与风险

能访问什么连接数据库

适合谁

  • 需要安全只读访问 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 会实际执行查询,需注意副作用与开销

安装接入

准备工作

运行环境:预编译二进制

DB_BACKEND 必填 数据库后端类型(mysql、mariadb、postgres、sqlite),必填。
DB_PASSWORD 可选密钥 数据库密码,从你的数据库服务获取,属于敏感信息。
DB_SSL_KEY 可选密钥 客户端私钥文件路径,敏感信息。
其他可选配置项(24 个)
DB_HOST 可选 数据库主机地址,默认 127.0.0.1。
DB_PORT 可选 数据库端口,默认按后端(如 MySQL 3306、PostgreSQL 5432)。
DB_USER 可选 数据库用户名,默认按后端。
DB_NAME 可选 数据库名称或 SQLite 文件路径。
DB_CHARSET 可选 字符集设置,仅 MySQL/MariaDB 支持。
DB_SSL 可选 是否启用 SSL 连接,默认 false。
DB_SSL_CA 可选 CA 证书文件路径。
DB_SSL_CERT 可选 客户端证书文件路径。
DB_SSL_VERIFY_CERT 可选 是否校验服务器证书,默认 true。
DB_READ_ONLY 可选 只读模式开关,默认 true(隐藏写入工具)。
DB_MAX_POOL_SIZE 可选 连接池最大数量,默认 5。
DB_CONNECTION_TIMEOUT 可选 连接超时秒数。
DB_QUERY_TIMEOUT 可选 查询执行超时秒数,默认 30。
DB_PAGE_SIZE 可选 分页工具单页最大返回条数(1-500),默认 100。
PII_ENABLE 可选 是否启用查询输出的 PII 脱敏,默认 false。
PII_OPERATOR 可选 PII 处理方式:replace、mask、redact 或 hash。
PII_CATEGORIES 可选 要检测的 PII 类别,逗号分隔,如 financial,government。
PII_NER_ENABLE 可选 是否启用 ML/NER 检测(人名、地名等),默认 false。
PII_NER_MODEL 可选 NER 模型目录路径,开启 PII_NER_ENABLE 时必填。
LOG_LEVEL 可选 日志级别:error、warn、info、debug、trace。
HTTP_HOST 可选 HTTP 模式绑定主机,默认 127.0.0.1。
HTTP_PORT 可选 HTTP 模式绑定端口,默认 9001。
HTTP_ALLOWED_ORIGINS 可选 允许的 CORS 来源,逗号分隔。
HTTP_ALLOWED_HOSTS 可选 允许的 Host 头,逗号分隔。

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"}}}}

以 Claude Desktop 为例。其他客户端的配置文件位置或字段可能不同(如 VS Code 使用 servers 字段),可用下方配置生成器转换。

.vscode/mcp.json
{
  "servers": {
    "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"
      }
    }
  }
}

写入项目的 .vscode/mcp.json(VS Code 使用 servers 字段)。

Terminal
claude mcp add dbmcp -e DB_BACKEND=mysql -e DB_HOST=127.0.0.1 -e DB_PORT=3306 -e DB_USER=root -e DB_PASSWORD=secret -e DB_NAME=mydb -- dbmcp stdio

在终端运行;先把 <…> 占位符换成你自己的值。

验证是否装好

在 MCP 客户端的工具列表中应出现 listTables、readQuery 等工具;询问"列出可用的数据库"并能返回结果即证明连接成功。

常见排障

  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 实例里有哪些数据库
  • 查看 mydb 数据库里有哪些表
  • 运行只读查询:SELECT * FROM users LIMIT 10
  • 解释一下这条查询的执行计划:SELECT * FROM orders WHERE user_id = 5

工具能力 13

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 结果支持分页。
展开其余 5 个工具
writeQuery 写入
执行写 SQL(INSERT、UPDATE、DELETE、CREATE、ALTER、DROP);仅在关闭只读模式时可用。
createDatabase 写入
创建不存在的数据库;仅关闭只读模式时可用,不支持 SQLite。
dropDatabase 破坏性
删除已有数据库(拒绝删除当前连接的数据库);仅关闭只读模式时可用,不支持 SQLite。
dropTable 破坏性
从数据库中删除表;PostgreSQL 可用 cascade 参数强制级联删除;仅关闭只读模式时可用。
explainQuery 只读
返回 SQL 执行计划,可选 analyze 获取实际执行统计(PostgreSQL/MySQL);只读模式下仅允许对只读语句做 EXPLAIN ANALYZE。

使用场景

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

支持客户端

Claude Desktop
Cursor
Claude Code

依据项目文档列出,未经本站实测。

详细介绍

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、连接池与查询超时配置。

同类可选方案

源版本 a1ccacb271a5 数据同步于 2026-10-19 查看 FMRS 评分方法