GitLab
Gestiona proyectos, archivos y repositorios de GitLab utilizando la API de GitLab.
GitHubPrueba este MCPPatrocinado
Documentación
🦊 Servidor MCP de GitLab
🚀 Servidor MCP para la API de GitLab, que permite gestión de proyectos, operaciones con archivos y más.
✨ Características
- 🌿 Creación Automática de Ramas: Al crear/actualizar archivos o enviar cambios, las ramas se crean automáticamente si no existen
- 🛡️ Manejo Integral de Errores: Mensajes de error claros para problemas comunes
- 📚 Preservación del Historial de Git: Las operaciones mantienen un historial de Git adecuado sin forzar envíos
- 📦 Operaciones por Lotes: Soporte para operaciones de archivo único y múltiples archivos
🔧 Herramientas
-
create_or_update_file- Crear o actualizar un archivo único en un proyecto
- Entradas:
project_id(cadena): ID del proyecto o ruta codificada en URLfile_path(cadena): Ruta donde crear/actualizar el archivocontent(cadena): Contenido del archivocommit_message(cadena): Mensaje de confirmaciónbranch(cadena): Rama donde crear/actualizar el archivoprevious_path(cadena opcional): Ruta del archivo a mover/renombrar
- Devuelve: Contenido del archivo y detalles de la confirmación
-
push_files- Enviar múltiples archivos en una sola confirmación
- Entradas:
project_id(cadena): ID del proyecto o ruta codificada en URLbranch(cadena): Rama a la que enviarfiles(matriz): Archivos a enviar, cada uno confile_pathycontentcommit_message(cadena): Mensaje de confirmación
- Devuelve: Referencia de la rama actualizada
-
search_repositories- Buscar proyectos de GitLab
- Entradas:
search(cadena): Consulta de búsquedapage(número opcional): Número de página para paginaciónper_page(número opcional): Resultados por página (predeterminado 20)
- Devuelve: Resultados de búsqueda de proyectos
-
create_repository- Crear un nuevo proyecto de GitLab
- Entradas:
name(cadena): Nombre del proyectodescription(cadena opcional): Descripción del proyectovisibility(cadena opcional): 'private', 'internal' o 'public'initialize_with_readme(booleano opcional): Inicializar con README
- Devuelve: Detalles del proyecto creado
-
get_file_contents- Obtener el contenido de un archivo o directorio
- Entradas:
project_id(cadena): ID del proyecto o ruta codificada en URLfile_path(cadena): Ruta al archivo/directorioref(cadena opcional): Rama/etiqueta/confirmación de la que obtener el contenido
- Devuelve: Contenido del archivo/directorio
-
create_issue- Crear un nuevo issue
- Entradas:
project_id(cadena): ID del proyecto o ruta codificada en URLtitle(cadena): Título del issuedescription(cadena opcional): Descripción del issueassignee_ids(número[] opcional): IDs de usuarios a asignarlabels(cadena[] opcional): Etiquetas a añadirmilestone_id(número opcional): ID del hito
- Devuelve: Detalles del issue creado
-
create_merge_request- Crear una nueva solicitud de fusión
- Entradas:
project_id(cadena): ID del proyecto o ruta codificada en URLtitle(cadena): Título de la solicitud de fusióndescription(cadena opcional): Descripción de la solicitud de fusiónsource_branch(cadena): Rama que contiene los cambiostarget_branch(cadena): Rama en la que fusionardraft(booleano opcional): Crear como solicitud de fusión en borradorallow_collaboration(booleano opcional): Permitir confirmaciones de miembros ascendentes
- Devuelve: Detalles de la solicitud de fusión creada
-
get_merge_request_raw_diff- Obtener la información de la diferencia de una solicitud de fusión en formato bruto
- Entradas:
project_id(cadena): ID del proyecto o ruta codificada en URLmerge_request_id(cadena): ID de la solicitud de fusión
- Devuelve: La diferencia de la solicitud de fusión en formato bruto
-
fork_repository- Bifurcar un proyecto
- Entradas:
project_id(cadena): ID del proyecto o ruta codificada en URLnamespace(cadena opcional): Espacio de nombres al que bifurcar
- Devuelve: Detalles del proyecto bifurcado
-
create_branch
- Crear una nueva rama
- Entradas:
project_id(cadena): ID del proyecto o ruta codificada en URLbranch(cadena): Nombre de la nueva ramaref(cadena opcional): Rama/confirmación de origen para la nueva rama
- Devuelve: Referencia de la rama creada
get_job_logs
- Recuperar los registros de un trabajo
- Entradas:
project_id(cadena): ID del proyecto o ruta codificada en URLjob_id(cadena): ID del trabajo
- Devuelve: Los registros del trabajo
⚙️ Configuración
🔑 Token de Acceso Personal
Cree un Token de Acceso Personal de GitLab con los permisos adecuados:
- Vaya a Configuración de Usuario > Tokens de Acceso en GitLab
- Seleccione los ámbitos requeridos:
apipara acceso completo a la APIread_apipara acceso de solo lecturaread_repositoryywrite_repositorypara operaciones de repositorio
- Cree el token y guárdelo de forma segura
💻 Uso con Claude Desktop
Añada lo siguiente a su claude_desktop_config.json:
🐳 Docker
{
"mcpServers": {
"gitlab": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"GITLAB_PERSONAL_ACCESS_TOKEN",
"-e",
"GITLAB_API_URL",
"mcp/gitlab"
],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>",
"GITLAB_API_URL": "https://gitlab.com/api/v4" // Optional, for self-hosted instances
}
}
}
}
📦 NPX
{
"mcpServers": {
"gitlab": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-gitlab"],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>",
"GITLAB_API_URL": "https://gitlab.com/api/v4" // Optional, for self-hosted instances
}
}
}
}
🏗️ Compilación
Compilación de Docker:
docker build -t vonwig/gitlab:mcp -f src/gitlab/Dockerfile .
🌍 Variables de Entorno
GITLAB_PERSONAL_ACCESS_TOKEN: Su token de acceso personal de GitLab (obligatorio)GITLAB_API_URL: URL base para la API de GitLab (opcional, predeterminado ahttps://gitlab.com/api/v4)