GitLab

Gerencie projetos, arquivos e repositórios do GitLab usando a API do GitLab.

Documentação

🦊 Servidor MCP do GitLab

🚀 Servidor MCP para a API do GitLab, permitindo gerenciamento de projetos, operações de arquivos e muito mais.

✨ Recursos

  • 🌿 Criação Automática de Branch: Ao criar/atualizar arquivos ou enviar alterações, branches são criados automaticamente se não existirem
  • 🛡️ Tratamento Abrangente de Erros: Mensagens de erro claras para problemas comuns
  • 📚 Preservação do Histórico Git: Operações mantêm o histórico Git adequado sem push forçado
  • 📦 Operações em Lote: Suporte para operações de arquivo único e múltiplos arquivos

🔧 Ferramentas

  1. create_or_update_file

    • Criar ou atualizar um único arquivo em um projeto
    • Entradas:
      • project_id (string): ID do projeto ou caminho codificado em URL
      • file_path (string): Caminho onde criar/atualizar o arquivo
      • content (string): Conteúdo do arquivo
      • commit_message (string): Mensagem do commit
      • branch (string): Branch onde criar/atualizar o arquivo
      • previous_path (string opcional): Caminho do arquivo para mover/renomear
    • Retorna: Conteúdo do arquivo e detalhes do commit
  2. push_files

    • Enviar múltiplos arquivos em um único commit
    • Entradas:
      • project_id (string): ID do projeto ou caminho codificado em URL
      • branch (string): Branch para enviar
      • files (array): Arquivos para enviar, cada um com file_path e content
      • commit_message (string): Mensagem do commit
    • Retorna: Referência do branch atualizada
  3. search_repositories

    • Pesquisar projetos GitLab
    • Entradas:
      • search (string): Consulta de pesquisa
      • page (número opcional): Número da página para paginação
      • per_page (número opcional): Resultados por página (padrão 20)
    • Retorna: Resultados da pesquisa de projetos
  4. create_repository

    • Criar um novo projeto GitLab
    • Entradas:
      • name (string): Nome do projeto
      • description (string opcional): Descrição do projeto
      • visibility (string opcional): 'private', 'internal' ou 'public'
      • initialize_with_readme (booleano opcional): Inicializar com README
    • Retorna: Detalhes do projeto criado
  5. get_file_contents

    • Obter conteúdo de um arquivo ou diretório
    • Entradas:
      • project_id (string): ID do projeto ou caminho codificado em URL
      • file_path (string): Caminho para arquivo/diretório
      • ref (string opcional): Branch/tag/commit para obter conteúdo
    • Retorna: Conteúdo do arquivo/diretório
  6. create_issue

    • Criar uma nova issue
    • Entradas:
      • project_id (string): ID do projeto ou caminho codificado em URL
      • title (string): Título da issue
      • description (string opcional): Descrição da issue
      • assignee_ids (number[] opcional): IDs de usuários para atribuir
      • labels (string[] opcional): Labels para adicionar
      • milestone_id (número opcional): ID do milestone
    • Retorna: Detalhes da issue criada
  7. create_merge_request

    • Criar um novo merge request
    • Entradas:
      • project_id (string): ID do projeto ou caminho codificado em URL
      • title (string): Título do MR
      • description (string opcional): Descrição do MR
      • source_branch (string): Branch contendo as alterações
      • target_branch (string): Branch para mesclar
      • draft (booleano opcional): Criar como MR rascunho
      • allow_collaboration (booleano opcional): Permitir commits de membros upstream
    • Retorna: Detalhes do merge request criado
  8. get_merge_request_raw_diff

    • Obter informações de um merge request da diferença em formato bruto
    • Entradas:
      • project_id (string): ID do projeto ou caminho codificado em URL
      • merge_request_id (string): ID do merge request
    • Retorna: A diferença do merge request em formato bruto
  9. fork_repository

    • Bifurcar um projeto
    • Entradas:
      • project_id (string): ID do projeto ou caminho codificado em URL
      • namespace (string opcional): Namespace para bifurcar
    • Retorna: Detalhes do projeto bifurcado
  10. create_branch

  • Criar um novo branch
  • Entradas:
    • project_id (string): ID do projeto ou caminho codificado em URL
    • branch (string): Nome para o novo branch
    • ref (string opcional): Branch/commit de origem para o novo branch
  • Retorna: Referência do branch criado
  1. get_job_logs
  • Recuperar os logs de um job
  • Entradas:
    • project_id (string): ID do projeto ou caminho codificado em URL
    • job_id (string): ID do job
  • Retorna: Os logs do job

⚙️ Configuração

🔑 Token de Acesso Pessoal

Crie um Token de Acesso Pessoal do GitLab com as permissões apropriadas:

  • Vá para Configurações do Usuário > Tokens de Acesso no GitLab
  • Selecione os escopos necessários:
    • api para acesso completo à API
    • read_api para acesso somente leitura
    • read_repository e write_repository para operações de repositório
  • Crie o token e salve-o com segurança

💻 Uso com Claude Desktop

Adicione o seguinte ao seu 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
      }
    }
  }
}

🏗️ Build

Build Docker:

docker build -t vonwig/gitlab:mcp -f src/gitlab/Dockerfile .

🌍 Variáveis de Ambiente

  • GITLAB_PERSONAL_ACCESS_TOKEN: Seu token de acesso pessoal do GitLab (obrigatório)
  • GITLAB_API_URL: URL base para a API do GitLab (opcional, padrão para https://gitlab.com/api/v4)