MCP多数据库工具包
使用1台MCP服务器连接到多个数据库。
概述
此MCP(模型上下文协议)服务器提供了一个统一的网关,可以同时与多个数据库交互。它支持PostgreSQL、MongoDB和Redis,并根据您的配置自动生成工具。
建筑
- 单MCP服务器:一个服务器实例处理所有数据库连接
- 动态工具生成:工具会根据您的
config.yaml - 连接池:高效的连接管理,实现最佳性能
- SSE/HTTP协议:用于远程服务器访问的流式HTTP传输
- 安全凭据:敏感数据的环境变量
安装
先决条件
- Python 3.8+
- 点
设置
- 克隆存储库:
git clone https://github.com/trupti79916/mcp-multiple-db-toolbox.git
cd mcp-multiple-db-toolbox- 安装依赖项:
pip install -r requirements.txt- 配置您的数据库:
cp .env.example .env
# Edit .env with your actual credentials- 更新
config.yaml使用您的数据库配置(请参阅配置部分)
配置
config.yaml
只配置您需要的数据库! 您不必设置所有数据库类型,只需取消注释并配置要使用的类型即可。
MCP服务器将仅为您配置的数据库自动创建工具。
示例1:仅限PostgreSQL
databases:
- id: "prod_postgres"
type: "postgres"
host: "localhost"
port: 5432
user: "${PROD_POSTGRES_USER}"
password: "${PROD_POSTGRES_PASSWORD}"
dbname: "prod"示例2:MongoDB Atlas(云)
databases:
- id: "atlas_mongo"
type: "mongodb"
uri: "${MONGODB_ATLAS_URI}"
database: "production"以...为背景 .env:
MONGODB_ATLAS_URI=mongodb+srv://username:password@cluster0.xxxxx.mongodb.net/?retryWrites=true&w=majority示例3:多个数据库
databases:
- id: "prod_postgres"
type: "postgres"
host: "localhost"
port: 5432
user: "${PROD_POSTGRES_USER}"
password: "${PROD_POSTGRES_PASSWORD}"
dbname: "prod"
- id: "atlas_mongo"
type: "mongodb"
uri: "${MONGODB_ATLAS_URI}"
database: "production"
- id: "cache_redis"
type: "redis"
host: "localhost"
port: 6379
db: 0示例3:多个PostgreSQL实例
databases:
- id: "prod_postgres"
type: "postgres"
host: "prod-db.example.com"
port: 5432
user: "${PROD_POSTGRES_USER}"
password: "${PROD_POSTGRES_PASSWORD}"
dbname: "prod"
- id: "analytics_postgres"
type: "postgres"
host: "analytics-db.example.com"
port: 5432
user: "${ANALYTICS_POSTGRES_USER}"
password: "${ANALYTICS_POSTGRES_PASSWORD}"
dbname: "analytics"环境变量
创建一个 .env 文件基于 .env.example:
# PostgreSQL
PROD_POSTGRES_USER=your_username
PROD_POSTGRES_PASSWORD=your_password
# Add other credentials as needed备注:价值观 config.yaml 使用 ${VAR_NAME} 语法将替换为环境变量。
运行服务器
使用SSE传输启动MCP服务器:
python main.py服务器将:
- 从加载配置
config.yaml - 验证环境变量
- 初始化数据库连接器
- 使用HTTP/SSE协议启动MCP服务器
- 监听传入请求
可用工具
工具会根据您的数据库配置自动生成:
PostgreSQL工具
query_postgres
对PostgreSQL数据库执行SQL查询。
参数:
db_id(str):数据库标识符(例如“prod_postgres”)query(str):要执行的SQL查询params(str,可选):查询参数的JSON字符串
例子:
query_postgres(
db_id="prod_postgres",
query="SELECT * FROM users WHERE id = %s",
params='[1]'
)MongoDB工具
find_mongodb
在MongoDB集合中查找文档。
参数:
db_id(str):数据库标识符(例如“dev_mongo”)collection(str):集合名称query(str):以JSON字符串形式查询筛选器projection(str,可选):投影为JSON字符串
例子:
find_mongodb(
db_id="dev_mongo",
collection="users",
query='{"age": {"$gt": 18}}',
projection='{"name": 1, "email": 1}'
)insert_mongodb
将文档插入MongoDB集合。
参数:
db_id(str):数据库标识符collection(str):集合名称document(str):作为JSON字符串插入的文档
例子:
insert_mongodb(
db_id="dev_mongo",
collection="users",
document='{"name": "John", "age": 30}'
)Redis工具
get_redis
从Redis缓存中获取值。
参数:
db_id(str):数据库标识符(例如“cache_redis”)key(str):要检索的密钥
set_redis
在Redis缓存中设置一个值。
参数:
db_id(str):数据库标识符key(str):设置键value(str):要存储的值expiry(int,可选):过期时间(秒)
delete_redis
从Redis缓存中删除密钥。
参数:
db_id(str):数据库标识符key(str):删除键
项目结构
mcp-multiple-db-toolbox/
├── main.py # Main MCP server with FastMCP
├── config.yaml # Database configurations
├── config_parser.py # Configuration loader with validation
├── requirements.txt # Python dependencies
├── .env.example # Environment variables template
├── connectors/ # Database connector modules
│ ├── postgres.py # PostgreSQL connector
│ ├── mongodb.py # MongoDB connector
│ └── redis.py # Redis connector
└── README.md错误处理
服务器包括全面的错误处理:
- 配置错误:启动时验证config.yaml和环境变量
- 连接错误:妥善处理数据库连接失败
- 查询错误:格式错误查询的详细错误消息
- 日志记录:记录所有操作以进行调试
常见用例
用例1:仅限PostgreSQL
非常适合只使用PostgreSQL数据库的团队:
- 在中仅配置PostgreSQL数据库
config.yaml - 创建的工具:
query_postgres对于每个数据库 - 仅设置PostgreSQL环境变量
用例2:微服务架构
不同的服务使用不同的数据库:
- 为主要应用程序数据配置Postgres
- 配置MongoDB用于文档存储
- 配置Redis进行缓存
- 所有这些都可以通过一个MCP服务器访问!
用例3:多环境
相同的数据库类型,不同的环境:
databases:
- id: "prod_postgres"
# Production database config
- id: "staging_postgres"
# Staging database config
- id: "dev_postgres"
# Development database config用例4:分析+操作
用于不同目的的单独数据库:
- 用于事务数据的PostgreSQL操作
- 分析MongoDB的聚合数据
- Redis用于实时缓存
添加新数据库
- 向添加新条目
config.yaml:
databases:
- id: "new_db"
type: "postgres" # or mongodb, redis
# ... connection details- 在中设置所需的环境变量
.env
- 重新启动服务器
工具将自动生成!
发展
测试配置
测试您的配置:
python config_parser.py添加对新数据库类型的支持
- 在中创建新连接器
connectors/ - 在中添加工具功能
main.py使用@mcp.tool()装饰器 - 更新配置验证
config_parser.py
许可证
看 许可证 文件以获取详细信息。
贡献
欢迎投稿!请随时提交拉取请求。
