Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@CloudWatch MCP Serverquery logs from my-app-group for errors in the last hour"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
Related MCP server: CloudWatch Logs MCP Server
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
Make sure you have Python 3.12+ installed.
Create a virtual environment (optional but recommended):
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activateInstall dependencies:
pip install -r requirements.txtConfigure AWS credentials if you haven't already:
aws configureOr 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 integrationaws_cloudwatch.py- Simplified AWS CloudWatch integration moduletest_cloudwatch.py- Command-line utility to test the CloudWatch integration
Running the server
Start the MCP server:
python cloudwatch_server.pyOr using the MCP CLI:
mcp run cloudwatch_server.pyUsing the MCP server
Resources
The server exposes the following resources:
cloudwatch://log-groups- Lists all CloudWatch log groupscloudwatch://log-groups/{log_group_name}- Gets detailed information about a specific log groupcloudwatch://alarms- Lists all CloudWatch alarmscloudwatch://alarms/in-alarm- Lists only CloudWatch alarms currently in ALARM statecloudwatch://saved-queries- Lists all saved CloudWatch Logs Insights queries
Tools
The server provides the following tools:
query_logs- Query CloudWatch logs using CloudWatch InsightsParameters:
log_group_names: Single log group name or list of log group names to queryquery_string: CloudWatch Insights query stringstart_time: (Optional) Start time for the query in Unix timestamp millisecondsend_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 groupsParameters:
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 existParameters:
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 queriesNo 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 -vExamples 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_queriesLicense
MIT
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.