Jenkins MCP Server

MCP Jenkins es una capa de integración basada en Go diseñada para conectar herramientas del Protocolo de Contexto de Modelo (MCP) con pipelines de CI/CD de Jenkins. Este proyecto proporciona un puente ligero y de alto rendimiento que permite la ejecución automatizada de pipelines, la gestión de trabajos y la recuperación de estado a través de flujos de trabajo impulsados por MCP.

Documentación

Servidor MCP de Jenkins

Una implementación de servidor del Model Context Protocol (MCP) en Go que proporciona acceso programático a la funcionalidad de CI/CD de Jenkins. Este servidor permite a los asistentes de IA y otros clientes MCP interactuar con instancias de Jenkins a través de una interfaz de protocolo estandarizada.

Características

  • Cobertura completa de la API de Jenkins: Listar trabajos, disparar builds, monitorear estado, recuperar logs y artefactos
  • Cumplimiento del protocolo MCP: Implementación completa de la especificación del Model Context Protocol
  • Autenticación segura: Autenticación con nombre de usuario y token de API con soporte TLS/SSL
  • Manejo robusto de errores: Reintento automático con retroceso exponencial para fallos transitorios
  • Listo para producción: Manejo integral de errores, registro y gestión de tiempos de espera
  • Soporte multi-instancia: Prefijado opcional de herramientas para ejecutar múltiples servidores Jenkins

Instalación

Opción 1: Instalar desde el código fuente

go install github.com/NithishNithi/go-jenkins-mcp/cmd/jenkins-mcp-server@latest

Opción 2: Compilar desde el código fuente

git clone https://github.com/NithishNithi/go-jenkins-mcp.git
cd go-jenkins-mcp
go build -o jenkins-mcp-server .

Opción 3: Descargar binario precompilado

Descargue la última versión desde la página de versiones.

Requisitos

  • Go 1.23.6 o posterior (para compilar desde el código fuente)
  • Acceso a una instancia de Jenkins
  • Nombre de usuario y token de API de Jenkins

Configuración

Variables de entorno

# Required
JENKINS_URL=https://jenkins.example.com
JENKINS_USERNAME=your-username
JENKINS_API_TOKEN=your-api-token-here

# Optional
JENKINS_TIMEOUT=30s                    # Request timeout (default: 30s)
JENKINS_TLS_SKIP_VERIFY=false          # Skip TLS verification (default: false)
JENKINS_CA_CERT=/path/to/ca.crt        # Custom CA certificate path
JENKINS_MAX_RETRIES=3                  # Maximum retry attempts (default: 3)
JENKINS_RETRY_BACKOFF=1s               # Initial retry backoff (default: 1s)
JENKINS_TOOL_PREFIX=prod               # Tool name prefix for multi-instance setups

Nota: JENKINS_TOOL_PREFIX le permite ejecutar múltiples servidores MCP de Jenkins simultáneamente prefijando los nombres de las herramientas (por ejemplo, prod_jenkins_list_jobs, staging_jenkins_list_jobs).

Archivo de configuración

Cree un archivo config.yaml:

jenkins:
  url: https://jenkins.example.com
  username: your-username
  apiToken: your-api-token-here
  toolPrefix: prod  # Optional prefix for tool names
  
  # Optional settings
  timeout: 30s
  tls:
    skipVerify: false
    caCert: /path/to/ca.crt
  retry:
    maxAttempts: 3
    backoff: 1s

Ejecutar con archivo de configuración:

jenkins-mcp-server --config /path/to/config.yaml

Cómo obtener su token de API de Jenkins

  1. Inicie sesión en Jenkins
  2. Haga clic en su nombre en la esquina superior derecha
  3. Haga clic en "Configurar"
  4. En "Token de API", haga clic en "Agregar nuevo token"
  5. Copie el token generado

Uso

Ejecutar el servidor

# Using environment variables
export JENKINS_URL=https://jenkins.example.com
export JENKINS_USERNAME=your-username
export JENKINS_API_TOKEN=your-token
jenkins-mcp-server

# Using configuration file
jenkins-mcp-server --config config.yaml

Herramientas disponibles

Trabajos

  • jenkins_list_jobs - Listar todos los trabajos de Jenkins accesibles
  • jenkins_get_job - Obtener información detallada del trabajo
  • jenkins_trigger_build - Disparar un nuevo build (admite parámetros)

Builds

  • jenkins_get_build - Obtener estado y detalles del build
  • jenkins_get_build_log - Recuperar la salida de consola
  • jenkins_get_running_builds - Obtener todos los builds en ejecución
  • jenkins_stop_build - Detener un build en ejecución

Artefactos

  • jenkins_list_artifacts - Listar artefactos del build
  • jenkins_get_artifact - Descargar artefactos específicos

Cola

  • jenkins_get_queue - Ver la cola de builds
  • jenkins_get_queue_item - Obtener detalles del elemento de la cola
  • jenkins_cancel_queue_item - Cancelar builds en cola

Vistas

  • jenkins_list_views - Listar todas las vistas
  • jenkins_get_view - Obtener trabajos en una vista
  • jenkins_create_view - Crear una nueva vista

Servidor y nodos

  • jenkins_server_health - Verificar la salud del servidor
  • jenkins_list_nodes - Listar nodos de Jenkins
  • jenkins_get_pipeline_script - Recuperar el contenido del Jenkinsfile

Integración con clientes MCP

Claude Desktop

Agregue a su archivo de configuración de Claude Desktop:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "jenkins": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "JENKINS_URL=https://jenkins.example.com",
        "-e", "JENKINS_USERNAME=your-username",
        "-e", "JENKINS_API_TOKEN=your-api-token",
        "-e", "JENKINS_TOOL_PREFIX=prod",
        "ghcr.io/nithishnithi/jenkins-mcp-server:latest"
      ]
    }
  }
}

Reinicie Claude Desktop y luego pregunte:

  • "Listar todos los trabajos de Jenkins"
  • "Disparar un build para el trabajo main-pipeline"
  • "Mostrarme el estado del último build de mi-app"
  • "Obtener el log del build #42"

Solución de problemas

Problemas de conexión

  • Verifique que JENKINS_URL sea correcto y accesible
  • Compruebe la conectividad de red y las reglas del firewall
  • Asegúrese de que Jenkins esté en ejecución

Fallos de autenticación

  • Verifique que el token de API sea válido
  • Compruebe que el nombre de usuario sea correcto
  • Regenerar el token de API si es necesario

Errores TLS/SSL

  • Establezca JENKINS_TLS_SKIP_VERIFY=true solo para pruebas
  • Proporcione un certificado CA personalizado mediante JENKINS_CA_CERT
  • Actualice los certificados CA del sistema

Errores de permisos

  • Verifique que el usuario de Jenkins tenga los permisos adecuados
  • Compruebe los permisos a nivel de trabajo en Jenkins

Problemas de tiempo de espera

  • Aumente el valor de JENKINS_TIMEOUT
  • Compruebe el rendimiento del servidor de Jenkins
  • Verifique la latencia de la red

El cliente MCP no detecta el servidor

  • Verifique la ruta del binario en la configuración
  • Compruebe que las variables de entorno estén configuradas correctamente
  • Reinicie el cliente MCP después de los cambios
  • Asegúrese de que el binario tenga permisos de ejecución: chmod +x jenkins-mcp-server

Habilitar registro de depuración

export LOG_LEVEL=debug
jenkins-mcp-server

Desarrollo

Estructura del proyecto

.
├── internal/
│   ├── config/      # Configuration management
│   ├── jenkins/     # Jenkins API client
│   └── mcp/         # MCP server implementation
├── main.go          # Application entry point
├── go.mod           # Go module definition
├── Dockerfile       # Docker image definition
└── README.md        # This file

Compilación

go build -o jenkins-mcp-server .

Contribuciones

¡Las contribuciones son bienvenidas! Por favor:

  1. Haga un fork del repositorio
  2. Cree una rama de características
  3. Agregue pruebas para sus cambios
  4. Envíe una solicitud de extracción

Licencia

Licencia MIT: consulte el archivo LICENSE para más detalles.

Soporte

Agradecimientos

Construido con el SDK de Go del Model Context Protocol