MySQL MCP服务器文档
概述
这是一个生产就绪的MySQL MCP(模型上下文协议)服务器,通过MCP工具提供安全的数据库访问。服务器包括身份验证、监控和全面的数据库操作。
快速开始
先决条件
- Python 3.8+
- MySQL数据库服务器
- Claude桌面应用程序
- Git
安装
- 克隆并导航到项目:
cd C:\Users\MCP-Procuction_MySQL- 安装依赖项:
pip install -r requirements.txt- 设置环境变量(创建
.env文件):
# Database Configuration
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=your_username
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=your_database
# Security
SECRET_KEY=your-secret-key-here
ALLOWED_OPERATIONS=SELECT,INSERT,UPDATE,DELETE
# Optional: GitHub OAuth
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secret
# Optional: Monitoring
SENTRY_DSN=your_sentry_dsn运行服务器
主要方法:
python -m src.main替代方法:
# Using run script
python run_server.py
# Standalone mode
python mcp_standalone.pyClaude桌面集成
Claude桌面的MCP配置
将此配置添加到您的Claude Desktop MCP设置文件中。配置文件通常位于:
窗户: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"mysql-mcp": {
"command": "python",
"args": ["src/server.py"],
"cwd": "/path/to/your/MYSQL-Production"
}
}
}Claude Desktop的设置步骤
- 安装MCP服务器 (按照上述安装步骤操作)
- 找到您的Claude Desktop配置文件 使用上述路径
- 添加MCP配置 到配置文件
- 更新
cwd路径 以匹配您的实际安装目录 - 设置环境变量 在一个
.env项目目录中的文件 - 重新启动克劳德桌面 加载新的MCP服务器
- 验证连接 让Claude列出数据库表
配置说明
- 替换
your_username,your_password等。使用您的实际数据库凭据 - 更新
cwd与实际安装目录匹配的路径 - 确保Python在您的系统PATH中可用
- 服务器将在Claude Desktop中以“mysql-mcp”的形式提供
测试Claude集成
配置后,您可以通过询问Claude来测试集成:
- “列出数据库中的所有表”
- “显示用户表的结构”
- “查询我的产品表的前5行”
项目结构
MYSQL-Production/
├── src/
│ ├── main.py # Main MCP server entry point
│ ├── server.py # Core MCP server implementation
│ ├── config.py # Configuration management
│ ├── models.py # Data models
│ ├── auth/ # Authentication modules
│ │ ├── github_oauth.py # GitHub OAuth integration
│ │ └── session.py # Session management
│ ├── database/ # Database modules
│ │ ├── connection.py # Database connection handling
│ │ ├── security.py # Security and validation
│ │ └── utils.py # Database utilities
│ ├── tools/ # MCP tools implementation
│ │ ├── basic_tools.py # Basic database operations
│ │ ├── advanced_tools.py# Advanced database features
│ │ ├── write_tools.py # Write operations
│ │ └── transaction_tools.py # Transaction management
│ └── monitoring/ # Monitoring and logging
│ └── sentry.py # Sentry integration
├── tests/ # Test suite
├── requirements.txt # Python dependencies
├── pyproject.toml # Project configuration
├── docker-compose.yml # Docker setup
└── README.md # Basic documentation可用的MCP工具
基本操作
mysql-mcp:query_database-执行SELECT查询mysql-mcp:list_tables-列出所有数据库表mysql-mcp:describe_table-获取表架构信息
写入操作
mysql-mcp:execute_sql-执行INSERT、UPDATE、DELETE操作mysql-mcp:create_table-创建新表
高级功能
- 交易管理
- 查询优化
- 性能监控
- 安全验证
配置
环境变量
| 变量 | 描述 | 必填 | 默认 |
|---|---|---|---|
MYSQL_HOST | MySQL服务器主机 | 是 | 本地主机 |
MYSQL_PORT | MySQL服务器端口 | 否 | 3306 |
MYSQL_USER | 数据库用户名 | 是 | - |
MYSQL_PASSWORD | 数据库密码 | 是 | - |
MYSQL_DATABASE | 数据库名称 | 是 | - |
SECRET_KEY | 安全密钥 | 是 | - |
ALLOWED_OPERATIONS | 允许的SQL操作 | 否 | SELECT、INSERT、UPDATE、DELETE |
MAX_CONNECTIONS | 连接池大小 | 否 | 10 |
QUERY_TIMEOUT | 查询超时(秒) | 否 | 30 |
安全功能
- SQL注入预防
- 查询验证和清理
- 操作限制
- 有限制的连接池
- 基于会话的身份验证
- 可选的GitHub OAuth集成
使用示例
基本查询
# Using MCP client
result = await client.call_tool("mysql-mcp:query_database", {
"sql": "SELECT * FROM users LIMIT 10"
})表操作
# List tables
tables = await client.call_tool("mysql-mcp:list_tables", {})
# Describe table structure
schema = await client.call_tool("mysql-mcp:describe_table", {
"table": "users"
})数据修改
# Insert data
result = await client.call_tool("mysql-mcp:execute_sql", {
"sql": "INSERT INTO users (name, email) VALUES ('John', 'john@example.com')"
})测试
运行测试套件:
# Run all tests
python -m pytest tests/
# Run specific test
python test_mcp.pyDocker部署
使用提供的Docker设置:
# Start services
docker-compose up -d
# View logs
docker-compose logs -f监控与调试
日志记录
服务器包括不同级别的结构化日志记录:
- 信息:一般操作
- 警告:潜在问题
- 错误:操作失败
- 调试:详细的调试信息
哨兵集成
配置Sentry进行错误跟踪:
SENTRY_DSN=your_sentry_dsn
SENTRY_ENVIRONMENT=production调试模式
在中启用调试模式 debug_settings.py:
DEBUG = True
LOG_LEVEL = "DEBUG"故障排除
常见问题
- 连接错误
- 验证MySQL服务器是否正在运行 - 检查凭据 .env 文件 - 确保网络连接
- 权限错误
- 验证数据库用户权限 - 检查 ALLOWED_OPERATIONS 配置
- 性能问题
- 监控连接池使用情况 - 检查查询执行时间 - 查看数据库索引
调试命令
# Test database connection
python -c "from src.database.connection import test_connection; test_connection()"
# Check MCP server status
python -c "from src.main import main; main()"发展
代码的风格
该项目使用:
- 黑色用于代码格式化
- 绒布
- MyPy用于类型检查
# Format code
black src/
# Run linting
ruff check src/
# Type checking
mypy src/添加新工具
- 在适当的模块中创建工具功能
- 注册
src/tools/register_tools.py - 在中添加测试
tests/ - 更新文档
生产部署
看 DEPLOYMENT.md 有关详细的生产部署说明,包括:
- 环境设置
- 安全强化
- 性能优化
- 监控配置
安全考虑
- 始终使用参数化查询
- 实施正确的身份验证
- 定期更新依赖关系
- 监控可疑活动
- 使用SSL/TLS进行连接
- 实施速率限制
支持
对于问题和疑问:
- 检查故障排除部分
- 查看日志以了解错误详细信息
- 查阅现有的README.md和DEPLOYMENT.md文件
- 检查测试文件以获取使用示例
