MCP-сервер CloudWatch
Этот упрощенный сервер MCP обеспечивает оптимизированный способ взаимодействия с ресурсами AWS CloudWatch через протокол MCP. Он представляет группы журналов CloudWatch, запросы журналов и оповещения в качестве ресурсов и инструментов.
Функции
Перечислите все группы журналов CloudWatch с их метаданными.
Список всех оповещений CloudWatch с их текущими состояниями
Запрос журналов CloudWatch с помощью CloudWatch Insights по нескольким группам журналов
Откройте для себя доступные поля в нескольких группах журналов с общей схемой
Автоматический анализ JSON для поля @message в запросах журнала
Проверьте, существуют ли определенные группы журналов
Получите подробную информацию о конкретных группах журналов
Фильтрация сигналов тревоги по состоянию (все сигналы тревоги или только те, которые находятся в состоянии ТРЕВОГА)
Извлечь все сохраненные запросы CloudWatch Logs Insights
Related MCP server: CloudWatch Logs MCP Server
Предпосылки
Python 3.12 или выше
Настроенные учетные данные AWS (через переменные среды, AWS CLI или роль IAM)
MCP CLI (версия 0.1.1 или выше)
Boto3 (AWS SDK для Python)
Настраивать
Убедитесь, что у вас установлен 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— реализация сервера MCP для интеграции CloudWatchaws_cloudwatch.py— упрощенный модуль интеграции AWS CloudWatchtest_cloudwatch.py— утилита командной строки для тестирования интеграции CloudWatch
Запуск сервера
Запустите MCP-сервер:
python cloudwatch_server.pyИли с помощью MCP CLI:
mcp run cloudwatch_server.pyИспользование сервера MCP
Ресурсы
Сервер предоставляет следующие ресурсы:
cloudwatch://log-groups— список всех групп журналов CloudWatchcloudwatch://log-groups/{log_group_name}— Получает подробную информацию о конкретной группе журналовcloudwatch://alarms— список всех оповещений CloudWatchcloudwatch://alarms/in-alarm— выводит список только тех оповещений CloudWatch, которые в данный момент находятся в состоянии ALARM.cloudwatch://saved-queries— список всех сохраненных запросов CloudWatch Logs Insights.
Инструменты
Сервер предоставляет следующие инструменты:
query_logs— запрос журналов CloudWatch с помощью CloudWatch InsightsПараметры:
log_group_names: Имя отдельной группы журналов или список имен групп журналов для запросаquery_string: строка запроса CloudWatch Insightsstart_time: (Необязательно) Время начала запроса в миллисекундах метки времени Unix.end_time: (Необязательно) Время окончания запроса в миллисекундах временной метки Unix.
Функции:
Автоматически анализирует JSON в поле @message
Возвращает структурированные данные для сообщений JSON
Обрабатывает несколько групп журналов в одном запросе
discover_log_fields— обнаружение доступных полей в нескольких группах журналовПараметры:
log_group_names: Имя отдельной группы журналов или список имен групп журналов для анализа
Функции:
Эффективно обнаруживает поля в нескольких группах журналов
Предполагается общая схема для всех групп журналов
Обнаруживает вложенные поля JSON в @message
Определяет типы полей (число, логическое значение, строка, массив)
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:
# 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Лицензия
Массачусетский технологический институт