MySQL数据库连接服务

一个连接AI代理与MySQL数据库的服务,支持通过自然语言进行数据库模式探索、数据查询和SQL执行。

  • by xsg22
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 xsg22/mcp-mysql-explorer

使用说明

MCP MySQL服务器

A. 模型上下文协议(MCP) 将AI代理(Cursor、Claude Desktop等)连接到MySQL数据库的服务器,通过自然语言实现模式探索、数据查询和SQL执行。

中文文档: README.zh.md

特征

工具 说明
list_tables 列出数据库中的所有表
describe_table 查看带有列类型和注释的表架构
query 执行只读查询(SELECT/SHOW/DESCRIBE/EXPLAIN)
execute_sql 执行写操作(INSERT/UPDATE/DELETE/DDL),在只读模式下禁用
get_table_indexes 显示表的所有索引
get_create_table 获取CREATE TABLE语句
get_database_info 获取数据库概述(版本、大小、表数)

安装

pip install mcp-mysql-explorer

游标中的用法

打开 光标设置->MCP,添加新服务器。配置数据库连接的三种方法。还支持通过堡垒/跳转主机的SSH隧道。

选项1:命令行参数(推荐)

{
  "mcpServers": {
    "mysql": {
      "command": "mcp-mysql-explorer",
      "args": [
        "--host", "your-mysql-host",
        "--port", "3306",
        "--user", "your-user",
        "--password", "your-password",
        "--database", "your-database"
      ]
    }
  }
}

显式启用写入模式:

{
  "mcpServers": {
    "mysql": {
      "command": "mcp-mysql-explorer",
      "args": [
        "--host", "your-mysql-host",
        "--database", "your-database",
        "--allow-write"
      ]
    }
  }
}

如果数据库只能通过SSH堡垒访问,请添加 --ssh-* 论据:

{
  "mcpServers": {
    "mysql": {
      "command": "mcp-mysql-explorer",
      "args": [
        "--host", "mysql.internal",
        "--port", "3306",
        "--user", "your-db-user",
        "--password", "your-db-password",
        "--database", "your-database",
        "--ssh-host", "bastion.example.com",
        "--ssh-port", "22",
        "--ssh-user", "your-ssh-user",
        "--ssh-private-key", "/Users/you/.ssh/id_rsa"
      ]
    }
  }
}

在SSH模式下, --host / MYSQL_HOST 是从SSH服务器看到的MySQL地址。SSH隧道在以下情况下自动启用 --ssh-host 或 MYSQL_SSH_HOST 已设置。您可以使用以下命令显式禁用它 --ssh-enabled false.

选项2:环境变量

{
  "mcpServers": {
    "mysql": {
      "command": "mcp-mysql-explorer",
      "env": {
        "MYSQL_HOST": "your-mysql-host",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "your-user",
        "MYSQL_PASSWORD": "your-password",
        "MYSQL_DATABASE": "your-database",
        "MYSQL_READ_ONLY": "true",
        "MYSQL_SSH_HOST": "bastion.example.com",
        "MYSQL_SSH_PORT": "22",
        "MYSQL_SSH_USER": "your-ssh-user",
        "MYSQL_SSH_PRIVATE_KEY": "/Users/you/.ssh/id_rsa"
      }
    }
  }
}

SSH环境变量:

环境变量 描述
MYSQL_SSH_ENABLED 启用SSH隧道(true/false)。默认为启用 MYSQL_SSH_HOST 已设置
MYSQL_SSH_HOST SSH堡垒/跳转主机
MYSQL_SSH_PORT SSH端口,默认为 22
MYSQL_SSH_USER SSH用户名
MYSQL_SSH_PASSWORD SSH密码
MYSQL_SSH_PRIVATE_KEY SSH私钥的路径
MYSQL_SSH_PRIVATE_KEY_PASSWORD SSH私钥密码
MYSQL_SSH_LOCAL_HOST 本地转发绑定主机,默认为 127.0.0.1
MYSQL_SSH_LOCAL_PORT 本地转发绑定端口,默认为 0 用于自动分配

选项3: .env 文件

创建一个 .env 工作目录中的文件:

MYSQL_HOST=your-mysql-host
MYSQL_PORT=3306
MYSQL_USER=your-user
MYSQL_PASSWORD=your-password
MYSQL_DATABASE=your-database
MYSQL_READ_ONLY=true
MYSQL_SSH_HOST=bastion.example.com
MYSQL_SSH_USER=your-ssh-user
MYSQL_SSH_PRIVATE_KEY=/Users/you/.ssh/id_rsa

然后简单地说:

{
  "mcpServers": {
    "mysql": {
      "command": "mcp-mysql-explorer"
    }
  }
}

优先级:命令行参数>环境变量> .env 文件

在Claude Desktop中的使用

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "mysql": {
      "command": "mcp-mysql-explorer",
      "args": [
        "--host", "your-mysql-host",
        "--user", "your-user",
        "--password", "your-password",
        "--database", "your-database"
      ]
    }
  }
}

手动运行

# With command-line arguments
mcp-mysql-explorer --host localhost --user root --password secret --database mydb

# Explicitly allow write operations
mcp-mysql-explorer --host localhost --user root --password secret --database mydb --allow-write

# Through an SSH bastion
mcp-mysql-explorer --host mysql.internal --user root --password secret --database mydb \
  --ssh-host bastion.example.com --ssh-user deploy --ssh-private-key ~/.ssh/id_rsa

# With .env file
mcp-mysql-explorer

# As a Python module
python -m mcp_mysql_explorer --host localhost --database mydb

测试

# Run unit tests (no real database needed)
python scripts/run_tests.py
# Optional manual smoke check (reads credentials from env only)
# Required env: MYSQL_HOST, MYSQL_PORT, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE
python scripts/manual_smoke_check.py --mode both

安全说明

  • 这 query 该工具只允许SELECT/SHOW/DESCRIBE/EXPLAIN语句。
  • 默认情况下启用只读模式(MYSQL_READ_ONLY=true).
  • 要启用写入,请设置 MYSQL_READ_ONLY=false 或通过 --allow-write.
  • 这 execute_sql 只有禁用只读模式时,该工具才能运行写操作。
  • 默认情况下,查询结果的上限为1000行。
  • 表/列标识符被回溯包装以防止SQL注入。

许可证

麻省理工学院