Salta l'installazione. Attivo in meno di 2 minuti.
Avvia una prova gratuita su cloud.anythingmcp.com, aggiungi GitLab con un clic, poi punta il tuo client AI (Claude, ChatGPT, Copilot o Cursor) all'endpoint MCP generato. Niente Docker, niente git clone, nessuna esperienza di sviluppo richiesta.
In breve
Fai lavorare la tua AI in GitLab: trova progetti, smista e aggiorna le issue, rivedi le merge request con diff e commenti, controlla le pipeline e leggi i log dei job falliti, e leggi branch, commit e file. GitLab.com o la tua istanza GitLab, con un personal access token.
Prova a chiedere
Prompt di esempio per GitLab
Clicca su un prompt per copiarlo. Incollalo in Claude, ChatGPT, Cursor, Gemini, Copilot o OpenClaw per eseguirlo contro questo connettore.
Claude è un'AI e può sbagliare. Verifica sempre le risposte.
💡 Niente installazione? Vai direttamente su cloud.anythingmcp.com. Accedi, clicca Connectors → GitLab, inserisci le credenziali, genera una MCP API key e hai finito. Niente Docker, niente
git clone, niente server locale.
GitLab + Cursor
Fai lavorare la tua AI in GitLab: trova progetti, smista e aggiorna le issue, rivedi le merge request con diff e commenti, controlla le pipeline e leggi i log dei job falliti, e leggi branch, commit e file. GitLab.com o la tua istanza GitLab, con un personal access token.
Prerequisiti
Le istruzioni di setup complete sono incluse nel connettore stesso (visibili nello store quando lo selezioni). Le variabili d'ambiente richieste sono:
GITLAB_URL, GITLAB_TOKEN
Step 1 — Ottieni le credenziali
- In GitLab clicca sul tuo avatar → Edit profile → Access → Personal access tokens → Generate token. Su GitLab.com la pagina è gitlab.com/-/user_settings/personal_access_tokens.
- Dai un nome al token (per esempio "AnythingMCP"), imposta una data di scadenza (al massimo 365 giorni su GitLab.com) e seleziona lo scope
api. Per una configurazione in sola lettura seleziona inveceread_api. - Copia subito il token: GitLab lo mostra una sola volta. Inizia con
glpat-. - Inserisci il token in
GITLAB_TOKEN, senza la parola Bearer. ImpostaGITLAB_URLsuhttps://gitlab.comper GitLab.com, oppure sull'indirizzo della tua istanza self-managed o Dedicated così come lo apri nel browser (per esempiohttps://gitlab.example.com), senza/api/v4e senza barra finale. Poi installa il connettore. - Comincia con
gitlab_get_current_user: mostra a quale utente GitLab appartiene il token e conferma che l'indirizzo è giusto. Poi indica all'AI un progetto con il suo percorso, per esempiomy-group/my-project, oppure lascia che lo trovi congitlab_list_projects.
Scadenza e accesso del token: su GitLab.com un token dura al massimo 365 giorni. Quando il tuo scade, generane uno nuovo con lo stesso scope e inseriscilo di nuovo in GITLAB_TOKEN. Il connettore agisce come l'utente del token: l'AI vede e modifica esattamente ciò che può quell'utente. Un personal access token fine-grained (GitLab 19.2 e successivi) funziona allo stesso modo: dagli permessi di lettura e scrittura su issue, merge request, repository, pipeline e job dei progetti interessati. Alcuni gruppi su GitLab.com impongono i token fine-grained: un token classico fallisce allora sui loro progetti con "Access denied: This operation requires a fine-grained personal access token". Funzionano anche i project e group access token, ma su GitLab.com richiedono Premium o Ultimate.
Configurazione in sola lettura: usa un token con read_api e disattiva gitlab_create_issue, gitlab_update_issue, gitlab_add_issue_note, gitlab_create_merge_request, gitlab_update_merge_request, gitlab_add_merge_request_note e gitlab_create_branch.
Disattivati all'installazione: gitlab_delete_issue, che elimina una issue per sempre (possono farlo solo i proprietari del progetto e gli amministratori, e di solito quello che vuoi è chiuderla con gitlab_update_issue), e gitlab_delete_branch. Attivali solo se l'AI deve eliminare issue o branch.
Progetti, issue e merge request: gli strumenti accettano un progetto tramite l'id numerico o il percorso completo, per esempio my-group/my-project. Issue e merge request si indicano con il numero che mostra GitLab (#42, !17), non con il loro id globale. gitlab_list_project_members fornisce gli id utente per assegnatari e reviewer. gitlab_list_my_issues e gitlab_list_my_merge_requests funzionano su tutti i progetti e di default mostrano gli elementi dell'utente del token, incluse le merge request in attesa della sua review.
Review, pipeline e codice: per rivedere una merge request l'AI legge gitlab_get_merge_request (stato di merge e conflitti), poi gitlab_get_merge_request_diffs pagina per pagina, gitlab_list_merge_request_commits e gitlab_list_merge_request_notes. Un file con un diff troppo grande torna senza testo; l'AI lo legge allora con gitlab_get_file_content sul branch di origine. Per una pipeline fallita passa da gitlab_list_pipelines a gitlab_list_pipeline_jobs (solo i job falliti) a gitlab_get_job_log. File e log dei job vengono tagliati a 200 KB, mantenendo l'inizio: apri un log più lungo in GitLab. gitlab_search_project cerca nel codice di un singolo progetto su ogni piano; la ricerca nel codice su tutta l'istanza con gitlab_search richiede l'advanced search, una funzione Premium.
Conferma prima di scrivere: issue, commenti, merge request e branch vengono creati a nome dell'utente del token. L'AI ti mostra prima titolo, testo o branch e attende la tua conferma. GitLab esegue le quick action presenti in un commento, come /label, /assign, /close, /approve o /merge, quindi l'AI le inserisce solo se lo chiedi tu. Per creare un branch serve l'accesso Developer.
Limiti di frequenza: GitLab.com consente circa 2.000 richieste API al minuto per utente, 200 nuove issue e 60 nuovi commenti al minuto e 100 ricerche al minuto. Su un'istanza self-managed i limiti li stabilisce l'amministratore. Oltre un limite GitLab risponde 429: attendi e riprova.
Errori comuni: 401 significa che il token è sbagliato, scaduto o revocato, oppure che GITLAB_URL punta a un'istanza diversa da quella che lo ha emesso. 403 significa che manca uno scope (per esempio un token read_api usato per una scrittura) o che il ruolo non basta per l'azione. 404 significa che il progetto, la issue o il file non esiste o che l'utente non può vederlo: GitLab nasconde le risorse private dietro un 404. 400 indica il campo mancante o non valido. 409 su una nuova merge request significa che ce n'è già una aperta per quei branch. Un progetto rinominato risponde ancora alle letture con il vecchio percorso, ma lì le scritture falliscono con 405: usa il nuovo percorso o l'id numerico.
Il connettore non ha strumenti per fare il merge o approvare le merge request, fare push di commit, modificare file o avviare, ripetere o annullare pipeline, e non gestisce variabili CI/CD, release, wiki, pacchetti, il container registry né l'amministrazione.
Step 2 — Installa l'adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Step 3 — Aggiungi il connettore in Cursor
L'URL del tuo server: in AnythingMCP apri MCP Servers → il server su cui si trova questo connettore e copia il suo URL (
https://cloud.anythingmcp.com/mcp/…). Usalo ovunque questa guida mostraYOUR_SERVER_ID.
Cursor legge i server MCP da ~/.cursor/mcp.json. Aggiungi questa voce:
{
"mcpServers": {
"anythingmcp": {
"url": "https://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID",
"headers": { "X-API-Key": "YOUR_MCP_API_KEY" }
}
}
}
- Crea una chiave API MCP in AnythingMCP da MCP Servers → il tuo server → API keys e incollala al posto di
YOUR_MCP_API_KEY. - Salva il file e riavvia Cursor.
- Apri Cursor → Settings → MCP e verifica che
anythingmcpsia elencato e connesso. - Inizia a chattare: l'agente ora può usare i tool di
GitLab.
Tool disponibili
| Tool | What it does |
|---|---|
gitlab_get_current_user | Get the GitLab user the token belongs to: id, username, name, state, web_url and, for admins, is_admin |
gitlab_list_projects | List projects the token can see, newest activity first by default: id, path_with_namespace, default_branch, web_url, visibility and… |
gitlab_get_project | Get one project by id or path: default_branch, visibility, description, web_url, open_issues_count, permissions of the token's user, and… |
gitlab_list_project_members | List the members of a project, including those inherited from its groups: user id, username, name and access_level (10 Guest, 15 Planner… |
gitlab_list_labels | List a project's labels (including group labels): name, color, description and open issue and merge request counts |
gitlab_list_issues | List a project's issues with filters: iid, title, state, labels, assignees, author, milestone, due_date, web_url |
gitlab_list_my_issues | List issues across all projects: by default the ones assigned to the token's user, or the ones they created, or every issue they can see |
gitlab_get_issue | Get one issue by its iid: title, description (Markdown), state, labels, assignees, author, milestone, due_date, time stats, related merge… |
gitlab_create_issue | Create an issue in a project |
gitlab_update_issue | Change an issue: title, description, labels (replace, add or remove), assignees, milestone, due date, or close or reopen it with state_event |
gitlab_delete_issue | Delete an issue for good |
gitlab_list_issue_notes | List the comments on an issue, newest first by default, including system notes (label and status changes, flagged system: true): id, body… |
gitlab_add_issue_note | Post a comment on an issue, as the token's user |
gitlab_list_merge_requests | List a project's merge requests with filters: iid, title, state, draft, source and target branch, author, reviewers, labels, merge_status… |
gitlab_list_my_merge_requests | List merge requests across all projects: by default the ones created by the token's user, or assigned to them, or waiting for their review… |
gitlab_get_merge_request | Get one merge request by iid: title, description, state, draft, source and target branch, sha, detailed_merge_status (mergeable, conflict… |
gitlab_get_merge_request_diffs | Get the changed files of a merge request, page by page: old_path, new_path, new_file, renamed_file, deleted_file and the diff text of each |
gitlab_list_merge_request_commits | List the commits of a merge request: id (SHA), short_id, title, message, author_name and created_at |
gitlab_list_merge_request_notes | List the comments on a merge request, including review comments on lines (with a position) and system notes: id, body, author, created_at… |
gitlab_add_merge_request_note | Post a general comment on a merge request, as the token's user |
gitlab_create_merge_request | Open a merge request from a source branch into a target branch |
gitlab_update_merge_request | Change a merge request: title (add or remove the Draft: prefix), description, target branch, labels, assignees, reviewers, or close or… |
gitlab_list_pipelines | List a project's CI/CD pipelines, newest first: id, iid, status, ref, sha, source, created_at, updated_at and web_url |
gitlab_get_pipeline | Get one pipeline: status, ref, sha, source, duration, queued_duration, coverage, user, started_at, finished_at and web_url |
gitlab_list_pipeline_jobs | List the jobs of a pipeline: id, name, stage, status, failure_reason, duration, runner, allow_failure and web_url |
gitlab_get_job | Get one CI/CD job: name, stage, status, failure_reason, duration, started_at, finished_at, the commit, the pipeline, artifacts and web_url |
gitlab_get_job_log | Read the log (trace) of a CI/CD job as plain text, with ANSI color codes |
gitlab_list_branches | List a project's branches: name, merged, protected, default, the last commit (id, title, author, date) and web_url |
gitlab_get_branch | Get one branch: its last commit, whether it is merged, protected or the default, and whether the user can push to it |
gitlab_create_branch | Create a branch from a branch, tag or commit |
gitlab_delete_branch | Delete a branch |
gitlab_list_commits | List commits of a branch, tag or the default branch, newest first: id (SHA), short_id, title, author_name, authored_date and web_url |
gitlab_get_commit | Get one commit by SHA, branch or tag name: message, author, committer, parent_ids, stats (additions, deletions), the last pipeline and… |
gitlab_get_commit_diff | Get the changes of one commit, page by page: old_path, new_path, new_file, renamed_file, deleted_file and the diff text per file |
gitlab_list_repository_tree | List files and folders in a repository folder: id (blob or tree SHA), name, type (blob = file, tree = folder), path and mode.… |
gitlab_get_file_info | Get a file's metadata without its content: file_name, file_path, size, encoding, content_sha256, blob_id, commit_id and last_commit_id on… |
gitlab_get_file_content | Read a file from the repository as text, at a branch, tag or commit (the default branch by default) |
gitlab_search | Search the whole instance (only what the token's user can see): projects, groups, issues, work_items, merge_requests, milestones, users or… |
gitlab_search_project | Search inside one project: code (blobs, with file name, path, line number and the matching lines), commits, issues, merge_requests… |
Esempi di prompt
- "Quali merge request aspettano la mia review in tutti i progetti, e quali hanno conflitti o una pipeline fallita?"
- "Perché è fallita l'ultima pipeline su main in my-group/web-app? Mostrami il job fallito e l'errore nel suo log."
- "Riassumi la merge request !128 in my-group/web-app: cosa è cambiato, in quali file e quali commenti di review sono ancora aperti."
- "Crea una issue in my-group/web-app con il titolo Pulsante di checkout disallineato su mobile, con la label bug, e assegnala a Lena."
FAQ
Cursor supporta server MCP personalizzati nel piano gratuito? Sì, MCP è disponibile nei piani Hobby, Pro e Business.
Prossimi passi
Questa guida ti è stata utile?