使用说明
MCP MySQL Server
一个基于 Model Context Protocol (MCP) 的 MySQL 数据库服务器,为 AI 助手提供安全的数据库增删改查能力。
功能特性
- 增删改查:默认支持 INSERT、UPDATE、DELETE、SELECT 等 DML 操作
- DDL 支持:默认允许 CREATE、DROP、ALTER、TRUNCATE 等结构变更操作
- 无查询限制:不限制 SQL 长度、执行超时、参数数量
- 可选只读模式:通过
READ_ONLY=true可限制为仅查询 - 参数化查询:支持参数化查询
提供的工具
| 工具名称 | 描述 |
|---|---|
execute_sql |
执行任意 SQL 语句(默认无操作类型限制) |
get_tables_info |
获取数据库所有表的结构信息 |
get_connection_status |
获取数据库连接状态 |
安装
从 npm 安装(推荐)
npm install -g mcp-mysql-server
全局安装后可直接使用 mcp-mysql-server 命令启动。
从源码安装
git clone https://github.com/Fengqixian/mysql-server-mcp.git
cd mysql-server-mcp
npm install
npm start
本地打包安装
npm install
npm pack
npm install -g ./mcp-mysql-server-1.0.0.tgz
配置
在 Cursor 的 MCP 配置文件中添加此服务器,通过 env 字段配置数据库连接信息。
若从源码运行(未全局安装),将 command 改为 node,并添加 args 指向 index.js 的绝对路径。
环境变量
| 变量名 | 描述 | 默认值 |
|---|---|---|
DB_HOST |
数据库主机地址 | localhost |
DB_PORT |
数据库端口 | 3306 |
DB_USER |
数据库用户名 | root |
DB_PASSWORD |
数据库密码 | - |
DB_NAME |
数据库名称 | - |
READ_ONLY |
设为 true 时仅允许只读查询 |
false |
MCP_SERVER_NAME |
MCP 服务器名称 | mysql-mcp-server |
MCP_SERVER_VERSION |
MCP 服务器版本 | 1.0.0 |
Windows
配置文件路径:%APPDATA%\Cursor\mcp.json
{
"mcpServers": {
"mysql": {
"command": "mcp-mysql-server",
"env": {
"DB_HOST": "localhost",
"DB_PORT": "3306",
"DB_USER": "your_user",
"DB_PASSWORD": "your_password",
"DB_NAME": "your_database"
}
}
}
}
macOS / Linux
配置文件路径:~/.cursor/mcp.json
{
"mcpServers": {
"mysql": {
"command": "mcp-mysql-server",
"env": {
"DB_HOST": "localhost",
"DB_PORT": "3306",
"DB_USER": "your_user",
"DB_PASSWORD": "your_password",
"DB_NAME": "your_database"
}
}
}
}
只读模式
若仅需查询、不允许写入,在 env 中添加:
"READ_ONLY": "true"
使用示例
配置完成后,AI 助手可以使用以下方式操作数据库:
查询数据
查询用户表的前 10 条数据:
SELECT * FROM users LIMIT 10
插入数据
新增用户:
INSERT INTO users (name, email) VALUES (?, ?)
参数: ["张三", "zhangsan@example.com"]
更新数据
更新用户名称:
UPDATE users SET name = ? WHERE id = ?
参数: ["李四", 1]
删除数据
删除指定用户:
DELETE FROM users WHERE id = ?
参数: [1]
查看表结构
获取数据库中所有表的结构信息
参数化查询
查询指定用户:
SELECT * FROM users WHERE id = ?
参数: [1]
安全说明
默认模式
默认不做 SQL 操作类型、长度、超时等限制,实际权限由 MySQL 数据库账号决定。请确保连接账号具备合适的权限,避免在生产环境使用过高权限账号。
只读模式
设置 READ_ONLY=true 后,将拦截 INSERT、UPDATE、DELETE 及 CREATE/DROP/ALTER 等写操作和 DDL。
基础校验
- SQL 不能为空
- 参数必须是数组,元素类型为 string、number、boolean 或 null
- 数据库错误返回原始错误码和信息,便于排查
项目结构
mysql-server-mcp/
├── src/
│ ├── server.js # MCP 服务器实现
│ ├── database.js # 数据库连接和查询管理
│ ├── validators.js # SQL 验证器
│ └── config.js # 配置管理
├── index.js # 入口文件
├── package.json
└── README.md
依赖
@modelcontextprotocol/sdk- MCP 协议 SDKmysql2- MySQL 数据库驱动dotenv- 环境变量管理express- Web 框架(可选)helmet- 安全中间件cors- 跨域支持express-rate-limit- 请求限流
开发
# 开发模式(热重载)
npx nodemon index.js
# 生产模式
npm start
发布到 npm
维护者发布新版本:
# 1. 检查将要打入包内的文件
npm run pack:check
# 2. 登录 npm(首次)
npm login
# 3. 更新版本号并发布
npm version patch # 或 minor / major
npm publish
# 4. 验证全局安装
npm install -g mcp-mysql-server
mcp-mysql-server
发布前会自动执行 pack:check,确认 files 字段包含的文件无误。