Repository navigation
Releases
Releases · Anarkh-Lee/universal-db-mcp
v2.14.0 - 🚀 新增 MCP stdio 模式动态数据库连接
[2.14.0] - 2026
新增
- MCP stdio 模式动态数据库连接 - 支持在对话中动态连接/切换数据库,无需写死配置
- 新增 3 个 MCP Tool:
connect_database:动态连接数据库,支持全部 17 种数据库类型,已有连接时自动断开旧连接disconnect_database:断开当前数据库连接get_connection_status:查看当前连接状态(类型、地址、权限模式、缓存状态)
--type参数改为可选:不指定则以无连接模式启动,等待 AI 通过connect_database动态连接- 零配置启动:
claude_desktop_config.json中只需"args": ["universal-db-mcp"],对话中告诉 AI 数据库信息即可 - 向后兼容:传了
--type参数的用户行为完全不变 - 影响范围:仅 MCP stdio 模式,HTTP/SSE/Streamable HTTP 模式不受影响
- 改动文件:
src/mcp/mcp-server.ts、src/mcp/mcp-index.ts
- 新增 3 个 MCP Tool:
用户使用指南
方式 A:零配置启动(新增能力)
在 claude_desktop_config.json 中无需指定数据库参数:
{
"mcpServers": {
"universal-db": {
"command": "npx",
"args": ["universal-db-mcp"]
}
}
}然后在对话中直接告诉 AI 数据库信息:
- "帮我连接 192.168.1.100 的 MySQL,用户名 root,密码 123456,数据库 order_db"
- "切换到 10.0.0.5 的 PostgreSQL,端口 5432,数据库 analytics"
- "断开当前数据库连接"
- "当前连的是哪个库?"
AI 会自动调用 connect_database、disconnect_database、get_connection_status 工具。
方式 B:带默认连接启动(向后兼容,行为不变)
{
"mcpServers": {
"universal-db": {
"command": "npx",
"args": [
"universal-db-mcp",
"--type", "mysql",
"--host", "localhost",
"--port", "3306",
"--user", "root",
"--password", "your_password",
"--database", "your_database"
]
}
}
}启动时自动连接指定数据库,对话中仍可通过 connect_database 切换到其他数据库。
v2.13.0 - 🚀 修复 stdio MCP server 在客户端(如 Codex CLI)关闭会话后进程挂起的问题
[2.13.0] - 2026
修复
- stdio 进程优雅退出 - 修复 stdio MCP server 在客户端(如 Codex CLI)关闭会话后进程挂起的问题
- 问题表现:Codex CLI 执行
/exit后终端提示符不返回,必须手动Ctrl+C - 根因:未监听
process.stdin的end/close事件;stop()方法未调用server.close()释放 transport 资源 - 修复方案:
mcp-server.ts:stop()中新增server.close()调用,释放 stdin/stdout 监听器mcp-index.ts:新增统一gracefulShutdown()函数,监听SIGINT/SIGTERM/stdin end/stdin close- 防重入保护(
shuttingDown标志)+ 5 秒超时兜底
- 影响范围:stdio 模式直接修复;SSE/Streamable HTTP 模式间接受益(
cleanupSession()调用的stop()现在正确关闭 MCP Server)
- 问题表现:Codex CLI 执行
v2.12.0 - 🚀 新增 多 Schema 支持
[2.12.0] - 2026
修复
多 Schema 支持 - 修复 8 个适配器只能获取默认 Schema 下的表信息的问题
影响的适配器:PostgreSQL、GaussDB、KingbaseES、Vastbase、HighGo、SQL Server、Oracle、达梦
问题表现:
get_schema、get_table_info、get_enum_values、get_sample_data只返回默认 Schema(如 PostgreSQL 的public、SQL Server 的dbo、Oracle/达梦的当前用户)下的表修复方案:
适配器 SQL 查询改为排除系统 Schema,自动发现所有用户 Schema
非默认 Schema 的表名使用
schema.table_name格式(如analytics.events)默认 Schema 的表名保持不变,向后兼容
v2.11.0 - 🚀 连接稳定性增强
[2.11.0] - 2026
改进
- 连接稳定性增强 - 全面升级数据库连接管理,彻底解决
Can't add new command when connection is in closed state错误- 连接池化 - 12 个网络数据库适配器从单连接升级为连接池
- MySQL 系列(MySQL、TiDB、OceanBase、PolarDB、GoldenDB):使用
mysql2连接池,配置enableKeepAlive+connectionLimit: 3 - PostgreSQL 系列(PostgreSQL、KingbaseES、GaussDB、Vastbase、HighGo):使用
pg.Pool,配置keepAlive+max: 3 - Oracle:使用
oracledb.createPool(),配置poolPingInterval: 30
- MySQL 系列(MySQL、TiDB、OceanBase、PolarDB、GoldenDB):使用
- 心跳保活 - 达梦适配器使用定时心跳(30 秒间隔)保持连接活跃
- 断线自动重试 - 所有网络数据库适配器新增
withRetry机制,连接断开后自动重试一次 - TCP Keep-Alive - 所有连接池启用 TCP Keep-Alive,防止连接被服务端或中间件超时关闭
- 连接池化 - 12 个网络数据库适配器从单连接升级为连接池
- 不需要修改的适配器(已有内置机制):SQL Server(连接池)、Redis(自动重连)、MongoDB(内置连接池)、SQLite(本地文件)、ClickHouse(HTTP 协议)
v2.10.1 - 🚀 修改文档中sqllite错误的参数信息
修改文档中sqllite错误的参数信息
--file-path修改为--file
v2.10.0 - 🚀 新增 细粒度权限控制(权限模式、自定义权限、向后兼容)
[2.10.0] - 2026
新增
- 细粒度权限控制 - 支持自定义操作权限组合,不再只有"只读"和"完全写入"两种模式
- 权限模式 - 新增
--permission-mode参数safe(默认):只读模式,仅允许 SELECTreadwrite:读写模式,允许 SELECT/INSERT/UPDATE,禁止 DELETE 和 DDLfull:完全控制,等价于原来的--danger-allow-writecustom:自定义模式,配合--permissions使用
- 自定义权限 - 新增
--permissions参数,支持逗号分隔的权限列表read:SELECT 查询(始终包含)insert:INSERT, REPLACEupdate:UPDATEdelete:DELETE, TRUNCATEddl:CREATE, ALTER, DROP, RENAME
- 向后兼容 -
--danger-allow-write仍然有效,等价于--permission-mode=full - HTTP API 支持 - REST API 和 MCP SSE/Streamable HTTP 端点同样支持新权限参数
- 权限模式 - 新增
改进
- 更新
DbConfig类型,新增permissionMode和permissions字段 - 重构
safety.ts,支持细粒度权限检查 - 更新命令行帮助信息,添加新参数说明
- 更新 README 文档(中英文),添加权限模式说明
文档
- 完善权限配置文档 - 添加不同传输方式的权限参数命名说明
- STDIO 模式(Claude Desktop):使用连字符命名
--permission-mode、--permissions - SSE 模式(Dify 等):使用驼峰命名
permissionMode、permissions(URL Query) - Streamable HTTP 模式:使用连字符命名
X-DB-Permission-Mode、X-DB-Permissions(HTTP Header) - REST API 模式:使用驼峰命名
permissionMode、permissions(JSON Body)
- STDIO 模式(Claude Desktop):使用连字符命名
v2.9.0 - 🚀 新增 按需增强工具(get_enum_values、get_sample_data)、数据脱敏工具、REST API 端点
[2.9.0] - 2026
新增
- 按需增强工具 - 新增两个 MCP 工具,帮助 LLM 更好地理解数据内容
get_enum_values- 获取指定列的所有唯一值- 适用于枚举类型列、状态列等有限值集合
- 支持 limit 参数控制返回数量
- 返回值包含
isComplete标识是否返回了全部值
get_sample_data- 获取表的示例数据- 自动数据脱敏,保护敏感信息(手机号、邮箱、身份证、银行卡等)
- 支持按列名模式匹配和按值格式自动检测两种脱敏方式
- 可通过
masking参数控制是否启用脱敏
- 数据脱敏工具 - 新增
DataMasker工具类(src/utils/data-masking.ts)- 支持 7 种脱敏类型:phone、email、idcard、bankcard、password、partial、full
- 支持自定义脱敏规则
- 自动检测敏感数据格式
- REST API 端点 - 新增两个 HTTP API 端点
GET /api/enum-values- 获取枚举值GET /api/sample-data- 获取示例数据
改进
- 新增
EnumValuesResult和SampleDataResult类型定义 - 更新 API 参考文档(中英文),添加新端点说明
- 新增 20 个数据脱敏单元测试
v2.8.0 - 🚀 Schema 核心增强(表注释支持、隐式关系推断、关系类型细化、关系来源标注)
[2.8.0] - 2026
新增
- Schema 核心增强 - 提升 LLM 对数据库结构的理解,提高 Text2SQL 准确性
- 表注释支持 - Schema 信息现在包含表级别注释(
comment字段)- 支持的数据库:MySQL、PostgreSQL、Oracle、SQL Server、TiDB、达梦、KingbaseES、GaussDB、OceanBase、PolarDB、Vastbase、HighGo、GoldenDB、ClickHouse(14个)
- 不支持:Redis、MongoDB(NoSQL)、SQLite(无原生表注释)
- 隐式关系推断 - 基于列命名规则自动推断表间关系
- 支持模式:
xxx_id→xxxs.id、xxxId→xxxs.id(驼峰)、xxx_code→xxxs.code、xxx_no→xxxs.xxx_no - 推断规则:不覆盖显式外键、验证目标表存在、验证目标列存在
- 置信度评分:0.7-0.95,LLM 可根据置信度判断关系可靠性
- 支持模式:
- 关系类型细化 - 通过检查唯一约束区分
one-to-one和many-to-one - 关系来源标注 -
source字段区分foreign_key(显式外键)和inferred(推断关系)
- 表注释支持 - Schema 信息现在包含表级别注释(
改进
- 新增
SchemaEnhancer工具类(src/utils/schema-enhancer.ts) - 更新
RelationshipInfo类型,添加source和confidence字段 - 更新
TableInfo类型,添加comment字段 - 更新 14 个数据库适配器,添加表注释查询支持
v2.7.0 - 🚀 外键关系支持 - Schema 信息现在包含外键和表关系数据,帮助 LLM 更好地理解数据库结构
外键关系支持 - Schema 信息现在包含外键和表关系数据,帮助 LLM 更好地理解数据库结构
foreignKeys- 表级别外键约束信息,包含约束名、列、引用表、引用列、ON DELETE/UPDATE 规则relationships- 全局关系视图,展示所有表之间的关联关系- 支持的数据库:MySQL、PostgreSQL、Oracle、SQL Server、SQLite、达梦、KingbaseES、GaussDB、OceanBase、TiDB、PolarDB、Vastbase、HighGo、GoldenDB
- NoSQL 数据库(Redis、MongoDB、ClickHouse)不支持传统外键,返回结果中不包含这些字段