@morris131/mysql-mcp-server
v1.0.5
Published
MySQL MCP Server - stdio protocol for MySQL database operations with Windows support
Maintainers
Readme
MySQL MCP Server
基于模型上下文协议(MCP)的 MySQL 数据库操作服务器,支持单数据库和多数据库两种模式。
特性
- 智能模式 - 根据配置自动切换单数据库/多数据库模式
- 执行 SQL 查询 - 支持 SELECT、INSERT、UPDATE、DELETE 等操作
- 列出数据库 - 查看所有可用数据库(仅多数据库模式)
- 列出表 - 查看指定数据库中的所有表
- 描述表结构 - 获取表的详细结构信息
- 连接超时 - 可配置连接超时时间(默认 10 秒)
- 自动重试 - 连接错误时自动重试(默认 2 次)
- 保活机制 - TCP Keep-Alive 防止连接断开
- 安全 - 基于环境变量配置,无硬编码凭据
- 高性能 - 基于 TypeScript 和连接池构建
配置
服务器通过环境变量进行数据库配置:
| 环境变量 | 说明 | 默认值 |
| :--- | :--- | :--- |
| DB_HOST | MySQL 主机地址 | 127.0.0.1 |
| DB_USER | MySQL 用户名 | root |
| DB_PASSWORD | MySQL 密码 | 空 |
| DB_PORT | MySQL 端口 | 3306 |
| DB_NAME | 数据库名称(可选,详见下方模式说明) | 空 |
| DB_CONNECTION_LIMIT | 连接池大小 | 3 |
| DB_CONNECTION_TIMEOUT | 连接超时时间(毫秒) | 10000(10秒) |
| DB_KEEP_ALIVE_DELAY | TCP Keep-Alive 延迟(毫秒) | 30000(30秒) |
| DB_MAX_RETRIES | 最大重试次数 | 2 |
| DB_RETRY_DELAY | 重试间隔(毫秒) | 1000(1秒) |
模式说明
单数据库模式(配置了 DB_NAME)
当设置了 DB_NAME 时,服务器以单数据库模式运行:
execute_sql只需sql参数list_tables无需参数describe_table只需table参数list_databases工具不可用
多数据库模式(未配置 DB_NAME)
当未设置 DB_NAME 时,服务器以多数据库模式运行:
execute_sql需要同时提供database和sql参数list_tables需要提供database参数describe_table需要同时提供database和table参数list_databases工具可用
使用方式
OpenCode 配置
在 MCP 配置中添加:
{
"mcp": {
"mysql": {
"type": "local",
"command": [
"npx",
"-y",
"@morris131/mysql-mcp-server"
],
"environment": {
"DB_HOST": "your_mysql_host",
"DB_PORT": "3306",
"DB_USER": "your_username",
"DB_PASSWORD": "your_password",
"DB_NAME": "your_database"
}
}
}
}请将凭据替换为实际值。
Claude Code 配置
运行以下命令添加 MCP 服务器:
claude mcp add mysql -e DB_HOST=localhost -e DB_USER=your_username -e DB_PASSWORD=your_password -e DB_PORT=3306 -- npx -y @morris131/mysql-mcp-server可用工具
单数据库模式
execute_sql
执行 MySQL 查询。
参数:
sql(必填):要执行的 SQL 语句
示例:
{
"sql": "SELECT * FROM users WHERE id = ?"
}list_tables
列出已配置数据库中的所有表。
参数: 无
示例: {}
describe_table
获取表结构的详细信息。
参数:
table(必填):表名
示例:
{
"table": "users"
}多数据库模式
list_databases
列出 MySQL 服务器上所有可用的数据库。
参数: 无
示例: {}
execute_sql
在指定数据库上执行 MySQL 查询。
参数:
database(必填):数据库名sql(必填):要执行的 SQL 语句
示例:
{
"database": "testdb",
"sql": "SELECT * FROM users WHERE id = ?"
}list_tables
列出指定数据库中的所有表。
参数:
database(必填):数据库名
示例:
{
"database": "testdb"
}describe_table
获取表结构的详细信息。
参数:
database(必填):数据库名table(必填):表名
示例:
{
"database": "testdb",
"table": "users"
}