Skip to main content
Glama
getsuga-tenshou

AWS Infrastructure MCP Server

AWS Infrastructure MCP Server

Ein lokaler FastMCP-Server (Python 3.12+, stdio-Transport), der AWS-Diagnosetools für serverlose Anwendungen direkt für KI-Agenten in IDEs bereitstellt. Er verbindet Cursor, VS Code Copilot oder Claude Code über das Model Context Protocol mit CloudWatch, Lambda, DynamoDB, IAM und Bedrock.

Architektur & Designentscheidungen

Transport & Stack

Komponente

Wahl

Laufzeit

Python 3.12+

MCP-Framework

FastMCP 3.x

Paketmanager

uv

AWS-SDK

boto3

Schema-Validierung

Pydantic 2.x

Transport

stdio (die IDE startet den Serverprozess)

Authentifizierung

Verwendet die Standard-Anmeldeinformationskette von boto3 ohne benutzerdefinierte Authentifizierungslogik. Die Kette prüft in dieser Reihenfolge: Umgebungsvariablen (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) → ~/.aws/credentials~/.aws/config → Instanzmetadaten. Setzen Sie AWS_PROFILE, um ein bestimmtes benanntes Profil zu verwenden.

Tool-Oberfläche

15 Tools in 4 Modulen:

CloudWatch & Lambda — Servicediagnose (tools/cloudwatch.py, tools/lambda_ops.py)

Tool

Beschreibung

list_lambdas(prefix?)

Lambda-Funktionen auflisten, optional nach Namenspräfix gefiltert

get_lambda_logs(function_name, minutes=15)

Aktuelle CloudWatch-Logereignisse für die Log-Gruppe einer Lambda-Funktion abrufen

get_lambda_errors(function_name, minutes=60)

Logereignisse nur auf ERROR-/Exception-/Traceback-Zeilen filtern

get_lambda_metrics(function_name, period=300)

Metriken für Aufrufe, Fehler, Dauer und Drosselung abrufen

invoke_lambda(function_name, payload)

Synchroner Aufruf (RequestResponse); die Antwort wird gekürzt und bereinigt

DynamoDB — Datenzustand (tools/dynamodb.py)

Tool

Beschreibung

list_tables(prefix?)

DynamoDB-Tabellen auflisten, optional nach Namenspräfix gefiltert

describe_table(table_name)

Schlüsselschema, Attribute, GSIs, Elementanzahl, Größe und Status zurückgeben

query_table(table_name, key_condition, limit=10)

Abfrage nach Primärschlüsselbedingung; hart auf 25 Elemente begrenzt

scan_table(table_name, filter_expression?, limit=10)

Scan mit optionalem Filter; hart auf 25 Elemente begrenzt

get_table_metrics(table_name, period=300)

CloudWatch nach ReadThrottleEvents, WriteThrottleEvents und UserErrors abfragen

IAM — Sicherheits-Governance (tools/iam.py)

Tool

Beschreibung

list_roles(prefix?)

IAM-Rollen auflisten, optional nach Namenspräfix gefiltert

get_role_policy(role_name)

Vertrauensrichtlinie und alle angehängten/Inline-Richtliniendokumente zurückgeben

list_lambda_roles()

Jede Lambda-Funktion ihrer Ausführungsrollen-ARN zuordnen

validate_least_privilege(role_name)

Drei Hochrisikomuster kennzeichnen (siehe unten)

validate_least_privilege prüft:

  1. Wildcard-Berechtigungen — Anweisungen mit "Action": "*" oder "Resource": "*"

  2. Gefährliche verwaltete RichtlinienAdministratorAccess oder PowerUserAccess angehängt

  3. Unbegrenzter Datenzugriff — S3- oder DynamoDB-Lese-/Schreibaktionen ohne spezifische Ressourcen-ARNs

Bedrock — KI-Ursachenanalyse (tools/bedrock.py)

Tool

Beschreibung

analyze_incident(context, model_id="amazon.nova-micro-v1:0")

Diagnosekontext an Bedrock senden; liefert eine strukturierte Analyse

Akzeptiert Rohtext (Logs, Stack-Traces, Metrikzusammenfassungen). Gibt ein validiertes Pydantic-Objekt zurück:

class IncidentAnalysis(BaseModel):
    severity: Literal["LOW", "MEDIUM", "HIGH", "CRITICAL"]
    root_cause_summary: str
    affected_components: list[str]
    recommended_fix: str

Der Parameter model_id akzeptiert jedes in Bedrock verfügbare Modell (zum Beispiel: meta.llama3-2-3b).

Sicherheitsgrenze

  • Alle Tools sind schreibgeschützt, außer invoke_lambda (nur synchroner Aufruf).

  • Kein Tool erstellt, aktualisiert oder löscht Lambda-Funktionen, DynamoDB-Elemente, IAM-Richtlinien oder andere AWS-Ressourcen.

  • Ein globaler Anmeldeinformations-Bereiniger (utils/scrubber.py) schwärzt AWS-Zugriffsschlüssel-IDs, geheime Zugriffsschlüssel und Sitzungstoken aus allen Tool-Ausgaben, bevor Daten den LLM-Kontext erreichen. Angewendet auf Logmeldungen, Aufrufantworten und Fehlerausgaben.

Projektstruktur

mcpserver/
├── app.py                 # FastMCP instance (single shared object)
├── server.py              # Entry point — imports tool modules, runs stdio
├── tools/
│   ├── __init__.py
│   ├── cloudwatch.py      # get_lambda_logs, get_lambda_errors, get_lambda_metrics
│   ├── lambda_ops.py      # list_lambdas, invoke_lambda
│   ├── dynamodb.py        # list_tables, describe_table, query_table, scan_table, get_table_metrics
│   ├── iam.py             # list_roles, get_role_policy, validate_least_privilege, list_lambda_roles
│   └── bedrock.py         # analyze_incident + IncidentAnalysis schema
├── utils/
│   ├── __init__.py
│   └── scrubber.py        # Credential redaction regex patterns
├── tests/
│   ├── test_scrubber.py
│   ├── test_cloudwatch.py
│   ├── test_lambda_ops.py
│   ├── test_dynamodb.py
│   ├── test_iam.py
│   └── test_bedrock.py
├── pyproject.toml
└── uv.lock

Installation & lokale Einrichtung

Voraussetzungen:

  • Python 3.12+

  • Paketmanager uv

  • AWS-CLI konfiguriert (~/.aws/credentials oder Umgebungsvariablen)

# Clone and install dependencies
cd mcpserver
uv sync

# Run the server locally (stdio)
uv run python server.py

IDE-Konfiguration

VS Code / Cursor

Erstellen Sie .vscode/mcp.json im Projektstammverzeichnis:

{
  "servers": {
    "aws-infra-mcp": {
      "type": "stdio",
      "command": "uv",
      "args": ["--directory", "/absolute/path/to/mcpserver", "run", "server.py"]
    }
  }
}

Ersetzen Sie /absolute/path/to/mcpserver durch den tatsächlichen Pfad zu diesem Verzeichnis. Verwenden Sie unter Windows Schrägstriche (C:/Users/.../mcpserver).

Claude Desktop

Fügen Sie zu claude_desktop_config.json hinzu:

{
  "mcpServers": {
    "aws-infra-mcp": {
      "command": "uv",
      "args": ["--directory", "/absolute/path/to/mcpserver", "run", "server.py"]
    }
  }
}

Teststrategie

Die Tests verwenden ein Single-Seam-Design: Jede @mcp.tool()-Funktion wird an ihrer öffentlichen Grenze getestet, wobei boto3 darunter mit unittest.mock.patch gemockt wird. Die Tests verifizieren die Transformationslogik des Tools — Logfilterung, Durchsetzung der harten Obergrenze, Bereinigung von Anmeldeinformationen, Pydantic-Validierung — ohne dass Live-AWS-Anmeldeinformationen erforderlich sind oder Netzwerkaufrufe getätigt werden.

57 Unit-Tests in 6 Testdateien:

# Run the full suite
uv run pytest

# Run a single cluster's tests
uv run pytest tests/test_iam.py -v
-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/getsuga-tenshou/mcpserver'

If you have feedback or need assistance with the MCP directory API, please join our Discord server