Ir al contenido

Configuración

GitLab MCP Server casi no necesita nada para arrancar. En modo stdio — el predeterminado que usan las integraciones con IDE — solo estableces dos cosas: con qué instancia de GitLab hablar (GITLAB_URL) y un personal access token para hacerlo (GITLAB_TOKEN). En GitLab.com hasta la URL es opcional, porque GITLAB_URL usa https://gitlab.com por defecto, así que un único GITLAB_TOKEN basta; apunta GITLAB_URL a tu propio host para instancias autogestionadas. En modo HTTP el servidor no guarda credencial alguna — cada cliente envía su propio token (y, opcionalmente, su propia URL de GitLab) en cada petición. Todo lo demás en esta página es opcional y viene con un valor predeterminado seguro.

El modo stdio lee su configuración de variables de entorno o de un archivo .env; el modo HTTP lee flags de CLI. Esta página cubre las opciones que la mayoría de usuarios necesita; consulta la referencia de variables y la referencia CLI del repositorio para las tablas exhaustivas.

GitLab MCP Server requiere exactamente una variable para arrancar en modo stdio — el resto son opcionales y usan valores predeterminados seguros:

VariableDescripciónEjemplo
GITLAB_TOKENPersonal Access Token con scope apiglpat-xxxxxxxxxxxxxxxxxxxx
VariablePredeterminadoDescripción
GITLAB_URLhttps://gitlab.comURL base de la instancia GitLab. Establécela para instancias autogestionadas
GITLAB_SKIP_TLS_VERIFYfalseOmitir verificación de certificados TLS para certificados autofirmados
TOOL_SURFACEdynamicSelector canónico del catálogo: dynamic, meta o individual
META_TOOLSheredadoSelector de compatibilidad deprecado. true mapea a meta, false mapea a individual, y los valores dynamic mapean al TOOL_SURFACE equivalente cuando TOOL_SURFACE no está definido
CAPABILITY_SURFACEfullSelector del catálogo de recursos y prompts: full conserva el catálogo completo; minimal mantiene el manifiesto gitlab://tools, y desactiva recursos opcionales, prompts y guías de flujo
META_PARAM_SCHEMAopaqueEstrategia de esquema de entrada para meta-herramientas: opaque (por defecto), compact (6.5x el tamaño opaque) o full (11.9x). Solo afecta schemas de meta-herramientas en tools/list
GITLAB_TIER(autodetectado)Selector de edición de GitLab: free/ce, premium o ultimate. Cuando se establece, se usa tal cual; cuando se omite, se detecta desde GET /license (por defecto free). El tier restringe las herramientas Enterprise/Premium y poda entradas de esquema por campo mediante pruneSchemaFieldsByTier (ver internal/tools/action_catalog.go)
GITLAB_READ_ONLYfalseDesactivar todas las herramientas de escritura (crear, actualizar, eliminar)
GITLAB_SAFE_MODEfalseDevolver vista previa JSON estructurada en lugar de ejecutar herramientas de escritura (modo dry-run)
EMBEDDED_RESOURCEStrueIncrustar URIs MCP canónicas gitlab:// en resultados de herramientas get; usa false para clientes que no toleren bloques de contenido duplicados
EXCLUDE_TOOLSLista de herramientas a excluir separadas por comas (ej., gitlab_delete_project,gitlab_admin)
GITLAB_IGNORE_SCOPESfalseOmitir detección automática de scopes del PAT — registrar todas las herramientas sin importar los scopes
LOG_LEVELinfoNivel de verbosidad del log: debug, info, warn, error
EVAL_SURFACE_ENTERPRISEfalsecmd/eval_mcp_surfaces: ejecuta el conjunto de casos enterprise además del corpus base
EVAL_SURFACE_CASE_SETcecmd/eval_mcp_surfaces: selector del conjunto de casos — ce (solo CE) o all (CE+Enterprise)
EVAL_SURFACE_FIXTURE_SMOKEfalsecmd/eval_mcp_surfaces: limita la ejecución a los casos fixture-smoke (comprobación rápida)
VariablePredeterminadoDescripción
AUTO_UPDATEtrueComportamiento de autoactualización: true (aplicar en segundo plano), check (solo notificar), false (deshabilitado)
AUTO_UPDATE_REPOjmrplens/gitlab-mcp-serverRepositorio de GitHub para los assets de release
AUTO_UPDATE_INTERVAL1hIntervalo de comprobación periódica (solo modo HTTP)
AUTO_UPDATE_TIMEOUT60sTimeout de actualización de arranque/en segundo plano (rango: 5s–10m)
VariablePredeterminadoDescripción
YOLO_MODEfalseOmitir confirmaciones de acciones destructivas (no recomendado)
AUTOPILOTfalseIgual que YOLO_MODE: omitir confirmaciones destructivas
GITLAB_MCP_ALLOWED_IMPORT_DIRSDirectorios adicionales, separados por la lista de rutas del sistema operativo, permitidos para archivos locales de importación de proyectos/grupos
RATE_LIMIT_RPS0Límite de velocidad por servidor en req/s (0 = desactivado)
RATE_LIMIT_BURST40Tamaño del bucket de tokens cuando RATE_LIMIT_RPS > 0
.env
# Requeridas
GITLAB_TOKEN=glpat-xxxxxxxxxxxxxxxxxxxx
# Opcionales
GITLAB_SKIP_TLS_VERIFY=false
TOOL_SURFACE=dynamic
GITLAB_TIER=free
GITLAB_READ_ONLY=false
GITLAB_SAFE_MODE=false
EXCLUDE_TOOLS=
GITLAB_IGNORE_SCOPES=false
LOG_LEVEL=info
# Autoactualización
AUTO_UPDATE=true

Para GitLab autogestionado, añade GITLAB_URL=https://gitlab.example.com.

Crea .vscode/mcp.json en tu workspace:

{
"servers": {
"gitlab": {
"type": "stdio",
"command": "/ruta/a/gitlab-mcp-server",
"env": {
"GITLAB_TOKEN": "glpat-xxxxxxxxxxxxxxxxxxxx"
}
}
}
}

Configuración segura del token usando variables de entrada de VS Code:

{
"inputs": [
{
"id": "gitlab-token",
"type": "promptString",
"description": "GitLab Personal Access Token",
"password": true
}
],
"servers": {
"gitlab": {
"type": "stdio",
"command": "/ruta/a/gitlab-mcp-server",
"env": {
"GITLAB_TOKEN": "${input:gitlab-token}"
}
}
}
}

Al ejecutar en modo HTTP (--http), la configuración usa flags de CLI en lugar de variables de entorno:

FlagPredeterminadoDescripción
--httpfalseHabilitar modo de transporte HTTP
--http-addr:8080Dirección y puerto de escucha
--gitlab-urlURL fija de la instancia de GitLab. Omítela para requerir GITLAB-URL en cada petición
--skip-tls-verifyfalseOmitir verificación TLS
--tool-surfacedynamicSelector canónico del catálogo: dynamic, meta o individual
--meta-tools(sin definir)Flag de compatibilidad deprecado. Usa --tool-surface=individual en lugar de --meta-tools=false
--meta-param-schemaopaqueModo de schema para params de meta-herramientas: opaque, compact o full; solo afecta schemas de meta-herramientas
--capability-surfacefullSelector del catálogo de recursos y prompts: full o minimal; minimal mantiene el manifiesto gitlab://tools, y omite recursos opcionales, guías y prompts
--tier(autodetectado)Forzar la edición de GitLab: free/ce, premium o ultimate; omítelo para autodetectar CE/EE por entrada token+URL. Reemplaza al flag deprecado --enterprise
--read-onlyfalseModo solo lectura
--safe-modefalseIntercepta herramientas modificantes y devuelve una vista previa JSON en lugar de ejecutarlas
--embedded-resourcestrueIncrustar URIs MCP canónicas en resultados de herramientas get
--exclude-toolsHerramientas a excluir separadas por comas
--ignore-scopesfalseOmitir detección de scopes del PAT
--max-http-clients100Máximo de sesiones de clientes simultáneas
--session-timeout30mTiempo de espera de sesión inactiva
--http-idle-timeout0 (desactivado)Timeout de conexión inactiva del servidor HTTP. 0 (por defecto) desactiva el cierre por inactividad, de modo que --session-timeout es la vida efectiva; usa una duración positiva para reciclar conexiones antes
--auto-updatetrueModo de autoactualización
--auto-update-repojmrplens/gitlab-mcp-serverRepositorio de GitHub para releases
--auto-update-interval1hIntervalo de comprobación periódica de actualizaciones
--auto-update-timeout60sTiempo de espera de actualización de arranque/en segundo plano (5s–10m)
--auth-modelegacyModo de autenticación: legacy u oauth
--oauth-cache-ttl15mTTL de caché de identidad OAuth (1m–2h)
--revalidate-interval15mIntervalo de revalidación de token; 0 para desactivar (límite: 24h)
--rate-limit-rps0Límite de tasa por servidor para tools/call en req/s (0 = desactivado)
--rate-limit-burst40Tamaño del token bucket cuando --rate-limit-rps > 0
--trusted-proxy-headerCabecera HTTP con la IP real del cliente para rate limiting detrás de proxies (ej. Fly-Client-IP, X-Forwarded-For)

Flags del evaluador de superficies (solo para cmd/eval_mcp_surfaces):

FlagPredeterminadoDescripción
--max-output-retries2Reejecuta una tarea cuando falla únicamente por salida de tool-call mal formada
--case-setceSelector del conjunto de casos: ce (solo CE) o all (CE+Enterprise)
--enterprise-case-setfalseEjecuta el conjunto de casos enterprise además del corpus base
--fixture-smokefalseLimita la ejecución a los casos fixture-smoke (comprobación rápida)

Flags generales (modos stdio y HTTP):

FlagPredeterminadoDescripción
--shutdownfalseTerminar todas las instancias en ejecución y salir

Ejemplo:

Ventana de terminal
# Instancia única de GitLab.com (URL fija para todos los clientes; reemplázala para GitLab autogestionado)
./gitlab-mcp-server \
--http \
--http-addr=0.0.0.0:8080 \
--gitlab-url=https://gitlab.com \
--max-http-clients=200 \
--session-timeout=1h
# Multi-instancia (cada cliente especifica su URL de GitLab mediante la cabecera GITLAB-URL)
./gitlab-mcp-server \
--http \
--http-addr=0.0.0.0:8080

El servidor carga la configuración en el siguiente orden (las fuentes posteriores anulan las anteriores):

  1. ~/.gitlab-mcp-server.env — Valores predeterminados a nivel de usuario (directorio home)
  2. .env — Configuración a nivel de proyecto (directorio de trabajo actual)
  3. Variables de entorno del sistema — Variables exportadas en el shell
  4. Flags de CLI — Argumentos de línea de comandos (prioridad más alta)

Para instancias de GitLab con certificados TLS autofirmados:

Ventana de terminal
GITLAB_SKIP_TLS_VERIFY=true

Habilita GITLAB_READ_ONLY=true para restringir el servidor a operaciones de solo lectura. Todas las herramientas que crean, actualizan o eliminan recursos se desactivan. Esto es útil para:

  • Entornos de auditoría y cumplimiento
  • Servidores compartidos donde los usuarios solo deben consultar datos
  • Tokens con scope read_api

Habilita GITLAB_SAFE_MODE=true para interceptar las herramientas de escritura y devolver una vista previa JSON estructurada de lo que se ejecutaría, sin realizar la operación. Las herramientas de solo lectura funcionan normalmente. Esto es útil para:

  • Revisar operaciones antes de ejecutarlas (dry-run)
  • Entornos de formación donde se quiere ver el comportamiento de las herramientas
  • Depurar parámetros de herramientas sin efectos secundarios

En modo stdio, un único GITLAB_TOKEN con el scope api basta para arrancar — cualquier otra variable es opcional y usa un valor predeterminado seguro. GITLAB_URL usa https://gitlab.com por defecto, así que solo la estableces al conectar a una instancia autogestionada. Para una configuración de solo lectura, usa un token read_api y añade GITLAB_READ_ONLY=true. En modo HTTP no se configura ningún token en el servidor; cada cliente envía el suyo en cada petición.

Usa el modo stdio (el predeterminado) para configuraciones locales de un solo usuario como integraciones con IDE (VS Code, Cursor, Claude Desktop); se configura mediante variables de entorno o un archivo .env. Usa el modo HTTP (--http) para despliegues compartidos o remotos como Docker, Fly.io o Kubernetes, donde la configuración usa flags de CLI y cada cliente se autentica con su propio token de GitLab en cada petición.

¿Cómo apunto a una instancia de GitLab autogestionada?

Sección titulada «¿Cómo apunto a una instancia de GitLab autogestionada?»

Establece GITLAB_URL con la URL base de tu instancia, por ejemplo GITLAB_URL=https://gitlab.example.com (en modo HTTP, usa el flag --gitlab-url). Si la instancia usa un certificado autofirmado o de CA interna, establece también GITLAB_SKIP_TLS_VERIFY=true (o --skip-tls-verify en modo HTTP), pero solo en una red de confianza — desactiva la verificación de certificados para todas las conexiones a GitLab.

¿Cómo elijo una superficie de herramientas (dynamic, meta o individual)?

Sección titulada «¿Cómo elijo una superficie de herramientas (dynamic, meta o individual)?»

Establece la variable TOOL_SURFACE (o el flag --tool-surface en modo HTTP). dynamic es la predeterminada y la de menor consumo de tokens: expone gitlab_find_action y gitlab_execute_action mientras mantiene cada acción de GitLab accesible a través del catálogo canónico de acciones. Elige meta cuando un cliente prefiere despachadores consolidados por dominio con un parámetro action, e individual para registrar una herramienta MCP por cada operación de GitLab.