B

GitLab MCP Server

Community-maintained MCP server for GitLab API providing merge request, issue, pipeline, wiki, and repository tools.

Overall Score71/100

Score Breakdown

Server Info

Package
@zereight/mcp-gitlab
Registry
npm
Maintainer
Community
Category
Developer Tools
Tags
gitci-cddevops
Last Scanned
7 Apr 2026

Findings

9 issues

Authentication & Identity

LOWImplements MCP OAuth spec for per-user authentication

Supports multiple auth methods: PAT via env var (default), GitLab OAuth flow, job tokens, cookie auth. Has full MCP OAuth spec support (GITLAB_MCP_OAUTH=true) with SSE and StreamableHTTP transports. Also supports session-based multi-user mode. Read-only mode available via GITLAB_READ_ONLY_MODE.

Remediation

Document the required OAuth scopes for each tool.

Tool Schema Quality

MEDIUMOnly 0 of 141 schemas have parameter constraints

Most schemas lack maxLength, enum, or pattern constraints on string parameters.

Remediation

Add constraints to string parameters, especially on write operations.

CRITICALDangerous execution surface: execute_graphql

Tool allows raw code/query execution which could be exploited via prompt injection.

Remediation

Use parameterized queries or validated command sets.

Permission Granularity

HIGH4 destructive operations not isolated

Admin/delete tools are mixed with regular operations and cannot be independently disabled.

Remediation

Namespace admin tools separately for independent access control.

LLM Safety

HIGHTool descriptions contain instructional language

Descriptions include directives that could influence LLM behavior beyond tool selection.

Remediation

Remove instructional language. Descriptions should be purely factual.

MEDIUMOverlapping tool descriptions may cause wrong selection

Similar descriptions between tools could cause the LLM to pick the wrong one.

Remediation

Differentiate descriptions with unique use cases.

Data Exposure

MEDIUM15 list operations lack pagination

Some list tools have pagination parameters (per_page, page), but many list endpoints do not expose pagination. No field selection. The execute_graphql tool could potentially return any data.

Remediation

Add limit/offset or cursor-based pagination.

LOWNo field selection on responses

Responses return full records rather than projected fields.

Remediation

Implement field selection to return only relevant fields.

Maintenance & Trust

LOWCommunity-maintained by zereight

No official vendor backing.

Remediation

Seek vendor verification.

Tools

141 total
NameDescriptionRisk
merge_merge_requestMerge a merge request in a GitLab projectwrite
approve_merge_requestApprove a merge request. Requires appropriate permissions.write
unapprove_merge_requestUnapprove a previously approved merge request. Requires appropriate permissions.write
get_merge_request_approval_stateGet merge request approval details including approversread
get_merge_request_conflictsGet the conflicts of a merge request in a GitLab projectread
execute_graphqlExecute a GitLab GraphQL queryadmin
create_or_update_fileCreate or update a single file in a GitLab projectwrite
search_repositoriesSearch for GitLab projectsread
create_repositoryCreate a new GitLab projectwrite
get_file_contentsGet the contents of a file or directory from a GitLab projectread
push_filesPush multiple files to a GitLab project in a single commitwrite
create_issueCreate a new issue in a GitLab projectwrite
create_merge_requestCreate a new merge request in a GitLab projectwrite
fork_repositoryFork a GitLab project to your account or specified namespacewrite
create_branchCreate a new branch in a GitLab projectwrite
get_merge_requestGet details of a merge request with compact deployment, commit addition, and approval summariesread
get_merge_request_diffsGet the changes/diffs of a merge requestread
list_merge_request_changed_filesSTEP 1 of code review workflow. Returns ONLY the list of changed file paths in a merge request.read
list_merge_request_diffsList merge request diffs with pagination supportread
get_merge_request_file_diffSTEP 2 of code review workflow. Get diffs for one or more files from a merge request.read
list_merge_request_versionsList all versions of a merge requestread
get_merge_request_versionGet a specific version of a merge requestread
get_branch_diffsGet the changes/diffs between two branches or commits in a GitLab projectread
update_merge_requestUpdate a merge requestwrite
create_noteCreate a new note (comment) to an issue or merge requestwrite
create_merge_request_threadCreate a new thread on a merge requestwrite
resolve_merge_request_threadResolve a thread on a merge requestwrite
mr_discussionsList discussion items for a merge requestread
delete_merge_request_discussion_noteDelete a discussion note on a merge requestwrite
update_merge_request_discussion_noteUpdate a discussion note on a merge requestwrite
create_merge_request_discussion_noteAdd a new discussion note to an existing merge request threadwrite
create_merge_request_noteAdd a new note to a merge requestwrite
delete_merge_request_noteDelete an existing merge request notewrite
get_merge_request_noteGet a specific note for a merge requestread
get_merge_request_notesList notes for a merge requestread
update_merge_request_noteModify an existing merge request notewrite
get_draft_noteGet a single draft note from a merge requestread
list_draft_notesList draft notes for a merge requestread
create_draft_noteCreate a draft note for a merge requestwrite
update_draft_noteUpdate an existing draft notewrite
delete_draft_noteDelete a draft notewrite
publish_draft_notePublish a single draft notewrite
bulk_publish_draft_notesPublish all draft notes for a merge requestwrite
update_issue_noteModify an existing issue thread notewrite
create_issue_noteAdd a new note to an existing issue threadwrite
list_issuesList issues (default: created by current user only; use scope='all' for all accessible issues)read
my_issuesList issues assigned to the authenticated user (defaults to open issues)read
get_issueGet details of a specific issue in a GitLab projectread
update_issueUpdate an issue in a GitLab projectwrite
delete_issueDelete an issue from a GitLab projectadmin
list_issue_linksList all issue links for a specific issueread
list_issue_discussionsList discussions for an issue in a GitLab projectread
get_issue_linkGet a specific issue linkread
create_issue_linkCreate an issue link between two issueswrite
delete_issue_linkDelete an issue linkwrite
list_namespacesList all namespaces available to the current userread
get_namespaceGet details of a namespace by ID or pathread
verify_namespaceVerify if a namespace path existsread
get_projectGet details of a specific projectread
list_projectsList projects accessible by the current userread
list_project_membersList members of a GitLab projectread
list_labelsList labels for a projectread
get_labelGet a single label from a projectread
create_labelCreate a new label in a projectwrite
update_labelUpdate an existing label in a projectwrite
delete_labelDelete a label from a projectwrite
list_group_projectsList projects in a GitLab group with filtering optionsread
list_wiki_pagesList wiki pages in a GitLab projectread
get_wiki_pageGet details of a specific wiki pageread
create_wiki_pageCreate a new wiki page in a GitLab projectwrite
update_wiki_pageUpdate an existing wiki page in a GitLab projectwrite
delete_wiki_pageDelete a wiki page from a GitLab projectwrite
list_group_wiki_pagesList wiki pages in a GitLab groupread
get_group_wiki_pageGet details of a specific group wiki pageread
create_group_wiki_pageCreate a new wiki page in a GitLab groupwrite
update_group_wiki_pageUpdate an existing wiki page in a GitLab groupwrite
delete_group_wiki_pageDelete a wiki page from a GitLab groupwrite
get_repository_treeGet the repository tree for a GitLab project (list files and directories)read
list_pipelinesList pipelines in a GitLab project with filtering optionsread
get_pipelineGet details of a specific pipeline in a GitLab projectread
list_deploymentsList deployments in a GitLab project with filtering optionsread
get_deploymentGet details of a specific deployment in a GitLab projectread
list_environmentsList environments in a GitLab projectread
get_environmentGet details of a specific environment in a GitLab projectread
list_pipeline_jobsList all jobs in a specific pipelineread
list_pipeline_trigger_jobsList all trigger jobs (bridges) in a specific pipeline that trigger downstream pipelinesread
get_pipeline_jobGet details of a GitLab pipeline job numberread
get_pipeline_job_outputGet the output/trace of a GitLab pipeline job with optional paginationread
create_pipelineCreate a new pipeline for a branch or tagwrite
retry_pipelineRetry a failed or canceled pipelinewrite
cancel_pipelineCancel a running pipelinewrite
play_pipeline_jobRun a manual pipeline jobwrite
retry_pipeline_jobRetry a failed or canceled pipeline jobwrite
cancel_pipeline_jobCancel a running pipeline jobwrite
list_job_artifactsList artifact files in a job's artifacts archive.read
download_job_artifactsDownload the entire artifact archive (zip) for a job to a local path.read
get_job_artifact_fileGet the content of a single file from a job's artifacts by its path within the archiveread
list_merge_requestsList merge requests. Without project_id, lists MRs assigned to the authenticated user by default.read
list_milestonesList milestones in a GitLab project with filtering optionsread
get_milestoneGet details of a specific milestoneread
create_milestoneCreate a new milestone in a GitLab projectwrite
edit_milestoneEdit an existing milestone in a GitLab projectwrite
delete_milestoneDelete a milestone from a GitLab projectadmin
get_milestone_issueGet issues associated with a specific milestoneread
get_milestone_merge_requestsGet merge requests associated with a specific milestoneread
promote_milestonePromote a milestone to the next stagewrite
get_milestone_burndown_eventsGet burndown events for a specific milestoneread
get_usersGet GitLab user details by usernamesread
list_commitsList repository commits with filtering optionsread
get_commitGet details of a specific commitread
get_commit_diffGet changes/diffs of a specific commitread
list_group_iterationsList group iterations with filtering optionsread
upload_markdownUpload a file to a GitLab project for use in markdown contentwrite
download_attachmentDownload an uploaded file from a GitLab project by secret and filename.read
list_eventsList all events for the currently authenticated user.read
get_project_eventsList all visible events for a specified project.read
list_releasesList all releases for a projectread
get_releaseGet a release by tag nameread
create_releaseCreate a new release in a GitLab projectwrite
update_releaseUpdate an existing release in a GitLab projectwrite
delete_releaseDelete a release from a GitLab project (does not delete the associated tag)admin
create_release_evidenceCreate release evidence for an existing release (GitLab Premium/Ultimate only)write
download_release_assetDownload a release asset file by direct asset pathread
get_work_itemGet a single work item with full details including status, hierarchy, type, labels, assignees, and all widgets.read
list_work_itemsList work items in a project with filters (type, state, search, assignees, labels).read
create_work_itemCreate a new work item (issue, task, incident, test_case, epic, etc.).write
update_work_itemUpdate a work item. Can modify title, description, labels, assignees, weight, state, status, parent hierarchy, and more.write
convert_work_item_typeConvert a work item to a different type (e.g. issue to task).write
list_work_item_statusesList available statuses for a work item type in a project.read
list_custom_field_definitionsList available custom field definitions for a work item type in a project.read
move_work_itemMove a work item to a different project.write
list_work_item_notesList notes and discussions on a work item.read
create_work_item_noteAdd a note/comment to a work item.write
get_timeline_eventsList timeline events for an incident.read
create_timeline_eventCreate a timeline event on an incident.write
list_webhooksList all configured webhooks for a GitLab project or group.read
list_webhook_eventsList recent webhook events (past 7 days) for a project or group webhook.read
get_webhook_eventGet full details of a specific webhook event by ID.read
search_codeSearch for code across all projects on the GitLab instance.read
search_project_codeSearch for code within a specific GitLab project.read
search_group_codeSearch for code within a specific GitLab group.read

Deploy GitLab MCP Server securely

CompleteFlow adds per-user authentication, permission scoping, and audit logging to any MCP server out of the box.

Deploy on CompleteFlow