Ir al contenido

Actualización Automática

GitLab MCP Server puede detectar, descargar y aplicar automáticamente nuevas versiones desde GitHub. Las actualizaciones usan un truco de renombrado — el binario en ejecución se renombra a .old, el nuevo binario se coloca en la ruta original, y en Unix el proceso se re-ejecuta sin interrupciones.

La variable AUTO_UPDATE controla cómo se manejan las actualizaciones:

ValorModoComportamiento
true (por defecto)Aplicar automáticamenteDetectar y aplicar actualizaciones automáticamente
checkSolo notificarDetectar actualizaciones y registrar disponibilidad, pero no aplicar
falseDeshabilitadoOmitir todas las verificaciones de actualización

Alias aceptados: 1/yes para true, 0/no para false. El valor no distingue mayúsculas de minúsculas.

sequenceDiagram
    participant Server as gitlab-mcp-server
    participant GitHub as API de GitHub Releases
    participant FS as Sistema de Archivos

    Server->>Server: CleanupOldBinary()
    Server->>GitHub: GET /repos/:owner/:repo/releases/latest
    GitHub-->>Server: Metadatos del release + URLs de assets
    alt Actualización disponible
        Server->>GitHub: Descargar asset del binario
        Server->>FS: Escribir en archivo temporal .tmp
        Server->>FS: Renombrar actual → .old
        Server->>FS: Renombrar .tmp → ruta actual
        alt Unix
            Server->>Server: syscall.Exec(self) — re-ejecución sin interrupciones
        else Windows
            Server->>Server: La actualización toma efecto en el próximo reinicio
        end
    else Actualizado
        Server->>Server: Registrar "el servidor está actualizado"
    end

En modo stdio (el predeterminado), la actualización automática se ejecuta como una verificación previa al inicio con un timeout configurable (por defecto: 60 segundos) antes de que el servidor MCP comience a aceptar conexiones:

  1. CleanupOldBinary() elimina cualquier archivo .old sobrante de una actualización anterior
  2. Verifica si hay una versión más nueva en GitHub
  3. Si el modo es true y existe una versión más nueva, descarga y reemplaza el binario
  4. En Linux/macOS: se re-ejecuta vía syscall.Exec() — mismo PID, mismos pipes stdin/stdout, sin interrupción para el cliente MCP
  5. En Windows: registra que la actualización tomará efecto en el próximo reinicio

La verificación al inicio es no fatal — cualquier error (timeout de red, releases no encontrados) se registra como advertencia y no impide que el servidor arranque.

En modo HTTP, la actualización automática se ejecuta como una verificación periódica en segundo plano:

  1. Una goroutine verifica actualizaciones cada AUTO_UPDATE_INTERVAL (por defecto: 1 hora)
  2. En cada ciclo, verifica GitHub para un release más nuevo con un timeout de 30 segundos
  3. Si el modo es true, aplica la actualización y registra un aviso de reinicio
  4. La goroutine se detiene cuando el servidor se apaga
VariablePor DefectoDescripción
AUTO_UPDATEtrueModo de actualización: true, check o false
AUTO_UPDATE_REPOjmrplens/gitlab-mcp-serverSlug del repositorio de GitHub (propietario/repo) para assets del release
AUTO_UPDATE_INTERVAL1hIntervalo de verificación (usado por las verificaciones periódicas del modo HTTP)
AUTO_UPDATE_TIMEOUT60sTimeout de descarga pre-inicio (rango: 5s–10m)
FlagPor DefectoDescripción
--auto-updatetrueModo de actualización: true, check o false
--auto-update-repojmrplens/gitlab-mcp-serverSlug del repositorio de GitHub (propietario/repo) para assets del release
--auto-update-interval1hIntervalo entre verificaciones periódicas de actualización
--auto-update-timeout60sTimeout de descarga pre-inicio (rango: 5s–10m)

Desactivar la actualización automática completamente:

AUTO_UPDATE=false

Modo de solo verificación (registrar disponibilidad pero no aplicar):

AUTO_UPDATE=check

Usar un repositorio fork personalizado:

AUTO_UPDATE_REPO=mi-org/mi-fork-gitlab-mcp

Flag de apagado para actualizadores externos

Sección titulada «Flag de apagado para actualizadores externos»

Herramientas externas (como pe-agnostic-store) pueden terminar todas las instancias en ejecución antes de reemplazar el binario en disco:

Ventana de terminal
gitlab-mcp-server --shutdown

Este flag:

  1. Encuentra todos los procesos gitlab-mcp-server en ejecución por nombre
  2. Envía una señal de terminación graceful
  3. Espera hasta 5 segundos a que los procesos terminen
  4. Fuerza la terminación de cualquier proceso restante
  5. Finaliza — no se inicia ningún servidor MCP

No se requieren permisos de administrador o root. Esto funciona en Linux, macOS y Windows.

Si una actualización causa problemas:

  1. El binario anterior se conserva como gitlab-mcp-server.old (o .exe.old en Windows) junto al binario actual
  2. Para revertir, detén el servidor y renombra el archivo .old de vuelta al nombre original
  3. El archivo .old se limpia automáticamente en el próximo inicio exitoso

Puedes apuntar la actualización automática a cualquier repositorio de GitHub que siga el formato de release esperado:

  1. Establece AUTO_UPDATE_REPO=propietario/repo a tu repositorio
  2. Crea releases en GitHub con binarios de plataforma nombrados gitlab-mcp-server-{os}-{arch}
  3. Incluye un asset checksums.txt con hashes SHA-256 (formato goreleaser)