多数据库统一接口服务

MCP Database Server 是一个 Python 3 应用程序,提供统一的接口来处理多个数据库后端的本地数据库操作,包括 SQLite、PostgreSQL、MySQL 和 MongoDB,并可选择集成 Redis 进行查询结果缓存。

  • by carolynf2
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 carolynf2/mcp-database-server

使用说明

MCP数据库服务器

MCP数据库服务器 是一个Python 3应用程序,它提供了一个统一的接口,用于处理跨多个数据库后端的本地数据库操作,包括SQLite、PostgreSQL、MySQL和MongoDB。它可以选择与Redis集成以缓存查询结果。

特性

  • 针对多个数据库的统一API:
    支持SQLite(始终启用),如果安装了驱动程序,还支持PostgreSQL、MySQL(通过 pymysql)以及MongoDB。

  • 可插拔缓存:
    与Redis集成,用于缓存查询结果,以加快重复查询的速度。

  • 自动配置:
    加载合理的默认值,但允许完全自定义配置。

  • 可扩展架构:
    易于扩展以支持其他数据库或自定义操作。

  • 登录中:
    用于所有操作和错误处理的内置日志记录。

支持的数据库和要求

  • SQLite: 标准库,始终启用。
  • PostgreSQL: 需要 psycopg2
  • MySQL: 需要 pymysql
  • MongoDB: 需要 pymongo
  • Redis(可选,用于缓存): 需要 redis

根据需要安装可选依赖项:

pip install psycopg2 pymysql pymongo redis

用法

运行服务器

直接运行脚本:

python mcp_database_server.py

这将执行 main() 函数,它提供了SQLite查询的示例用法。

示例请求

客户端请求是一个Python字典,其结构如下:

{
    "db_type": "sqlite",           # One of: 'sqlite', 'postgresql', 'mysql', 'mongodb'
    "operation": "select",         # Database operation, e.g., 'select', 'insert', etc.
    "query": "SELECT * FROM users WHERE id = ?",  # SQL or Mongo query
    "parameters": [1],             # Parameters for the query (dict for MongoDB)
    "cache_key": "user_1"          # Optional: cache key for Redis
}

输出示例

{
  "status": "success",
  "data": [
    {"name": "users"},
    {"name": "orders"}
  ],
  "from_cache": false,
  "timestamp": "1620000000.0"
}

自定义配置

您可以将自定义配置字典传递给 MCPDatabaseServer(config=...) 覆盖数据库设置、凭据或启用/禁用特定后端。

错误处理

如果发生错误,响应将具有:

{
  "status": "error",
  "error": "Error message here",
  "timestamp": "1620000000.0"
}

延伸

  • 通过实现新的处理程序添加新的数据库类型(_handle_newdb)和更新 _route_request.
  • 根据需要添加预处理/后处理逻辑。

安全警告

不要将此服务器直接暴露给不受信任的客户端!
此程序适用于本地/服务器端使用,并假定输入可信。如果暴露于网络或不受信任的用户,则必须对其进行适当的沙盒和验证,以避免SQL注入和其他安全风险。

许可证

麻省理工学院 (或指定您自己的许可证)