CloudWatch MCP Server

by CharlieFng
2
  • Linux
  • Apple

CloudWatch MCP Server

This simplified MCP server provides a streamlined way to interact with AWS CloudWatch resources through the MCP protocol. It exposes CloudWatch log groups, log queries, and alarms as resources and tools.

Features

  • List all CloudWatch log groups with their metadata
  • List all CloudWatch alarms with their current states
  • Query CloudWatch logs using CloudWatch Insights across multiple log groups
  • Discover available fields across multiple log groups with shared schema
  • Automatic JSON parsing for @message field in log queries
  • Check if specific log groups exist
  • Get detailed information about specific log groups
  • Filter alarms by state (all alarms or only those in ALARM state)
  • Retrieve all saved CloudWatch Logs Insights queries

Prerequisites

  • Python 3.12 or higher
  • AWS credentials configured (via environment variables, AWS CLI, or IAM role)
  • MCP CLI (version 0.1.1 or higher)
  • Boto3 (AWS SDK for Python)

Setup

  1. Make sure you have Python 3.12+ installed.
  2. Create a virtual environment (optional but recommended):
    python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate
  3. Install dependencies:
    pip install -r requirements.txt
  4. Configure AWS credentials if you haven't already:
    aws configure
    Or set environment variables:
    export AWS_ACCESS_KEY_ID="your-access-key" export AWS_SECRET_ACCESS_KEY="your-secret-key" export AWS_REGION="your-region"

Project Structure

  • cloudwatch_server.py - MCP server implementation for CloudWatch integration
  • aws_cloudwatch.py - Simplified AWS CloudWatch integration module
  • test_cloudwatch.py - Command-line utility to test the CloudWatch integration

Running the server

Start the MCP server:

python cloudwatch_server.py

Or using the MCP CLI:

mcp run cloudwatch_server.py

Using the MCP server

Resources

The server exposes the following resources:

  • cloudwatch://log-groups - Lists all CloudWatch log groups
  • cloudwatch://log-groups/{log_group_name} - Gets detailed information about a specific log group
  • cloudwatch://alarms - Lists all CloudWatch alarms
  • cloudwatch://alarms/in-alarm - Lists only CloudWatch alarms currently in ALARM state
  • cloudwatch://saved-queries - Lists all saved CloudWatch Logs Insights queries

Tools

The server provides the following tools:

  • query_logs - Query CloudWatch logs using CloudWatch Insights
    • Parameters:
      • log_group_names: Single log group name or list of log group names to query
      • query_string: CloudWatch Insights query string
      • start_time: (Optional) Start time for the query in Unix timestamp milliseconds
      • end_time: (Optional) End time for the query in Unix timestamp milliseconds
    • Features:
      • Automatically parses JSON in @message field
      • Returns structured data for JSON messages
      • Handles multiple log groups in a single query
  • discover_log_fields - Discover available fields across multiple log groups
    • Parameters:
      • log_group_names: Single log group name or list of log group names to analyze
    • Features:
      • Efficiently discovers fields across multiple log groups
      • Assumes shared schema across log groups
      • Detects nested JSON fields in @message
      • Identifies field types (number, boolean, string, array)
  • log_group_exists - Check if CloudWatch log groups exist
    • Parameters:
      • log_group_names: Single log group name or list of log group names to check
    • Returns:
      • Dictionary mapping each log group to its existence status
  • get_saved_queries - Fetch all saved CloudWatch Logs Insights queries
    • No parameters required

Testing the CloudWatch integration

You can test the CloudWatch integration directly using the provided test script:

# 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

Examples with MCP CLI

Using the 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

License

MIT

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

A simplified MCP server that provides a streamlined way to interact with AWS CloudWatch resources (log groups, log queries, and alarms) through the MCP protocol.

  1. Features
    1. Prerequisites
      1. Setup
        1. Project Structure
          1. Running the server
            1. Using the MCP server
              1. Resources
              2. Tools
            2. Testing the CloudWatch integration
              1. Examples with MCP CLI
                1. License

                  Related MCP Servers

                  • Amazon Web Services
                    aws-mcp

                    A
                    security
                    F
                    license
                    A
                    quality
                    A Model Context Protocol (MCP) server that enables AI assistants like Claude to interact with your AWS environment. This allows for natural language querying and management of your AWS resources during conversations. Think of better Amazon Q alternative.
                    Last updated -
                    3
                    222
                    TypeScript
                    • Apple
                  • A
                    security
                    A
                    license
                    A
                    quality
                    The Seq MCP Server enables interaction with Seq's API endpoints for logging and monitoring, providing tools for managing signals, events, and alerts with extensive filtering and configuration options.
                    Last updated -
                    3
                    13
                    3
                    JavaScript
                    MIT License
                    • Apple
                  • A
                    security
                    A
                    license
                    A
                    quality
                    The MCP server provides an interface to the Datadog API, enabling seamless management of incidents, monitoring, logs, dashboards, metrics, traces, and hosts. Its extensible design allows easy integration of additional Datadog APIs for future expansions.
                    Last updated -
                    14
                    322
                    36
                    TypeScript
                    Apache 2.0
                    • Apple
                  • -
                    security
                    F
                    license
                    -
                    quality
                    An MCP server that allows AI assistants to access AWS CloudWatch logs by listing log groups and reading log entries.
                    Last updated -
                    4
                    Python

                  View all related MCP servers

                  ID: kq3vp7y75o