MCPHub 数据库配置
概述
MCPHub 支持将配置数据存储在 PostgreSQL 数据库中,作为mcp_settings.json 文件配置的替代方案。数据库模式为生产环境和企业级部署提供了更强大的持久化和扩展能力。
为什么使用数据库配置?
核心优势:- ✅ 更好的持久化 - 配置数据存储在专业数据库中,支持事务和数据完整性
- ✅ 高可用性 - 利用数据库复制和故障转移能力
- ✅ 企业级支持 - 符合企业数据管理和合规要求
- ✅ 备份恢复 - 使用成熟的数据库备份工具和策略
环境变量
数据库模式必需变量
简化配置:您只需设置
DB_URL 即可启用数据库模式。MCPHub 会自动检测 DB_URL 是否存在并启用数据库模式。如果需要在设置了 DB_URL 的情况下禁用数据库模式,可以显式设置 USE_DB=false。设置说明
1. 使用 Docker
方案 A:使用外部数据库
如果您已有 PostgreSQL 数据库:方案 B:将 PostgreSQL 作为独立服务
创建docker-compose.yml 文件:
2. 手动设置
步骤 1:设置 PostgreSQL 数据库
步骤 2:安装 MCPHub
步骤 3:设置环境变量
创建.env 文件:
步骤 4:运行迁移(可选)
如果您有现有的mcp_settings.json 文件,可以进行迁移:
步骤 5:启动 MCPHub
从基于文件迁移到数据库
MCPHub 在启用数据库模式首次启动时提供自动迁移功能。您也可以手动运行迁移。自动迁移
当您首次使用USE_DB=true 启动 MCPHub 时:
- MCPHub 连接到数据库
- 检查数据库中是否存在任何用户
- 如果未找到用户,自动从
mcp_settings.json迁移 - 创建所有表并导入所有数据
手动迁移
运行迁移脚本:- ✅ 如果不存在则创建数据库表
- ✅ 导入所有用户(包含哈希密码)
- ✅ 导入所有 MCP 服务器配置
- ✅ 导入所有分组
- ✅ 导入系统配置
- ✅ 导入用户特定配置
- ✅ 跳过已存在的记录(可安全多次运行)
迁移后的配置
在数据库模式下运行时,所有配置更改都存储在数据库中:- 通过
/api/users进行用户管理 - 通过
/api/servers进行服务器管理 - 通过
/api/groups进行分组管理 - 通过
/api/system/config进行系统设置
数据库架构
MCPHub 创建以下表:- users - 用户账户和认证
- servers - MCP 服务器配置
- groups - 服务器分组
- system_config - 系统级设置
- user_configs - 用户特定设置
- vector_embeddings - 向量搜索数据(用于智能路由)
备份和恢复
备份
恢复
切换回基于文件的配置
如果您需要切换回基于文件的配置:- 设置
USE_DB=false或删除DB_URL和USE_DB环境变量 - 重启 MCPHub
- MCPHub 将再次使用
mcp_settings.json
故障排除
连接被拒绝
认证失败
DB_URL 环境变量中的数据库凭据。
迁移失败
- 检查
mcp_settings.json是否存在且为有效的 JSON - 验证数据库连接
- 检查日志获取具体错误信息
- 确保数据库用户具有 CREATE TABLE 权限
表已存在
如果数据库表不存在,会自动创建。如果遇到关于已存在表的错误,请检查:- 之前的迁移是否部分完成
- 手动创建表的冲突
- 如果需要,在数据库配置中使用
synchronize: false运行
环境变量参考
| 变量 | 必需 | 默认值 | 描述 |
|---|---|---|---|
DB_URL | 是* | - | 完整的 PostgreSQL 连接 URL。设置此变量会自动启用数据库模式 |
USE_DB | 否 | 自动 | 显式启用/禁用数据库模式。如果未设置,根据 DB_URL 是否存在自动检测 |
MCPHUB_SETTING_PATH | 否 | - | mcp_settings.json 的路径(用于迁移) |
DB_URL 即可自动启用数据库模式
安全注意事项
- 数据库凭据: 安全存储数据库凭据,使用环境变量或密钥管理
- 网络访问: 仅限 MCPHub 实例访问数据库
- 加密: 在生产环境中使用 SSL/TLS 进行数据库连接:
- 备份: 定期备份您的数据库
- 访问控制: 使用强密码并限制用户权限
性能
数据库模式在以下场景提供更好的性能:- 多个并发用户
- 频繁的配置更改
- 大量服务器/分组
- 单用户设置
- 读取密集型工作负载且更改不频繁
- 开发/测试环境