MySQL Readonly MCP Server

by the-nine-nation

1 stars
318 downloads
Not rated
GitHub

About

An MCP server that allows the model to safely obtain information from the MySQL database.

Details

Author
the-nine-nation
GitHub stars
1
Downloads
318
Categories
Database

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

安装 Python 3.10+ 和 MySQL 5.7+,克隆仓库并执行 pip install -e .。在客户端的 config.json 中配置 command 为 Python 可执行文件,args 为 main.py 的绝对路径,并通过 env 设置 MYSQL_HOST、MYSQL_PORT、MYSQL_DATABASE、MYSQL_USERNAME、MYSQL_PASSWORD 等环境变量。

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。

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.