GitLab

Gestiona proyectos, archivos y repositorios de GitLab utilizando la API de GitLab.

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

  1. create_or_update_file

    • Crear o actualizar un archivo único en un proyecto
    • Entradas:
      • project_id (cadena): ID del proyecto o ruta codificada en URL
      • file_path (cadena): Ruta donde crear/actualizar el archivo
      • content (cadena): Contenido del archivo
      • commit_message (cadena): Mensaje de confirmación
      • branch (cadena): Rama donde crear/actualizar el archivo
      • previous_path (cadena opcional): Ruta del archivo a mover/renombrar
    • Devuelve: Contenido del archivo y detalles de la confirmación
  2. push_files

    • Enviar múltiples archivos en una sola confirmación
    • Entradas:
      • project_id (cadena): ID del proyecto o ruta codificada en URL
      • branch (cadena): Rama a la que enviar
      • files (matriz): Archivos a enviar, cada uno con file_path y content
      • commit_message (cadena): Mensaje de confirmación
    • Devuelve: Referencia de la rama actualizada
  3. search_repositories

    • Buscar proyectos de GitLab
    • Entradas:
      • search (cadena): Consulta de búsqueda
      • page (número opcional): Número de página para paginación
      • per_page (número opcional): Resultados por página (predeterminado 20)
    • Devuelve: Resultados de búsqueda de proyectos
  4. create_repository

    • Crear un nuevo proyecto de GitLab
    • Entradas:
      • name (cadena): Nombre del proyecto
      • description (cadena opcional): Descripción del proyecto
      • visibility (cadena opcional): 'private', 'internal' o 'public'
      • initialize_with_readme (booleano opcional): Inicializar con README
    • Devuelve: Detalles del proyecto creado
  5. get_file_contents

    • Obtener el contenido de un archivo o directorio
    • Entradas:
      • project_id (cadena): ID del proyecto o ruta codificada en URL
      • file_path (cadena): Ruta al archivo/directorio
      • ref (cadena opcional): Rama/etiqueta/confirmación de la que obtener el contenido
    • Devuelve: Contenido del archivo/directorio
  6. create_issue

    • Crear un nuevo issue
    • Entradas:
      • project_id (cadena): ID del proyecto o ruta codificada en URL
      • title (cadena): Título del issue
      • description (cadena opcional): Descripción del issue
      • assignee_ids (número[] opcional): IDs de usuarios a asignar
      • labels (cadena[] opcional): Etiquetas a añadir
      • milestone_id (número opcional): ID del hito
    • Devuelve: Detalles del issue creado
  7. create_merge_request

    • Crear una nueva solicitud de fusión
    • Entradas:
      • project_id (cadena): ID del proyecto o ruta codificada en URL
      • title (cadena): Título de la solicitud de fusión
      • description (cadena opcional): Descripción de la solicitud de fusión
      • source_branch (cadena): Rama que contiene los cambios
      • target_branch (cadena): Rama en la que fusionar
      • draft (booleano opcional): Crear como solicitud de fusión en borrador
      • allow_collaboration (booleano opcional): Permitir confirmaciones de miembros ascendentes
    • Devuelve: Detalles de la solicitud de fusión creada
  8. 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 URL
      • merge_request_id (cadena): ID de la solicitud de fusión
    • Devuelve: La diferencia de la solicitud de fusión en formato bruto
  9. fork_repository

    • Bifurcar un proyecto
    • Entradas:
      • project_id (cadena): ID del proyecto o ruta codificada en URL
      • namespace (cadena opcional): Espacio de nombres al que bifurcar
    • Devuelve: Detalles del proyecto bifurcado
  10. create_branch

  • Crear una nueva rama
  • Entradas:
    • project_id (cadena): ID del proyecto o ruta codificada en URL
    • branch (cadena): Nombre de la nueva rama
    • ref (cadena opcional): Rama/confirmación de origen para la nueva rama
  • Devuelve: Referencia de la rama creada
  1. get_job_logs
  • Recuperar los registros de un trabajo
  • Entradas:
    • project_id (cadena): ID del proyecto o ruta codificada en URL
    • job_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:
    • api para acceso completo a la API
    • read_api para acceso de solo lectura
    • read_repository y write_repository para 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 a https://gitlab.com/api/v4)