使用说明
MySQL MCP 服务器
一个提供MySQL数据库查询功能的模型上下文协议(MCP)服务器。该服务器允许AI助手通过标准化接口与MySQL数据库进行交互。
特点/特性
- 执行带有预编译语句支持的SQL查询
- 列出数据库和表
- 描述表结构
- 使用环境变量进行安全的连接管理
- 错误处理和连接恢复
- 支持所有MySQL数据类型
安装
-
克隆或下载此项目
-
安装依赖项:
npm install -
复制环境配置:
cp .env.example .env -
在(此处)配置您的MySQL连接
.env:MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_USER=your_username MYSQL_PASSWORD=your_password MYSQL_DATABASE=your_database
使用方法
运行服务器
# Start the server
npm start
# Development mode with auto-restart
npm run dev
可用工具
1. mysql_query
执行带有可选预编译语句参数的SQL查询。
参数:
query(必填):要执行的SQL查询parameters(可选):预编译语句的参数数组
示例:
-- Simple SELECT
SELECT * FROM users LIMIT 10
-- Prepared statement with parameters
SELECT * FROM users WHERE age > ? AND city = ?
-- Parameters: ["25", "New York"]
-- INSERT with prepared statement
INSERT INTO users (name, email, age) VALUES (?, ?, ?)
-- Parameters: ["John Doe", "john@example.com", "30"]
2. mysql_describe_table
获取特定表的结构。
参数:
table_name(必填):要描述的表的名称
3. mysql_list_tables
列出当前数据库中的所有表。
参数: 无
4. mysql_list_databases
列出当前用户可访问的所有数据库。
参数: 无
与MCP客户端的配置
Claude Desktop(可译为“Claude桌面版”或保持原样,根据上下文判断是否需要具体化为“Claude桌面应用程序”等)
将此服务器添加到您的Claude Desktop配置文件中:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS(苹果电脑操作系统): ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"mysql": {
"command": "node",
"args": ["path/to/mysql-mcp/server.js"],
"env": {
"MYSQL_HOST": "localhost",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your_username",
"MYSQL_PASSWORD": "your_password",
"MYSQL_DATABASE": "your_database"
}
}
}
}
其他MCP客户端
此服务器遵循标准的MCP协议,应能与任何兼容的客户端正常工作。请参阅客户端的文档以获取配置详情。
安全考虑因素
- 环境变量永远不要让你的
.env使用实际凭据的文件 - 数据库权限使用具有最小必要权限的数据库用户
- 网络安全确保您的MySQL服务器已妥善安全保护
- 查询验证服务器按提供的查询执行 - 请确保您的AI助手已正确配置
数据库权限
为了安全起见,请为MCP服务器创建一个专用的MySQL用户:
-- Create a dedicated user
CREATE USER 'mcp_user'@'localhost' IDENTIFIED BY 'secure_password';
-- Grant necessary permissions (adjust as needed)
GRANT SELECT, INSERT, UPDATE, DELETE ON your_database.* TO 'mcp_user'@'localhost';
-- For read-only access, use only:
-- GRANT SELECT ON your_database.* TO 'mcp_user'@'localhost';
-- Apply changes
FLUSH PRIVILEGES;
故障排除
连接问题
-
检查MySQL服务器状态:
# Linux/macOS sudo systemctl status mysql # Windows (if using MySQL service) net start mysql -
验证连接参数
.env -
检查MySQL用户权限:
SHOW GRANTS FOR 'your_username'@'localhost';
常见错误
- **“访问被拒绝”**检查用户名/密码
.env - **“未知数据库”**验证数据库名称是否存在
- **“连接被拒绝”**检查MySQL服务器是否正在运行,以及主机/端口是否正确
发展
项目结构
mysql-mcp/
├── server.js # Main MCP server implementation
├── package.json # Node.js dependencies and scripts
├── .env.example # Environment configuration template
├── .env # Your local configuration (not in git)
├── README.md # This file
└── .gitignore # Git ignore rules
添加新工具
要添加新的数据库工具,请扩展(或“进行扩展”) setupToolHandlers() 方法在 server.js:
- 在(相应位置)添加工具定义
ListToolsRequestSchema处理程序(或:处理器) - 加入这个案例
CallToolRequestSchema处理程序(或处理器) - 实现处理程序方法
许可证
ISC许可证
做出贡献
- 为仓库创建分支(或:克隆仓库)
- 创建一个特性分支
- 做出你的更改
- 彻底测试
- 提交一个拉取请求
支持
对于问题和疑问:
- 查看故障排除部分
- 查阅MySQL和MCP文档
- 在项目仓库中创建一个问题