Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Construye tu arquitectura AWS con MCP Servers y Strands Agents

By Rupal BhattSep 22, 20257 min read

Esta página también está disponible en English, Deutsch, Français, Italiano, 日本語 y Português.

Introducción

En el panorama acelerado de la arquitectura cloud y el desarrollo impulsado por IA, hay dos tecnologías que están revolucionando la forma en que construimos y desplegamos soluciones AWS: los servidores Model Context Protocol (MCP) y los Strands agents.

Los servidores MCP ofrecen una forma estandarizada de conectar Large Language Models (LLMs) con fuentes de datos y herramientas externas. Funcionan como puentes entre los modelos de IA y distintos servicios, lo que permite una integración fluida con documentación, APIs y recursos cloud. En el contexto de AWS, los servidores MCP brindan acceso directo a la documentación de AWS, a las APIs de los servicios y a las herramientas de arquitectura.

Los Strands agents son frameworks de orquestación inteligente que aprovechan los LLMs para automatizar workloads complejos. Pueden razonar sobre tareas, tomar decisiones y ejecutar procesos de varios pasos con mínima intervención humana. Combinados con servidores MCP, los Strands agents se convierten en herramientas extraordinariamente potentes para la arquitectura cloud y la automatización.

Esta combinación es una mejora enorme frente al enfoque tradicional de codificación de agentes. En lugar de escribir código extenso y complejo para gestionar llamadas a APIs, manejo de errores y orquestación de workflows, ahora basta con describir tus intenciones en lenguaje natural y dejar que los agentes inteligentes se encarguen de los detalles. Este cambio reduce drásticamente los tiempos de desarrollo y abre la arquitectura cloud a un público mucho más amplio de developers.

Aquí tienes un ejemplo de un diagrama de arquitectura de un sitio web que usa AWS Lambda con un sitio estático alojado en S3. Se generó combinando servidores MCP y Strands agents.

Prompt: "Obtén la documentación de AWS Lambda y luego crea un diagrama de un sitio web que use AWS Lambda con un sitio estático alojado en S3"

Ejemplo de código

Veamos el código que se utilizó para preparar el diagrama anterior. Demuestra el potencial de los servidores MCP junto con los Strands agents para generar arquitecturas AWS:

from mcp import StdioServerParameters, stdio_client
from strands import Agent
from strands.models import BedrockModel
from strands.tools.mcp import MCPClient

aws_docs_client = MCPClient(
    lambda: stdio_client(
        StdioServerParameters(
            command="uvx", args=["awslabs.aws-documentation-mcp-server@latest"]
        )
    )
)
aws_diag_client = MCPClient(
    lambda: stdio_client(
        StdioServerParameters(
            command="uvx", args=["awslabs.aws-diagram-mcp-server@latest"]
        )
    )
)
bedrock_model = BedrockModel(
    model_id="us.anthropic.claude-3-5-haiku-20241022-v1:0",
    temperature=0.7,
)
SYSTEM_PROMPT = """
You are an expert AWS Certified Solutions Architect. Your role is to help customers understand best practices on building on AWS. You can query the AWS Documentation and generate diagrams. Make sure to tell the customer the full file path of the diagram.
"""
with aws_diag_client, aws_docs_client:
    all_tools = aws_diag_client.list_tools_sync() + aws_docs_client.list_tools_sync()
    agent = Agent(tools=all_tools, model=bedrock_model, system_prompt=SYSTEM_PROMPT)
    response = agent(
        "Get the documentation for AWS Lambda then create a diagram of a website that uses AWS Lambda for a static website hosted on S3"
    )

Análisis y explicación del código

Inicialización del cliente MCP:

aws_docs_client = MCPClient(
    lambda: stdio_client(
        StdioServerParameters(
            command="uvx", args=["awslabs.aws-documentation-mcp-server@latest"]
        )
    )
)

Este bloque crea un cliente MCP que se conecta al servidor oficial de documentación de AWS. El comando uvx obtiene y ejecuta dinámicamente la última versión del servidor MCP de documentación de AWS, garantizando acceso permanente a la documentación más actualizada.

Cliente para la generación de diagramas:

aws_diag_client = MCPClient(
    lambda: stdio_client(
        StdioServerParameters(
            command="uvx", args=["awslabs.aws-diagram-mcp-server@latest"]
        )
    )
)

De forma similar, esto crea un cliente para el servidor MCP de generación de diagramas de AWS, que permite crear representaciones visuales de arquitecturas AWS de forma programática.

Configuración del modelo:

bedrock_model = BedrockModel(
    model_id="us.anthropic.claude-3-5-haiku-20241022-v1:0",
    temperature=0.7,
)

Aquí se configura el LLM subyacente con el modelo Claude 3.5 Haiku de AWS Bedrock. Una temperatura de 0.7 ofrece un buen equilibrio entre creatividad y consistencia para las decisiones de arquitectura. Aunque los Strands agents se conectan por defecto a Bedrock, también puedes usar muchos proveedores de terceros como Gemini, Anthropic y OpenAI.

Orquestación del agente:

with aws_diag_client, aws_docs_client:
    all_tools = aws_diag_client.list_tools_sync() + aws_docs_client.list_tools_sync()
    agent = Agent(tools=all_tools, model=bedrock_model, system_prompt=SYSTEM_PROMPT)

Aquí entran en juego los Strands agents. El agente descubre automáticamente todas las herramientas disponibles en ambos servidores MCP y las integra de forma transparente. El system prompt establece el rol del agente como Solutions Architect de AWS, lo que le da el contexto necesario para tomar decisiones arquitectónicas inteligentes.

Ejecución en lenguaje natural:

response = agent(
    "Get the documentation for AWS Lambda then create a diagram of a website that uses AWS Lambda for a static website hosted on S3"
)

Esta única línea resume la potencia del enfoque. En lugar de escribir código complejo para consultar APIs de documentación, parsear respuestas y generar diagramas, basta con describir lo que queremos en lenguaje natural. El agente se encarga de toda la complejidad detrás de escena.

Por qué es más simple que la codificación tradicional de agentes

El desarrollo tradicional de agentes obliga a escribir mucho código repetitivo en varias áreas críticas:

Integración manual con APIs: los developers suelen invertir mucho tiempo en escribir clientes HTTP, gestionar la autenticación, parsear respuestas y manejar rate limits para cada servicio que quieren integrar.

Manejo de errores y lógica de reintentos: los agentes robustos requieren un manejo sofisticado de errores, exponential backoff, circuit breakers y mecanismos de reintento para operar de forma confiable.

Orquestación de workflows: coordinar procesos de varios pasos exige una gestión de estado compleja, ramificaciones condicionales y lógica de planificación de tareas.

Descubrimiento y gestión de herramientas: los enfoques tradicionales obligan a hardcodear las herramientas disponibles y sus interfaces, lo que vuelve al sistema rígido y difícil de extender.

En contraste, el enfoque Strands + MCP aporta varios beneficios clave:

Menos código repetitivo: el framework asume toda la infraestructura de bajo nivel, lo que permite enfocarse en la lógica de negocio y en las decisiones de arquitectura.

Descubrimiento dinámico de herramientas: los servidores MCP pueden anunciar sus capacidades de forma dinámica, y los Strands agents pueden descubrir y aprovechar nuevas herramientas sin tocar el código.

Interfaz en lenguaje natural: en lugar de escribir código procedural, los developers pueden describir sus intenciones en lenguaje natural, lo que vuelve al sistema más accesible y fácil de mantener.

Confiabilidad incorporada: el framework incluye, de fábrica, un manejo robusto de errores, lógica de reintentos y mecanismos de recuperación.

Modularidad y reutilización: los servidores MCP pueden compartirse entre proyectos y equipos, lo que fomenta la reutilización del código y la consistencia.

Múltiples opciones de despliegue: los Strands agents pueden desplegarse en Lambda, ECS, EKS o instancias EC2.

Este enfoque se alinea con los principios modernos de diseño nativo de la nube y serverless, al privilegiar la configuración declarativa, el escalado automático y la infraestructura gestionada.

Paquetes necesarios

Para ejecutar el script mcp_arch_diagram.py, necesitarás instalar los siguientes paquetes de Python:

pip install mcp strands boto3 anthropic

Detalle de los paquetes:

  • mcp: implementación principal de Model Context Protocol
  • strands: el framework de orquestación de agentes
  • boto3: SDK de AWS para Python (necesario para la integración con Bedrock)
  • anthropic: librería cliente de Anthropic para Python

Requisitos adicionales:

  • Asegúrate de tener uvx instalado de forma global para la ejecución dinámica de paquetes
  • Configura las credenciales de AWS para acceder a Bedrock
  • Define los permisos IAM apropiados para usar AWS Bedrock

Otras arquitecturas AWS que puedes crear

La flexibilidad de los servidores MCP con Strands agents va mucho más allá de los sitios web estáticos. Aquí tienes varios ejemplos adicionales de arquitecturas AWS que este enfoque puede generar:

API serverless con Lambda y API Gateway

response = agent(
    "Create a diagram for a RESTful API using API Gateway, Lambda functions, and DynamoDB with proper security using IAM roles"
)

Para generar un diagrama de una arquitectura de API serverless con la autenticación y la persistencia de datos correctas.

Pipeline de datos orientado a eventos

response = agent(
    "Design an event-driven pipeline that processes files uploaded to S3, triggers Lambda functions via EventBridge, and stores results in RDS"
)

Útil para diagramar workflows de procesamiento de datos escalables que reaccionan a eventos en tiempo real.

Aplicación web multicapa

response = agent(
    "Create a diagram for a three-tier web application with ALB, EC2 instances in multiple AZs, RDS with read replicas, and ElastiCache"
)

Para obtener un diagrama de arquitecturas multicapa tradicionales, con alta disponibilidad y rendimiento optimizado.

Pipeline de machine learning

response = agent(
    "Generate a diagram for an ML pipeline using SageMaker for training, Lambda for inference, S3 for data storage, and CloudWatch for monitoring"
)

Para construir un diagrama de workflows de machine learning de extremo a extremo, con la gestión y el monitoreo de datos adecuados.

Cada uno de estos ejemplos demuestra cómo las descripciones en lenguaje natural pueden traducirse en arquitecturas AWS completas sin escribir código de infraestructura complejo.

**Cloud Diagrams:**

Vimos cómo crear diagramas de arquitectura para un nuevo workload, pero ¿cómo identificas la causa raíz de los problemas e ineficiencias en tus workloads actuales? Cloud Diagrams visualiza tu huella cloud casi en tiempo real, conecta los puntos entre los distintos servicios y propone recomendaciones accionables. Así se reducen las caídas, los esfuerzos de troubleshooting y los costos operativos.

La combinación de servidores MCP y Strands agents marca un cambio de fondo en la manera de abordar la arquitectura y la automatización cloud. Al reducir la complejidad de las integraciones con APIs, el manejo de errores y la orquestación de workflows, este enfoque te permite enfocarte en lo que realmente importa: diseñar soluciones robustas y escalables.

Entre los beneficios clave están una reducción drástica del tiempo de desarrollo, mayor accesibilidad para developers de cualquier nivel, mejor mantenibilidad gracias a las interfaces en lenguaje natural y mayor modularidad mediante integraciones estandarizadas con servidores MCP.

Te invito a explorar este stack tecnológico y a experimentar construyendo tus propias arquitecturas AWS. Empieza con ejemplos sencillos, como el sitio web estático que vimos, y avanza poco a poco hacia escenarios más complejos. La curva de aprendizaje es suave, pero las posibilidades son enormes.

Te recomiendo mucho probar Cloud Diagram para obtener un mapa casi en tiempo real de tu infraestructura cloud, resolver incidentes más rápido y tomar mejores decisiones de arquitectura.

El futuro del desarrollo cloud ya está aquí, y habla tu idioma — literalmente.