返回市场
通用数据库MCP服务器

通用数据库MCP服务器

作者:xiaoshi79154 星标更新:2025-04-29

项目介绍

通用数据库MCP服务器

这是一个支持连接多种关系型数据库系统的通用数据库MCP(模型上下文协议)服务器,提供数据库结构信息,并执行只读SQL查询。

功能

  • 多数据库支持:MySQL、PostgreSQL、Oracle、SQL Server 和 SQLite
  • 元数据访问获取数据库表结构、字段注释、主键、索引和外键信息
  • 样本数据查看快速查看每个表的样本数据
  • 只读SQL查询安全地执行任何只读SQL查询
  • 数据隐私保护自动屏蔽敏感信息以保护私有数据
  • MCP协议通信通过标准MCP协议与大型语言模型进行通信
  • SSE传输使用服务器推送事件(SSE)传输,无需依赖WebSocket

系统需求

  • Python 3.10或更高版本
  • 需要的适用数据库服务器:MySQL、PostgreSQL、Oracle、SQL Server 或 SQLite

快速开始

直接安装

  1. 克隆仓库:

    git clone https://github.com/xiaoshi7915/universal-db-mcp-server.git
    cd universal-db-mcp-server
    
  2. 安装依赖:

    pip install -r requirements.txt
    
  3. 启动服务器:

    ./start.sh --db-host localhost --db-user root --db-password password --db-name mydatabase
    

Docker部署

  1. 构建Docker镜像:

    docker build -t universal-db-mcp-server .
    
  2. 运行Docker容器:

    docker run -p 8088:8088 -e DB_HOST=host.docker.internal -e DB_USER=root -e DB_PASSWORD=password -e DB_NAME=mydatabase universal-db-mcp-server
    

配置选项

可以通过环境变量或命令行参数来配置服务器:

参数环境变量描述默认值
--hostHOST服务器主机地址0.0.0.0
--portPORT服务器端口8088
--db-typeDBTYPE数据库类型MySQL
--db-hostDBHOST数据库主机地址localhost
--db-portDBPORT数据库端口3306
--db-userDBUSER数据库用户名root
--db-passwordDBPASSWORD数据库密码(空)
--db-nameDBNAME数据库名称(空)
--verbose-启用详细日志输出false

与Claude集成

要将此服务器与Claude集成,请在claude_desktop_config.json文件中添加以下配置:

{
  "mcpServers": {
    "db": {
      "command": "/path/to/start.sh",
      "args": [
        "--db-host", "localhost",
        "--db-user", "root",
        "--db-password", "password",
        "--db-name", "mydatabase"
      ],
      "env": {
        "DB_TYPE": "mysql"
      }
    }
  }
}

Docker Compose部署

为了更完整的部署环境,可以使用Docker Compose:

version: '3'

services:
  db-mcp-server:
    build: .
    ports:
      - "8088:8088"
    environment:
      - DB_TYPE=mysql
      - DB_HOST=mysql
      - DB_PORT=3306
      - DB_USER=root
      - DB_PASSWORD=rootpassword
      - DB_NAME=testdb
    depends_on:
      - mysql

  mysql:
    image: mysql:8.0
    environment:
      - MYSQL_ROOT_PASSWORD=rootpassword
      - MYSQL_DATABASE=testdb
    volumes:
      - mysql-data:/var/lib/mysql

volumes:
  mysql-data:

安全注意事项

  • 服务器默认监听所有网络接口(0.0.0.0)。在生产环境中,建议仅监听localhost或使用反向代理。
  • 敏感信息(如密码、个人身份信息)将被自动屏蔽,但在生产环境中建议使用只有读权限的数据库用户。
  • 仅支持只读查询,禁止修改数据库操作。

许可证

MIT许可证

贡献

欢迎提交问题和拉取请求!