CloudWatch MCP-Server
Dieser vereinfachte MCP-Server bietet eine optimierte Möglichkeit zur Interaktion mit AWS CloudWatch-Ressourcen über das MCP-Protokoll. Er stellt CloudWatch-Protokollgruppen, Protokollabfragen und Alarme als Ressourcen und Tools bereit.
Merkmale
- Listen Sie alle CloudWatch-Protokollgruppen mit ihren Metadaten auf
- Listen Sie alle CloudWatch-Alarme mit ihren aktuellen Zuständen auf
- Abfragen von CloudWatch-Protokollen mit CloudWatch Insights über mehrere Protokollgruppen hinweg
- Entdecken Sie verfügbare Felder in mehreren Protokollgruppen mit gemeinsamem Schema
- Automatisches JSON-Parsing für das Feld „@message“ in Protokollabfragen
- Prüfen, ob bestimmte Protokollgruppen vorhanden sind
- Erhalten Sie detaillierte Informationen zu bestimmten Protokollgruppen
- Filtern Sie Alarme nach Status (alle Alarme oder nur diejenigen im ALARM-Status)
- Abrufen aller gespeicherten CloudWatch Logs Insights-Abfragen
Voraussetzungen
- Python 3.12 oder höher
- AWS-Anmeldeinformationen konfiguriert (über Umgebungsvariablen, AWS CLI oder IAM-Rolle)
- MCP CLI (Version 0.1.1 oder höher)
- Boto3 (AWS SDK für Python)
Aufstellen
- Stellen Sie sicher, dass Sie Python 3.12+ installiert haben.
- Erstellen Sie eine virtuelle Umgebung (optional, aber empfohlen):
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
- Installieren Sie Abhängigkeiten:
pip install -r requirements.txt
- Konfigurieren Sie AWS-Anmeldeinformationen, falls Sie dies noch nicht getan haben:Oder legen Sie Umgebungsvariablen fest:
export AWS_ACCESS_KEY_ID="your-access-key"
export AWS_SECRET_ACCESS_KEY="your-secret-key"
export AWS_REGION="your-region"
Projektstruktur
cloudwatch_server.py
– MCP-Serverimplementierung für die CloudWatch-Integrationaws_cloudwatch.py
– Vereinfachtes AWS CloudWatch-Integrationsmodultest_cloudwatch.py
– Befehlszeilenprogramm zum Testen der CloudWatch-Integration
Ausführen des Servers
Starten Sie den MCP-Server:
python cloudwatch_server.py
Oder mithilfe der MCP-CLI:
mcp run cloudwatch_server.py
Verwenden des MCP-Servers
Ressourcen
Der Server stellt die folgenden Ressourcen bereit:
cloudwatch://log-groups
– Listet alle CloudWatch-Protokollgruppen aufcloudwatch://log-groups/{log_group_name}
– Ruft detaillierte Informationen zu einer bestimmten Protokollgruppe abcloudwatch://alarms
– Listet alle CloudWatch-Alarme aufcloudwatch://alarms/in-alarm
– Listet nur CloudWatch-Alarme auf, die sich derzeit im ALARM-Status befindencloudwatch://saved-queries
– Listet alle gespeicherten CloudWatch Logs Insights-Abfragen auf
Werkzeuge
Der Server stellt die folgenden Tools bereit:
query_logs
– Abfragen von CloudWatch-Protokollen mit CloudWatch Insights- Parameter:
log_group_names
: Einzelner Protokollgruppenname oder Liste von Protokollgruppennamen zur Abfragequery_string
: CloudWatch Insights-Abfragezeichenfolgestart_time
: (Optional) Startzeit für die Abfrage in Unix-Zeitstempel-Millisekundenend_time
: (Optional) Endzeit für die Abfrage in Unix-Zeitstempel-Millisekunden
- Merkmale:
- Analysiert automatisch JSON im Feld @message
- Gibt strukturierte Daten für JSON-Nachrichten zurück
- Verarbeitet mehrere Protokollgruppen in einer einzigen Abfrage
discover_log_fields
– Entdecken Sie verfügbare Felder in mehreren Protokollgruppen- Parameter:
log_group_names
: Einzelner Protokollgruppenname oder Liste von Protokollgruppennamen zur Analyse
- Merkmale:
- Effizientes Erkennen von Feldern über mehrere Protokollgruppen hinweg
- Setzt ein gemeinsames Schema für alle Protokollgruppen voraus
- Erkennt verschachtelte JSON-Felder in @message
- Identifiziert Feldtypen (Zahl, Boolescher Wert, Zeichenfolge, Array)
log_group_exists
– Überprüfen, ob CloudWatch-Protokollgruppen vorhanden sind- Parameter:
log_group_names
: Einzelner Protokollgruppenname oder Liste der zu prüfenden Protokollgruppennamen
- Widerrufsfolgen:
- Wörterbuch, das jede Protokollgruppe ihrem Existenzstatus zuordnet
get_saved_queries
– Alle gespeicherten CloudWatch Logs Insights-Abfragen abrufen- Keine Parameter erforderlich
Testen der CloudWatch-Integration
Sie können die CloudWatch-Integration direkt mit dem bereitgestellten Testskript testen:
# 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
Beispiele mit MCP CLI
Verwenden der 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
Lizenz
MIT