关于 MySQL Database Access MCP Server
MySQL Database Access MCP Server 为 MCP 客户端提供 MySQL 数据库的只读访问,适合需要检查数据库结构和查询数据的场景。它通过查询校验、超时和行数限制约束查询行为。
主要功能
- 01列出可访问的数据库
- 02列出数据库中的表
- 03查看表结构
- 04执行只读 SQL 查询
- 05查询校验与资源限制
适用场景
- 01盘点 MySQL 实例中的数据库和表
- 02检查表字段与结构
- 03运行 SELECT 等只读查询
MCP 相关
作为 MCP 服务,它向客户端提供数据库列表、表列表、表结构查看和只读 SQL 查询工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MySQL 数据库访问 MCP 服务
此 MCP 服务提供对 MySQL 数据库的只读访问权限。它支持以下操作:
- 列出可用数据库
- 列出数据库中的表
- 描述表结构
- 执行只读 SQL 查询
安全功能
- 只读访问:仅允许 SELECT、SHOW、DESCRIBE 和 EXPLAIN 语句
- 查询验证:防止 SQL 注入并阻止任何数据修改操作
- 查询超时:防止长时间运行的查询消耗资源
- 行数限制:防止返回过多数据
安装
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/allizwellai/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 配置是否兼容:
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 文件。
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。