AWS Infrastructure MCP Server
AWS Infrastructure MCP Server
Un servidor FastMCP local (Python 3.12+, transporte stdio) que expone herramientas de diagnóstico de AWS para aplicaciones serverless directamente a los agentes de IA del IDE. Conecta Cursor, VS Code Copilot o Claude Code con CloudWatch, Lambda, DynamoDB, IAM y Bedrock a través del Model Context Protocol.
Arquitectura y decisiones de diseño
Transporte y pila tecnológica
Componente | Elección |
Runtime | Python 3.12+ |
Framework MCP | FastMCP 3.x |
Gestor de paquetes | uv |
SDK de AWS | boto3 |
Validación de esquemas | Pydantic 2.x |
Transporte | stdio (el IDE inicia el proceso del servidor) |
Autenticación
Utiliza la cadena de credenciales predeterminada de boto3 sin lógica de autenticación personalizada. La cadena verifica, en orden: variables de entorno (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) → ~/.aws/credentials → ~/.aws/config → metadatos de instancia. Establezca AWS_PROFILE para apuntar a un perfil específico.
Superficie de herramientas
15 herramientas en 4 módulos:
CloudWatch y Lambda — Diagnóstico de servicios (tools/cloudwatch.py, tools/lambda_ops.py)
Herramienta | Descripción |
| Lista funciones Lambda, opcionalmente filtradas por prefijo de nombre |
| Obtiene eventos de registro recientes de CloudWatch para el grupo de registros de una Lambda |
| Filtra eventos de registro solo a líneas de ERROR/excepción/Traceback |
| Recupera métricas de invocaciones, errores, duración y limitaciones (throttle) |
| Invocación síncrona ( |
DynamoDB — Salud de los datos (tools/dynamodb.py)
Herramienta | Descripción |
| Lista tablas de DynamoDB, opcionalmente filtradas por prefijo de nombre |
| Devuelve esquema de clave, atributos, GSIs, recuento de elementos, tamaño, estado |
| Consulta por condición de clave primaria; límite máximo de 25 elementos |
| Escaneo con filtro opcional; límite máximo de 25 elementos |
| Consulta CloudWatch para ReadThrottleEvents, WriteThrottleEvents, UserErrors |
IAM — Gobernanza de seguridad (tools/iam.py)
Herramienta | Descripción |
| Lista roles de IAM, opcionalmente filtrados por prefijo de nombre |
| Devuelve la política de confianza y todos los documentos de políticas adjuntos o integrados |
| Asigna cada función Lambda a su ARN de rol de ejecución |
| Señala tres patrones de alto riesgo (ver más abajo) |
validate_least_privilege verifica:
Permisos comodín — declaraciones con
"Action": "*"o"Resource": "*"Políticas administradas peligrosas —
AdministratorAccessoPowerUserAccessadjuntasAcceso a datos sin alcance — acciones de lectura/escritura de S3 o DynamoDB sin ARNs de recursos específicos
Bedrock — Análisis de causa raíz con IA (tools/bedrock.py)
Herramienta | Descripción |
| Envía contexto de diagnóstico a Bedrock; devuelve un análisis estructurado |
Acepta texto sin procesar (registros, trazas de pila, resúmenes de métricas). Devuelve un objeto Pydantic validado:
class IncidentAnalysis(BaseModel):
severity: Literal["LOW", "MEDIUM", "HIGH", "CRITICAL"]
root_cause_summary: str
affected_components: list[str]
recommended_fix: strEl parámetro model_id acepta cualquier modelo disponible en Bedrock (por ejemplo: meta.llama3-2-3b).
Límite de seguridad
Todas las herramientas son de solo lectura excepto
invoke_lambda(solo invocación síncrona).Ninguna herramienta crea, actualiza o elimina funciones Lambda, elementos de DynamoDB, políticas de IAM ni ningún otro recurso de AWS.
Un limpiador de credenciales global (
utils/scrubber.py) redacta los ID de clave de acceso de AWS, las claves de acceso secretas y los tokens de sesión de todas las salidas de las herramientas antes de que los datos lleguen al contexto del LLM. Se aplica a mensajes de registro, respuestas de invocación y salidas de error.
Related MCP server: AWS MCP Server
Estructura del proyecto
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.lockInstalación y configuración local
Requisitos previos:
Python 3.12+
uv gestor de paquetes
AWS CLI configurado (
~/.aws/credentialso variables de entorno)
# Clone and install dependencies
cd mcpserver
uv sync
# Run the server locally (stdio)
uv run python server.pyConfiguración del IDE
VS Code / Cursor
Cree .vscode/mcp.json en la raíz del proyecto:
{
"servers": {
"aws-infra-mcp": {
"type": "stdio",
"command": "uv",
"args": ["--directory", "/absolute/path/to/mcpserver", "run", "server.py"]
}
}
}Reemplace /absolute/path/to/mcpserver con la ruta real a este directorio. En Windows, use barras diagonales (C:/Users/.../mcpserver).
Claude Desktop
Agregue a claude_desktop_config.json:
{
"mcpServers": {
"aws-infra-mcp": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/mcpserver", "run", "server.py"]
}
}
}Estrategia de pruebas
Las pruebas utilizan un diseño de un solo punto de integración: cada función @mcp.tool() se prueba en su límite público con boto3 simulado debajo mediante unittest.mock.patch. Las pruebas verifican la lógica de transformación de la herramienta — filtrado de registros, aplicación del límite máximo, limpieza de credenciales, validación de Pydantic — sin requerir credenciales de AWS reales ni realizar llamadas de red.
57 pruebas unitarias en 6 archivos de prueba:
# Run the full suite
uv run pytest
# Run a single cluster's tests
uv run pytest tests/test_iam.py -vThis server cannot be deployed
Maintenance
Related MCP Connectors
The AWS Knowledge MCP server is a fully managed remote Model Context Protocol server that provides real-time access to official AWS content in an LLM-compatible format. It offers structured access to AWS documentation, code samples, blog posts, What's New announcements, Well-Architected best practices, and regional availability information for AWS APIs and CloudFormation resources. Key capabilities include searching and reading documentation in markdown format, getting content recommendations, listing AWS regions, and checking regional availability for services and features.
AWS cloud security scanners for AI agents — S3, IAM, EC2, EKS, RDS, CloudTrail, CloudWatch Logs
Governed app access for AI agents: 1,000+ apps & 12,000+ tools via Code Mode MCP.
Outcome-based infrastructure for agents — verified AWS deployments, metered billing
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables management and provisioning of AWS resources like EC2, S3, and RDS using natural language prompts through the Model Context Protocol. It allows users to automate complex infrastructure tasks, such as setting up VPCs and security groups, via a chat interface.5411 npm27MIT
- AlicenseNot gradedqualityDmaintenanceA read-only Model Context Protocol server that exposes over 60 AWS tools across services like EC2, S3, and IAM for AI agent interaction. It features multi-region support, resource caching, and audit logging to provide secure, AI-ready access to AWS infrastructure data.100 npmISC
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to autonomously query AWS CloudWatch Logs and perform structured root-cause analysis via natural language prompts, using MCP tools for log group listing and Insights queries.MIT
- FlicenseNot gradedqualityDmaintenanceEnables interaction with AWS services (EC2, S3, Lambda, DynamoDB, etc.) through the Model Context Protocol, allowing natural language management of cloud resources.2-