使用说明
AWS MCP服务器部署
此存储库包含在EC2上部署具有全面S3和EC2功能的适当AWS MCP(模型上下文协议)服务器所需的一切。
🚀 快速开始
先决条件
- AWS帐户 配置了正确的凭据
- AWS-CLI 已安装并配置(
aws configure) - 地形 已安装(点击此处下载)
- EC2密钥对 在您的AWS帐户中创建
- Python 3.10+ 用于测试脚本
一个命令部署
# Clone and deploy
git clone <your-repo> aws-mcp-deployment
cd aws-mcp-deployment
./scripts/deploy.sh
脚本将:
- ✅ 检查所有先决条件
- 🔧 创建配置文件
- 🏗️ 使用Terraform部署基础设施
- 🧪 测试部署
- 📝 生成客户端配置
📁 项目结构
aws-mcp/
├── terraform/ # Infrastructure as Code
│ ├── main.tf # Main Terraform configuration
│ ├── user_data.sh # EC2 initialization script
│ └── terraform.tfvars.example
├── scripts/ # Automation scripts
│ ├── deploy.sh # One-click deployment
│ └── test-mcp.py # Comprehensive testing
├── client-examples/ # MCP client configurations
│ └── mcp-client-config.json
└── deployment-guide.md # Detailed guide
🏗️ 基础设施组件
AWS资源已创建
- 垂直路径计算机 具有公共子网和互联网网关
- EC2实例 (t3.micro)运行亚马逊Linux 2
- 安全组 具有HTTP(8000)和SSH(22)访问权限
- IAM角色 具有S3和EC2权限
- S3铲斗 用于测试
安全特性
- 基于IAM的权限 用于AWS API访问
- 安全组 限制对IP的访问
- 加密S3存储桶 具有版本控制功能
- 最小权限原则 IAM政策
🔧 配置选项
环境变量(EC2)
| 变量 | 默认值 | 描述 |
|---|---|---|
AWS_REGION |
us-east-1 |
AWS运营区域 |
AWS_API_MCP_TRANSPORT |
streamable-http |
传输协议 |
AWS_API_MCP_HOST |
0.0.0.0 |
服务器绑定地址 |
AWS_API_MCP_PORT |
8000 |
服务器端口 |
READ_OPERATIONS_ONLY |
false |
仅限于只读操作 |
地形变量
# terraform/terraform.tfvars
aws_region = "us-east-1"
instance_type = "t3.micro"
key_pair_name = "your-key-pair"
allowed_cidr_blocks = ["YOUR_IP/32"]
🧪 测试
自动化测试
# Test local installation
uvx awslabs.aws-api-mcp-server@latest --help
# Test remote deployment
python3 scripts/test-mcp.py --url http://YOUR_EC2_IP:8000/mcp
# Test specific functionality
python3 scripts/test-mcp.py --test s3
python3 scripts/test-mcp.py --test ec2
手动测试
# Test S3 operations
curl -X POST http://YOUR_EC2_IP:8000/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_aws",
"arguments": {
"command": "aws s3 ls"
}
}
}'
# Test EC2 operations
curl -X POST http://YOUR_EC2_IP:8000/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "call_aws",
"arguments": {
"command": "aws ec2 describe-instances"
}
}
}'
🔌 客户端集成
Amazon Q开发者命令行界面
添加到 ~/.aws/amazonq/mcp.json:
{
"mcpServers": {
"aws-mcp-remote": {
"type": "streamableHttp",
"url": "http://YOUR_EC2_IP:8000/mcp",
"autoApprove": [],
"disabled": false,
"timeout": 60
}
}
}
光标IDE
添加到 .cursor/mcp.json:
{
"mcpServers": {
"aws-mcp-remote": {
"type": "streamableHttp",
"url": "http://YOUR_EC2_IP:8000/mcp",
"autoApprove": [],
"disabled": false,
"timeout": 60
}
}
}
地方发展
对于本地开发,请使用stdio传输:
{
"mcpServers": {
"aws-mcp-local": {
"command": "uvx",
"args": ["awslabs.aws-api-mcp-server@latest"],
"env": {
"AWS_REGION": "us-east-1",
"READ_OPERATIONS_ONLY": "false"
}
}
}
}
💡 用法示例
配置后,您可以询问您的AI助手:
S3操作
- “列出我的所有S3存储桶”
- “显示存储桶xyz的内容”
- “将文件上传到S3”
- “使用加密创建新的S3存储桶”
EC2操作
- “显示我的所有EC2实例”
- “启动实例i-1234567890abcdef0”
- “列出可用的EC2实例类型”
- “显示us-west-2中的安全组”
高级操作
- “获取我的实例的CloudWatch指标”
- “显示IAM用户和角色”
- “建议使用AWS CLI命令创建VPC”
🔒 安全考虑
生产部署
- 限制访问:更新
allowed_cidr_blocks到您的特定IP范围 - 使用HTTPS:添加SSL/TLS终止(ALB或CloudFront)
- 启用日志记录:配置CloudWatch日志以进行监控
- IAM权限:使用最低权限IAM策略
- 网络安全:使用NAT网关在专用子网中部署
安全最佳实践
- 切勿暴露于0.0.0.0/0 生产中
- 使用IAM角色 而不是访问密钥
- 启用CloudTrail 用于API日志记录
- 定期安全更新 EC2实例上
- 监控使用情况 通过CloudWatch
🛠️ 故障排除
常见问题
-
服务器未启动
# Check EC2 instance logs ssh -i ~/.ssh/your-key.pem ec2-user@YOUR_EC2_IP sudo journalctl -u mcp-server -f -
连接被拒绝
# Check security group rules aws ec2 describe-security-groups --group-ids sg-xxxxxxxxx -
权限不足
# Check IAM role permissions aws iam get-role-policy --role-name mcp-server-role --policy-name mcp-server-policy
日志和监控
- EC2实例:
/var/log/mcp-server/ - SystemD服务:
sudo journalctl -u mcp-server - 云监控:在EC2控制台中启用详细监控
🧹 清理
要销毁所有资源,请执行以下操作:
cd terraform
terraform destroy
📚 额外资源
🤝 贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 彻底测试
- 提交拉取请求
📄 许可证
此项目在Apache License 2.0下获得许可-有关详细信息,请参阅License文件。
备注:此部署创建的AWS资源可能会产生成本。t3.micro实例符合AWS免费套餐的条件,但数据传输和S3存储等其他资源可能需要付费。始终查看AWS定价并监控您的使用情况。