多数据库MCP服务器
一个全面的模型上下文协议(MCP)服务器,通过单一接口提供对多个数据库的统一访问。非常适合需要处理多个数据库并希望与如Cursor等AI驱动的集成开发环境(IDE)实现无缝集成的开发人员。
✨ 为何存在这个
传统的MCP数据库服务器要求您:
- ❌ 在你的IDE的MCP设置中手动配置每个数据库
- ❌ 为每个数据库创建单独的MCP服务器实例
- ❌ 添加新数据库时请重启您的集成开发环境 (IDE)
- ❌ 管理多个连接配置
这台服务器解决了所有这些问题 通过提供:
- ✅(勾选标记,表示正确、确认或完成) 单个MCP服务器 这个可以处理您所有的数据库
- ✅ 动态数据库切换 无需重启
- ✅ 自动发现 从一个简单的配置文件
- ✅ 统一界面 对于所有数据库操作
🚀 功能
- 多数据库支持同时连接到多个 PostgreSQL 数据库
- 动态数据库切换无需重启,即时在不同数据库之间切换
- 统一界面单个MCP服务器处理所有数据库连接
- 自动发现自动从配置中发现数据库
- 丰富的查询接口执行SQL查询,探索模式,管理数据
- AI代理集成通过AI代理和聊天界面添加和管理数据库
- 光标集成与Cursor IDE的AI功能无缝集成
🛠️ 可用工具
| 工具 | 描述 |
|---|---|
list_databases | 列出所有可用数据库并显示当前选择 |
switch_database | 切换到不同的数据库 |
get_current_database | 显示当前活动的数据库 |
query_database | 在当前数据库上执行SQL查询 |
list_tables | 列出当前数据库中的所有表 |
describe_table | 获取任意表的详细架构信息 |
add_database | 动态添加新的数据库连接 |
📋 先决条件
- Node.js 18.0.0或更高版本
- PostgreSQL(中文常译为“波斯特格瑞斯”或直接音译为“PostgreSQL”,在实际应用中通常直接使用其英文原名) 您想要连接的数据库
- Cursor 集成开发环境(IDE) (或任何兼容MCP的集成开发环境)
🚀 快速入门
选项1:简单安装(推荐)
无需克隆或运行 npm install! 只需将此添加到您的 Cursor 配置中:
- 添加到您的
.cursor/mcp.json文件:
{
"mcpServers": {
"multi-database": {
"command": "npx",
"args": ["-y", "multi-database-mcp"]
}
}
}- 重启光标 - 就这样!MCP服务器将在需要时自动下载并运行。
选项2:手动安装
如果您更倾向于手动安装:
# Clone the repository
git clone https://github.com/shivanandham/multi-database-mcp.git
cd multi-database-mcp
# Install dependencies
npm install2. 配置您的数据库
您有两种配置数据库的方法:
选项A:通过AI代理/聊天(推荐)
📹 视频演示: 如何最初添加数据库 - 查看如何使用AI代理/聊天界面添加数据库
只需用自然语言要求您的AI代理添加数据库即可:
- *“添加一个数据库,URL 为 postgresql://user:password@localhost:5432/main_app”*
- *“连接到我的分析数据库,地址为 postgresql://user:password@localhost:5432/analytics”*
该AI代理将自动:
- 测试连接
- 提取数据库名称
- 将其添加到您的配置中
- 使其立即可用
选项B:通过文件配置
复制示例配置并手动编辑:
# Copy the example configuration
cp databases.example.json databases.json然后编辑 databases.json 添加您的数据库连接:
{
"databases": [
{
"name": "main_app",
"type": "postgresql",
"url": "postgresql://user:password@localhost:5432/main_app",
"description": "Main application database"
},
{
"name": "analytics",
"type": "postgresql",
"url": "postgresql://user:password@localhost:5432/analytics",
"description": "Analytics and reporting database"
},
{
"name": "staging",
"type": "postgresql",
"url": "postgresql://user:password@localhost:5432/staging",
"description": "Staging environment database"
}
]
}3. 配置Cursor IDE(仅限手动安装)
如果您选择了手动安装,请将MCP服务器添加到您的Cursor配置中(~/project_root_directory/.cursor/mcp.json):
{
"mcpServers": {
"multi-database": {
"command": "node",
"args": [
"/path/to/multi-database-mcp/server.js"
]
}
}
}4. 重启光标(或:重启光标工具)
重启 Cursor IDE 以加载新的 MCP 服务器。
📹 视频演示: 启动时自动切换/加载数据库 - 查看数据库在MCP服务器启动时如何自动切换/加载
💡 使用示例
列出可用数据库
list_databases切换到数据库
# Switch to specific database
switch_database database_name="analytics"
# Auto-detect from workspace (looks for .cursor/database.json)
switch_database
# Auto-detect from specific workspace path
switch_database workspace_path="/path/to/project"注: 如果你有一个 .cursor/database.json 在您的工作区中,当MCP服务器启动时,它会自动切换到主数据库。
列出当前数据库中的表
list_tables查询数据库
query_database sql="SELECT * FROM users LIMIT 10"获取表模式
describe_table table_name="users"添加新数据库
通过AI代理/聊天: 只需询问您的AI代理: *“添加一个生产数据库,URL 为 postgresql://user:pass@prod.example.com:5432/prod_db”*
通过直接命令:
add_database url="postgresql://user:pass@prod.example.com:5432/prod_db"📹 视频演示: 生产数据库管理 - 了解如何添加生产数据库以及在本地数据库和生产数据库之间进行切换
🔧 配置
数据库配置(databases.json)
每个数据库条目支持:
- 名字数据库的唯一标识符
- 类型数据库类型(目前仅支持“postgresql”)
- 网址PostgreSQL 连接字符串
- 描述人类可读的描述
连接字符串格式
postgresql://username:password@host:port/database_name示例:
- 本地数据库:
postgresql://postgres:password@localhost:5432/mydb - 远程数据库:
postgresql://user:pass@db.example.com:5432/production - 使用SSL:
postgresql://user:pass@host:5432/db?sslmode=require
🛠️ 测试您的设置
测试您的数据库连接:
# Test all database connections
npm test➕ 添加新数据库
方法1:通过AI代理/聊天界面(推荐)
使用 add_database 通过AI代理或聊天界面直接使用工具:
要求:
url- PostgreSQL 连接字符串
可选:
name- 自定义数据库名称(默认使用URL中的数据库名称)description- 可读性强的描述
示例:
# Minimal - just URL (name extracted from URL)
add_database url="postgresql://user:password@localhost:5432/new_database"
# With custom name
add_database name="my_custom_name" url="postgresql://user:password@localhost:5432/new_database"
# With description
add_database url="postgresql://user:password@localhost:5432/new_database" description="My new database"
# Full example with all options
add_database name="production" url="postgresql://user:pass@prod.example.com:5432/prod_db" description="Production database"如果未提供数据库名称,系统将自动从URL中提取(例如,从上述URL中提取出“new_database”)。
方法2:手动配置
编辑 databases.json 并添加一个新条目:
{
"name": "new_database",
"type": "postgresql",
"url": "postgresql://user:password@localhost:5432/new_database",
"description": "My new database"
}使用AI代理/聊天界面的好处:
- ✅ 连接测试 - 在添加之前验证数据库
- ✅(勾选符号,通常表示正确、完成或确认) 自动姓名提取 - 从URL中提取的数据库名称
- ✅ 自动保存 - 更新配置文件
- ✅ 立即可用 - 无需重启
- ✅ 错误处理 - 明确显示无效连接的错误信息
- ✅ 自然语言 - 使用交互式命令添加数据库
- ✅ 人工智能辅助 - 获取连接字符串和故障排除方面的帮助
基于工作区的数据库检测
创建一个 .cursor/database.json 在项目根目录中创建文件以启用自动数据库检测:
{
"primary_database": "luma",
"databases": [
{
"name": "luma",
"type": "postgresql",
"url": "postgresql://postgres@localhost:5432/luma",
"description": "Main project database"
}
]
}好处:
- ✅ 特定于项目的 - 每个项目可以有自己的数据库配置
- ✅ 团队友好型 - 与团队共享数据库配置
- ✅ 自动检测 - 使用
switch_database未指定数据库名称 - ✅ 翻译成中文是:✅(这个符号本身在中文中通常没有特定的含义,它在原文中可能表示“正确”或“已完成”的意思,但直接翻译时仍保留为符号形式,因为中文中没有一个单独的字符或词语能完全对应这个符号的通用含义。)不过,如果需要解释这个符号在中文语境下可能传达的意思,可以翻译为“正确”或“已完成”等,具体取决于上下文。在这里,为了保持原样,直接保留为“✅”。 启动时自动切换 - 当MCP服务器启动时,自动切换到主数据库
- ✅ 版本控制 - 将数据库配置提交到你的项目仓库
🔍 故障排除
常见问题
“未选择数据库”错误
- 使用
switch_database首先选择一个数据库
连接失败
- 检查你的数据库凭据
databases.json - 确保 PostgreSQL 正在运行且可访问
- 验证远程数据库的网络连接
MCP服务器未加载
- 检查您Cursor MCP配置中的路径
- 确保已安装 Node.js 依赖项(
npm install) - 配置更改后重启光标(或:光标管理器)
测试您的设置
# Test database connections
npm test🏗️ 建筑学
多数据库MCP服务器由以下部分组成:
server.js主要MCP服务器实现databases.json数据库配置文件test.js数据库连接测试脚本package.jsonNode.js 依赖项和脚本
🎯 何以与众不同
不同于现有解决方案:
- 没有单独的MCP服务器 - 一台服务器管理所有数据库
- 无需手动配置IDE - 在配置文件中添加数据库,而非在IDE设置中添加
- 无需重启 - 动态切换数据库
- 无连接管理 - 自动连接池管理和清理
专为以下开发者打造:
- 与多个数据库(开发、测试、生产)协同工作
- 想要无缝的AI驱动数据库探索体验
- 需要频繁切换数据库
- 更倾向于配置而非手动设置
🔒 安全考虑事项
- 永远不要承诺
databases.json带有真实凭证进行版本控制 - 使用环境变量存储敏感的连接字符串
- 考虑在生产环境中使用连接池
- 定期更换数据库密码
🤝 贡献/参与
- 为仓库创建分支(或:克隆仓库)
- 创建一个特性分支(
git checkout -b feature/amazing-feature) - 提交你的更改(
git commit -m 'Add amazing feature') - 推送到分支(
git push origin feature/amazing-feature) - 提交一个拉取请求
🚀 维护者指南
如果你正在维护这个软件包,请参阅 DEPLOYMENT.md 翻译为中文是:“部署说明.md” 或 “部署文档.md” 指南适用于:
- 发布到npm
- 版本管理
- 发布工作流程
- 软件包维护
📝 许可证
这个项目遵循MIT许可证授权——详见 许可证 详情请参阅文件。
🙏 致谢
- 建立在 模型上下文协议 框架
- 受人工智能开发环境中统一数据库访问需求的启发
- 感谢MCP社区提供的优秀SDK和文档
📞 支持
- 问题:
- 文档: 维基
______________________________________________________________________
为开发者社区倾心打造
