CloudWatch MCP Server

CloudWatch MCP Server

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.

Category
Visit Server

README

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

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured