多数据库连接服务器

db-mcp-server是一个支持MySQL、PostgreSQL、MongoDB和SQLite数据库的连接服务器,每个实例连接一个数据库,无需Docker。

  • by stucchi
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 stucchi/db-mcp-server

使用说明

db-mcp服务器

用于MySQL、PostgreSQL、MongoDB和SQLite数据库的MCP服务器。每个数据库一个实例,不需要Docker。

安装

uvx db-mcp-server

配置

通过环境变量进行配置。每个实例都连接到一个数据库。

MySQL

变量 必填 默认 描述
DB_TYPE 是 -- mysql
DB_DATABASE 是 -- 数据库名称
DB_PASSWORD 是 -- 密码
DB_HOST 没有 localhost 主持人
DB_PORT 没有 3306 港口
DB_USER 没有 root 用户
DB_MODE 没有 read-only read-only 或 read-write

PostgreSQL

变量 必填 默认 描述
DB_TYPE 是 -- postgresql
DB_DATABASE 是 -- 数据库名称
DB_PASSWORD 是 -- 密码
DB_HOST 没有 localhost 主持人
DB_PORT 没有 5432 港口
DB_USER 没有 postgres 用户
DB_MODE 没有 read-only read-only 或 read-write

MongoDB

变量 必填 默认 描述
DB_TYPE 是 -- mongodb
DB_DATABASE 是 -- 数据库名称
DB_URL 是 -- 连接URL(mongodb://...)
DB_MODE 没有 read-only read-only 或 read-write

SQLite

变量 必填 默认 描述
DB_TYPE 是 -- sqlite
DB_PATH 是 -- 路径 .db 文件(本地或远程SSH)
DB_DATABASE 否 文件名 显示名称
DB_MODE 没有 read-only read-only 或 read-write

SSH隧道(MySQL/PostgreSQL)

可选择通过SSH堡垒主机连接。集 SSH_HOST 激活。

对于 SSH上的SQLite,遥控器 .db 文件在查询前通过SFTP下载。在 read-write 模式下,关闭时将更改上传回。

变量 必填 默认 描述
SSH_HOST 否 -- SSH堡垒主机(激活隧道)
SSH_PORT 没有 22 SSH端口
SSH_USER 否 当前操作系统用户 SSH用户名
SSH_KEY 否 -- 私钥路径(~/.ssh/id_rsa)
SSH_PASSWORD 无 -- SSH密码(如果没有密钥)

至少一个 SSH_KEY 或 SSH_PASSWORD 当需要时 SSH_HOST 已设置。MongoDB不支持SSH隧道。

在.mcp.json中的用法

SQLite(本地)

{
  "mcpServers": {
    "db-local": {
      "command": "uvx",
      "args": ["db-mcp-server"],
      "env": {
        "DB_TYPE": "sqlite",
        "DB_PATH": "/path/to/database.db"
      }
    }
  }
}

SSH上的SQLite

{
  "mcpServers": {
    "db-remote": {
      "command": "uvx",
      "args": ["db-mcp-server"],
      "env": {
        "DB_TYPE": "sqlite",
        "DB_PATH": "/remote/path/to/database.db",
        "SSH_HOST": "server.example.com",
        "SSH_USER": "deploy",
        "SSH_KEY": "~/.ssh/id_rsa"
      }
    }
  }
}
{
  "mcpServers": {
    "db-prod": {
      "command": "uvx",
      "args": ["db-mcp-server"],
      "env": {
        "DB_TYPE": "mysql",
        "DB_MODE": "read-only",
        "DB_HOST": "db.example.com",
        "DB_PORT": "3306",
        "DB_USER": "root",
        "DB_PASSWORD": "secret",
        "DB_DATABASE": "myapp"
      }
    }
  }
}

使用SSH隧道

{
  "mcpServers": {
    "db-behind-bastion": {
      "command": "uvx",
      "args": ["db-mcp-server"],
      "env": {
        "DB_TYPE": "postgresql",
        "DB_HOST": "10.0.0.5",
        "DB_PORT": "5432",
        "DB_USER": "postgres",
        "DB_PASSWORD": "secret",
        "DB_DATABASE": "myapp",
        "SSH_HOST": "bastion.example.com",
        "SSH_USER": "deploy",
        "SSH_KEY": "~/.ssh/id_rsa"
      }
    }
  }
}

对于多个数据库,添加多个实例:

{
  "mcpServers": {
    "db-prod": {
      "command": "uvx",
      "args": ["db-mcp-server"],
      "env": { "DB_TYPE": "mysql", "DB_DATABASE": "prod", "..." : "..." }
    },
    "db-analytics": {
      "command": "uvx",
      "args": ["db-mcp-server"],
      "env": { "DB_TYPE": "postgresql", "DB_DATABASE": "analytics", "..." : "..." }
    },
    "db-staging": {
      "command": "uvx",
      "args": ["db-mcp-server"],
      "env": { "DB_TYPE": "mongodb", "DB_DATABASE": "staging", "..." : "..." }
    }
  }
}

工具

MySQL

  • 怎么翻译 --执行只读SQL(SELECT、SHOW、DESCRIBE、EXPLAIN、WITH)
  • 执行 --执行写SQL(INSERT、UPDATE、DELETE)--需要 DB_MODE=read-write
  • 描述 --描述表格结构
  • list_tables --列出所有表格
  • 状态 --显示连接信息

PostgreSQL

  • 怎么翻译 --执行只读SQL(SELECT、SHOW、DESCRIBE、EXPLAIN、WITH)
  • 执行 --执行写SQL(INSERT、UPDATE、DELETE)--需要 DB_MODE=read-write
  • 描述 --描述表结构(来自information_schema的列信息)
  • list_tables --列出公共架构中的所有表
  • 状态 --显示连接信息

SQLite

  • 怎么翻译 --执行只读SQL(SELECT、SHOW、DESCRIBE、EXPLAIN、WITH)
  • 执行 --执行写SQL(INSERT、UPDATE、DELETE)--需要 DB_MODE=read-write
  • 描述 --描述表结构(PRAGMA table_info)
  • list_tables --列出所有表格
  • 状态 --显示连接信息

MongoDB

  • 怎么翻译 --在集合中查找文档
  • 描述 --收藏统计数据($collStats)
  • list_collections --列出所有收藏
  • 合计 --执行聚合管道($out/$merge在只读时被阻止)
  • 状态 --显示连接信息

许可证

麻省理工学院