mysql-mcp

mysql-mcp

2

The MySQL Readonly MCP Server is designed to provide a secure read-only interface to access MySQL databases via MCP. It features a connection pool, query limits, parameterization for security, and formatted outputs. It is suitable for environments needing strict read-only data access control.

MySQL Readonly MCP Server

这是一个基于MCP(Model Context Protocol)的MySQL只读查询服务器,它允许通过安全的只读查询接口访问MySQL数据库。

功能特点

  • 支持MySQL数据库的只读查询操作
  • 使用连接池管理数据库连接
  • 自动限制查询结果数量
  • 支持参数化查询
  • 提供格式化的查询结果输出
  • 内置安全检查,防止非只读操作

环境要求

  • Python 3.10+
  • MySQL 5.7+
  • aiomysql

安装

git clone https://github.com/the-nine-nation/mysql-mcp.git
pip install -e .

使用方法

以cursor为例,将如下字典放入config.json: 其中 sys.executable为python虚拟环境的执行文件,通常名字为python,conda或uv下皆可以 mysql_mcp_py为main.py文件的绝对路径

    "mysql": {
        "command": sys.executable,
        "args": [mysql_mcp_py],
        "env": {
            "MYSQL_ENABLED": "true",
            "MYSQL_HOST": "mysql数据库的ip",
            "MYSQL_PORT": "mysql数据库的端口",
            "MYSQL_DATABASE": "mysql数据库的名称",
            "MYSQL_USERNAME": "mysql数据库的用户名",
            "MYSQL_PASSWORD": "mysql数据库的密码",
            "MYSQL_POOL_MINSIZE": "1",
            "MYSQL_POOL_MAXSIZE": "10",
            "MYSQL_RESOURCE_DESC_FILE": "mysql数据库的资源描述文件路径"
        }
    }

请注意: 1.MYSQL_RESOURCE_DESC_FILE是一个说明,可以将数据库中一些信息放入其中,例如什么表是做什么用的,能够提升模型理解能力. 2.MYSQL_ENABLED默认可以不用填

安全特性

  • 只允许只读操作
  • 防止多语句执行
  • 自动限制查询结果数量
  • 使用参数化查询防止SQL注入

注意事项

  • 确保数据库用户只有只读权限
  • 资源描述文件是必需的,用于定义可用的查询接口
  • 查询结果默认限制为20行,可通过环境变量调整

贡献

欢迎提交Issue和Pull Request。