Ir al contenido

Primeros pasos

Pon en marcha GitLab MCP Server en menos de 5 minutos.

Antes de comenzar, asegúrate de tener:

  1. Una instancia de GitLab — GitLab.com, CE autoalojado o EE
  2. Un Personal Access Token (PAT) con el scope api
  3. Un cliente de IA compatible con MCP — VS Code + Copilot, Claude Desktop, Cursor o Claude Code
  1. Ve a GitLab → Preferences → Access Tokens
  2. Crea un nuevo token con el scope api
  3. Copia el token — lo necesitarás para la configuración

Descarga el último binario para tu plataforma desde la página de GitHub Releases:

PlataformaBinario
Linux (x86_64)gitlab-mcp-server-linux-amd64
Linux (ARM64)gitlab-mcp-server-linux-arm64
macOS (Intel)gitlab-mcp-server-darwin-amd64
macOS (Apple Silicon)gitlab-mcp-server-darwin-arm64
Windows (x86_64)gitlab-mcp-server-windows-amd64.exe
Windows (ARM64)gitlab-mcp-server-windows-arm64.exe
Ventana de terminal
chmod +x gitlab-mcp-server-*

Opcionalmente, muévelo a un directorio en tu PATH:

Ventana de terminal
sudo mv gitlab-mcp-server-linux-amd64 /usr/local/bin/gitlab-mcp-server

La forma más fácil de configurar clientes stdio locales es el asistente de configuración integrado:

Ventana de terminal
gitlab-mcp-server --setup

El asistente:

  • Solicitará tu URL de GitLab y token
  • Cargará cualquier configuración existente para que puedas conservar o cambiar valores previos
  • Configurará clientes MCP soportados
  • Escribirá ~/.gitlab-mcp-server.env sin guardar secretos en archivos JSON de cliente

Instalar como Open Plugin (Cursor / Claude Code)

Sección titulada «Instalar como Open Plugin (Cursor / Claude Code)»

Este repositorio incluye un manifest Open Plugins v1.0.0 (.plugin/plugin.json) y una configuración MCP referenciada (mcp.json) para que el servidor se pueda instalar en un solo paso en cualquier host compatible (Cursor, Claude Code, OpenCode):

Ventana de terminal
# Cursor / Claude Code (cuando lo soporte tu versión)
/plugin install jmrplens/gitlab-mcp-server

El plugin usa la imagen Docker publicada ghcr.io/jmrplens/gitlab-mcp-server:latest mediante docker run -i --rm, por lo que necesitas Docker instalado y en ejecución. El mcp.json incluido está configurado para clientes MCP stdio y pasa --http=false después del nombre de la imagen para sobrescribir el modo HTTP predeterminado de la imagen Docker. Mantén esa opción si copias la configuración Docker en VS Code u otro cliente stdio; de lo contrario, el contenedor iniciará un listener HTTP y el cliente esperará indefinidamente una respuesta stdio a initialize.

El host debe proporcionar estas variables antes de habilitar el plugin:

VariableObligatoriaDescripción
GITLAB_URLNoURL de la instancia GitLab. Por defecto usa https://gitlab.com; establécela para instancias autogestionadas
GITLAB_TOKENPersonal Access Token (glpat-...)
GITLAB_SKIP_TLS_VERIFYNotrue para certificados autofirmados (por defecto false)
META_TOOLSNoSelector booleano heredado: true para meta-herramientas o false para herramientas individuales (por defecto true)
TOOL_SURFACENoSelector explícito del catálogo: meta, individual, dynamic, dynamic-2 o dynamic-3
CAPABILITY_SURFACENoSelector del catálogo de recursos y prompts: full o minimal (por defecto full)
GITLAB_ENTERPRISENotrue para habilitar herramientas Premium/Ultimate (por defecto false)
GITLAB_READ_ONLYNotrue para deshabilitar herramientas de escritura (por defecto false)
GITLAB_SAFE_MODENotrue para previsualizar entradas de herramientas mutantes (por defecto false)
LOG_LEVELNodebug, info, warn, error (por defecto info)

TOOL_SURFACE tiene precedencia sobre META_TOOLS cuando ambos están definidos. Usa TOOL_SURFACE en configuraciones nuevas: meta es el catálogo consolidado por defecto, individual expone cada herramienta por separado, dynamic y dynamic-3 seleccionan la superficie actual de bajo consumo con tres herramientas, y dynamic-2 selecciona la comparación experimental find/execute. META_TOOLS sigue funcionando para configuraciones heredadas (true equivale a meta, false equivale a individual), pero se recomienda tratarlo como obsoleto frente al selector explícito.

¿Prefieres binario nativo en lugar de Docker?

Sección titulada «¿Prefieres binario nativo en lugar de Docker?»

La spec de Open Plugins arranca automáticamente cada entrada de la configuración MCP referenciada, así que la configuración incluida usa Docker stdio por portabilidad. Para despliegues HTTP en segundo plano, no uses una entrada de cliente stdio; ejecuta la imagen Docker en modo HTTP y configura el cliente MCP con type: "http" y una URL como http://localhost:8080/mcp. Consulta Modo servidor HTTP.

Si prefieres el binario nativo, instala el plugin, localiza el directorio del plugin instalado gitlab-mcp-server desde la interfaz de plugins de tu host o la salida de instalación, y después edita su mcp.json local (habitualmente en .agents/plugins/gitlab-mcp-server/) para sustituir el command / args de Docker por la ruta al binario que hayas descargado desde GitHub Releases:

{
"mcpServers": {
"gitlab": {
"command": "/usr/local/bin/gitlab-mcp-server",
"env": {
"GITLAB_TOKEN": "${GITLAB_TOKEN}"
}
}
}
}

GITLAB_URL usa https://gitlab.com por defecto; añádela solo para instancias GitLab autogestionadas.

Si prefieres configurar manualmente, elige tu cliente de IA:

Crea o edita .vscode/mcp.json en la raíz de tu workspace:

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

En lugar de colocar secretos en archivos de configuración del cliente, puedes usar un archivo .env:

.env
GITLAB_TOKEN=glpat-xxxxxxxxxxxxxxxxxxxx

Añade GITLAB_URL=https://gitlab.example.com para GitLab autogestionado.

El servidor carga .env desde el directorio de trabajo actual automáticamente. Consulta Configuración para el orden de carga completo.

Para despliegues en equipo, puedes ejecutar el servidor en modo HTTP donde cada usuario se autentica con su propio token:

Ventana de terminal
./gitlab-mcp-server --http --http-addr=0.0.0.0:8080 --gitlab-url=https://gitlab.com

Cada cliente se conecta vía HTTP y proporciona su propio token de GitLab. Consulta Modo servidor HTTP para más detalles.

Para gestión de tokens sin configuración manual, usa el modo OAuth. Los usuarios autorizan a través del navegador — no se requiere copiar ni distribuir tokens:

Ventana de terminal
./gitlab-mcp-server --http --gitlab-url=https://gitlab.com --auth-mode=oauth

Los clientes MCP que soportan OAuth 2.1 (VS Code, Claude Code) descubren el servidor de autorización automáticamente vía /.well-known/oauth-protected-resource. Consulta docs/oauth-app-setup.md para crear la Aplicación OAuth de GitLab requerida.

Si te conectas a una instancia de GitLab autoalojada (Community Edition o Enterprise Edition), la configuración es la misma — solo asegúrate de que GITLAB_URL apunte a tu instancia interna:

.env
GITLAB_URL=https://gitlab.internal.company.com
GITLAB_TOKEN=glpat-xxxxxxxxxxxxxxxxxxxx

Muchas instancias autoalojadas usan certificados autofirmados o de CA interna. Si ves errores x509: certificate signed by unknown authority, añade:

.env
GITLAB_SKIP_TLS_VERIFY=true
.env
GITLAB_URL=https://gitlab.internal.company.com
GITLAB_TOKEN=glpat-xxxxxxxxxxxxxxxxxxxx

Tanto GitLab CE (gratuito) como EE (Premium/Ultimate) son totalmente compatibles. Para funciones exclusivas de EE como métricas DORA, épicas y gestión de vulnerabilidades, habilita el catálogo Enterprise/Premium con GITLAB_ENTERPRISE=true en modo stdio o --enterprise/autodetección en modo HTTP. Consulta Configuración para todas las opciones disponibles.

Una vez configurado, abre tu cliente de IA y pregunta:

¿Quién soy en GitLab?

El servidor debería devolver tu perfil de usuario de GitLab, confirmando que la conexión funciona. También puedes probar:

Lista mis merge requests asignadas
Muestra los pipelines recientes en my-project

¡Si ves resultados, todo está listo!

Por defecto, el servidor funciona en modo meta-herramientas — en lugar de registrar cientos de herramientas individuales (hasta 1011 en GitLab.com Enterprise/Premium), las consolida en 32 meta-herramientas por dominio (47 en Enterprise/Premium autoalojado, 48 en GitLab.com Enterprise/Premium con Orbit) que cubren el 100% de la funcionalidad.

Por ejemplo, en lugar de herramientas separadas gitlab_list_issues, gitlab_create_issue, gitlab_close_issue, hay una única herramienta gitlab_issue con un parámetro action:

{
"tool": "gitlab_issue",
"arguments": {
"action": "create",
"project": "my-group/my-project",
"title": "Fix login redirect"
}
}

Esto es transparente para ti — tu cliente de IA maneja el enrutamiento automáticamente. Solo pregunta de forma natural: “crea un issue para el bug del login” y el LLM selecciona la meta-herramienta y acción correctas.