Introducción

En entornos de producción modernos, los equipos de DevOps y SRE suelen perder tiempo en tareas repetitivas: revisar logs en Kibana, cruzar métricas en Grafana y analizar traces en Jaeger. AWS dio un paso adelante con la incorporación de MCP Apps en Amazon OpenSearch Service, una funcionalidad que expone herramientas de observabilidad directamente a agentes de IA dentro de IDEs como VS Code o Claude Desktop. Esto significa que un agente local puede investigar un incidente de alta latencia en Prometheus, correlacionar logs en OpenSearch y generar un mapa de servicios en tiempo real, todo sin cambiar de ventana.

El enfoque no es solo automatizar, sino democratizar el acceso a datos observables para humanos y máquinas. Hasta ahora, herramientas como Amazon Managed Service for Prometheus (AMSP) o OpenSearch Dashboards requerían interacción manual. Con MCP Apps, los equipos pueden delegar análisis complejos a agentes mientras mantienen el control visual en la misma interfaz conversacional.

Qué ocurrió

El 5 de junio de 2025, AWS anunció en su blog oficial la disponibilidad general de MCP Apps para Amazon OpenSearch Service. La integración sigue el estándar Model Context Protocol (MCP), un protocolo abierto para que agentes de IA interactúen con herramientas externas. Esto permite que IDEs compatibles (como VS Code con la extensión Claude Code o Continue) ejecuten acciones en el dominio de OpenSearch o en instancias de AMSP sin salir del entorno de desarrollo.

Cada herramienta expuesta por MCP App devuelve dos respuestas:

  1. Un resumen textual conciso para que el agente razone (ej: «El 95% de los errores 5xx en el servicio payment-api ocurren en la región us-east-2 tras el deploy de v2.1.0″).
  2. Una visualización interactiva (gráficos de métricas en PromQL, mapas de dependencias de servicios o tableros de logs) que se renderiza en la misma conversación.

Entre las herramientas disponibles se incluyen:

  • Investigación de logs: filtrado por patrones, agregación de errores, búsqueda de anomalías.
  • Análisis de métricas: consultas en PromQL, umbrales dinámicos, correlación con alertas.
  • Traces distribuidos: exploración de spans, latencia por servicio, identificación de bottlenecks.
  • Topología de servicios: mapas de dependencias en tiempo real usando datos de OpenTelemetry.
  • Salud de clusters: métricas de OpenSearch (CPU, heap, shards) y recomendaciones de escalado.
  • Scoring de instrumentación: evaluación automática de cobertura de traces, logs y métricas en aplicaciones.

La funcionalidad está disponible en todas las regiones AWS donde opera OpenSearch Service (incluyendo us-east-1, eu-west-1 y ap-southeast-1), sin costo adicional por uso de MCP Apps. Solo requiere que el dominio de OpenSearch esté configurado con OpenSearch 2.11 o superior y que el agente de IA tenga permisos IAM para acceder a los recursos.

Impacto para DevOps / Infraestructura / Cloud / Seguridad

Para equipos de DevOps, la mayor ventaja es la reducción de MTTR (Mean Time To Resolve). Según datos internos de AWS, en pruebas con clientes, el uso de MCP Apps redujo en un 30% el tiempo de investigación de incidentes en entornos con alta carga de logs (ej: 10TB/día). Esto se logra al eliminar la necesidad de:

  • Copiar IDs de traces desde Jaeger a una terminal.
  • Reescribir consultas PromQL manualmente en Grafana.
  • Cruzar manualmente alertas de CloudWatch con logs en OpenSearch.

Los equipos de Infraestructura se benefician al tener una única fuente de verdad para métricas, logs y traces. MCP Apps expone herramientas como:

# Ejemplo: Consulta de métricas en PromQL desde el agente
aws amp query-metrics \
  --workspace-id ws-12345678-abcd \
  --query 'sum(rate(http_requests_total{status=~"5.."}[5m])) by (service)'

Esto evita la necesidad de abrir la consola de AMSP o usar la CLI de Prometheus, centralizando todo en el IDE.

Desde la perspectiva de Seguridad, MCP Apps introduce un nuevo vector de riesgo: la exposición de datos sensibles a través de agentes de IA. Aunque AWS implementó controles como:

  • Autenticación obligatoria via IAM Roles (no claves de acceso estáticas).
  • Limite de tiempo de sesión para herramientas de MCP (default: 1 hora).
  • Registro de auditoría en CloudTrail para cada llamada a MCP App.

Los equipos de seguridad deben validar que:

  1. Los dominios de OpenSearch no expongan índices sensibles (ej: /aws/guardduty) a MCP Apps.
  2. Los permisos IAM asignados a los agentes sigan el principio de mínimo privilegio (ej: solo amp:QueryMetrics para AMSP, no amp:*).
  3. Los logs de CloudTrail sean monitoreados para detectar accesos anómalos a MCP Apps (ej: un agente intentando listar todos los traces en un namespace específico).

Para SREs, la integración con OpenTelemetry y la generación automática de mapas de servicios simplifica la identificación de dependencias críticas. Por ejemplo, al investigar una latencia en el servicio checkout, el agente puede:

  1. Detectar que el 80% del tiempo se debe a llamadas a payment-gateway.
  2. Generar un mapa visual con las dependencias de payment-gateway (bases de datos, colas de mensajes).
  3. Sugerir acciones: «Aumentar el timeout en payment-gateway a 3s o escalar réplicas en eu-west-2«.

Detalles técnicos

Arquitectura de MCP Apps en OpenSearch

MCP Apps sigue un modelo cliente-servidor:

  • Cliente: IDE (VS Code, Claude Desktop) con un plugin MCP que implementa el protocolo.
  • Servidor: Un endpoint HTTP en AWS que expone las herramientas de OpenSearch/AMSP. Este endpoint está implementado como un AWS Lambda (runtime: Python 3.12) que:
– Valida el token IAM del agente.

– Ejecuta las consultas en el dominio de OpenSearch (usando el endpoint https://<domain>.<region>.es.amazonaws.com).

– Formatea la respuesta en JSON con los dos componentes (resumen + visualización).

Para que funcione, se requiere:

  1. Dominio de OpenSearch en versión 2.11+ (lanzado en mayo 2025).
  2. Habilitar MCP en el dominio:
   # Ejemplo en la configuración del dominio (opensearch.yml)
   plugins.mcp.enabled: true
   plugins.mcp.allowed_origins: ["https://claude.ai", "vscode://continue"]
   
  1. Permisos IAM para el agente:
   {
     "Version": "2012-10-17",
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "es:ESHttpPost",
           "es:ESHttpGet"
         ],
         "Resource": "arn:aws:es:us-east-1:123456789012:domain/my-opensearch-domain/*"
       },
       {
         "Effect": "Allow",
         "Action": "amp:QueryMetrics",
         "Resource": "arn:aws:aps:us-east-1:123456789012:workspace/ws-12345678-abcd/*"
       }
     ]
   }
   

Herramientas expuestas y ejemplos

Cada herramienta de MCP App tiene un esquema de entrada/salida estandarizado. Por ejemplo, la herramienta search_logs acepta:

{
  "query": "status:500 AND service:\"payment-api\"",
  "time_range": {
    "from": "2025-06-05T00:00:00Z",
    "to": "2025-06-05T12:00:00Z"
  },
  "limit": 100
}

Y devuelve:

{
  "summary": "Se encontraron 42 errores 500 en payment-api en las últimas 12h. Top 3 causas: timeout en DB (18), fallo en auth (12), errores en PaymentGateway (10).",
  "visualization": {
    "type": "table",
    "data": [
      {"timestamp": "2025-06-05T08:15:23Z", "error": "DBTimeout", "service": "payment-api"},
      {"timestamp": "2025-06-05T08:16:45Z", "error": "AuthFailure", "service": "payment-api"}
    ]
  }
}

Otra herramienta clave es get_service_map, que usa datos de OpenTelemetry para generar un grafo de dependencias:

# Ejemplo de consulta subyacente (usando la API de OpenSearch)
GET /_opensearch/_plugins/_ml/_traces/_search
{
  "size": 0,
  "aggs": {
    "service_dependencies": {
      "terms": {"field": "service.name.keyword", "size": 10},
      "aggs": {"dependents": {"terms": {"field": "resource.service.name.keyword"}}}
    }
  }
}

Requisitos de red y seguridad

Para que MCP Apps funcione, se deben cumplir dos condiciones de red:

  1. El IDE debe poder acceder al endpoint de MCP en AWS (ej: mcp.opensearch.<region>.amazonaws.com).
  2. El dominio de OpenSearch debe permitir tráfico desde la IP pública del IDE (o usar una VPC endpoint).

AWS recomienda configurar un API Gateway con autenticación IAM para exponer MCP Apps, pero en entornos enterprise se puede usar:

  • AWS PrivateLink para evitar exponer el endpoint públicamente.
  • CloudFront con WAF para filtrar solicitudes maliciosas (ej: inyección de consultas PromQL).

Qué deberían hacer los administradores y equipos técnicos

1. Actualizar OpenSearch Service a la versión mínima requerida

  • Verificar la versión actual:
  curl -XGET https://<domain>.<region>.es.amazonaws.com/_info | jq '.version'
  
  • Actualizar si es necesario (requiere downtime controlado):
  aws opensearch update-domain-config \
    --domain-name my-opensearch-domain \
    --engine-version OpenSearch_2.11
  

2. Configurar permisos IAM estrictos

  • Crear un rol IAM dedicado para MCP Apps:
  {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "es:ESHttpPost",
          "es:ESHttpGet"
        ],
        "Resource": [
          "arn:aws:es:us-east-1:123456789012:domain/my-opensearch-domain/*",
          "arn:aws:es:us-east-1:123456789012:domain/my-opensearch-domain/_plugins/_ml/_traces/_search"
        ],
        "Condition": {
          "IpAddress": {"aws:SourceIp": ["<IP-del-IDE>", "<IP-de-CI/CD>"]}
        }
      }
    ]
  }
  
  • Asignar el rol al agente (ej: en Claude Desktop, configurar el ~/.claude/settings.json):
  {
    "mcpServers": {
      "opensearch": {
        "command": "aws",
        "args": ["sts", "assume-role", "--role-arn", "arn:aws:iam::123456789012:role/MCP-OpenSearch-Role", "--role-session-name", "mcp-session"]
      }
    }
  }
  

3. Habilitar MCP en el dominio de OpenSearch

  • Editar config/opensearch.yml (o usar Terraform):
  plugins.mcp.enabled: true
  plugins.mcp.allowed_origins: ["https://claude.ai", "vscode://continue"]
  plugins.mcp.cors_enabled: true
  
  • Reiniciar el dominio (si se edita el archivo de configuración).

4. Configurar políticas de seguridad en CloudTrail y WAF

  • Crear una regla en WAF para bloquear consultas PromQL con sintaxis peligrosa (ej: drop table):
  # Ejemplo en AWS WAF (reglas de SQL injection)
  Name: BlockMaliciousPromQL
  Priority: 1
  Action: Block
  Statement:
    ByteMatchStatement:
      SearchString: "table;"
      FieldToMatch: {AllQueryArguments: {}}
      TextTransformations: [{Priority: 0, Type: NONE}]
  
  • Configurar alertas en CloudWatch para accesos sospechosos a MCP Apps:
  {
    "AlarmName": "HighMCPUsage",
    "MetricName": "MCPToolCalls",
    "Namespace": "AWS/OpenSearch",
    "Statistic": "Sum",
    "Period": 300,
    "Threshold": 100,
    "ComparisonOperator": "GreaterThanThreshold"
  }
  

5. Probar la integración con un caso de uso real

  • Ejemplo: Investigar un pico de errores 5xx:
  Agente: "Investiga los errores 5xx en el servicio `cart-service` en los últimos 30 minutos"
  MCP App:
  - Consulta logs en OpenSearch: `status:5xx AND service:"cart-service"`
  - Ejecuta PromQL en AMSP: `sum(rate(http_requests_total{service="cart-service", status=~"5.."}[5m])) by (route)`
  - Genera un mapa de servicios con las dependencias de `cart-service`.
  - Respuesta final:
    "El 70% de los errores son timeout en la llamada a `inventory-service` en la región `ap-southeast-1`. Recomiendo aumentar el timeout a 5s o escalar réplicas."
  

Conclusión

MCP Apps en Amazon OpenSearch Service no es solo otra herramienta de automatización, sino un cambio de paradigma en cómo los equipos interactúan con los datos observables. Al integrar agentes de IA directamente en el flujo de trabajo de DevOps/SRE, se reduce la fricción cognitiva de saltar entre múltiples interfaces y se acelera la resolución de incidentes. Sin embargo, este poder conlleva responsabilidades claras:

  • Asegurar que los dominios de OpenSearch no expongan datos sensibles.
  • Limitar los permisos IAM a solo lo necesario.
  • Monitorear el uso de MCP Apps para detectar comportamientos anómalos.

Para equipos que ya usan OpenSearch y Prometheus, la adopción es sencilla y puede implementarse en menos de una hora. Para quienes aún no han migrado a OpenSearch 2.11+, el upgrade es un paso obligado. El futuro de la observabilidad no será más herramientas, sino agentes que trabajen junto a humanos, y AWS acaba de dar el primer paso con MCP Apps.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *