@wanadev/mcp-gitlab
MCP server for GitLab epics, issues, and milestones management
Versions
1.8.0latest1.7.01.6.01.5.01.4.0+ show 12 moreshow less
1.3.31.3.21.3.11.3.01.2.01.1.01.0.51.0.41.0.31.0.21.0.11.0.0Tools 101
gitlab_setup GitLab MCP is not configured yet. Call this tool to show the user how to set up their GitLab token.
list_issues Lister les issues d'un groupe GitLab. Filtrer par etat, recherche, labels, milestone ou assignee.
get_issue Obtenir les details d'une issue par son projet et son numero (IID).
create_issue Creer une nouvelle issue dans un projet. Par defaut dry_run=true : retourne un apercu sans creer. Passer dry_run=false apres confirmation.
create_branch Create a new branch from a ref. dry_run=true by default.
update_issue Mettre a jour une issue existante. Par defaut dry_run=true : retourne un apercu sans modifier. Passer dry_run=false apres confirmation.
close_issue Fermer une issue. Par defaut dry_run=true : retourne un apercu sans fermer. Passer dry_run=false apres confirmation.
reopen_issue Reopen a closed issue. dry_run=true by default.
list_project_issues List issues for a specific project (not group). Filter by state, labels, milestone, assignee, iteration.
list_issue_notes Lister les commentaires d'une issue.
add_issue_note Ajouter un commentaire sur une issue. Par defaut dry_run=true.
update_issue_note Edit the body of an existing issue note. Get note_id from list_issue_notes. dry_run=true by default.
delete_issue_note Delete an existing issue note. This is destructive and cannot be undone. dry_run=true by default.
list_milestones Lister les milestones d'un groupe GitLab. Filtrer par etat ou recherche textuelle.
get_milestone Obtenir les details d'un milestone par son ID.
create_milestone Creer un nouveau milestone. Par defaut dry_run=true : retourne un apercu sans creer. Passer dry_run=false apres confirmation.
update_milestone Mettre a jour un milestone existant. Par defaut dry_run=true.
close_milestone Fermer un milestone. Par defaut dry_run=true.
list_project_milestones List milestones at the project level. On GitLab CE/Free, milestones are project-scoped and this is the only way to list them.
get_project_milestone Get details of a project-level milestone.
create_project_milestone Create a milestone on a project. dry_run=true by default.
update_project_milestone Update a project-level milestone. dry_run=true by default.
close_project_milestone Close a project-level milestone. dry_run=true by default.
list_pipelines List recent pipelines for a project. Filter by branch (ref) or status (running, pending, success, failed, canceled).
get_pipeline Get details of a specific pipeline (status, duration, jobs).
get_job_log Get the log output of a CI job (last 2000 chars).
retry_pipeline Retry a failed pipeline. dry_run=true by default.
cancel_pipeline Cancel a running pipeline. dry_run=true by default.
list_branches List branches of a project. Filter by search term.
list_repository_tree List files and directories in a project repository.
get_file Get the content of a file from the repository.
list_protected_branches List protected branches for a project, with their push/merge/unprotect access levels.
protect_branch Protect a branch with given push/merge/unprotect access levels. Access levels: 0=NoAccess, 30=Developer, 40=Maintainer, 60=Admin. dry_run=true by default.
unprotect_branch Remove branch protection rules from a branch. dry_run=true by default.
create_file Create a new file in a repository. Rejects if the file already exists. dry_run=true by default.
update_file Update an existing file in a repository. Supports optimistic concurrency via last_commit_id. dry_run=true by default.
delete_file Delete a file from a repository. dry_run=true by default. This is destructive on the branch.
commit_files Atomically commit multiple file actions (create/update/delete/move/chmod) in a single commit. dry_run=true by default.
list_commits List recent commits for a project. Filter by branch or file path.
list_groups Lister les groupes GitLab accessibles. IMPORTANT : appelez ce tool en premier quand l'utilisateur mentionne un groupe par son nom, pour obtenir le group_id (ID ou full_path) a passer aux autres tools.
list_projects Lister les projets d'un groupe GitLab. Filtrer par recherche ou statut d'archivage.
list_group_members Lister les membres d'un groupe GitLab avec leur niveau d'acces.
list_labels Lister les labels d'un groupe GitLab avec le nombre d'issues et MRs associees.
list_boards Lister les boards (tableaux kanban) d'un groupe GitLab avec leurs colonnes.
list_iterations List iterations (sprints) for a GitLab group. Filter by state (upcoming, current, closed) or search by title. Requires GitLab Premium/Ultimate.
create_iteration Create a new iteration (sprint) in a group. start_date and due_date are required (YYYY-MM-DD). dry_run=true by default.
update_iteration Update an existing iteration (sprint). The REST path uses iteration_iid (per-group), not the global id. dry_run=true by default.
get_work_item_type_id Discover the global ID of a Work Item type (e.g. EPIC, ISSUE, TASK) for a given namespace. Required as workItemTypeId on workItemCreate. IDs vary per GitLab instance and version, so call this once per (namespace, type) and cache the result.
list_workitem_statuses List allowed Status widget values for a Work Item type in a group (GitLab 17+). Returns global IDs to pass as status_id to update_issue / update_epic.
create_label Create a label in a group. dry_run=true by default.
update_label Update a label in a group. dry_run=true by default.
delete_label Delete a label from a group. dry_run=true by default. This is destructive and cannot be undone.
add_group_member Add a user to a group with a given access level. dry_run=true by default.
add_project_member Add a user to a project with a given access level. dry_run=true by default.
update_member_access_level Change a member's access level on a group or project. dry_run=true by default.
remove_member Remove a user from a group or project. dry_run=true by default. This is destructive.
search_issues Search issues by full-text query within a project or group. Maps to GET /:scope/:id/search?scope=issues.
search_merge_requests Search merge requests by full-text query within a project or group. Maps to GET /:scope/:id/search?scope=merge_requests.
search_blobs Search code/file contents by full-text query within a project or group. Returns matching blobs with line context. Maps to GET /:scope/:id/search?scope=blobs.
upload_file Upload a file to a project so it can be embedded in an issue, MR, or epic description. Returns the Markdown snippet GitLab expects (e.g. ). Provide exactly one of file_path (read from local disk) or file_base64 (inline data). dry_run=true by default.
search_users Search for GitLab users globally by name or username.
get_current_user Obtenir les informations de l'utilisateur connecte (verifie que le token fonctionne).
list_merge_requests Lister les merge requests d'un groupe GitLab. Filtrer par etat, auteur, reviewer, labels ou milestone.
get_merge_request Obtenir les details d'une merge request par son projet et son numero (IID).
create_merge_request Create a new merge request. dry_run=true by default.
update_merge_request Update a merge request (title, description, labels, assignees, reviewers). dry_run=true by default.
merge_merge_request Merge a merge request. dry_run=true by default.
approve_merge_request Approve a merge request. dry_run=true by default.
rebase_merge_request Trigger an asynchronous rebase of the MR's source branch on top of the target branch. Useful when CI requires a linear history before merge. dry_run=true by default.
list_mr_notes List comments on a merge request.
add_mr_note Add a comment to a merge request. dry_run=true by default.
update_mr_note Edit the body of an existing MR note. Get note_id from list_mr_notes. dry_run=true by default.
delete_mr_note Delete an existing MR note. This is destructive and cannot be undone. dry_run=true by default.
get_mr_diff Get the file changes (diff summary) of a merge request. Returns diff_refs (base_sha/head_sha/start_sha) needed to create line-positioned discussions via create_mr_discussion.
list_mr_approval_rules List the project-level MR approval rules: who must approve, how many approvals are required, applies-to-which-branches.
create_mr_approval_rule Create a project-level MR approval rule. dry_run=true by default.
update_mr_approval_rule Update an existing project-level MR approval rule. dry_run=true by default.
delete_mr_approval_rule Delete a project-level MR approval rule. dry_run=true by default. This is destructive.
create_mr_discussion Create a code-review comment on a specific line in an MR's diff (a 'discussion' in GitLab terminology). Requires the diff_refs (base_sha, head_sha, start_sha) returned by get_mr_diff. Provide exactly one of new_line / old_line. dry_run=true by default.
resolve_mr_discussion Mark an MR discussion as resolved (or unresolved). dry_run=true by default.
list_epics Lister les epics d'un groupe GitLab. Filtrer par etat, recherche textuelle ou labels.
get_epic Obtenir les details complets d'un epic par son numero (IID).
create_epic Creer un nouvel epic dans un groupe GitLab. Par defaut dry_run=true : retourne un apercu sans creer. Passer dry_run=false apres confirmation.
update_epic Mettre a jour un epic existant. Par defaut dry_run=true : retourne un apercu sans modifier. Passer dry_run=false apres confirmation.
close_epic Fermer un epic. Par defaut dry_run=true : retourne un apercu sans fermer. Passer dry_run=false apres confirmation.
reopen_epic Reopen a closed epic. dry_run=true by default.
list_epic_issues Lister les issues rattachees a un epic. Affiche l'ID global et le IID projet de chaque issue.
add_issue_to_epic Link an issue to an epic. dry_run=true by default. Requires project_id and issue_iid (not the global issue ID).
list_epic_notes Lister les commentaires d'un epic.
add_epic_note Ajouter un commentaire sur un epic. Par defaut dry_run=true.
update_epic_note Edit the body of an existing epic note. Get note_id from list_epic_notes. dry_run=true by default.
delete_epic_note Delete an existing epic note. This is destructive and cannot be undone. dry_run=true by default.
get_epic_widgets Get Work Item widgets for an epic: health status, progress, milestone, iteration, and linked items.
set_epic_milestone Associate a milestone with an epic (uses Work Items API). dry_run=true by default.
set_epic_health_status Set the health status of an epic (onTrack, needsAttention, atRisk, or null to clear). dry_run=true by default.
set_issue_health_status Set the health status of an issue (onTrack, needsAttention, atRisk, or null to clear). dry_run=true by default.
set_epic_iteration Associate an iteration (sprint) with an epic (uses Work Items API). dry_run=true by default.
get_work_item_id Resolve the WorkItem global ID (gid://gitlab/WorkItem/N) for an epic or issue. Required as parent_work_item_id / child_work_item_ids on link_work_items and unlink_work_items.
link_work_items Attach one or more work items (issues or epics) as children of a parent work item (epic). Uses the Work Items hierarchy widget — the canonical GitLab 17+ replacement for add_issue_to_epic. Idempotent: existing children of the parent are preserved. Resolve GIDs via get_work_item_id. dry_run=true by default.
unlink_work_items Detach one or more work items from their current parent. Per-child operation: each child is unset from whatever parent it currently has (parent_work_item_id is accepted for symmetry but the unlink does not assert it). dry_run=true by default.
add_linked_item Create a link between two work items (epics or issues). Link types: RELATED, BLOCKS, BLOCKED_BY. dry_run=true by default.
Permissions 3
network medium filesystem low env_vars low