Skip to main content
Glama
CharlieFng

CloudWatch MCP Server

by CharlieFng

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)

设置

  1. 确保已安装 Python 3.12+。

  2. 创建虚拟环境(可选但推荐):

    python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate
  3. 安装依赖项:

    pip install -r requirements.txt
  4. 如果尚未配置 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 - 仅列出当前处于 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 集成:

# 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 -v

MCP 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

执照

麻省理工学院

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/CharlieFng/cloudwatch-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server