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
- Clona este repositorio:
git clone https://github.com/cuongdev/mcp-codepipeline-server.git
cd mcp-codepipeline-server
- Instala las dependencias:
npm install
- Crea un archivo
.envbasado en la plantilla.env.example:
cp .env.example .env
- Actualiza el archivo
.envcon 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
.enval control de versiones.
Autenticación de AWS
No necesitas claves de acceso de larga duración en .env. Elige un enfoque:
| Enfoque | Configuración |
|---|---|
| Perfil de AWS (recomendado para desarrollo local) | AWS_PROFILE=my-profile — usa ~/.aws/credentials / ~/.aws/config |
| AWS SSO | aws configure sso luego aws sso login --profile my-sso y establece AWS_PROFILE=my-sso |
| Claves estáticas | Establece AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY (y AWS_SESSION_TOKEN para credenciales temporales) |
| Rol de IAM | Ejecuta 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á:
| Solicitud | Ejemplo |
|---|---|
| ID de clave de acceso de AWS | AKIA... |
| Clave de acceso secreta de AWS | (secreto) |
| Nombre de región predeterminada | us-east-1 |
| Formato de salida predeterminado | json |
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
- Asegúrate de que el servidor esté en ejecución:
npm start
- 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"
}
}
}
}
- Crea el directorio si no existe:
mkdir -p ~/.codeium/windsurf
touch ~/.codeium/windsurf/mcp_config.json
- 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 herramienta | Descripción | Parámetros |
|---|---|---|
list_pipelines | Lista todos los pipelines de CodePipeline | Ninguno |
get_pipeline_state | Obtiene el estado de un pipeline específico | pipelineName: Nombre del pipeline |
list_pipeline_executions | Lista ejecuciones para un pipeline específico | pipelineName: Nombre del pipeline |
trigger_pipeline | Activa una ejecución de pipeline | pipelineName: Nombre del pipeline |
stop_pipeline_execution | Detiene una ejecución de pipeline | pipelineName: Nombre del pipelineexecutionId: ID de ejecuciónreason: Razón opcional para detener |
Detalles y métricas del pipeline
| Nombre de la herramienta | Descripción | Parámetros |
|---|---|---|
get_pipeline_details | Obtiene la definición completa de un pipeline | pipelineName: Nombre del pipeline |
get_pipeline_execution_logs | Obtiene registros para una ejecución de pipeline | pipelineName: Nombre del pipelineexecutionId: ID de ejecución |
get_pipeline_metrics | Obtiene métricas de rendimiento para un pipeline | pipelineName: Nombre del pipelineperiod: Período de métricas opcional en segundosstartTime: Hora de inicio opcional para métricasendTime: Hora de finalización opcional para métricas |
Acciones e integraciones de pipelines
| Nombre de la herramienta | Descripción | Parámetros |
|---|---|---|
approve_action | Aprueba o rechaza una acción de aprobación manual | pipelineName: Nombre del pipelinestageName: Nombre de la etapaactionName: Nombre de la accióntoken: Token de aprobaciónapproved: Booleano que indica aprobación o rechazocomments: Comentarios opcionales |
retry_stage | Reintenta una etapa fallida | pipelineName: Nombre del pipelinestageName: Nombre de la etapapipelineExecutionId: ID de ejecución |
tag_pipeline_resource | Agrega o actualiza etiquetas para un recurso de pipeline | pipelineName: Nombre del pipelinetags: Matriz de pares clave-valor para etiquetado |
create_pipeline_webhook | Crea un webhook para un pipeline | pipelineName: Nombre del pipelinewebhookName: Nombre para el webhooktargetAction: Acción de destino para el webhookauthentication: Tipo de autenticaciónauthenticationConfiguration: Configuración de autenticación opcionalfilters: Filtros de eventos opcionales |
Solución de problemas
Problemas comunes
-
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
-
Errores de credenciales de AWS:
- Para perfiles/SSO: ejecuta
aws sso login --profile YOUR_PROFILEsi es necesario, luego estableceAWS_PROFILE - Para claves estáticas: verifica
AWS_ACCESS_KEY_IDyAWS_SECRET_ACCESS_KEYen.envo MCPenv - 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 chainvsstatic keys
- Para perfiles/SSO: ejecuta
-
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
- Verifica el formato del archivo
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