关于 MySQL Database Access MCP Server
MySQL Database Access MCP Server 是一个面向 MySQL 数据库的只读 MCP 服务,可列出数据库和数据表、查看表结构并执行只读查询。它通过查询校验、超时和行数限制控制访问范围,适合需要让 AI 助手安全查看数据库内容的用户。
主要功能
- 01列出可访问的数据库与数据表
- 02查看指定表的结构定义
- 03执行仅限 SELECT、SHOW、DESCRIBE、EXPLAIN 的查询
- 04查询超时与返回行数限制
- 05BIGINT 与 DECIMAL 以字符串返回以避免精度损失
- 06可配置连接池参数
适用场景
- 01让 AI 助手探索数据库结构与表关系
- 02在不修改数据的前提下查询业务数据
- 03为数据分析提供只读的 SQL 查询入口
MCP 相关
该项目是 MCP 服务,向 MCP 客户端暴露 list_databases、list_tables、describe_table 和 execute_query 等工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MySQL 数据库访问 MCP 服务
此 MCP 服务提供对 MySQL 数据库的只读访问。它支持:
- 列出可用数据库
- 列出数据库中的表
- 描述表结构
- 执行只读 SQL 查询
安全功能
- 只读访问:仅允许 SELECT、SHOW、DESCRIBE 和 EXPLAIN 语句;拒绝可操作文件的
SELECT INTO和LOAD_FILE形式 - 查询验证:防止 SQL 注入并阻止任何数据修改尝试
- 查询超时:防止长时间运行的查询消耗资源
- 行数限制:防止返回过多数据
- 大数精确处理:BIGINT 和 DECIMAL 值以字符串形式返回,以防止精度损失
安装
1. 使用以下任一方式安装:
从 NPM 安装
# Install globally
npm install -g mysql-mcp-server
# Or install locally in your project
npm install mysql-mcp-server
从源代码构建
# Clone the repository
git clone https://github.com/dpflucas/mysql-mcp-server.git
cd mysql-mcp-server
# Install dependencies and build
npm install
npm run build
2. 配置环境变量
服务需要以下环境变量:
MYSQL_HOST:数据库服务器主机名MYSQL_PORT:数据库服务器端口(默认值:3306)MYSQL_USER:数据库用户名MYSQL_PASSWORD:数据库密码(可选,但建议用于安全连接)MYSQL_DATABASE:默认数据库名称(可选)
3. 添加到 MCP 设置
将以下配置添加到 MCP 设置文件:
如果通过 npm 安装(选项 1):
{
"mcpServers": {
"mysql": {
"command": "npx",
"args": ["mysql-mcp-server"],
"env": {
"MYSQL_HOST": "your-mysql-host",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your-mysql-user",
"MYSQL_PASSWORD": "your-mysql-password",
"MYSQL_DATABASE": "your-default-database"
},
"disabled": false,
"autoApprove": []
}
}
}
如果从源代码构建(选项 2):
{
"mcpServers": {
"mysql": {
"command": "node",
"args": ["/path/to/mysql-mcp-server/build/index.js"],
"env": {
"MYSQL_HOST": "your-mysql-host",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your-mysql-user",
"MYSQL_PASSWORD": "your-mysql-password",
"MYSQL_DATABASE": "your-default-database"
},
"disabled": false,
"autoApprove": []
}
}
}
可用工具
list_databases
列出 MySQL 服务器上所有可访问的数据库。
参数:无
示例:
{
"server_name": "mysql",
"tool_name": "list_databases",
"arguments": {}
}
list_tables
列出指定数据库中的所有表。
参数:
database(可选):数据库名称(如果未指定,则使用默认值)
示例:
{
"server_name": "mysql",
"tool_name": "list_tables",
"arguments": {
"database": "my_database"
}
}
describe_table
显示指定表的结构。
参数:
database(可选):数据库名称(如果未指定,则使用默认值)table(必需):表名称
示例:
{
"server_name": "mysql",
"tool_name": "describe_table",
"arguments": {
"database": "my_database",
"table": "my_table"
}
}
execute_query
执行只读 SQL 查询。
参数:
query(必需):SQL 查询(仅允许 SELECT、SHOW、DESCRIBE 和 EXPLAIN 语句)database(可选):数据库名称(如果未指定,则使用默认值)
示例:
{
"server_name": "mysql",
"tool_name": "execute_query",
"arguments": {
"database": "my_database",
"query": "SELECT * FROM my_table LIMIT 10"
}
}
高级连接池配置
如需更精细地控制 MySQL 连接池行为,可以配置其他参数:
{
"mcpServers": {
"mysql": {
"command": "npx",
"args": ["mysql-mcp-server"],
"env": {
"MYSQL_HOST": "your-mysql-host",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your-mysql-user",
"MYSQL_PASSWORD": "your-mysql-password",
"MYSQL_DATABASE": "your-default-database",
"MYSQL_CONNECTION_LIMIT": "10",
"MYSQL_QUEUE_LIMIT": "0",
"MYSQL_CONNECT_TIMEOUT": "10000",
"MYSQL_IDLE_TIMEOUT": "60000",
"MYSQL_MAX_IDLE": "10"
},
"disabled": false,
"autoApprove": []
}
}
}
这些高级选项包括:
MYSQL_CONNECTION_LIMIT:控制连接池中的最大连接数(默认值:10)MYSQL_QUEUE_LIMIT:设置可排队的最大连接请求数(默认值:0,即无限制)MYSQL_CONNECT_TIMEOUT:调整连接超时时间,单位为毫秒(默认值:10000)MYSQL_IDLE_TIMEOUT:配置连接释放前可保持空闲的时长(单位为毫秒)MYSQL_MAX_IDLE:设置连接池中保留的最大空闲连接数
测试
此服务包含测试脚本,可用于验证其与 MySQL 配置的兼容性:
1. 设置测试数据库
此脚本会创建测试数据库、表和示例数据:
# Set your MySQL credentials as environment variables
export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=your_username
export MYSQL_PASSWORD=your_password
# Run the setup script
npm run test:setup
2. 测试 MCP 工具
此脚本会针对测试数据库测试每个 MCP 工具:
# Set your MySQL credentials as environment variables
export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=your_username
export MYSQL_PASSWORD=your_password
export MYSQL_DATABASE=mcp_test_db
# Run the tools test script
npm run test:tools
3. 运行所有测试
运行设置脚本和工具测试:
# Set your MySQL credentials as environment variables
export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=your_username
export MYSQL_PASSWORD=your_password
# Run all tests
npm test
故障排除
如果遇到问题:
- 检查服务日志中的错误消息
- 验证 MySQL 凭据和连接详情
- 确保 MySQL 用户具有适当的权限
- 检查查询是否为只读且格式正确
许可证
本项目采用 MIT License 许可,详情请参阅 LICENSE 文件。
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。