使用说明
AWS MCP(多云平台)服务器
概述
AWS MCP服务器是一个Docker化的HTTP服务器,旨在通过一系列基于JavaScript的工具公开各种AWS SDK功能。其主要目的是通过向动态生成的API端点发出HTTP请求,提供一种标准化和可访问的方式来与AWS服务交互。每个端点对应于中定义的特定AWS服务操作 tools/ 目录。
快速开始
先决条件
- 码头工人 和 Docker Compose 安装
- AWS凭据 具有适当的权限
基本设置
- 克隆并导航到存储库
- 创建环境文件:
cp .env.example .env # Edit .env with your AWS credentials - 启动服务器:
docker-compose up -d - 测试服务器:
curl http://localhost:3000/routes
部署选项
选项1:独立外部访问(默认)
从Docker外部直接访问:
# In docker-compose.yml, uncomment the ports section:
ports:
- "3000:3000"
docker-compose up -d
访问地址: http://localhost:3000
选项2:仅限内部Docker网络
为了与其他容器化服务(如n8n、自动化工具)集成:
# Set custom network in .env file
echo "DOCKER_NETWORK=your_network_name" >> .env
# Create or use existing network
docker network create your_network_name
# Start without external ports (default configuration)
docker-compose up -d
从其他容器进入: http://aws-mcp-server:3000
选项3:与现有的Docker Compose堆栈集成
添加到现有 docker-compose.yml:
services:
aws-mcp-server:
image: your-registry/aws-mcp-server # or build: path/to/aws-mcp-server
container_name: aws-mcp-server
env_file:
- path/to/aws-mcp-server/.env
networks:
- your_existing_network
expose:
- "3000"
环境变量
创建一个 .env 包含以下变量的文件:
# Required AWS credentials
AWS_ACCESS_KEY_ID=your_aws_access_key_id_here
AWS_SECRET_ACCESS_KEY=your_aws_secret_access_key_here
AWS_DEFAULT_REGION=us-east-1
# Optional: For temporary credentials
# AWS_SESSION_TOKEN=your_session_token
# Server configuration
PORT=3000
# Docker network (optional)
# DOCKER_NETWORK=your_custom_network_name
AWS凭据选项
- IAM用户:创建具有所需权限的专用IAM用户
- IAM角色:使用EC2实例配置文件或ECS任务角色
- 临时凭据:使用带有会话令牌的STS假定角色
- AWS CLI配置文件:安装
~/.aws目录(不建议用于生产)
可用的AWS服务
服务器提供 116工具 通过这些AWS服务:
- CloudWatch日志 (9个工具)-日志管理和查询
- CloudTrail 的 (2个工具)-API调用审核
- 配置服务 (19个工具)-资源配置跟踪
- EC2 (16个工具)-虚拟机管理
- 弹性计算服务 (10个工具)-容器编排
- 警卫职责 (10个工具)-威胁检测
- 健康客户端 (6个工具)-服务健康监测
- 国际机械师协会 (13个工具)-身份和访问管理
- 拉姆达 (12个工具)-无服务器功能
- 53号公路 (3个工具)-DNS管理
- 第3页 (11个工具)-对象存储
- 单一监管机制 (5个工具)-系统管理
API使用
发现可用工具
curl http://localhost:3000/routes
调用AWS工具
所有工具都使用POST请求 /tools/{service}/{tool}:
# List S3 buckets
curl -X POST http://localhost:3000/tools/s3/ListBuckets \
-H "Content-Type: application/json" \
-d '{"region": "us-east-1"}'
# Describe EC2 instances
curl -X POST http://localhost:3000/tools/ec2/DescribeInstances \
-H "Content-Type: application/json" \
-d '{
"region": "us-east-1",
"instanceIds": ["i-1234567890abcdef0"]
}'
集成示例
使用n8n工作流自动化
- 在同一个Docker网络上部署这两个服务
- 在n8n中使用HTTP请求节点
- 将URL设置为
http://aws-mcp-server:3000/tools/{service}/{tool}
使用自定义应用程序
// Example: List S3 buckets from Node.js
const response = await fetch('http://aws-mcp-server:3000/tools/s3/ListBuckets', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ region: 'us-east-1' })
});
const buckets = await response.json();
使用CI/CD管道
# Example: GitHub Actions
- name: Check AWS Resources
run: |
curl -X POST http://aws-mcp-server:3000/tools/ec2/DescribeInstances \
-H "Content-Type: application/json" \
-d '{"region": "us-east-1"}'
安全考虑
- 网络隔离:使用内部Docker网络进行生产
- 凭据管理:尽可能使用IAM角色而不是访问密钥
- 访问控制:如果需要,实施身份验证/授权层
- 监控:启用CloudTrail以监控API使用情况
发展
从源头构建
git clone <repository-url>
cd aws-mcp-server
docker build -t aws-mcp-server .
地方发展
npm install
cp .env.example .env
# Edit .env with your credentials
npm start
添加新工具
- 在中创建新的工具类
tools/目录 - 遵循现有模式进行参数验证
- 服务模块中的导出工具
- 重新启动服务器以加载新工具
故障排除
常见问题
- 容器无法启动:检查
.env文件存在并且具有有效的AWS凭据 - 网络连接:确保容器位于同一Docker网络上
- AWS权限:验证IAM用户/角色是否具有所需权限
- 端口冲突:如果3000正在使用中,请更改PORT环境变量
调试
# View container logs
docker logs aws-mcp-server
# Test network connectivity from another container
docker exec other-container curl http://aws-mcp-server:3000/routes
# Validate AWS credentials
docker exec aws-mcp-server aws sts get-caller-identity
贡献
- 分叉存储库
- 创建特征分支
- 添加新功能的测试
- 提交拉取请求
许可证
[在此处添加您的许可证信息]
