Amazon Q CLI与MySQL MCP服务器集成
一份全面的指南,用于将AWS RDS MySQL MCP服务器与Amazon Q CLI集成,通过Amazon Q的会话界面实现自然语言数据库交互。
概述
此项目演示了如何配置Amazon Q CLI以与FastMCP MySQL服务器配合使用,允许您通过Amazon Q的聊天界面使用自然语言命令与AWS RDS MySQL数据库进行交互。
先决条件
- Python 3.8或更高版本
- 已安装并配置Amazon Q CLI
- AWS RDS MySQL实例或本地MySQL服务器
- 配置了适当权限的AWS CLI
安装和设置
1.安装Amazon Q CLI
遵循安装指南:
2.创建虚拟环境
# Create isolated virtual environment
python3 -m venv venv-mcp
# Activate virtual environment
# Linux/macOS:
source venv-mcp/bin/activate3.安装依赖项
pip3 install fastmcp pymysql boto3 python-dotenv4.环境配置
# Copy the example environment file
cp .env.example .env
# Edit .env with your actual configuration配置您的 .env 文件:
# AWS Configuration
AWS_REGION=us-east-1
BEDROCK_MODEL_ID=anthropic.claude-3-haiku-20240307-v1:0
# MySQL Database Configuration
RDS_HOST=your-mysql-host.amazonaws.com
RDS_PORT=3306
RDS_USER=your-username
RDS_PASS=your-password
RDS_DB=your-database-name安全最佳实践:
- 永不承诺
.env文件到版本控制 - 添加
.env到你的.gitignore文件 - 在生产环境中使用AWS IAM角色
- 定期轮换数据库凭据
MCP配置选项
Amazon Q CLI支持两种MCP配置模式:(我们将实施全局配置)
工作空间配置
- 范围:特定于目录
- 位置:
/.amazonq/mcp.json在工作目录中 - 用法:必须从配置的目录运行Q CLI命令
全局配置(推荐)
- 范围:全系统访问
- 位置:
~/.aws/amazonq/mcp.json - 用法:从任何目录运行Q CLI命令
- 利益:跨系统重启持续
全局MCP设置(推荐)
1.创建配置目录
# Create Amazon Q configuration directory
mkdir -p ~/.aws/amazonq2.创建MCP配置文件
创建 ~/.aws/amazonq/mcp.json 内容如下:
{
"mcpServers": {
"rds_mysql_server": {
"command": "/absolute/path/to/your/venv-mcp/bin/python3",
"args": [
"/absolute/path/to/your/fastmcp_server.py"
],
"env": {},
"timeout": 120000,
"disabled": false
}
}
}重要:用实际的绝对路径替换路径:
/absolute/path/to/your/venv-mcp/bin/python3/absolute/path/to/your/fastmcp_server.py
3.验证配置
q mcp list预期产量:
workspace:
/.amazonq/mcp.json
(empty)
global:
/home/username/.aws/amazonq/mcp.json
• rds_mysql_server /path/to/venv-mcp/bin/python3用法
开始亚马逊Q聊天
q chat数据库交互示例
# Natural language queries
"Show me all tables in the database"
"Create a users table with id, name, and email columns"
"Find all records in the users table"
"Insert a new user with name 'John Doe' and email 'john@example.com' in users table"
"Show the structure of the users table"安全功能
- 输入验证:防止恶意SQL注入
- 操作限制:阻止危险操作(DROP DATABASE、TRUNCATE)
- 连接超时:120秒超时可防止挂起连接
- 环境隔离:通过以下方式进行安全的凭据管理
.env文件 - 错误处理:优雅的错误响应,不会暴露敏感信息
支持的操作
| 操作 | 说明 | 示例 |
|---|---|---|
SELECT | 查询数据 | “显示所有用户” |
INSERT | 添加记录 | “添加新用户” |
UPDATE | 修改数据 | “更新用户电子邮件” |
DELETE | 删除记录 | “删除用户” |
CREATE | 创建表 | “创建用户表” |
SHOW | 显示信息 | “显示所有表格” |
DESCRIBE | 表结构 | “描述用户表” |
故障排除
常见问题
- 未找到MCP服务器
- 验证中的绝对路径 mcp.json - 确保正确创建虚拟环境 - 检查文件权限
- 数据库连接失败
- 验证 .env 配置 - 测试数据库连接 - 检查防火墙设置
- 权限不足
- 验证AWS凭据 - 检查数据库用户权限 - 确保IAM角色正确
调试命令
# Test MCP server directly
python3 fastmcp_server.py
# Verify environment variables
echo $AWS_REGION
# Check Q CLI configuration
q mcp list
q chat --debug配置管理
更新MCP服务器
- 停止任何正在运行的Q聊天会话
- 更新
fastmcp_server.py或配置 - 重新启动Q聊天:
q chat
禁用MCP服务器
{
"mcpServers": {
"rds_mysql_server": {
"disabled": true
}
}
}性能优化
- 连接池:重用数据库连接
- 查询缓存:缓存频繁访问的数据
- 超时管理:根据查询复杂性优化超时值
- 资源监控:监控CPU和内存使用情况
后续步骤
- 扩展功能:为特定业务逻辑添加自定义工具
- 多数据库支持:配置多个数据库连接
- 高级安全性:实施基于角色的访问控制
- 监控:设置日志记录和性能监控
- 自动化:为团队环境创建部署脚本
______________________________________________________________________
备注:此配置通过Amazon Q CLI的自然语言界面提供对MySQL数据库的持久、系统范围的访问。在处理数据库凭据和连接时,始终遵循安全最佳实践。
