MCP Gitlab
Secure MCP server for GitLab projects, merge requests, issues, and pipelines
Versions
0.4.1latestTools 63
get_merge_request_tool Get a single merge request by its IID. Args: project_id: Project ID or path merge_request_iid: Merge request internal ID (the number shown in the UI, e.g., !42) Returns: Merge request details including source/target branches, status, and approvals
delete_label_tool Delete a label from a GitLab project. Args: project_id: Project ID or path label_id: Label ID Returns: Confirmation of deletion
list_projects_tool List GitLab projects accessible by the API token. Args: search: Search for projects by name owned: Only list projects owned by the authenticated user membership: Only list projects the user is a member of visibility: Filter by visibility (public, internal, private) order_by: Order by field (created_at, updated_at, name, path) sort: Sort direction (asc, desc) page: Page number for pagination (default: 1) per_page: Results per page, max 100 (default: 20) Returns: List of projects with pagination info
get_project_tool Get GitLab project details by ID or path. Args: project_id: Project ID (numeric) or path (e.g., "group/project") Returns: Project details
list_project_branches_tool List repository branches for a GitLab project. Args: project_id: Project ID or path search: Filter branches by name page: Page number (default: 1) per_page: Results per page, max 100 (default: 20) Returns: List of branches with pagination info
get_project_branch_tool Get a single repository branch. Args: project_id: Project ID or path branch: Branch name Returns: Branch details including commit info
list_project_commits_tool List repository commits for a GitLab project. Args: project_id: Project ID or path ref_name: Branch or tag name (default: default branch) since: Only commits after this date (ISO 8601) until: Only commits before this date (ISO 8601) path: Only commits touching this file path page: Page number (default: 1) per_page: Results per page, max 100 (default: 20) Returns: List of commits with pagination info
create_project_tool Create a new GitLab project. Args: name: Project name description: Project description visibility: Visibility level (public, internal, private) initialize_with_readme: Initialize with a README file (default: false) namespace_id: Namespace ID to create the project under (group or user) Returns: Created project details including ID, path, and web URL
delete_project_tool Delete a GitLab project permanently. Args: project_id: Project ID (numeric) or path (e.g., "group/project") Returns: Confirmation of deletion
list_groups_tool List GitLab groups accessible by the API token. Args: search: Search for groups by name owned: Only list groups owned by the authenticated user top_level_only: Only list top-level groups order_by: Order by field (name, path, id) sort: Sort direction (asc, desc) page: Page number (default: 1) per_page: Results per page, max 100 (default: 20) Returns: List of groups with pagination info
get_group_tool Get GitLab group details by ID or path. Args: group_id: Group ID (numeric) or path (e.g., "parent-group/child-group") with_projects: Include group projects (default: true) Returns: Group details
list_group_projects_tool List projects within a GitLab group. Args: group_id: Group ID or path search: Filter projects by name visibility: Filter by visibility (public, internal, private) include_subgroups: Include projects from subgroups order_by: Order by field (created_at, updated_at, name, path) sort: Sort direction (asc, desc) page: Page number (default: 1) per_page: Results per page, max 100 (default: 20) Returns: List of projects with pagination info
list_merge_requests_tool List merge requests for a GitLab project. Args: project_id: Project ID or path state: Filter by state (opened, closed, merged, all) order_by: Order by field (created_at, updated_at) sort: Sort direction (asc, desc) labels: Comma-separated label names milestone: Milestone title search: Search in title and description page: Page number (default: 1) per_page: Results per page, max 100 (default: 20) Returns: List of merge requests with pagination info
get_current_user_tool Get the currently authenticated GitLab user. Returns: Current user details including ID, username, email, and permissions
create_merge_request_tool Create a new merge request. Args: project_id: Project ID or path source_branch: Source branch name (must already exist) target_branch: Target branch name title: MR title description: MR description (Markdown) labels: Comma-separated label names assignee_ids: User IDs to assign reviewer_ids: User IDs to review milestone_id: Milestone ID remove_source_branch: Remove source branch after merge (default: false) Returns: Created merge request details
update_merge_request_tool Update an existing merge request. Args: project_id: Project ID or path merge_request_iid: Merge request internal ID title: MR title description: MR description (Markdown) labels: Comma-separated label names state_event: State transition (close, reopen) assignee_ids: User IDs to assign reviewer_ids: User IDs to review milestone_id: Milestone ID target_branch: Target branch remove_source_branch: Remove source branch after merge Returns: Updated merge request details
list_mr_notes_tool List notes (comments) on a merge request. Args: project_id: Project ID or path merge_request_iid: Merge request internal ID order_by: Order by field (created_at, updated_at) sort: Sort direction (asc, desc) page: Page number (default: 1) per_page: Results per page, max 100 (default: 20) Returns: List of notes with pagination info
create_mr_note_tool Create a note (comment) on a merge request. Args: project_id: Project ID or path merge_request_iid: Merge request internal ID body: Note content (Markdown) Returns: Created note details
get_mr_changes_tool Get the changes (diff) for a merge request. Args: project_id: Project ID or path merge_request_iid: Merge request internal ID Returns: Merge request details with file diffs
list_mr_discussions_tool List discussions (threaded comments) on a merge request. Discussions include inline code review comments with file position data. Args: project_id: Project ID or path merge_request_iid: Merge request internal ID page: Page number (default: 1) per_page: Results per page, max 100 (default: 20) Returns: List of discussions with notes and position info
create_mr_discussion_tool Create a new discussion on a merge request. Args: project_id: Project ID or path merge_request_iid: Merge request internal ID body: Discussion body (Markdown) Returns: Created discussion details
list_issues_tool List issues for a GitLab project. Args: project_id: Project ID or path state: Filter by state (opened, closed, all) order_by: Order by field (created_at, updated_at, priority, due_date) sort: Sort direction (asc, desc) labels: Comma-separated label names milestone: Milestone title search: Search in title and description assignee_id: Filter by assignee user ID page: Page number (default: 1) per_page: Results per page, max 100 (default: 20) Returns: List of issues with pagination info
get_issue_tool Get a single issue by its IID. Args: project_id: Project ID or path issue_iid: Issue internal ID (the number shown in the UI, e.g., #15) Returns: Issue details including labels, assignees, and milestone
create_issue_tool Create a new issue in a GitLab project. Args: project_id: Project ID or path title: Issue title description: Issue description (Markdown) labels: Comma-separated label names assignee_ids: User IDs to assign milestone_id: Milestone ID confidential: Whether the issue is confidential (default: false) Returns: Created issue details
update_issue_tool Update an existing issue. Args: project_id: Project ID or path issue_iid: Issue internal ID title: Issue title description: Issue description (Markdown) labels: Comma-separated label names state_event: State transition (close, reopen) assignee_ids: User IDs to assign milestone_id: Milestone ID confidential: Whether the issue is confidential Returns: Updated issue details
list_issue_notes_tool List notes (comments) on an issue. Args: project_id: Project ID or path issue_iid: Issue internal ID order_by: Order by field (created_at, updated_at) sort: Sort direction (asc, desc) page: Page number (default: 1) per_page: Results per page, max 100 (default: 20) Returns: List of notes with pagination info
create_issue_note_tool Create a note (comment) on an issue. Args: project_id: Project ID or path issue_iid: Issue internal ID body: Note content (Markdown) Returns: Created note details
list_pipelines_tool List CI/CD pipelines for a GitLab project. Args: project_id: Project ID or path status: Filter by status (created, waiting_for_resource, preparing, pending, running, success, failed, canceled, skipped, manual, scheduled) ref: Filter by branch or tag name order_by: Order by field (id, status, ref, updated_at, user_id) sort: Sort direction (asc, desc) page: Page number (default: 1) per_page: Results per page, max 100 (default: 20) Returns: List of pipelines with pagination info
get_pipeline_tool Get a single CI/CD pipeline by ID. Args: project_id: Project ID or path pipeline_id: Pipeline ID Returns: Pipeline details including status, duration, and ref
list_pipeline_jobs_tool List jobs for a CI/CD pipeline. Args: project_id: Project ID or path pipeline_id: Pipeline ID scope: Filter by job scope (created, pending, running, failed, success, canceled, skipped, manual) page: Page number (default: 1) per_page: Results per page, max 100 (default: 20) Returns: List of jobs with pagination info
get_job_log_tool Get the log (trace) output of a CI/CD job. Args: project_id: Project ID or path job_id: Job ID Returns: Dictionary with job log content as plain text
create_pipeline_tool Create (trigger) a new CI/CD pipeline. Args: project_id: Project ID or path ref: Branch or tag name to run the pipeline for (default: main) Returns: Created pipeline details including ID and status
retry_pipeline_tool Retry all failed jobs in a CI/CD pipeline. Args: project_id: Project ID or path pipeline_id: Pipeline ID Returns: Retried pipeline details
cancel_pipeline_tool Cancel a running CI/CD pipeline. Args: project_id: Project ID or path pipeline_id: Pipeline ID Returns: Canceled pipeline details
delete_pipeline_tool Delete a CI/CD pipeline and all its jobs permanently. Args: project_id: Project ID or path pipeline_id: Pipeline ID Returns: Confirmation of deletion
retry_job_tool Retry a specific failed CI/CD job. Args: project_id: Project ID or path job_id: Job ID Returns: Retried job details
cancel_job_tool Cancel a running CI/CD job. Args: project_id: Project ID or path job_id: Job ID Returns: Canceled job details
delete_job_tool Delete a CI/CD job's artifacts and trace log. Args: project_id: Project ID or path job_id: Job ID Returns: Erased job details
search_global_tool Search across all GitLab resources accessible by the token. Args: search: Search query string scope: Search scope (projects, issues, merge_requests, milestones, snippet_titles, wiki_blobs, commits, blobs, notes, users) page: Page number (default: 1) per_page: Results per page, max 100 (default: 20) Returns: Search results with pagination info
search_project_tool Search within a specific GitLab project. Args: project_id: Project ID or path search: Search query string scope: Search scope (issues, merge_requests, milestones, wiki_blobs, commits, blobs, notes) page: Page number (default: 1) per_page: Results per page, max 100 (default: 20) Returns: Search results with pagination info
list_repository_tree_tool List repository tree (files and directories). Args: project_id: Project ID or path path: Path inside the repository (default: root) ref: Branch, tag, or commit SHA (default: default branch) recursive: List files recursively page: Page number (default: 1) per_page: Results per page, max 100 (default: 20) Returns: List of tree entries (blobs and trees) with pagination info
get_file_tool Get a file from a GitLab repository. Returns file metadata and content (base64 encoded). Args: project_id: Project ID or path file_path: Path to the file in the repository ref: Branch, tag, or commit SHA (default: HEAD) Returns: File metadata including base64 content, size, and encoding
create_file_tool Create a new file in a GitLab repository. Args: project_id: Project ID or path file_path: Path for the new file branch: Branch to commit to content: File content (text or base64 depending on encoding) commit_message: Commit message encoding: Content encoding - "text" or "base64" (default: text) Returns: Created file metadata
update_file_tool Update an existing file in a GitLab repository. Args: project_id: Project ID or path file_path: Path to the file branch: Branch to commit to content: New file content commit_message: Commit message encoding: Content encoding - "text" or "base64" (default: text) Returns: Updated file metadata
create_branch_tool Create a new branch in a GitLab repository. Args: project_id: Project ID or path branch: Name of the new branch ref: Branch name or commit SHA to create from Returns: Created branch details
delete_branch_tool Delete a branch from a GitLab repository. Args: project_id: Project ID or path branch: Branch name to delete Returns: Confirmation of deletion
compare_branches_tool Compare two branches, tags, or commits. Args: project_id: Project ID or path from_ref: Base branch/tag/commit to_ref: Head branch/tag/commit straight: Use straight comparison instead of merge-base (default: false) Returns: Comparison with commits, diffs, and stats
list_labels_tool List labels for a GitLab project. Args: project_id: Project ID or path search: Filter labels by keyword page: Page number (default: 1) per_page: Results per page, max 100 (default: 20) Returns: List of labels with pagination info
create_label_tool Create a new label in a GitLab project. Args: project_id: Project ID or path name: Label name color: Color hex code (e.g., "#FF0000") or named color description: Label description priority: Label priority (lower = higher priority) Returns: Created label details
update_label_tool Update an existing label in a GitLab project. Args: project_id: Project ID or path label_id: Label ID new_name: New label name color: New color hex code description: New description priority: New priority Returns: Updated label details
list_users_tool List GitLab users. Args: search: Search for users by name or email username: Filter by exact username active: Only return active users (default: true) page: Page number (default: 1) per_page: Results per page, max 100 (default: 20) Returns: List of users with pagination info
get_user_tool Get a specific GitLab user by ID. Args: user_id: User ID Returns: User details including username, name, email, and state
list_releases_tool List releases for a GitLab project. Args: project_id: Project ID or path order_by: Order by field (released_at, created_at) sort: Sort direction (asc, desc) page: Page number (default: 1) per_page: Results per page, max 100 (default: 20) Returns: List of releases with pagination info
get_release_tool Get a single release by tag name. Args: project_id: Project ID or path tag_name: Tag associated with the release Returns: Release details including assets and evidence
create_release_tool Create a new release for a GitLab project. Args: project_id: Project ID or path tag_name: Tag name for the release (created if it doesn't exist) name: Release title (defaults to tag_name) description: Release notes (Markdown) ref: Commit SHA or branch to tag from (required if tag doesn't exist) released_at: Release date (ISO 8601, default: now) Returns: Created release details
list_milestones_tool List milestones for a GitLab project. Args: project_id: Project ID or path state: Filter by state (active, closed, all) search: Filter by title page: Page number (default: 1) per_page: Results per page, max 100 (default: 20) Returns: List of milestones with pagination info
create_milestone_tool Create a new milestone in a GitLab project. Args: project_id: Project ID or path title: Milestone title description: Milestone description (Markdown) due_date: Due date (YYYY-MM-DD) start_date: Start date (YYYY-MM-DD) Returns: Created milestone details
update_milestone_tool Update an existing milestone. Args: project_id: Project ID or path milestone_id: Milestone ID title: New title description: New description (Markdown) due_date: New due date (YYYY-MM-DD) start_date: New start date (YYYY-MM-DD) state_event: State transition (close, activate) Returns: Updated milestone details
list_wiki_pages_tool List wiki pages for a GitLab project. Args: project_id: Project ID or path with_content: Include page content in response (default: false) page: Page number (default: 1) per_page: Results per page, max 100 (default: 20) Returns: List of wiki pages with pagination info
get_wiki_page_tool Get a single wiki page by slug. Args: project_id: Project ID or path slug: URL slug of the wiki page Returns: Wiki page details including content
create_wiki_page_tool Create a new wiki page in a GitLab project. Args: project_id: Project ID or path title: Page title content: Page content format: Content format - markdown, rdoc, asciidoc, or org (default: markdown) Returns: Created wiki page details
list_snippets_tool List snippets for a GitLab project. Args: project_id: Project ID or path page: Page number (default: 1) per_page: Results per page, max 100 (default: 20) Returns: List of snippets with pagination info
create_snippet_tool Create a new snippet in a GitLab project. Args: project_id: Project ID or path title: Snippet title file_name: File name for the snippet (e.g., "example.py") content: Snippet content description: Snippet description (Markdown) visibility: Visibility level (private, internal, public) Returns: Created snippet details
Permissions 3
network medium filesystem low env_vars low