{"slug":"zereight/gitlab-mcp","name":"Better GitLab MCP Server","description":"An improved GitLab MCP server with bug fixes and enhancements for accessing GitLab resources.","category":"version-control","tags":[],"official":false,"stars":1592,"transport":"stdio","install":[{"cmd":"npx skills","imports":[]}],"tools":[{"name":"merge_merge_request","description":"Merge a merge request in a GitLab project"},{"name":"create_or_update_file","description":"Create or update a single file in a GitLab project"},{"name":"search_repositories","description":"Search for GitLab projects"},{"name":"create_repository","description":"Create a new GitLab project"},{"name":"create_group","description":"Create a new GitLab group or subgroup (name, path, description, visibility, and optional parent_id)"},{"name":"get_file_contents","description":"Get the contents of a file or directory from a GitLab project"},{"name":"push_files","description":"Push multiple files to a GitLab project in a single commit"},{"name":"create_issue","description":"Create a new issue in a GitLab project"},{"name":"create_merge_request","description":"Create a new merge request in a GitLab project"},{"name":"fork_repository","description":"Fork a GitLab project to your account or specified namespace"},{"name":"create_branch","description":"Create a new branch in a GitLab project"},{"name":"get_merge_request","description":"Get details of a merge request with compact deployment summary, behind-count, commit addition summary, and approval summary (Either mergeRequestIid or branchName must be provided)"},{"name":"get_merge_request_diffs","description":"Get the changes/diffs of a merge request (Either mergeRequestIid or branchName must be provided)"},{"name":"list_merge_request_diffs","description":"List merge request diffs with pagination support (Either mergeRequestIid or branchName must be provided)"},{"name":"get_merge_request_conflicts","description":"Get the conflicts of a merge request in a GitLab project"},{"name":"list_merge_request_changed_files","description":"STEP 1 of code review workflow. Returns ONLY the list of changed file paths in a merge request — WITHOUT diff content. Call this first to get file paths, then call get_merge_request_file_diff with multiple files in a single batched call (recommended 3-5 files per call). Supports excluded_file_patterns filtering using regex. (Either mergeRequestIid or branchName must be provided)"},{"name":"get_merge_request_file_diff","description":"STEP 2 of code review workflow. Get diffs for one or more files from a merge request. Call list_merge_request_changed_files first, then pass them as an array to fetch diffs efficiently. Batching multiple files (recommended 3-5) is supported. (Either mergeRequestIid or branchName must be provided)"},{"name":"list_merge_request_versions","description":"List all versions of a merge request"},{"name":"get_merge_request_version","description":"Get a specific version of a merge request"},{"name":"get_branch_diffs","description":"Get the changes/diffs between two branches or commits in a GitLab project"},{"name":"update_merge_request","description":"Update a merge request (Either mergeRequestIid or branchName must be provided)"},{"name":"create_note","description":"Create a new note (comment) to an issue or merge request"},{"name":"create_merge_request_thread","description":"Create a new thread on a merge request"},{"name":"mr_discussions","description":"List discussion items for a merge request"},{"name":"resolve_merge_request_thread","description":"Resolve a thread on a merge request"},{"name":"update_merge_request_note","description":"Modify an existing merge request thread note"},{"name":"create_merge_request_note","description":"Add a new note to an existing merge request thread"},{"name":"delete_merge_request_discussion_note","description":"Delete a discussion note on a merge request"},{"name":"update_merge_request_discussion_note","description":"Update a discussion note on a merge request"},{"name":"create_merge_request_discussion_note","description":"Add a new discussion note to an existing merge request thread"},{"name":"delete_merge_request_note","description":"Delete an existing merge request note"},{"name":"get_merge_request_note","description":"Get a specific note for a merge request"},{"name":"get_merge_request_notes","description":"List notes for a merge request"},{"name":"get_draft_note","description":"Get a single draft note from a merge request"},{"name":"list_draft_notes","description":"List draft notes for a merge request"},{"name":"create_draft_note","description":"Create a draft note for a merge request"},{"name":"update_draft_note","description":"Update an existing draft note"},{"name":"delete_draft_note","description":"Delete a draft note"},{"name":"publish_draft_note","description":"Publish a single draft note"},{"name":"bulk_publish_draft_notes","description":"Publish all draft notes for a merge request"},{"name":"list_merge_requests","description":"List merge requests globally or in a specific GitLab project with filtering options (project_id is now optional)"},{"name":"approve_merge_request","description":"Approve a merge request (requires appropriate permissions)"},{"name":"unapprove_merge_request","description":"Unapprove a previously approved merge request"},{"name":"get_merge_request_approval_state","description":"Get merge request approval details including approvers (uses `approval_state` when available, otherwise falls back to `approvals`)"},{"name":"update_issue_note","description":"Modify an existing issue thread note"},{"name":"create_issue_note","description":"Add a new note to an existing issue thread"},{"name":"list_issues","description":"List issues (default: created by current user only; use scope='all' for all accessible issues)"},{"name":"my_issues","description":"List issues assigned to the authenticated user (defaults to open issues)"},{"name":"get_issue","description":"Get details of a specific issue in a GitLab project"},{"name":"update_issue","description":"Update an issue in a GitLab project"},{"name":"update_issue_description_patch","description":"Apply a patch (search/replace or unified diff) to an issue description. Reduces token usage by sending only the change instead of the full description. Supports `dry_run` to preview and `create_note` to summarize."},{"name":"delete_issue","description":"Delete an issue from a GitLab project"},{"name":"list_todos","description":"List GitLab to-do items for the current user"},{"name":"mark_todo_done","description":"Mark a GitLab to-do item as done"},{"name":"mark_all_todos_done","description":"Mark all pending GitLab to-do items as done for the current user"},{"name":"list_issue_links","description":"List all issue links for a specific issue"},{"name":"list_issue_discussions","description":"List discussions for an issue in a GitLab project"},{"name":"get_issue_link","description":"Get a specific issue link"},{"name":"create_issue_link","description":"Create an issue link between two issues"},{"name":"delete_issue_link","description":"Delete an issue link"},{"name":"list_namespaces","description":"List all namespaces available to the current user"},{"name":"get_namespace","description":"Get details of a namespace by ID or path"},{"name":"verify_namespace","description":"Verify if a namespace path exists"},{"name":"get_project","description":"Get details of a specific project"},{"name":"list_projects","description":"List projects accessible by the current user"},{"name":"list_project_members","description":"List members of a GitLab project"},{"name":"list_group_projects","description":"List projects in a GitLab group with filtering options"},{"name":"list_group_iterations","description":"List group iterations with filtering options"},{"name":"list_labels","description":"List labels for a project"},{"name":"get_label","description":"Get a single label from a project"},{"name":"create_label","description":"Create a new label in a project"},{"name":"update_label","description":"Update an existing label in a project"},{"name":"delete_label","description":"Delete a label from a project"},{"name":"list_pipelines","description":"List pipelines in a GitLab project with filtering options"},{"name":"get_pipeline","description":"Get details of a specific pipeline in a GitLab project"},{"name":"list_pipeline_jobs","description":"List all jobs in a specific pipeline"},{"name":"list_pipeline_trigger_jobs","description":"List all trigger jobs (bridges) in a specific pipeline that trigger downstream pipelines"},{"name":"get_pipeline_job","description":"Get details of a GitLab pipeline job number"},{"name":"get_pipeline_job_output","description":"Get the output/trace of a GitLab pipeline job with optional pagination to limit context window usage"},{"name":"validate_ci_lint","description":"Validate provided GitLab CI/CD YAML content for a project"},{"name":"validate_project_ci_lint","description":"Validate an existing `.gitlab-ci.yml` configuration for a project"},{"name":"create_pipeline","description":"Create a new pipeline for a branch or tag"},{"name":"retry_pipeline","description":"Retry a failed or canceled pipeline"},{"name":"cancel_pipeline","description":"Cancel a running pipeline"},{"name":"play_pipeline_job","description":"Run a manual pipeline job"},{"name":"retry_pipeline_job","description":"Retry a failed or canceled pipeline job"},{"name":"cancel_pipeline_job","description":"Cancel a running pipeline job"},{"name":"list_deployments","description":"List deployments in a GitLab project with filtering options"},{"name":"get_deployment","description":"Get details of a specific deployment in a GitLab project"},{"name":"list_environments","description":"List environments in a GitLab project"},{"name":"get_environment","description":"Get details of a specific environment in a GitLab project"},{"name":"list_job_artifacts","description":"List artifact files in a job's artifacts archive"}],"env_vars":["GITLAB_PERSONAL_ACCESS_TOKEN","YOUR_GITLAB_TOKEN","GITLAB_API_URL","MCP_SERVER_URL","GITLAB_OAUTH_APP_ID","GITLAB_JOB_TOKEN","ENABLE_DYNAMIC_API_URL","GITLAB_OAUTH_CLIENT_ID","OAUTH_STATELESS_SECRET","MCP_DANGEROUSLY_ALLOW_INSECURE_ISSUER_URL"],"auth_type":"none","github":"https://github.com/zereight/gitlab-mcp","homepage":"","server_url":"","status":"active","source":"mcpservers.org","updated_at":"Thu May 28"}