Jenkins MCP Server

MCP Jenkins é uma camada de integração baseada em Go projetada para conectar ferramentas do Model Context Protocol (MCP) com pipelines CI/CD do Jenkins. Este projeto fornece uma ponte leve e de alto desempenho que possibilita execução automatizada de pipelines, gerenciamento de jobs e recuperação de status por meio de fluxos de trabalho orientados pelo MCP.

Documentação

Jenkins MCP Server

Uma implementação de servidor Model Context Protocol (MCP) em Go que fornece acesso programático à funcionalidade de CI/CD do Jenkins. Este servidor permite que assistentes de IA e outros clientes MCP interajam com instâncias Jenkins através de uma interface de protocolo padronizada.

Recursos

  • Cobertura Completa da API do Jenkins: Liste jobs, dispare builds, monitore status, recupere logs e artefatos
  • Compatível com o Protocolo MCP: Implementação completa da especificação do Model Context Protocol
  • Autenticação Segura: Autenticação com nome de usuário e token de API com suporte a TLS/SSL
  • Tratamento Robusto de Erros: Repetição automática com backoff exponencial para falhas transitórias
  • Pronto para Produção: Tratamento abrangente de erros, registro de logs e gerenciamento de tempo limite
  • Suporte a Múltiplas Instâncias: Prefixação opcional de ferramentas para executar vários servidores Jenkins

Instalação

Opção 1: Instalar a partir do Código Fonte

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

Opção 2: Compilar a partir do Código Fonte

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

Opção 3: Baixar Binário Pré-compilado

Baixe a versão mais recente da página de releases.

Requisitos

  • Go 1.23.6 ou posterior (para compilar a partir do código fonte)
  • Acesso a uma instância Jenkins
  • Nome de usuário e token de API do Jenkins

Configuração

Variáveis de Ambiente

# 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 permite executar vários servidores Jenkins MCP simultaneamente prefixando nomes de ferramentas (por exemplo, prod_jenkins_list_jobs, staging_jenkins_list_jobs).

Arquivo de Configuração

Crie um arquivo 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

Execute com arquivo de configuração:

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

Obtendo seu Token de API do Jenkins

  1. Faça login no Jenkins
  2. Clique no seu nome no canto superior direito
  3. Clique em "Configurar"
  4. Em "Token de API", clique em "Adicionar novo Token"
  5. Copie o token gerado

Uso

Executando o 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

Ferramentas Disponíveis

Jobs

  • jenkins_list_jobs - Lista todos os jobs Jenkins acessíveis
  • jenkins_get_job - Obtém informações detalhadas do job
  • jenkins_trigger_build - Dispara um novo build (suporta parâmetros)

Builds

  • jenkins_get_build - Obtém status e detalhes do build
  • jenkins_get_build_log - Recupera a saída do console
  • jenkins_get_running_builds - Obtém todos os builds em execução
  • jenkins_stop_build - Para um build em execução

Artefatos

  • jenkins_list_artifacts - Lista artefatos do build
  • jenkins_get_artifact - Baixa artefatos específicos

Fila

  • jenkins_get_queue - Visualiza a fila de builds
  • jenkins_get_queue_item - Obtém detalhes do item da fila
  • jenkins_cancel_queue_item - Cancela builds na fila

Visualizações

  • jenkins_list_views - Lista todas as visualizações
  • jenkins_get_view - Obtém jobs em uma visualização
  • jenkins_create_view - Cria uma nova visualização

Servidor e Nós

  • jenkins_server_health - Verifica a saúde do servidor
  • jenkins_list_nodes - Lista nós Jenkins
  • jenkins_get_pipeline_script - Recupera o conteúdo do Jenkinsfile

Integração com Cliente MCP

Claude Desktop

Adicione ao seu arquivo de configuração do 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 o Claude Desktop e então pergunte:

  • "Liste todos os jobs Jenkins"
  • "Dispare um build para o job main-pipeline"
  • "Mostre-me o status do build mais recente para my-app"
  • "Obtenha o log do build para o build #42"

Solução de Problemas

Problemas de Conexão

  • Verifique se JENKINS_URL está correto e acessível
  • Verifique a conectividade de rede e as regras de firewall
  • Garanta que o Jenkins esteja em execução

Falhas de Autenticação

  • Verifique se o token de API é válido
  • Verifique se o nome de usuário está correto
  • Regere o token de API se necessário

Erros de TLS/SSL

  • Defina JENKINS_TLS_SKIP_VERIFY=true apenas para testes
  • Forneça um certificado CA personalizado via JENKINS_CA_CERT
  • Atualize os certificados CA do sistema

Erros de Permissão

  • Verifique se o usuário Jenkins tem permissões adequadas
  • Verifique as permissões em nível de job no Jenkins

Problemas de Tempo Limite

  • Aumente o valor de JENKINS_TIMEOUT
  • Verifique o desempenho do servidor Jenkins
  • Verifique a latência da rede

Cliente MCP Não Detectando o Servidor

  • Verifique o caminho do binário na configuração
  • Verifique se as variáveis de ambiente estão configuradas corretamente
  • Reinicie o cliente MCP após alterações
  • Garanta que o binário tenha permissões de execução: chmod +x jenkins-mcp-server

Habilitar Log de Depuração

export LOG_LEVEL=debug
jenkins-mcp-server

Desenvolvimento

Estrutura do Projeto

.
├── 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

Compilação

go build -o jenkins-mcp-server .

Contribuindo

Contribuições são bem-vindas! Por favor:

  1. Faça um fork do repositório
  2. Crie um branch de recurso
  3. Adicione testes para suas alterações
  4. Envie um pull request

Licença

Licença MIT - consulte o arquivo LICENSE para detalhes.

Suporte

Agradecimentos

Construído com o Model Context Protocol Go SDK