AWS MCP服务器部署

提供在EC2上部署AWS MCP服务器的完整解决方案,包括S3和EC2功能集成。

  • by shrihariharidass
  • Shell
  • 本地部署
  • 更新于
在 GitHub 查看 shrihariharidass/aws-mcp

使用说明

AWS MCP服务器部署

此存储库包含在EC2上部署具有全面S3和EC2功能的适当AWS MCP(模型上下文协议)服务器所需的一切。

🚀 快速开始

先决条件

  1. AWS帐户 配置了正确的凭据
  2. AWS-CLI 已安装并配置(aws configure)
  3. 地形 已安装(点击此处下载)
  4. EC2密钥对 在您的AWS帐户中创建
  5. 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”

🔒 安全考虑

生产部署

  1. 限制访问:更新 allowed_cidr_blocks 到您的特定IP范围
  2. 使用HTTPS:添加SSL/TLS终止(ALB或CloudFront)
  3. 启用日志记录:配置CloudWatch日志以进行监控
  4. IAM权限:使用最低权限IAM策略
  5. 网络安全:使用NAT网关在专用子网中部署

安全最佳实践

  • 切勿暴露于0.0.0.0/0 生产中
  • 使用IAM角色 而不是访问密钥
  • 启用CloudTrail 用于API日志记录
  • 定期安全更新 EC2实例上
  • 监控使用情况 通过CloudWatch

🛠️ 故障排除

常见问题

  1. 服务器未启动

    # Check EC2 instance logs
    ssh -i ~/.ssh/your-key.pem ec2-user@YOUR_EC2_IP
    sudo journalctl -u mcp-server -f
    
  2. 连接被拒绝

    # Check security group rules
    aws ec2 describe-security-groups --group-ids sg-xxxxxxxxx
    
  3. 权限不足

    # 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

📚 额外资源

🤝 贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 彻底测试
  5. 提交拉取请求

📄 许可证

此项目在Apache License 2.0下获得许可-有关详细信息,请参阅License文件。


备注:此部署创建的AWS资源可能会产生成本。t3.micro实例符合AWS免费套餐的条件,但数据传输和S3存储等其他资源可能需要付费。始终查看AWS定价并监控您的使用情况。