AWS MCP服务器

一个基于Docker的AWS MCP服务器,通过REST API提供S3桶列表、EC2实例列表等功能,支持SSE端点。

  • by kluster66
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 kluster66/aws_mcp

使用说明

使用Docker的AWS MCP服务器

该项目是一个模型上下文协议(MCP)服务器,通过REST API公开AWS功能(列出S3存储桶,列出EC2实例)。 fastmcp,一个用于创建与上下文协议模型兼容的服务器的轻量级框架,公开了服务器发送事件(SSE)端点,并设计为使用Docker轻松部署。

项目结构

├-aws-mcp-server.py Python代码(工具定义)

├-dockerfile#Docker映像(Python环境)

└── docker-compose.yml#编排(注入凭证)

先决条件

  1. Docker与Docker编写 :确保它们安装在您的机器上。

  2. 配置AWS ID :服务器正在使用 boto3,谁需要您的AWS凭据。推荐的方法是拥有您的文件 ~/.aws/credentials 配置。文件 docker-compose.yml 已配置为将此目录装载到容器中。

    Ne代码 永不 您的硬标识符在代码中。

使用Docker Compose启动服务器

启动服务器的推荐方法是使用Docker Compose。

  1. 转到项目目录:

    cd aws_mcp
    
  2. 启动服务: 此命令将构建Docker映像(如果不存在),并在后台启动容器。

    docker-compose up --build -d
    

服务器现在正在运行并可访问 http://localhost:5001.

有用的Docker Compose命令

  • 要查看服务器日志:

    docker-compose logs -f
    
  • 要停止和删除容器:

    docker-compose down
    

协议的入口点(Endpoints)

服务器通过库管理的标准入口点实现模型上下文协议。 mcp它需要所有呼叫的身份验证令牌。

1.发现工具(/tools)

列出可用工具及其模式。

  • 统一资源定位符 : /tools
  • 方法 : GET
  • 头球 : Authorization: Bearer changeme
  • 答复 :包含工具列表、描述和参数的JSON。

示例 curl:

curl -H "Authorization: Bearer changeme" http://localhost:5001/tools

2.执行工具(/execute)

允许您使用参数启动特定工具。

  • 统一资源定位符 : /execute
  • 方法 : POST
  • 头球 : Authorization: Bearer changeme
  • 请求体(body) :指定工具名称及其参数的JSON。
    {
      "tool_name": "nom_de_l_outil",
      "arguments": {
        "param1": "valeur1"
      }
    }
    
  • 答复 :包含工具执行结果的JSON。

可用工具

工具 描述 设置
list_s3_buckets 返回所有S3存储桶的名称列表。 无
list_ec2_instances 列出给定区域中的EC2实例。 region (字符串,可选):AWS区域。缺陷: eu-west-3.
get_monthly_cost 获取当月的AWS总成本。 无
get_cost_breakdown列出本月最昂贵的5项AWS服务。 无

示例 curl:

  • 李斯特水桶S3:

    curl -X POST -H "Content-Type: application/json" \
         -H "Authorization: Bearer changeme" \
         -d '{"tool_name": "list_s3_buckets"}' \
         http://localhost:5001/execute
    
  • 列出特定区域中的EC2实例:

    curl -X POST -H "Content-Type: application/json" \
         -H "Authorization: Bearer changeme" \
         -d '{"tool_name": "list_ec2_instances", "arguments": {"region": "us-west-2"}}' \
         http://localhost:5001/execute