CloudWatch MCP服务器
此简化的MCP服务器提供了一种通过MCP协议与AWS CloudWatch资源交互的简化方式。它将CloudWatch日志组、日志查询和警报作为资源和工具公开。
特性
- 列出所有CloudWatch日志组及其元数据
- 列出所有CloudWatch警报及其当前状态
- 使用CloudWatch Insights跨多个日志组查询CloudWatch日志
- 使用共享架构在多个日志组中发现可用字段
- 日志查询中@message字段的自动JSON解析
- 检查是否存在特定的日志组
- 获取特定日志组的详细信息
- 按状态过滤警报(所有警报或仅处于警报状态的警报)
- 检索所有已保存的CloudWatch日志洞察查询
先决条件
- Python 3.12或更高版本
- 配置AWS凭据(通过环境变量、AWS CLI或IAM角色)
- MCP CLI(0.1.1或更高版本)
- Boto3(AWS Python 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服务器:
python cloudwatch_server.py或者使用MCP CLI:
mcp run cloudwatch_server.py使用MCP服务器
资源
服务器公开以下资源:
cloudwatch://log-groups-列出所有CloudWatch日志组cloudwatch://log-groups/{log_group_name}-获取特定日志组的详细信息cloudwatch://alarms-列出所有CloudWatch警报cloudwatch://alarms/in-alarm-仅列出当前处于警报状态的CloudWatch警报cloudwatch://saved-queries-列出所有已保存的CloudWatch日志洞察查询
工具
服务器提供以下工具:
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日志洞察查询
- 无需参数
测试CloudWatch集成
您可以使用提供的测试脚本直接测试CloudWatch集成:
# Make the test file executable
chmod +x test_cloudwatch.py
# List all log groups
./test_cloudwatch.py log-groups
# List all alarms
./test_cloudwatch.py alarms
# Use a specific AWS profile
./test_cloudwatch.py log-groups --profile my-profile
# Enable verbose logging
./test_cloudwatch.py alarms -vMCP CLI示例
使用MCP CLI:
# List all log groups
mcp inspect cloudwatch://log-groups
# Get details about a specific log group
mcp inspect cloudwatch://log-groups/my-log-group-name
# List all alarms
mcp inspect cloudwatch://alarms
# List alarms currently in ALARM state
mcp inspect cloudwatch://alarms/in-alarm
# List all saved CloudWatch Logs Insights queries
mcp inspect cloudwatch://saved-queries
# Query logs from multiple log groups using CloudWatch Insights
mcp call query_logs --log_group_names '["log-group-1", "log-group-2"]' --query_string "fields @timestamp, @message | limit 10"
# Query logs from a single log group (still supported)
mcp call query_logs --log_group_names "my-log-group" --query_string "fields @timestamp, @message | limit 10"
# Discover fields across multiple log groups
mcp call discover_log_fields --log_group_names '["log-group-1", "log-group-2"]'
# Check if multiple log groups exist
mcp call log_group_exists --log_group_names '["log-group-1", "log-group-2"]'
# Get all saved CloudWatch Logs Insights queries
mcp call get_saved_queries许可证
麻省理工学院
