关于 MySQL MCP Server
MySQL MCP Server 将 MySQL 数据库接入 LLM,供需要查询数据或管理连接的 MCP 客户端使用。它提供 SQL 执行、数据库结构查询和可复用的命名连接配置,并通过 stdio 通信。
主要功能
- 01执行 SQL 查询
- 02查看数据库与表结构
- 03管理数据库连接
- 04保存并切换连接配置
- 05通过 stdio 通信
适用场景
- 01让 LLM 查询 MySQL 数据
- 02检查数据库和表结构
- 03在多个数据库连接间切换
MCP 相关
这是一个 MCP 服务,向 MCP 客户端提供数据库连接管理、SQL 查询和数据库结构检查工具。它使用 stdio 传输。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MySQL MCP Server
MySQL Model Context Protocol(MCP)服务是一个用于连接本地环境中的 MySQL 数据库,并允许大模型(LLM)执行 SQL 查询的工具。
要求
- Node.js:20.0.0 或更高版本
- MySQL:MySQL 或 MariaDB 服务端 5.7 或更高版本
功能
- 执行 MySQL 查询:允许 LLM 直接执行 SQL 查询
- 获取数据库信息:查看数据库列表、表列表和表结构
- 符合 MCP 规范:支持 Model Context Protocol,可与 LLM 集成
- stdio 通信:使用标准输入输出与 LLM 通信,无需绑定端口
- 连接配置管理:通过配置名称管理多个连接设置并进行切换
- 保存连接信息:在本地保存数据库连接信息以供重复使用
安装和使用方法
使用 NPX 临时运行
npx -y https://github.com/yuki777/mysql-mcp-server --host 127.0.0.1 --port 13306 --user root
选项
| 选项 | 说明 | 默认值 |
|---|---|---|
-h, --host <host> | MySQL 主机 | localhost |
-p, --port <port> | MySQL 端口 | 13306 |
-u, --user <user> | MySQL 用户 | root |
--password <password> | MySQL 密码 | (空字符串) |
-d, --database <database> | 默认数据库 | (可选) |
-c, --config <path> | 配置文件路径 | (可选) |
--auto-connect | 服务启动时自动连接数据库 | false |
--server-port <port> | MCP 服务端口(stdio 模式下不会使用) | 3000 |
--server-host <host> | MCP 服务主机(stdio 模式下不会使用) | localhost |
--query-timeout <ms> | 查询超时时间(毫秒) | 30000 |
--max-results <count> | 最大结果行数 | 1000 |
--debug | 调试模式 | false |
保存和重复使用连接信息
MySQL MCP Server 会将成功连接的数据库信息作为命名配置保存在本地。这样,下次启动时即可通过名称指定并重复使用连接信息。保存的连接信息位于用户主目录中的 .mysql-mcp-connections.json 文件内。
每个连接配置包含以下信息:
- 配置名称
- 主机名
- 端口号
- 用户名
- 密码
- 数据库名称(如已设置)
可以通过配置名称管理多个数据库连接,并轻松切换。
使用配置文件
也可以使用配置文件(JSON 格式)设置连接信息:
{
"server": {
"port": 3000,
"host": "localhost"
},
"mysql": {
"host": "localhost",
"port": 13306,
"user": "root",
"password": "yourpassword",
"database": "mydb"
},
"debug": false,
"queryTimeout": 30000,
"maxResultSize": 1000
}
使用配置文件时:
npx -y https://github.com/yuki777/mysql-mcp-server -c ./mysql-mcp-config.json
通信方式
MySQL MCP Server 以符合 MCP(Model Context Protocol)的「stdio」模式运行。它不会绑定到特定端口,而是通过标准输入输出进行通信。此方式有以下优点:
- 避免端口冲突:不使用特定端口,因此不会发生端口冲突
- 提升安全性:不使用网络通信,可降低网络层攻击风险
- 简化进程间通信:简化与 LLM 的通信
注意事项
- stdio 模式下,消息以 JSON 格式交换
- 每行必须发送一条 JSON 消息
- 错误信息和连接日志会输出到标准错误(stderr)
提供的 MCP 工具
数据库连接管理
| 工具名称 | 说明 | 必需参数 |
|---|---|---|
| connect_database | 连接数据库 | host, port, user |
| connect_by_profile | 使用已保存的配置名称连接 | profileName |
| disconnect_database | 断开当前数据库连接 | 无 |
| get_connection_status | 获取数据库连接状态 | 无 |
连接配置管理
| 工具名称 | 说明 | 必需参数 |
|---|---|---|
| list_profiles | 获取已保存的配置列表 | 无 |
| get_profile | 获取配置详情 | profileName |
| add_profile | 添加新配置 | profileName, host, port, user |
| remove_profile | 删除配置 | profileName |
SQL 查询操作
| 工具名称 | 说明 | 必需参数 |
|---|---|---|
| execute_query | 执行 MySQL 查询 | query: SQL 语句 |
| get_databases | 获取可用数据库列表 | 无 |
| get_tables | 获取指定数据库中的表列表 | database(可选) |
| describe_table | 获取指定表的结构 | table |
连接管理功能
MySQL MCP Server 可以将服务启动与数据库连接分开处理。这种方式有以下优点:
- 无需连接信息即可启动:即使没有数据库连接信息,服务也可以启动
- 连接多个数据库:服务启动后,可以切换连接到不同的数据库
- 安装简单:只需运行
npx -y https://github.com/yuki777/mysql-mcp-server即可
连接管理使用方法
-
不启用自动连接,启动服务:
npx -y https://github.com/yuki777/mysql-mcp-server -
使用连接工具连接数据库(并指定配置名称保存):
{ "type": "tool_call", "request_id": "req_1", "tool": "connect_database", "arguments": { "host": "localhost", "port": 3306, "user": "root", "password": "your_password", "database": "your_db", "profileName": "my-db" } } -
获取配置列表:
{ "type": "tool_call", "request_id": "req_2", "tool": "list_profiles", "arguments": {} } -
按配置名称连接:
{ "type": "tool_call", "request_id": "req_3", "tool": "connect_by_profile", "arguments": { "profileName": "my-db" } } -
添加新配置(不会建立连接):
{ "type": "tool_call", "request_id": "req_4", "tool": "add_profile", "arguments": { "profileName": "production-db", "host": "prod.example.com", "port": 3306, "user": "prod_user", "password": "prod_password", "database": "production" } } -
检查连接状态:
{ "type": "tool_call", "request_id": "req_5", "tool": "get_connection_status", "arguments": {} } -
断开连接:
{ "type": "tool_call", "request_id": "req_6", "tool": "disconnect_database", "arguments": {} }
测试脚本
仓库中包含一个名为 test-connection-management.js 的测试脚本。可以使用此脚本测试连接管理功能:
node test-connection-management.js
开发者信息
设置开发环境
# リポジトリのクローン
git clone [repository-url]
cd mysql-mcp-server
# 依存関係のインストール
npm install
# 開発モードでの実行
npm run dev
构建
npm run build
许可证
ISC
贡献
欢迎提交错误报告、功能请求和拉取请求。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。