CloudWatch MCP 서버
이 간소화된 MCP 서버는 MCP 프로토콜을 통해 AWS CloudWatch 리소스와 상호 작용하는 간소화된 방법을 제공합니다. CloudWatch 로그 그룹, 로그 쿼리 및 알람을 리소스 및 도구로 제공합니다.
특징
- 메타데이터와 함께 모든 CloudWatch 로그 그룹을 나열합니다.
- 현재 상태와 함께 모든 CloudWatch 알람을 나열합니다.
- CloudWatch Insights를 사용하여 여러 로그 그룹에 걸쳐 CloudWatch 로그 쿼리
- 공유 스키마를 사용하여 여러 로그 그룹에서 사용 가능한 필드를 검색합니다.
- 로그 쿼리의 @message 필드에 대한 자동 JSON 구문 분석
- 특정 로그 그룹이 존재하는지 확인하세요
- 특정 로그 그룹에 대한 자세한 정보를 얻으세요
- 상태별로 알람 필터링(모든 알람 또는 ALARM 상태의 알람만)
- 저장된 모든 CloudWatch Logs Insights 쿼리 검색
필수 조건
- Python 3.12 이상
- AWS 자격 증명이 구성됨(환경 변수, AWS CLI 또는 IAM 역할을 통해)
- MCP CLI(버전 0.1.1 이상)
- Boto3(Python용 AWS SDK)
설정
- Python 3.12 이상이 설치되어 있는지 확인하세요.
- 가상 환경을 만듭니다(선택 사항이지만 권장됨):지엑스피1
- 종속성 설치:
pip install -r requirements.txt
- 아직 AWS 자격 증명을 구성하지 않았다면 다음을 수행합니다.또는 환경 변수를 설정합니다.
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
특허
MIT