AWS CodePipeline MCP Server

Se integra con AWS CodePipeline para gestionar pipelines de integración y entrega continua.

Documentación

Servidor MCP de AWS CodePipeline

Este es un servidor de Protocolo de Contexto de Modelo (MCP) que se integra con AWS CodePipeline, permitiéndote gestionar tus pipelines a través de Windsurf y Cascade. El servidor proporciona una interfaz estandarizada para interactuar con los servicios de AWS CodePipeline.

Autor: Cuong T Nguyen

Características

  • Listar todos los pipelines
  • Obtener el estado del pipeline y definiciones detalladas del pipeline
  • Listar ejecuciones de pipelines
  • Aprobar o rechazar acciones de aprobación manual
  • Reintentar etapas fallidas
  • Activar ejecuciones de pipelines
  • Ver registros de ejecución de pipelines
  • Detener ejecuciones de pipelines
  • Etiquetar recursos de pipelines
  • Crear webhooks para activación automática de pipelines
  • Obtener métricas de rendimiento de pipelines

Requisitos previos

  • Node.js (v14 o posterior)
  • Cuenta de AWS con acceso a CodePipeline
  • Credenciales de AWS con permisos para CodePipeline y CloudWatch (lectura de métricas)
  • IDE Windsurf con asistente de IA Cascade

Instalación

  1. Clona este repositorio:
git clone https://github.com/cuongdev/mcp-codepipeline-server.git
cd mcp-codepipeline-server
  1. Instala las dependencias:
npm install
  1. Crea un archivo .env basado en la plantilla .env.example:
cp .env.example .env
  1. Actualiza el archivo .env con tu configuración de AWS (consulta .env.example):
AWS_REGION=us-east-1
AWS_PROFILE=your-aws-profile

Nota: Por seguridad, nunca subas tu archivo .env al control de versiones.

Autenticación de AWS

No necesitas claves de acceso de larga duración en .env. Elige un enfoque:

EnfoqueConfiguración
Perfil de AWS (recomendado para desarrollo local)AWS_PROFILE=my-profile — usa ~/.aws/credentials / ~/.aws/config
AWS SSOaws configure sso luego aws sso login --profile my-sso y establece AWS_PROFILE=my-sso
Claves estáticasEstablece AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY (y AWS_SESSION_TOKEN para credenciales temporales)
Rol de IAMEjecuta en EC2/ECS/Lambda/EKS con un rol adjunto; establece solo AWS_REGION

Si se omiten las claves de acceso, el SDK de AWS usa su cadena de proveedores de credenciales predeterminada.

Creación de un perfil de AWS

Un perfil es una entrada con nombre en ~/.aws/credentials y ~/.aws/config. Establece AWS_PROFILE a ese nombre en .env o en la configuración de MCP.

Opción A: Claves de acceso (usuario de IAM)

Requiere AWS CLI.

aws configure --profile codepipeline-dev

Se te solicitará:

SolicitudEjemplo
ID de clave de acceso de AWSAKIA...
Clave de acceso secreta de AWS(secreto)
Nombre de región predeterminadaus-east-1
Formato de salida predeterminadojson

Luego, en .env:

AWS_REGION=us-east-1
AWS_PROFILE=codepipeline-dev

Opción B: AWS SSO (Centro de identidad de IAM)

aws configure sso --profile codepipeline-sso

Sigue las indicaciones (URL de inicio de SSO, región de SSO, cuenta, rol). Luego inicia sesión antes de iniciar el servidor MCP:

aws sso login --profile codepipeline-sso

En .env:

AWS_REGION=us-east-1
AWS_PROFILE=codepipeline-sso

Las sesiones de SSO expiran; ejecuta aws sso login nuevamente cuando veas errores de credenciales.

Verificar el perfil

aws sts get-caller-identity --profile codepipeline-dev
aws codepipeline list-pipelines --region us-east-1 --profile codepipeline-dev

Si ambos comandos tienen éxito, el servidor MCP puede usar el mismo AWS_PROFILE y AWS_REGION.

Archivos creados (referencia)

~/.aws/credentials:

[codepipeline-dev]
aws_access_key_id = AKIA...
aws_secret_access_key = ...

~/.aws/config:

[profile codepipeline-dev]
region = us-east-1
output = json

Uso

Compilar el proyecto

npm run build

Iniciar el servidor

npm start

Para desarrollo con reinicio automático:

npm run dev

Integración con Windsurf

Este servidor MCP está diseñado para funcionar con Windsurf, permitiendo que Cascade interactúe con AWS CodePipeline a través de solicitudes en lenguaje natural.

Pasos de configuración

  1. Asegúrate de que el servidor esté en ejecución:
npm start
  1. Agrega la configuración del servidor a tu archivo de configuración MCP de Windsurf en ~/.codeium/windsurf/mcp_config.json:
{
   "mcpServers": {
    "codepipeline": {
      "command": "npx",
      "args": [
        "-y",
        "path/to/mcp-codepipeline-server/dist/index.js"
      ],
      "env": {
        "AWS_REGION": "us-east-1",
        "AWS_PROFILE": "your-aws-profile"
      }
    }
  }
}
  1. Crea el directorio si no existe:
mkdir -p ~/.codeium/windsurf
touch ~/.codeium/windsurf/mcp_config.json
  1. Reinicia Windsurf para cargar la nueva configuración del servidor MCP

Uso con Cascade

Una vez configurado, puedes interactuar con AWS CodePipeline usando lenguaje natural en Windsurf. Por ejemplo:

  • "Lista todos mis pipelines de CodePipeline"
  • "Muéstrame el estado actual de mi pipeline 'production-deploy'"
  • "Activa el pipeline 'test-build'"
  • "Obtén métricas para mi pipeline 'data-processing'"
  • "Crea un webhook para mi pipeline 'frontend-deploy'"

Cascade traducirá estas solicitudes a las llamadas de herramientas MCP apropiadas.

Herramientas MCP

Gestión principal de pipelines

Nombre de la herramientaDescripciónParámetros
list_pipelinesLista todos los pipelines de CodePipelineNinguno
get_pipeline_stateObtiene el estado de un pipeline específicopipelineName: Nombre del pipeline
list_pipeline_executionsLista ejecuciones para un pipeline específicopipelineName: Nombre del pipeline
trigger_pipelineActiva una ejecución de pipelinepipelineName: Nombre del pipeline
stop_pipeline_executionDetiene una ejecución de pipelinepipelineName: Nombre del pipeline
executionId: ID de ejecución
reason: Razón opcional para detener

Detalles y métricas del pipeline

Nombre de la herramientaDescripciónParámetros
get_pipeline_detailsObtiene la definición completa de un pipelinepipelineName: Nombre del pipeline
get_pipeline_execution_logsObtiene registros para una ejecución de pipelinepipelineName: Nombre del pipeline
executionId: ID de ejecución
get_pipeline_metricsObtiene métricas de rendimiento para un pipelinepipelineName: Nombre del pipeline
period: Período de métricas opcional en segundos
startTime: Hora de inicio opcional para métricas
endTime: Hora de finalización opcional para métricas

Acciones e integraciones de pipelines

Nombre de la herramientaDescripciónParámetros
approve_actionAprueba o rechaza una acción de aprobación manualpipelineName: Nombre del pipeline
stageName: Nombre de la etapa
actionName: Nombre de la acción
token: Token de aprobación
approved: Booleano que indica aprobación o rechazo
comments: Comentarios opcionales
retry_stageReintenta una etapa fallidapipelineName: Nombre del pipeline
stageName: Nombre de la etapa
pipelineExecutionId: ID de ejecución
tag_pipeline_resourceAgrega o actualiza etiquetas para un recurso de pipelinepipelineName: Nombre del pipeline
tags: Matriz de pares clave-valor para etiquetado
create_pipeline_webhookCrea un webhook para un pipelinepipelineName: Nombre del pipeline
webhookName: Nombre para el webhook
targetAction: Acción de destino para el webhook
authentication: Tipo de autenticación
authenticationConfiguration: Configuración de autenticación opcional
filters: Filtros de eventos opcionales

Solución de problemas

Problemas comunes

  1. Error de conexión rechazada:

    • Asegúrate de que el servidor esté ejecutándose en el puerto especificado
    • Verifica si el puerto está bloqueado por un firewall
  2. Errores de credenciales de AWS:

    • Para perfiles/SSO: ejecuta aws sso login --profile YOUR_PROFILE si es necesario, luego establece AWS_PROFILE
    • Para claves estáticas: verifica AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY en .env o MCP env
    • Asegúrate de que la entidad principal tenga permisos de CodePipeline (y CloudWatch para métricas)
    • Revisa los registros de inicio del servidor para AWS credentials: default provider chain vs static keys
  3. Windsurf no detecta el servidor MCP:

    • Verifica el formato del archivo mcp_config.json
    • Asegúrate de que la URL del servidor sea correcta
    • Reinicia Windsurf después de realizar cambios

Registros

El servidor registra información en la consola. Revisa estos registros para solucionar problemas:

# Run with more verbose logging
DEBUG=* npm start

Ejemplos

Creación de un webhook para integración con GitHub

{
  "pipelineName": "my-pipeline",
  "webhookName": "github-webhook",
  "targetAction": "Source",
  "authentication": "GITHUB_HMAC",
  "authenticationConfiguration": {
    "SecretToken": "my-secret-token"
  },
  "filters": [
    {
      "jsonPath": "$.ref",
      "matchEquals": "refs/heads/main"
    }
  ]
}

Obtención de métricas de pipeline

{
  "pipelineName": "my-pipeline",
  "period": 86400,
  "startTime": "2025-03-10T00:00:00Z",
  "endTime": "2025-03-17T23:59:59Z"
}

Licencia

ISC