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
-
create_or_update_file- Criar ou atualizar um único arquivo em um projeto
- Entradas:
project_id(string): ID do projeto ou caminho codificado em URLfile_path(string): Caminho onde criar/atualizar o arquivocontent(string): Conteúdo do arquivocommit_message(string): Mensagem do commitbranch(string): Branch onde criar/atualizar o arquivoprevious_path(string opcional): Caminho do arquivo para mover/renomear
- Retorna: Conteúdo do arquivo e detalhes do commit
-
push_files- Enviar múltiplos arquivos em um único commit
- Entradas:
project_id(string): ID do projeto ou caminho codificado em URLbranch(string): Branch para enviarfiles(array): Arquivos para enviar, cada um comfile_pathecontentcommit_message(string): Mensagem do commit
- Retorna: Referência do branch atualizada
-
search_repositories- Pesquisar projetos GitLab
- Entradas:
search(string): Consulta de pesquisapage(número opcional): Número da página para paginaçãoper_page(número opcional): Resultados por página (padrão 20)
- Retorna: Resultados da pesquisa de projetos
-
create_repository- Criar um novo projeto GitLab
- Entradas:
name(string): Nome do projetodescription(string opcional): Descrição do projetovisibility(string opcional): 'private', 'internal' ou 'public'initialize_with_readme(booleano opcional): Inicializar com README
- Retorna: Detalhes do projeto criado
-
get_file_contents- Obter conteúdo de um arquivo ou diretório
- Entradas:
project_id(string): ID do projeto ou caminho codificado em URLfile_path(string): Caminho para arquivo/diretórioref(string opcional): Branch/tag/commit para obter conteúdo
- Retorna: Conteúdo do arquivo/diretório
-
create_issue- Criar uma nova issue
- Entradas:
project_id(string): ID do projeto ou caminho codificado em URLtitle(string): Título da issuedescription(string opcional): Descrição da issueassignee_ids(number[] opcional): IDs de usuários para atribuirlabels(string[] opcional): Labels para adicionarmilestone_id(número opcional): ID do milestone
- Retorna: Detalhes da issue criada
-
create_merge_request- Criar um novo merge request
- Entradas:
project_id(string): ID do projeto ou caminho codificado em URLtitle(string): Título do MRdescription(string opcional): Descrição do MRsource_branch(string): Branch contendo as alteraçõestarget_branch(string): Branch para mesclardraft(booleano opcional): Criar como MR rascunhoallow_collaboration(booleano opcional): Permitir commits de membros upstream
- Retorna: Detalhes do merge request criado
-
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 URLmerge_request_id(string): ID do merge request
- Retorna: A diferença do merge request em formato bruto
-
fork_repository- Bifurcar um projeto
- Entradas:
project_id(string): ID do projeto ou caminho codificado em URLnamespace(string opcional): Namespace para bifurcar
- Retorna: Detalhes do projeto bifurcado
-
create_branch
- Criar um novo branch
- Entradas:
project_id(string): ID do projeto ou caminho codificado em URLbranch(string): Nome para o novo branchref(string opcional): Branch/commit de origem para o novo branch
- Retorna: Referência do branch criado
get_job_logs
- Recuperar os logs de um job
- Entradas:
project_id(string): ID do projeto ou caminho codificado em URLjob_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:
apipara acesso completo à APIread_apipara acesso somente leituraread_repositoryewrite_repositorypara 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 parahttps://gitlab.com/api/v4)