使用说明
🦾 AWS的开源模型上下文协议服务器AWS-MCP
AWS-MCP 是一个开源 模型上下文协议(MCP) 将AWS服务公开为 类型化、安全、模式驱动的工具 LLMs。 它使AI代理(GPT-4.1、Claude 3.5、Cursor、Replit代理、复制样式系统)能够使用自然语言与AWS基础设施交互,同时完全受IAM控制的工具访问控制。
⚡ 简言之: “您的AWS帐户,可通过人工智能访问,但安全且结构完整。”
🧠 为什么这个项目存在
现代LLM在推理方面非常有能力,但在与基础设施交互方面却很盲目。 MCP通过定义一个通用协议来解决这个问题 工具 具有严格的模式。
该项目实现了 AWS的MCP服务器,启用:
- 检查EC2实例
- 获取CloudWatch指标
- 探索Lambdas、ECR镜像、ECS服务
- 读取S3对象
- (未来)安全地修改基础设施
…全程 结构化工具调用,而不是自由形式的提示。
这是 非 聊天机器人。 这是 后端 任何支持LLM的代理都可以调用它来了解和管理AWS。
一个单独的存储库将包含聊天界面和代理编排层。
🚀 特点和当前进展
此MCP服务器跨多个服务提供51个生产就绪的AWS工具,所有工具都具有类型化模式和FastMCP兼容性。
✅ EC2服务——32个工具(完整)
实例管理(10个工具)
ec2.list_instances-列出所有带筛选器的EC2实例ec2.describe_instances-获取详细的实例信息ec2.start_instances-启动已停止的实例ec2.stop_instances-停止运行实例ec2.reboot_instances-重新启动实例ec2.terminate_instances-终止实例ec2.create_instance-以完整配置启动EC2实例ec2.create_instance_minimal-快速创建实例ec2.create_spot_instance-创建点实例请求ec2.generate_instance_ssh_instruction-生成SSH连接命令
密钥对管理(3个工具)
ec2.create_keypair-创建新的EC2密钥对ec2.describe_keypairs-列出密钥对ec2.delete_keypair-删除密钥对
安全组(3个工具)
ec2.describe_security_groups-列出安全组ec2.create_security_group-创建新的安全组ec2.authorize_security_group_ingress-添加入站规则
启动模板(6个工具)
ec2.create_launch_template-创建可重用的启动模板ec2.create_launch_template_version-版本启动模板ec2.describe_launch_template-获取模板详细信息ec2.delete_launch_template-删除模板ec2.list_launch_templates-列出所有模板ec2.launch_from_template-从模板启动实例
AMI管理(3个工具)
ec2.create_ami-从实例创建AMIec2.describe_images-列出并过滤AMIec2.deregister_ami-注销AMI
元数据和定价(6个工具)
ec2.get_user_data-获取实例用户数据脚本ec2.describe_metadata_options-获取IMDS设置ec2.modify_metadata_options-修改IMDS配置ec2.get_ondemand_price-按需定价ec2.get_spot_price_history-现货价格历史ec2.estimate_instance_cost-计算每月成本
VPC集成(1个工具)
ec2.get_instance_vpc_info-获取实例的VPC/子网详细信息
✅ EBS(弹性块存储)——13个工具(完整)
卷管理(4个工具)
ebs.create_volume-创建EBS卷ebs.modify_volume-修改卷大小/类型/IPSebs.delete_volume-删除卷ebs.describe_volumes-列出和过滤卷
卷附件(2个工具)
ebs.attach_volume-将卷附加到实例ebs.detach_volume-从实例中分离卷
快照管理(7个工具)
ebs.create_snapshot-创建卷快照ebs.delete_snapshot-删除快照ebs.list_snapshots-带过滤器的列表ebs.describe_snapshot-获取快照详细信息ebs.copy_snapshot-跨区域复制快照ebs.restore_volume_from_snapshot-从快照创建卷ebs.get_snapshot_progress-跟踪快照创建进度
✅ VPC(虚拟私有云)——6个工具(完整)
vpc.list_vpcs-列出该地区的所有VPCvpc.get_default_vpc-获取默认VPCvpc.describe_vpc-描述特定VPCvpc.list_subnets-列出所有子网vpc.get_default_subnets-获取默认VPC子网vpc.describe_subnet-描述子网详细信息
🔄 CloudWatch--进行中
- EC2、Lambda、ECS的度量检索
- 自定义指标查询
- 报警管理(计划)
🔧 Lambda--正在进行中
- 功能列表和配置
- 调用和日志(计划中)
📦 ECR——计划中
- 存储库管理
- 图像列表和标记
🐳 ECS——计划中
- 集群和服务管理
- 任务描述
📁 S3——计划中
- 桶和对象操作
- 安全只读访问
🏗️ 架构概述
服务器设计为 清晰的模块化边界、强类型(Pydantic v2)和生产就绪服务抽象。
aws-mcp/
│
├── mcp_server/
│ ├── core/ # MCP scaffolding & registry
│ │ ├── config.py # Configuration management
│ │ ├── exceptions.py # Custom exceptions
│ │ └── registry.py # Tool registration system
│ │
│ ├── aws/ # Boto3 wrapper clients
│ │ ├── ec2_client.py
│ │ ├── cloudwatch_client.py
│ │ ├── lambda_client.py
│ │ ├── ecr_client.py
│ │ ├── ecs_client.py
│ │ ├── s3_client.py
│ │ └── iam_client.py
│ │
│ ├── models/ # Pydantic v2 schemas (modularized)
│ │ ├── ec2/ # EC2 models by functionality
│ │ │ ├── list.py
│ │ │ ├── lifecycle.py
│ │ │ ├── creation.py
│ │ │ ├── keypair.py
│ │ │ ├── security_group.py
│ │ │ ├── launch_templates.py
│ │ │ ├── ami.py
│ │ │ ├── metadata.py
│ │ │ └── pricing.py
│ │ ├── ebs/ # EBS models
│ │ │ ├── volume.py
│ │ │ ├── attachment.py
│ │ │ └── snapshot_models.py
│ │ ├── vpc/ # VPC models
│ │ ├── cloudwatch.py
│ │ ├── lambda_.py
│ │ └── common.py
│ │
│ ├── tools/ # FastMCP tools (kwargs-based)
│ │ ├── ec2/ # EC2 tools by functionality
│ │ │ ├── list.py
│ │ │ ├── instance_lifecycle.py
│ │ │ ├── instance_creation.py
│ │ │ ├── keypair.py
│ │ │ ├── security_groups.py
│ │ │ ├── preparation.py
│ │ │ ├── launch_templates.py
│ │ │ ├── ami.py
│ │ │ ├── metadata.py
│ │ │ └── pricing.py
│ │ ├── ebs/ # EBS tools
│ │ │ ├── volume_tools.py
│ │ │ ├── attachment_tools.py
│ │ │ └── snapshot_tools.py
│ │ ├── vpc/
│ │ │ └── describe_vpc.py
│ │ ├── cloudwatch_tools.py
│ │ ├── lambda_tools.py
│ │ └── s3_tools.py
│ │
│ └── utils/ # Logging, validation, helpers
│ ├── logging.py
│ ├── validators.py
│ └── responses.py
│
├── TOOLS_CHECKLIST/ # Tool documentation
│ └── EC2_TOOLKIT.md
├── server.py # FastMCP server entry point
├── fastmcp.json # MCP configuration
└── README.md
🔹 核心设计选择
- 服务型组织:按AWS服务(EC2、EBS、VPC)分组的工具
- 模块化架构:按可维护性功能划分的模型和工具
- FastMCP兼容性:所有工具都使用关键字参数而不是Pydantic参数
- Pydantic v2型号:模式的强类型,通过使用
model_json_schema() - 工具命名约定:
service.operation(例如。,ec2.create_instance,ebs.create_volume) - 显式注册表:服务级别工具加载可防止重复
- 类型安全参数:打字模块中带有Optional、List、Dict的完整打字提示
- 默认区域:所有工具默认为
ap-south-1或环境配置区域 - 清洁分离:AWS客户端→ Pydantic模型→ 工具功能→ 注册表
⚙️ 运作原理
-
MCP服务器注册了多个 工具 (函数)与模式。
-
LLM(如GPT-4.1)接收这些工具定义。
-
你问了一个自然语言问题:
“显示us-east-1中的所有EC2实例。”
-
LLM选择正确的工具并使用参数调用它。
-
MCP服务器通过boto3包装器执行AWS API。
-
工具返回 结构化JSON 回到LLM。
-
LLM解释结构并回答用户。
这与以下所使用的架构相同:
- 云IDE中的AI代理
- 游标/回复代理
- OpenAI的内部GPT工具调用
- GitHub副本工作区
🔐 IAM权限
根据您使用的工具,服务器需要特定的AWS IAM权限。以下是所需的最低权限:
EC2工具(32个工具)
# Instance operations
ec2:DescribeInstances
ec2:RunInstances
ec2:StartInstances
ec2:StopInstances
ec2:RebootInstances
ec2:TerminateInstances
ec2:DescribeInstanceAttribute
# KeyPair management
ec2:CreateKeyPair
ec2:DescribeKeyPairs
ec2:DeleteKeyPair
# Security Groups
ec2:DescribeSecurityGroups
ec2:CreateSecurityGroup
ec2:AuthorizeSecurityGroupIngress
# Launch Templates
ec2:CreateLaunchTemplate
ec2:CreateLaunchTemplateVersion
ec2:DescribeLaunchTemplates
ec2:DeleteLaunchTemplate
# AMI management
ec2:CreateImage
ec2:DescribeImages
ec2:DeregisterImage
# Metadata
ec2:ModifyInstanceMetadataOptions
# VPC
ec2:DescribeVpcs
ec2:DescribeSubnets
EBS工具(13个工具)
# Volume operations
ec2:CreateVolume
ec2:ModifyVolume
ec2:DeleteVolume
ec2:DescribeVolumes
ec2:AttachVolume
ec2:DetachVolume
# Snapshot operations
ec2:CreateSnapshot
ec2:DeleteSnapshot
ec2:DescribeSnapshots
ec2:CopySnapshot
CloudWatch工具
cloudwatch:GetMetricData
cloudwatch:GetMetricStatistics
cloudwatch:ListMetrics
未来服务(可选)
- λ:
lambda:ListFunctions,lambda:GetFunctionConfiguration,lambda:InvokeFunction - ECS:
ecs:ListClusters,ecs:ListServices,ecs:DescribeServices,ecs:DescribeTasks - ECR:
ecr:DescribeRepositories,ecr:ListImages,ecr:DescribeImages - S3:
s3:ListBucket,s3:GetObject(只读)
API定价
对于EC2定价工具,定价API要求 us-east-1 地区:
pricing:GetProducts
备注:包括破坏性操作(终止、删除),但应在生产中通过IAM策略进行仔细控制。
🛠️ 安装和设置
先决条件
- Python 3.10+
- 已配置AWS凭据(
~/.aws/credentials或环境变量) - Boto3已安装
安装
-
克隆仓库:
git clone https://github.com/thejasrao262003/AWS_MCP.git cd AWS_MCP -
安装依赖项:
pip install -r requirements.txt -
配置AWS凭据:
aws configure # Or set environment variables: export AWS_ACCESS_KEY_ID=your_access_key export AWS_SECRET_ACCESS_KEY=your_secret_key export AWS_DEFAULT_REGION=ap-south-1 -
运行MCP服务器:
python server.py
配置
服务器使用 fastmcp.json 用于MCP配置。您可以自定义:
- 默认AWS区域
- 工具注册
- 服务器设置
示例 fastmcp.json:
{
"name": "aws-mcp",
"version": "0.1.0",
"description": "AWS Model Context Protocol Server"
}
🧩 示例用法
直接使用工具
from mcp_server.tools.ec2.list import list_instances
# List all running instances
result = list_instances(
region="ap-south-1",
state="running"
)
print(result)
创建EC2实例
from mcp_server.tools.ec2.instance_creation import create_instance_minimal
# Launch a simple EC2 instance
result = create_instance_minimal(
ImageId="ami-0c55b159cbfafe1f0",
InstanceType="t2.micro",
KeyName="my-keypair",
region="ap-south-1"
)
print(f"Instance created: {result['instance_id']}")
管理EBS卷
from mcp_server.tools.ebs.volume_tools import create_volume
from mcp_server.tools.ebs.attachment_tools import attach_volume
# Create a 100GB gp3 volume
volume = create_volume(
AvailabilityZone="ap-south-1a",
Size=100,
VolumeType="gp3",
region="ap-south-1"
)
# Attach it to an instance
attach_volume(
VolumeId=volume['VolumeId'],
InstanceId="i-1234567890abcdef0",
Device="/dev/sdf",
region="ap-south-1"
)
获取实例定价
from mcp_server.tools.ec2.pricing import get_ondemand_price, estimate_instance_cost
# Get hourly price for t3.medium
pricing = get_ondemand_price(
instance_type="t3.medium",
operating_system="Linux",
region="ap-south-1"
)
# Estimate monthly cost for 24/7 usage
estimate = estimate_instance_cost(
instance_type="t3.medium",
hours_per_month=730,
region="ap-south-1"
)
与VPC合作
from mcp_server.tools.vpc.describe_vpc import get_default_vpc, get_default_subnets
# Get default VPC
vpc = get_default_vpc(region="ap-south-1")
# Get all subnets in default VPC
subnets = get_default_subnets(region="ap-south-1")
与LLM工具调用一起使用
# The MCP server exposes tools that can be called by LLMs
# Tools are automatically registered with FastMCP
# Example with OpenAI:
import openai
response = openai.chat.completions.create(
model="gpt-4o",
tools=mcp_tools, # Auto-generated from FastMCP
messages=[{
"role": "user",
"content": "List all running EC2 instances in Mumbai region"
}]
)
📘 文档
这 docs/ 目录将包含:
- architecture.md --完整的服务器架构
- 路线图.md --发布计划和服务
- tools.md --MCP工具规格
- 贡献.md --如何做出贡献
🧭 路线图和进展
✅ v0.1.0(当前)-EC2和EBS基础版
- ✅ 32个EC2工具(实例、密钥对、安全组、AMI、启动模板、定价、元数据)
- ✅ 13个EBS工具(卷、快照、附件)
- ✅ 6个VPC工具(VPC、子网)
- ✅ 模块化Pydantic v2型号
- ✅ FastMCP兼容性(基于kwargs的工具功能)
- ✅ 基于服务的工具组织
- ✅ 干净的注册表系统
- 🔄 CloudWatch指标(进行中)
v0.2.0(下一个)-Lambda和容器服务
- Lambda函数管理
- Lambda调用和日志
- ECR存储库和映像管理
- ECS集群和服务操作
- 增强的CloudWatch集成
v0.3.0-存储和附加服务
- S3桶和对象操作
- IAM角色和政策检查
- RDS实例管理
- DynamoDB表操作
v0.4.0-高级功能
- 成本优化建议
- 资源标记自动化
- 多区域运营
- 批量操作支持
v1.0.0-生产就绪
- 综合测试套件(单元+集成)
- 全部文件
- CI/CD管道
- 性能优化
- 安全强化
- PyPI包发布
- Docker容器支持
🤝 贡献
欢迎投稿!
你可以:
- 添加新的AWS服务
- 创建Pydantic模型
- 编写工具
- 改进测试
- 添加文档
- 提出改进建议
看 docs/contributing.md 作为指导方针。
📜 许可证
MIT许可证
⭐ 支持项目
如果这个项目对你或你的团队有帮助,请考虑在repo中担任主角——它有助于项目的发展,并接触到更多的开发人员。
🙌 致谢
内置:
- AWS SDK -用于AWS API交互的boto3
- FastMCP -模型上下文协议框架
- Pydantic v2 -数据验证和模式生成
- Python 3.10+ -现代Python特性和类型提示
特别感谢:
- 协议规范的MCP社区
- AWS提供全面的API文件
- 贡献者和早期采用者
📊 项目统计
- 工具总数: 51
- AWS服务:3(EC2、EBS、VPC)+2正在进行中(CloudWatch、Lambda)
- 模型类:40+Pydantic模型
- 建筑:完全模块化、生产就绪的设计
- 类型安全:100%类型暗示严格的Pydantic验证
