【开源自荐universal-db-mcp更新日志】MCP 数据库万能连接器:用自然语言查询和分析数据
- 内容介绍
- 文章标签
- 相关推荐
本帖使用社区公益推广,符合推广要求。我申明并遵循社区要求的以下内容:
- 我的项目是免费使用的,无收费(变相收费、赞助)部分: 是
- 我的帖子已经打上 公益推广 标签: 是
- 我的项目属于个人项目,与公司或商业机构无关: 是
- 我的项目不存在QQ、TG等群组引流: 是
- 我的项目不存在非运营必要的网站引流: 是
- 我的项目不存在为他人推广、AFF: 是
- 我的项目无关联的商业项目: 是
- 我的 GitHub 项目无未开源部分: 是
- 我的站点存在登录,并已接入 LINUX DO Connect: 否
- 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是
- 以上选择我承诺是永久有效的,接受社区和佬友监督: 是
以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出
由于开源原帖【开源自荐5】MCP 数据库万能连接器:用自然语言查询和分析数据无法再进行修改了,特开一贴,记录开源【MCP 数据库万能连接器】universal-db-mcp的更新内容,也是记录我自己的开发过程吧。
如果大家喜欢,希望github帮忙star一下,感谢。
[2.14.0] - 2026/03/17 - 新增 MCP stdio 模式动态数据库连接
issue原文在这里
1. 问题描述
当前 MCP stdio 模式下,数据库连接参数必须在 Claude Desktop 的 claude_desktop_config.json 中写死。用户每次需要连接不同的数据库时,必须手动修改配置文件并重启 MCP 服务,无法在对话中动态切换。
用户的痛点:
- dev 环境下需要对接多种多样的数据库,每次切换都要改配置、重启
- 一个 MCP 实例只能绑定一个数据库,无法在对话中灵活切换
- 希望 AI 能自己读取用户提供的连接信息,动态连接数据库
2. 现状描述及需要解决什么问题
项目有两种运行模式,连接方式完全不同:
| 模式 | 连接方式 | 是否支持动态连接 |
|---|---|---|
| MCP stdio | CLI 参数写死,--type为必填项 |
不支持 |
| HTTP REST API | POST /api/connect body 传参 |
支持 |
| HTTP SSE | GET /sse?type=mysql&host=... URL 传参 |
支持 |
| HTTP Streamable | POST /mcp 请求头 X-DB-* 传参 |
支持 |
需要解决以下4个问题:
- MCP stdio 模式下可以不写死数据库连接,启动时不需要指定
--type - AI 可以在对话中通过 tool call 动态连接任意数据库
- 支持在对话中随时切换到不同的数据库(自动断开旧连接)
- 向后兼容:传了
--type参数的用户行为完全不变
3. 修改内容
| 文件 | 改动类型 | 改动说明 |
|---|---|---|
src/mcp/mcp-server.ts |
修改 | 核心改动:新增 3 个 tool,构造函数支持无 config 启动 |
src/mcp/mcp-index.ts |
修改 | --type 从 requiredOption 改为 option,支持无参启动 |
仅改 2 个文件,不涉及适配器层、HTTP 层、类型定义层的任何改动。
新增 3 个 MCP Tool
| Tool | 说明 |
|---|---|
connect_database |
动态连接数据库,支持全部 17 种类型。已有连接时自动断开旧连接 |
disconnect_database |
断开当前连接 |
get_connection_status |
查看当前连接状态(类型、地址、权限模式、缓存状态) |
关键设计
- 构造函数
config参数改为可选,config类型改为DbConfig | null start()方法条件执行:有 adapter 则连接,无则以无连接模式启动- 连接管理 tool(connect/disconnect/status)不检查数据库连接状态
- 数据操作 tool(execute_query 等)在未连接时返回引导信息:“请先使用 connect_database 工具连接数据库”
connect_database内部复用已有的createAdapter()工厂函数,17 种适配器全部自动支持
4. 用户层面使用差异
4.1 改动前(当前行为)
用户必须在 claude_desktop_config.json 中写死数据库参数:
{
"mcpServers": {
"universal-db": {
"command": "npx",
"args": [
"universal-db-mcp",
"--type", "mysql",
"--host", "192.168.1.100",
"--port", "3306",
"--user", "root",
"--password", "123456",
"--database", "order_db"
]
}
}
}
想查另一个数据库?改配置,重启 Claude Desktop。
4.2 改动后(新行为)
方式 A:零配置启动(新增能力)
{
"mcpServers": {
"universal-db": {
"command": "npx",
"args": ["universal-db-mcp"]
}
}
}
然后在对话中直接说:
- “帮我连接 192.168.1.100 的 MySQL,用户名 root,密码 123456,数据库 order_db”
- “切换到 10.0.0.5 的 PostgreSQL,端口 5432,数据库 analytics”
- “断开当前数据库连接”
- “当前连的是哪个数据库?”
AI 会自动调用 connect_database、disconnect_database、get_connection_status tool。
方式 B:带默认连接启动(向后兼容,行为不变)
{
"mcpServers": {
"universal-db": {
"command": "npx",
"args": ["universal-db-mcp", "--type", "mysql", "--host", "localhost", ...]
}
}
}
启动时自动连接指定数据库,对话中仍可通过 connect_database 切换到其他数据库。
5. 用户使用指南
5.1 MCP stdio 模式(Claude Desktop / Codex CLI)
场景 1:不知道要连哪个库,对话中再决定
配置:
{ "command": "npx", "args": ["universal-db-mcp"] }
对话示例:
用户:帮我查一下测试环境 MySQL 里 orders 表最近 7 天的订单量
AI:我需要先连接数据库,请提供连接信息(地址、端口、用户名、密码、数据库名)
用户:192.168.1.100:3306,root/123456,数据库 test_db
AI:[调用 connect_database] → 连接成功
AI:[调用 get_schema] → 获取表结构
AI:[调用 execute_query] → SELECT COUNT(*) FROM orders WHERE ...
场景 2:对话中切换数据库
用户:现在帮我看看生产环境 PostgreSQL 的 users 表
AI:[调用 connect_database 切换到新数据库] → 已断开 MySQL,连接 PostgreSQL 成功
AI:[调用 execute_query] → ...
场景 3:查看当前连接状态
用户:我现在连的是哪个库?
AI:[调用 get_connection_status] → 当前连接:MySQL 192.168.1.100:3306/test_db,只读模式
5.2 HTTP / SSE / Streamable 模式
这些模式不受本次改动影响,使用方式不变。
[2.13.0] - 2026/03/17 - 修复 stdio MCP server 在客户端(如 Codex CLI)关闭会话后进程挂起的问题
首先感谢 @user1477 佬友的stdio MCP server 在客户端(如 Codex CLI)关闭会话后进程挂起的问题的issue。
1. 问题描述
当 universal-db-mcp 作为 stdio MCP server 被 Codex CLI 调用时,数据库查询功能一切正常,但用户在 Codex 中执行 /exit 后:
- Codex 打印了正常的会话结束信息(token 用量、resume 提示)
- 终端提示符不返回,进程挂起
- 必须手动按
Ctrl+C才能回到 shell
用户已验证:移除 MCP 配置后 /exit 正常工作,说明问题出在 MCP server 的进程生命周期管理上。
2. 问题原因及影响范围
- stdin 生命周期未监听:stdio 模式下没有监听
process.stdin的end/close事件,当 MCP 客户端关闭 stdin 管道时服务器无感知 - MCP Server 未正确关闭:
stop()方法缺少this.server.close()调用,导致 transport 层资源(stdin/stdout 监听器)未被释放 - 无超时保护:shutdown 过程中如果数据库断连或
server.close()挂起,没有超时兜底机制 - 无重入保护:多个退出信号可能同时触发(如 stdin close + SIGINT),导致
stop()被重复执行 - Windows 兼容性:Windows 上 SIGTERM 支持有限,更依赖 stdin 关闭来检测父进程退出
| 传输模式 | 是否受影响 | 原因 |
|---|---|---|
| stdio | 受影响 | 直接命中:缺少 stdin 关闭监听 + stop() 不完整 |
| SSE | 间接受影响 | stop() 不调用 server.close(),资源清理不完整 |
| Streamable HTTP | 间接受影响 | 同上,cleanupSession() 调用 stop() 但 MCP Server 未关闭 |
| REST API | 不受影响 | HTTP 模式有独立的 shutdown 逻辑(fastify.close()) |
所有 17 种数据库适配器均受影响,因为问题出在传输层和进程生命周期管理,不在适配器层。
3. 解决该问题的设计原则
- 改动最小化:只修改必要的文件,不影响现有功能
- 全模式兼容:stdio / SSE / Streamable HTTP / REST 四种传输模式均正常工作
- 全适配器兼容:17 种数据库适配器无需任何修改
- 超时兜底:防止 shutdown 过程本身挂起
- 重入安全:多信号并发时只执行一次 shutdown
- Windows 友好:不依赖 POSIX-only 的信号机制
4. 修改内容
| 文件 | 修改内容 | 影响范围 |
|---|---|---|
src/mcp/mcp-server.ts |
stop() 中增加 this.server.close() |
所有模式(stdio/SSE/Streamable HTTP) |
src/mcp/mcp-index.ts |
添加统一 graceful shutdown + stdin 监听 | 仅 stdio 模式 |
5. 修改后效果
场景 A: Codex CLI /exit(stdin 关闭)
→ process.stdin 'end' 事件触发
→ gracefulShutdown('stdin-end')
→ server.stop()
→ this.server.close() ← 释放 transport(移除 stdin 监听器)
→ this.adapter.disconnect() ← 关闭数据库连接池
→ process.exit(0)
→ 进程正常退出 OK
场景 B: Ctrl+C(SIGINT)
→ process 'SIGINT' 事件触发
→ gracefulShutdown('SIGINT')
→ 同上 OK
场景 C: 系统终止(SIGTERM)
→ process 'SIGTERM' 事件触发
→ gracefulShutdown('SIGTERM')
→ 同上 OK
场景 D: 数据库断连超时
→ gracefulShutdown(任意原因)
→ server.stop() 中 adapter.disconnect() 挂起
→ 5 秒后超时保护触发
→ process.exit(0)
→ 进程强制退出 OK
| 传输模式 | 影响 | 说明 |
|---|---|---|
| stdio | 直接修复 | 新增 stdin 监听 + 完善 stop() |
| SSE | 间接受益 | cleanupSession() → stop() 现在会正确调用 server.close() |
| Streamable HTTP | 间接受益 | 同上 |
| REST API | 无影响 | HTTP 模式不经过 mcp-server.ts,有独立的 shutdown 逻辑 |
--【壹】--:
学习一下
--【贰】--:
好的,佬,这几天就折腾起来,完事会告知佬的
--【叁】--:
佬,v2.14.0版本已新增 MCP stdio 模式动态数据库连接 功能,具体细节在上面的日志中已更新
--【肆】--:
佬有计划直接搞个dockerhub吗,而不是自己在本地构建
--【伍】--:
只是单纯给个建议,因为大部分mcp有docker的方案我自己还是更倾向于docker,但是这个项目需要自己本地构建,所以我目前确实是用npx的方案使用。
--【陆】--:
感谢佬友认可!
--【柒】--:
大概开发的差不多啦,等我测试完发布后,我再告知佬
--【捌】--:
佬,不需要本地构建呀,如果是使用的话,我已经上传npm了,可以通过npm直接使用
--【玖】--:
俺不会用…惭愧
--【拾】--:
互相学习
--【拾壹】--:
感谢大佬支持
--【拾贰】--:
难怪,以前我是一只stdio的,我一直以为是自己问题,没好意思问
最近想精简提示词 mcp了,刚好看到佬发布新版本。
--【拾叁】--:
感谢大佬 。
--【拾肆】--:
项目目前有两种模式:
MCP stdio 模式(Claude Desktop 直连):需要在配置文件里写死连接参数,每次换数据库要改配置重启。
HTTP 模式:已经支持运行时动态连接任意数据库,不需要写死。启动一个 HTTP 服务后,通过以下方式都可以动态传入数据库参数:
- POST /api/connect — body 里传数据库类型、地址、端口等,返回 sessionId
- GET /sse?type=mysql&host=… — SSE 模式,URL 参数传配置
- POST /mcp — Streamable HTTP 模式,通过请求头 X-DB-Type 等传配置
这些方式都支持同时连接多个不同数据库,互不干扰。
佬,如果你用的是HTTP模式的话,可以通过对话直接切换各个数据库。如果用的是MCP stdio模式的话,通过AI对话自己连接这个功能现在还在开发,预计今晚就能发布
--【拾伍】--:
项目里有详细的文档,佬友可以参考一下
--【拾陆】--:
1.如果是使用npm的话,更新之后是自动同步的。
2.同一个数据库配一次不就行了嘛?
--【拾柒】--:
不是同一个数据库,比如3个项目部署在docker 都是pg数据库+redis,我都想用佬的mcp沟通,现在我的办法就是配置文件建立了6个mcp 每个项目的pg一个mcp redis一个,3个项目6个mcp,qaq,所以想问下,可以只配置一个沟通3个项目3个pg+3个redis吗 没看懂怎么搞qaq
--【拾捌】--:
很厉害哇
--【拾玖】--:
弱弱的问一句,怎么检查当前版本,怎么快速更新。
还有,如果docker内有3个项目都是同一款数据库,甚至密码都一样,还有redis,不知道该怎么写mcp配置,现在我能想到的是写6套配置。。。然后ide一打开,关于数据库的mcp就显示6个,3个pg 3个redis
本帖使用社区公益推广,符合推广要求。我申明并遵循社区要求的以下内容:
- 我的项目是免费使用的,无收费(变相收费、赞助)部分: 是
- 我的帖子已经打上 公益推广 标签: 是
- 我的项目属于个人项目,与公司或商业机构无关: 是
- 我的项目不存在QQ、TG等群组引流: 是
- 我的项目不存在非运营必要的网站引流: 是
- 我的项目不存在为他人推广、AFF: 是
- 我的项目无关联的商业项目: 是
- 我的 GitHub 项目无未开源部分: 是
- 我的站点存在登录,并已接入 LINUX DO Connect: 否
- 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是
- 以上选择我承诺是永久有效的,接受社区和佬友监督: 是
以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出
由于开源原帖【开源自荐5】MCP 数据库万能连接器:用自然语言查询和分析数据无法再进行修改了,特开一贴,记录开源【MCP 数据库万能连接器】universal-db-mcp的更新内容,也是记录我自己的开发过程吧。
如果大家喜欢,希望github帮忙star一下,感谢。
[2.14.0] - 2026/03/17 - 新增 MCP stdio 模式动态数据库连接
issue原文在这里
1. 问题描述
当前 MCP stdio 模式下,数据库连接参数必须在 Claude Desktop 的 claude_desktop_config.json 中写死。用户每次需要连接不同的数据库时,必须手动修改配置文件并重启 MCP 服务,无法在对话中动态切换。
用户的痛点:
- dev 环境下需要对接多种多样的数据库,每次切换都要改配置、重启
- 一个 MCP 实例只能绑定一个数据库,无法在对话中灵活切换
- 希望 AI 能自己读取用户提供的连接信息,动态连接数据库
2. 现状描述及需要解决什么问题
项目有两种运行模式,连接方式完全不同:
| 模式 | 连接方式 | 是否支持动态连接 |
|---|---|---|
| MCP stdio | CLI 参数写死,--type为必填项 |
不支持 |
| HTTP REST API | POST /api/connect body 传参 |
支持 |
| HTTP SSE | GET /sse?type=mysql&host=... URL 传参 |
支持 |
| HTTP Streamable | POST /mcp 请求头 X-DB-* 传参 |
支持 |
需要解决以下4个问题:
- MCP stdio 模式下可以不写死数据库连接,启动时不需要指定
--type - AI 可以在对话中通过 tool call 动态连接任意数据库
- 支持在对话中随时切换到不同的数据库(自动断开旧连接)
- 向后兼容:传了
--type参数的用户行为完全不变
3. 修改内容
| 文件 | 改动类型 | 改动说明 |
|---|---|---|
src/mcp/mcp-server.ts |
修改 | 核心改动:新增 3 个 tool,构造函数支持无 config 启动 |
src/mcp/mcp-index.ts |
修改 | --type 从 requiredOption 改为 option,支持无参启动 |
仅改 2 个文件,不涉及适配器层、HTTP 层、类型定义层的任何改动。
新增 3 个 MCP Tool
| Tool | 说明 |
|---|---|
connect_database |
动态连接数据库,支持全部 17 种类型。已有连接时自动断开旧连接 |
disconnect_database |
断开当前连接 |
get_connection_status |
查看当前连接状态(类型、地址、权限模式、缓存状态) |
关键设计
- 构造函数
config参数改为可选,config类型改为DbConfig | null start()方法条件执行:有 adapter 则连接,无则以无连接模式启动- 连接管理 tool(connect/disconnect/status)不检查数据库连接状态
- 数据操作 tool(execute_query 等)在未连接时返回引导信息:“请先使用 connect_database 工具连接数据库”
connect_database内部复用已有的createAdapter()工厂函数,17 种适配器全部自动支持
4. 用户层面使用差异
4.1 改动前(当前行为)
用户必须在 claude_desktop_config.json 中写死数据库参数:
{
"mcpServers": {
"universal-db": {
"command": "npx",
"args": [
"universal-db-mcp",
"--type", "mysql",
"--host", "192.168.1.100",
"--port", "3306",
"--user", "root",
"--password", "123456",
"--database", "order_db"
]
}
}
}
想查另一个数据库?改配置,重启 Claude Desktop。
4.2 改动后(新行为)
方式 A:零配置启动(新增能力)
{
"mcpServers": {
"universal-db": {
"command": "npx",
"args": ["universal-db-mcp"]
}
}
}
然后在对话中直接说:
- “帮我连接 192.168.1.100 的 MySQL,用户名 root,密码 123456,数据库 order_db”
- “切换到 10.0.0.5 的 PostgreSQL,端口 5432,数据库 analytics”
- “断开当前数据库连接”
- “当前连的是哪个数据库?”
AI 会自动调用 connect_database、disconnect_database、get_connection_status tool。
方式 B:带默认连接启动(向后兼容,行为不变)
{
"mcpServers": {
"universal-db": {
"command": "npx",
"args": ["universal-db-mcp", "--type", "mysql", "--host", "localhost", ...]
}
}
}
启动时自动连接指定数据库,对话中仍可通过 connect_database 切换到其他数据库。
5. 用户使用指南
5.1 MCP stdio 模式(Claude Desktop / Codex CLI)
场景 1:不知道要连哪个库,对话中再决定
配置:
{ "command": "npx", "args": ["universal-db-mcp"] }
对话示例:
用户:帮我查一下测试环境 MySQL 里 orders 表最近 7 天的订单量
AI:我需要先连接数据库,请提供连接信息(地址、端口、用户名、密码、数据库名)
用户:192.168.1.100:3306,root/123456,数据库 test_db
AI:[调用 connect_database] → 连接成功
AI:[调用 get_schema] → 获取表结构
AI:[调用 execute_query] → SELECT COUNT(*) FROM orders WHERE ...
场景 2:对话中切换数据库
用户:现在帮我看看生产环境 PostgreSQL 的 users 表
AI:[调用 connect_database 切换到新数据库] → 已断开 MySQL,连接 PostgreSQL 成功
AI:[调用 execute_query] → ...
场景 3:查看当前连接状态
用户:我现在连的是哪个库?
AI:[调用 get_connection_status] → 当前连接:MySQL 192.168.1.100:3306/test_db,只读模式
5.2 HTTP / SSE / Streamable 模式
这些模式不受本次改动影响,使用方式不变。
[2.13.0] - 2026/03/17 - 修复 stdio MCP server 在客户端(如 Codex CLI)关闭会话后进程挂起的问题
首先感谢 @user1477 佬友的stdio MCP server 在客户端(如 Codex CLI)关闭会话后进程挂起的问题的issue。
1. 问题描述
当 universal-db-mcp 作为 stdio MCP server 被 Codex CLI 调用时,数据库查询功能一切正常,但用户在 Codex 中执行 /exit 后:
- Codex 打印了正常的会话结束信息(token 用量、resume 提示)
- 终端提示符不返回,进程挂起
- 必须手动按
Ctrl+C才能回到 shell
用户已验证:移除 MCP 配置后 /exit 正常工作,说明问题出在 MCP server 的进程生命周期管理上。
2. 问题原因及影响范围
- stdin 生命周期未监听:stdio 模式下没有监听
process.stdin的end/close事件,当 MCP 客户端关闭 stdin 管道时服务器无感知 - MCP Server 未正确关闭:
stop()方法缺少this.server.close()调用,导致 transport 层资源(stdin/stdout 监听器)未被释放 - 无超时保护:shutdown 过程中如果数据库断连或
server.close()挂起,没有超时兜底机制 - 无重入保护:多个退出信号可能同时触发(如 stdin close + SIGINT),导致
stop()被重复执行 - Windows 兼容性:Windows 上 SIGTERM 支持有限,更依赖 stdin 关闭来检测父进程退出
| 传输模式 | 是否受影响 | 原因 |
|---|---|---|
| stdio | 受影响 | 直接命中:缺少 stdin 关闭监听 + stop() 不完整 |
| SSE | 间接受影响 | stop() 不调用 server.close(),资源清理不完整 |
| Streamable HTTP | 间接受影响 | 同上,cleanupSession() 调用 stop() 但 MCP Server 未关闭 |
| REST API | 不受影响 | HTTP 模式有独立的 shutdown 逻辑(fastify.close()) |
所有 17 种数据库适配器均受影响,因为问题出在传输层和进程生命周期管理,不在适配器层。
3. 解决该问题的设计原则
- 改动最小化:只修改必要的文件,不影响现有功能
- 全模式兼容:stdio / SSE / Streamable HTTP / REST 四种传输模式均正常工作
- 全适配器兼容:17 种数据库适配器无需任何修改
- 超时兜底:防止 shutdown 过程本身挂起
- 重入安全:多信号并发时只执行一次 shutdown
- Windows 友好:不依赖 POSIX-only 的信号机制
4. 修改内容
| 文件 | 修改内容 | 影响范围 |
|---|---|---|
src/mcp/mcp-server.ts |
stop() 中增加 this.server.close() |
所有模式(stdio/SSE/Streamable HTTP) |
src/mcp/mcp-index.ts |
添加统一 graceful shutdown + stdin 监听 | 仅 stdio 模式 |
5. 修改后效果
场景 A: Codex CLI /exit(stdin 关闭)
→ process.stdin 'end' 事件触发
→ gracefulShutdown('stdin-end')
→ server.stop()
→ this.server.close() ← 释放 transport(移除 stdin 监听器)
→ this.adapter.disconnect() ← 关闭数据库连接池
→ process.exit(0)
→ 进程正常退出 OK
场景 B: Ctrl+C(SIGINT)
→ process 'SIGINT' 事件触发
→ gracefulShutdown('SIGINT')
→ 同上 OK
场景 C: 系统终止(SIGTERM)
→ process 'SIGTERM' 事件触发
→ gracefulShutdown('SIGTERM')
→ 同上 OK
场景 D: 数据库断连超时
→ gracefulShutdown(任意原因)
→ server.stop() 中 adapter.disconnect() 挂起
→ 5 秒后超时保护触发
→ process.exit(0)
→ 进程强制退出 OK
| 传输模式 | 影响 | 说明 |
|---|---|---|
| stdio | 直接修复 | 新增 stdin 监听 + 完善 stop() |
| SSE | 间接受益 | cleanupSession() → stop() 现在会正确调用 server.close() |
| Streamable HTTP | 间接受益 | 同上 |
| REST API | 无影响 | HTTP 模式不经过 mcp-server.ts,有独立的 shutdown 逻辑 |
--【壹】--:
学习一下
--【贰】--:
好的,佬,这几天就折腾起来,完事会告知佬的
--【叁】--:
佬,v2.14.0版本已新增 MCP stdio 模式动态数据库连接 功能,具体细节在上面的日志中已更新
--【肆】--:
佬有计划直接搞个dockerhub吗,而不是自己在本地构建
--【伍】--:
只是单纯给个建议,因为大部分mcp有docker的方案我自己还是更倾向于docker,但是这个项目需要自己本地构建,所以我目前确实是用npx的方案使用。
--【陆】--:
感谢佬友认可!
--【柒】--:
大概开发的差不多啦,等我测试完发布后,我再告知佬
--【捌】--:
佬,不需要本地构建呀,如果是使用的话,我已经上传npm了,可以通过npm直接使用
--【玖】--:
俺不会用…惭愧
--【拾】--:
互相学习
--【拾壹】--:
感谢大佬支持
--【拾贰】--:
难怪,以前我是一只stdio的,我一直以为是自己问题,没好意思问
最近想精简提示词 mcp了,刚好看到佬发布新版本。
--【拾叁】--:
感谢大佬 。
--【拾肆】--:
项目目前有两种模式:
MCP stdio 模式(Claude Desktop 直连):需要在配置文件里写死连接参数,每次换数据库要改配置重启。
HTTP 模式:已经支持运行时动态连接任意数据库,不需要写死。启动一个 HTTP 服务后,通过以下方式都可以动态传入数据库参数:
- POST /api/connect — body 里传数据库类型、地址、端口等,返回 sessionId
- GET /sse?type=mysql&host=… — SSE 模式,URL 参数传配置
- POST /mcp — Streamable HTTP 模式,通过请求头 X-DB-Type 等传配置
这些方式都支持同时连接多个不同数据库,互不干扰。
佬,如果你用的是HTTP模式的话,可以通过对话直接切换各个数据库。如果用的是MCP stdio模式的话,通过AI对话自己连接这个功能现在还在开发,预计今晚就能发布
--【拾伍】--:
项目里有详细的文档,佬友可以参考一下
--【拾陆】--:
1.如果是使用npm的话,更新之后是自动同步的。
2.同一个数据库配一次不就行了嘛?
--【拾柒】--:
不是同一个数据库,比如3个项目部署在docker 都是pg数据库+redis,我都想用佬的mcp沟通,现在我的办法就是配置文件建立了6个mcp 每个项目的pg一个mcp redis一个,3个项目6个mcp,qaq,所以想问下,可以只配置一个沟通3个项目3个pg+3个redis吗 没看懂怎么搞qaq
--【拾捌】--:
很厉害哇
--【拾玖】--:
弱弱的问一句,怎么检查当前版本,怎么快速更新。
还有,如果docker内有3个项目都是同一款数据库,甚至密码都一样,还有redis,不知道该怎么写mcp配置,现在我能想到的是写6套配置。。。然后ide一打开,关于数据库的mcp就显示6个,3个pg 3个redis

