Enables interaction with MySQL databases, providing tools for connection management across multiple data sources, executing SQL queries and modification statements, and inspecting database structures and execution plans.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MySQL MCP Servershow me the schema of the users table"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🐬 MySQL MCP Server
简体中文 | English
一个用于 MySQL 数据库操作的 Model Context Protocol (MCP) 服务器。
✨ 功能特性
这个 MCP 服务器提供了以下工具来与 MySQL 数据库交互:
🔌 连接管理 (支持多连接)
connect - 建立命名数据库连接,支持同时管理多个连接
list_connections - 列出所有已建立的连接及其状态
switch_connection - 切换当前活动连接
disconnect - 断开指定连接
📊 查询操作
query - 执行 SQL 查询语句(SELECT)
execute - 执行 SQL 修改语句(INSERT, UPDATE, DELETE 等)
explain - 查看 SQL 查询语句的执行计划,用于性能分析和优化
🗄️ 数据库管理
list_databases - 列出所有数据库
list_tables - 列出指定数据库中的所有表
describe_table - 查看表结构
📦 安装
通过 npm 安装(推荐)
从源码构建
🚀 使用方法
在 Claude Code 中配置
提供多种配置方式:
方式一:使用 npx(推荐,无需全局安装)
编辑配置文件 ~/.claude/settings.json,添加以下配置:
方式二:使用命令行配置
在终端执行以下命令:
⚙️ 配置说明
command: 执行命令(npx)args: 命令参数["-y", "@nolimit35/mysql-mcp-server"]env: 环境变量配置MYSQL_DATASOURCES: 数据源配置,格式为|连接名|连接字符串;,可配置多个数据源用分号分隔MYSQL_DANGER_MODE: 危险模式开关,设置为"true"允许执行修改操作(INSERT/UPDATE/DELETE 等)LOG_LEVEL: 日志级别,可选值:DEBUG、INFO(默认)、WARN、ERROR、OFFLOG_COLORS: 是否启用彩色日志输出,默认为"true"
📝 数据源配置格式
示例:
配置完成后,重启 Claude Code 使配置生效。
💡 使用示例
📚 基础操作
连接数据库 (从预配置数据源):
连接到名为 dev 的数据源⚠️ 注意:
connect工具只能连接到通过环境变量MYSQL_DATASOURCES预配置的数据源。 如需添加新数据源,请在配置文件中修改MYSQL_DATASOURCES环境变量并重启 Claude Code。查询数据:
查询test数据库中users表的所有数据列出数据库:
列出所有可用的数据库查看表结构:
查看users表的结构执行插入操作 (需要危险模式):
向users表插入一条记录,name为'John',age为30,并启用危险模式执行更新操作 (需要危险模式):
更新users表中id为1的记录,设置age为31,启用危险模式查看执行计划:
查看这条SQL语句的执行计划: SELECT * FROM users WHERE age > 25
🔄 多连接管理示例
场景1: 跨环境数据对比
场景2: 数据迁移
场景3: 多项目管理
🛠️ 工具详情
🔌 连接管理工具
connect 🔗
连接到预配置的 MySQL 数据源
⚠️ 重要: 此工具只能连接到通过环境变量 MYSQL_DATASOURCES 预配置的数据源。服务器启动时会自动初始化所有预配置的连接。
参数:
connectionName(string, 必需) - 要连接的数据源名称(必须是在环境变量MYSQL_DATASOURCES中预配置的名称)
功能说明:
连接到预配置数据源并设为当前活动连接
验证连接是否可用
自动处理连接切换
配置数据源:
在配置文件的 env 中设置 MYSQL_DATASOURCES:
数据源格式: |连接名|username:password@host:port/database
port 和 database 是可选的,默认端口为 3306
多个数据源用分号(;)分隔
示例:
|local|root:pass@localhost示例:
|prod|user:pass@192.168.1.100:3306/mydb
注意事项:
服务器启动时会自动连接所有预配置的数据源
第一个成功连接的数据源会自动设为当前活动连接
如需添加新数据源,需修改配置文件并重启服务
连接失败时会提供详细的配置指导
list_connections 📋
列出所有已建立的数据库连接及其状态
参数: 无
返回示例:
switch_connection 🔀
切换当前活动的数据库连接
参数:
connectionName(string, 必需) - 要切换到的连接名称
使用场景: 在多个数据库之间快速切换,后续操作会使用切换后的连接
disconnect ❌
断开指定的数据库连接
参数:
connectionName(string, 必需) - 要断开的连接名称
注意:
如果断开的是当前活动连接,会自动切换到其他可用连接
如果没有其他连接,需要重新使用
connect建立连接
📊 数据库操作工具
query 🔍
执行 SQL 查询语句(SELECT)
参数:
sql(string, 必需) - 要执行的 SQL 查询语句database(string, 可选) - 切换到指定数据库connectionName(string, 可选) - 指定使用的连接,默认使用当前活动连接
execute ⚡
执行 SQL 修改语句(INSERT, UPDATE, DELETE 等)
⚠️ 危险模式保护: 为了防止意外的数据修改或删除,执行危险操作时必须显式启用 dangerousMode 参数。
参数:
sql(string, 必需) - 要执行的SQL语句dangerousMode(boolean, 默认false) - 危险模式开关,执行以下操作时必须设置为 true:INSERT- 插入数据UPDATE- 更新数据DELETE- 删除数据DROP- 删除表或数据库ALTER- 修改表结构TRUNCATE- 清空表CREATE- 创建表或数据库RENAME- 重命名表REPLACE- 替换数据
database(string, 可选) - 切换到指定数据库connectionName(string, 可选) - 指定使用的连接,默认使用当前活动连接
示例:
list_databases 🗄️
列出所有数据库
参数:
connectionName(string, 可选) - 指定使用的连接,默认使用当前活动连接
list_tables 📑
列出指定数据库中的所有表
参数:
database(string, 可选) - 数据库名称(如果已连接到数据库)connectionName(string, 可选) - 指定使用的连接,默认使用当前活动连接
describe_table 📋
查看表结构
参数:
table(string, 必需) - 表名称database(string, 可选) - 数据库名称connectionName(string, 可选) - 指定使用的连接,默认使用当前活动连接
explain 📈
查看 SQL 查询语句的执行计划,用于分析和优化查询性能
参数:
sql(string, 必需) - 要分析的SQL查询语句format(string, 可选, 默认"default") - 执行计划输出格式default- 传统表格格式json- JSON格式,更适合程序解析tree- 树形格式,更直观(需要MySQL 8.0.16+)analyze- 实际执行查询并显示详细统计信息(需要MySQL 8.0.18+,会真实执行查询)
database(string, 可选) - 切换到指定数据库connectionName(string, 可选) - 指定使用的连接,默认使用当前活动连接
示例:
注意:
analyze格式会实际执行查询语句,请谨慎在生产环境使用tree和analyze格式需要较新版本的MySQL支持
📝 日志配置
本服务器提供了灵活的日志系统,支持不同的日志级别和输出格式。
📊 日志级别
通过环境变量 LOG_LEVEL 配置日志级别,可选值:
级别 | 说明 | 用途 |
| 调试信息 | 开发环境,输出详细的调试信息 |
| 一般信息(默认) | 生产环境,输出正常的运行信息 |
| 警告信息 | 输出需要关注但不影响运行的警告 |
| 错误信息 | 仅输出错误信息 |
| 关闭日志 | 完全关闭日志输出 |
日志格式
日志输出格式为:
示例:
🎨 彩色输出
通过环境变量 LOG_COLORS 控制是否启用彩色日志输出(默认启用):
LOG_COLORS=true- 启用彩色输出(推荐用于终端查看)LOG_COLORS=false- 禁用彩色输出(推荐用于日志文件)
⚙️ 配置示例
开发环境配置(详细日志):
生产环境配置(标准日志):
静默模式(仅错误):
🔒 安全注意事项
⚠️ 重要:
🛡️ 连接安全
不要在生产环境中存储明文密码
建议使用环境变量来存储敏感信息
限制数据库用户权限,只授予必要的操作权限
使用防火墙规则限制数据库访问
⚠️ 操作安全 - 危险模式保护
为了防止意外的数据修改或删除,本服务器实现了危险模式保护机制:
默认安全: 所有危险操作(INSERT/UPDATE/DELETE/DROP/ALTER等)默认被拒绝
显式确认: 必须显式设置
dangerousMode=true才能执行危险操作智能检测: 自动检测SQL语句类型,识别潜在危险操作
操作审计: 建议在生产环境记录所有危险操作的日志
受保护的操作类型:
数据修改:
INSERT,UPDATE,DELETE,REPLACE结构修改:
DROP,ALTER,TRUNCATE,RENAME对象创建:
CREATE
最佳实践:
在执行危险操作前,先使用
query工具验证目标数据对于批量操作,建议先在测试环境验证
生产环境中谨慎使用
DROP和TRUNCATE操作始终使用
WHERE子句限制UPDATE和DELETE的影响范围
🛠️ 开发
🔧 技术栈
TypeScript - 类型安全的 JavaScript
@modelcontextprotocol/sdk - MCP SDK
mysql2 - MySQL 数据库驱动
zod - 参数验证
📄 许可证
MIT
🤝 贡献
欢迎提交问题和拉取请求!