AWS模型上下文协议服务器

AWS-MCP是一个开源的模型上下文协议服务器,通过自然语言使AI代理能够安全地与AWS基础设施交互。

  • by thejasrao262003
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 thejasrao262003/AWS_MCP

使用说明

🦾 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 -从实例创建AMI
  • ec2.describe_images -列出并过滤AMI
  • ec2.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 -修改卷大小/类型/IPS
  • ebs.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 -列出该地区的所有VPC
  • vpc.get_default_vpc -获取默认VPC
  • vpc.describe_vpc -描述特定VPC
  • vpc.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模型→ 工具功能→ 注册表

⚙️ 运作原理

  1. MCP服务器注册了多个 工具 (函数)与模式。

  2. LLM(如GPT-4.1)接收这些工具定义。

  3. 你问了一个自然语言问题:

    “显示us-east-1中的所有EC2实例。”

  4. LLM选择正确的工具并使用参数调用它。

  5. MCP服务器通过boto3包装器执行AWS API。

  6. 工具返回 结构化JSON 回到LLM。

  7. 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已安装

安装

  1. 克隆仓库:

    git clone https://github.com/thejasrao262003/AWS_MCP.git
    cd AWS_MCP
    
  2. 安装依赖项:

    pip install -r requirements.txt
    
  3. 配置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
    
  4. 运行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验证