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 |
| Lambda-Funktionen auflisten, optional nach Namenspräfix gefiltert |
| Aktuelle CloudWatch-Logereignisse für die Log-Gruppe einer Lambda-Funktion abrufen |
| Logereignisse nur auf ERROR-/Exception-/Traceback-Zeilen filtern |
| Metriken für Aufrufe, Fehler, Dauer und Drosselung abrufen |
| Synchroner Aufruf ( |
DynamoDB — Datenzustand (tools/dynamodb.py)
Tool | Beschreibung |
| DynamoDB-Tabellen auflisten, optional nach Namenspräfix gefiltert |
| Schlüsselschema, Attribute, GSIs, Elementanzahl, Größe und Status zurückgeben |
| Abfrage nach Primärschlüsselbedingung; hart auf 25 Elemente begrenzt |
| Scan mit optionalem Filter; hart auf 25 Elemente begrenzt |
| CloudWatch nach ReadThrottleEvents, WriteThrottleEvents und UserErrors abfragen |
IAM — Sicherheits-Governance (tools/iam.py)
Tool | Beschreibung |
| IAM-Rollen auflisten, optional nach Namenspräfix gefiltert |
| Vertrauensrichtlinie und alle angehängten/Inline-Richtliniendokumente zurückgeben |
| Jede Lambda-Funktion ihrer Ausführungsrollen-ARN zuordnen |
| Drei Hochrisikomuster kennzeichnen (siehe unten) |
validate_least_privilege prüft:
Wildcard-Berechtigungen — Anweisungen mit
"Action": "*"oder"Resource": "*"Gefährliche verwaltete Richtlinien —
AdministratorAccessoderPowerUserAccessangehängtUnbegrenzter Datenzugriff — S3- oder DynamoDB-Lese-/Schreibaktionen ohne spezifische Ressourcen-ARNs
Bedrock — KI-Ursachenanalyse (tools/bedrock.py)
Tool | Beschreibung |
| 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: strDer 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.lockInstallation & lokale Einrichtung
Voraussetzungen:
Python 3.12+
Paketmanager uv
AWS-CLI konfiguriert (
~/.aws/credentialsoder Umgebungsvariablen)
# Clone and install dependencies
cd mcpserver
uv sync
# Run the server locally (stdio)
uv run python server.pyIDE-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 -vThis server cannot be installed
Maintenance
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
AI agent run monitoring with incident replay and SLA receipts.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Real-time Amazon, WIPO & PACER data for AI agents — 19 tools via the MCP protocol.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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