CloudWatch MCP 服务器
此简化的 MCP 服务器提供了一种通过 MCP 协议与 AWS CloudWatch 资源交互的简化方式。它将 CloudWatch 日志组、日志查询和警报公开为资源和工具。
特征
列出所有 CloudWatch 日志组及其元数据
列出所有 CloudWatch 警报及其当前状态
使用 CloudWatch Insights 跨多个日志组查询 CloudWatch 日志
使用共享模式发现多个日志组中的可用字段
日志查询中 @message 字段的自动 JSON 解析
检查特定日志组是否存在
获取特定日志组的详细信息
按状态过滤警报(所有警报或仅处于 ALARM 状态的警报)
检索所有已保存的 CloudWatch Logs Insights 查询
Related MCP server: CloudWatch Logs MCP Server
先决条件
Python 3.12 或更高版本
配置 AWS 凭证(通过环境变量、AWS CLI 或 IAM 角色)
MCP CLI(版本 0.1.1 或更高版本)
Boto3(适用于 Python 的 AWS SDK)
设置
确保已安装 Python 3.12+。
创建虚拟环境(可选但推荐):
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate安装依赖项:
pip install -r requirements.txt如果尚未配置 AWS 凭证,请配置:
aws configure或者设置环境变量:
export AWS_ACCESS_KEY_ID="your-access-key" export AWS_SECRET_ACCESS_KEY="your-secret-key" export AWS_REGION="your-region"
项目结构
cloudwatch_server.py- 用于 CloudWatch 集成的 MCP 服务器实现aws_cloudwatch.py- 简化的 AWS CloudWatch 集成模块test_cloudwatch.py- 用于测试 CloudWatch 集成的命令行实用程序
运行服务器
启动 MCP 服务器:
或者使用 MCP CLI:
使用 MCP 服务器
资源
服务器公开以下资源:
cloudwatch://log-groups- 列出所有 CloudWatch 日志组cloudwatch://log-groups/{log_group_name}- 获取有关特定日志组的详细信息cloudwatch://alarms- 列出所有 CloudWatch 警报cloudwatch://alarms/in-alarm- 仅列出当前处于 ALARM 状态的 CloudWatch 警报cloudwatch://saved-queries- 列出所有已保存的 CloudWatch Logs Insights 查询
工具
该服务器提供以下工具:
query_logs- 使用 CloudWatch Insights 查询 CloudWatch 日志参数:
log_group_names:要查询的单个日志组名称或日志组名称列表query_string:CloudWatch Insights 查询字符串start_time:(可选)查询的开始时间(以 Unix 时间戳毫秒为单位)end_time:(可选)查询的结束时间(以 Unix 时间戳毫秒为单位)
特征:
自动解析@message字段中的JSON
返回 JSON 消息的结构化数据
在单个查询中处理多个日志组
discover_log_fields- 发现多个日志组中的可用字段参数:
log_group_names:要分析的单个日志组名称或日志组名称列表
特征:
高效地发现跨多个日志组的字段
假设跨日志组共享模式
检测@message中的嵌套JSON字段
识别字段类型(数字、布尔值、字符串、数组)
log_group_exists- 检查 CloudWatch 日志组是否存在参数:
log_group_names:要检查的单个日志组名称或日志组名称列表
返回:
将每个日志组映射到其存在状态的字典
get_saved_queries- 获取所有已保存的 CloudWatch Logs Insights 查询无需参数
测试 CloudWatch 集成
您可以使用提供的测试脚本直接测试 CloudWatch 集成:
MCP CLI 示例
使用 MCP CLI:
执照
麻省理工学院