AWS可观测性工具

一个基于Model Context Protocol (MCP)的只读服务器,为AI客户端提供对AWS操作数据的结构化访问,适用于需要实时监控和分析AWS资源的场景。

  • by jmac052002
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 jmac052002/aws-observability-mcp-tools

使用说明

AWS观察性MCP工具

只读 模型上下文协议(MCP) 服务器,为AI客户端提供对实时AWS运营数据的结构化访问。它使用Python、FastMCP和boto3构建,并通过标准输入/输出与MCP客户端通信。

它的作用

MCP兼容客户端可以选择和调用范围狭窄的AWS检查工具,而不是在AI助手、AWS控制台和CLI命令之间切换。每个工具都返回结构化的JSON,并将AWS SDK错误标准化为模型可读的响应。

示例问题:

  • “我使用的是哪个AWS身份和地区?”
  • “列出名称以开头的Lambda函数 dispatch."
  • “显示此CloudWatch日志组中最近15分钟的事件。”
  • “这个ALB目标群体中的目标健康吗?”

建筑学

MCP client (Claude Desktop or another compatible client)
                         │
                         │ JSON-RPC over stdio
                         ▼
              FastMCP server (main.py)
                         │
                         │ read-only boto3 calls
                         ▼
           STS · Lambda · CloudWatch Logs · ELBv2

已实施的工具

工具 AWS API 用途
aws_whoami STS GetCallerIdentity 返回活动帐户、ARN、用户或角色以及已解决的区域
list_lambda_functions Lambda ListFunctions 使用可选前缀过滤列出Lambda名称、运行时、状态和修改时间
cloudwatch_log_tail CloudWatch日志 FilterLogEvents 从具有有界时间和结果限制的日志组中返回最近的事件
describe_alb_target_health ELBv2 DescribeTargetHealth 返回ALB或NLB目标组中目标的健康状态和诊断详细信息

目前所有的工具都是观察性的。它们不会创建、更新、重新启动或删除AWS资源。

安全和错误处理

  • 在发出AWS请求之前,对工具输入进行验证。
  • 查询限制是有限制的,以避免意外的大响应。
  • 亚马逊云服务 ClientError 和 BotoCoreError 异常被转换为结构化JSON。
  • 服务器使用所选本地AWS配置文件的权限;使用最小权限只读角色。
  • 凭据由boto3解析,不存储在此存储库中。

针对所有已实施工具的最低IAM策略需要采取以下行动:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sts:GetCallerIdentity",
        "lambda:ListFunctions",
        "logs:FilterLogEvents",
        "elasticloadbalancing:DescribeTargetHealth"
      ],
      "Resource": "*"
    }
  ]
}

某些AWS读取API不支持资源级别限制。在生产环境中,在适当的情况下,将此策略与受控配置文件、权限边界和组织级护栏相结合。

需求

  • Python 3.10+
  • 通过配置文件、环境变量或附加角色配置的AWS凭据
  • MCP兼容客户端

设置

git clone https://github.com/jmac052002/aws-observability-mcp-tools.git
cd aws-observability-mcp-tools

python3 -m venv .venv
source .venv/bin/activate
pip install fastmcp boto3

在连接服务器之前,请确认您的AWS身份可用:

aws sts get-caller-identity

运行服务器

python main.py

该进程通过stdio进行通信,因此它通常由MCP客户端启动和管理,而不是作为独立的web服务运行。

Claude桌面配置

将服务器添加到 claude_desktop_config.json 使用绝对路径:

{
  "mcpServers": {
    "aws-observability": {
      "command": "/absolute/path/to/aws-observability-mcp-tools/.venv/bin/python",
      "args": [
        "/absolute/path/to/aws-observability-mcp-tools/main.py"
      ]
    }
  }
}

更新配置后重新启动Claude Desktop。

刀具参数

每个工具都接受可选 profile 和 region 论据。如果省略,boto3将遵循其正常的凭据和区域解析链。CloudWatch和Lambda工具还强制执行有界查询大小,ALB健康工具在调用AWS之前验证目标组ARN。

项目状态

主动学习和投资组合项目。当前的实现涵盖了四个只读操作查询。其他工具只有在实施和验证后才能记录在案。

作者

约瑟夫·麦考伊· GitHub · 领英