B

GitLab MCP Server

Community GitLab MCP server covering merge requests, issues, repositories, CI/CD pipelines, wiki, releases, work items, webhooks, and code search with SSE and Streamable HTTP transports.

Overall Score79/100

Score Breakdown

Server Info

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

Findings

8 issues

Tool Schema Quality

HIGHRequired fields missing on 1 write operations

Write tools without required field declarations: mark_all_todos_done.

Remediation

Add required arrays to all write/delete tool schemas.

MEDIUMOnly 0 of 182 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.

LLM Safety

MEDIUM1 tool descriptions are too vague

Short or generic descriptions make tool selection unreliable.

Remediation

Expand descriptions with specific actions, data types, and side effects.

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

MEDIUM8 list operations lack pagination

Most list tools include page/per_page pagination params. list_merge_request_diffs, list_pipeline_jobs, list_issue_discussions, get_pipeline_job_output include offset pagination. Response objects return full GitLab API records without field selection support. No projection parameters.

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

182 total
NameDescriptionRisk
merge_merge_requestMerge a merge requestwrite
approve_merge_requestApprove a merge requestwrite
unapprove_merge_requestUnapprove a merge requestwrite
get_merge_request_approval_stateGet merge request approval details including approversread
get_merge_request_conflictsGet the conflicts of a merge requestread
list_merge_request_pipelinesList pipelines for a merge request with paginationread
execute_graphqlExecute a GitLab GraphQL querywrite
create_or_update_fileCreate or update a file in a GitLab projectwrite
search_repositoriesSearch for GitLab projectsread
create_repositoryCreate a new GitLab projectwrite
create_groupCreate new group or subgroupwrite
get_file_contentsGet contents of a file or directory from a GitLab projectread
push_filesPush multiple files in a single commitwrite
create_issueCreate a new issuewrite
create_merge_requestCreate a new merge requestwrite
fork_repositoryFork a project to your account or specified namespacewrite
create_branchCreate a new branchwrite
get_branchGet branch details (commit, protection status)read
list_branchesList branches in project with search filterread
delete_branchDelete branch from projectadmin
get_merge_requestGet details of a merge request (mergeRequestIid or branchName required)read
get_merge_request_diffsGet the changes/diffs of a merge request (mergeRequestIid or branchName required)read
list_merge_request_changed_filesList changed file paths in a merge request without diff content (mergeRequestIid or branchName required)read
list_merge_request_diffsList merge request diffs with pagination (mergeRequestIid or branchName required)read
get_merge_request_file_diffGet diffs for specific files from a merge request (mergeRequestIid or branchName required)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 diffs between two branches or commitsread
update_merge_requestUpdate a merge request (mergeRequestIid or branchName required)write
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 requestadmin
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 noteadmin
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 noteadmin
publish_draft_notePublish a single draft notewrite
bulk_publish_draft_notesPublish all draft notes for a merge requestwrite
list_merge_request_emoji_reactionsList all emoji reactions on a merge requestread
list_merge_request_note_emoji_reactionsList all emoji reactions on a merge request note. Pass discussion_id for discussion thread replies.read
create_merge_request_emoji_reactionAdd an emoji reaction to a merge request (e.g. thumbsup, rocket, eyes)write
delete_merge_request_emoji_reactionRemove an emoji reaction from a merge requestadmin
create_merge_request_note_emoji_reactionAdd an emoji reaction to a merge request note. Pass discussion_id for discussion thread replies.write
delete_merge_request_note_emoji_reactionRemove an emoji reaction from a merge request note. Pass discussion_id for discussion thread replies.admin
update_issue_noteModify an existing issue thread notewrite
create_issue_noteAdd a note to an issue, optionally replying to a discussion threadwrite
list_issue_emoji_reactionsList all emoji reactions on an issueread
list_issue_note_emoji_reactionsList all emoji reactions on an issue note. Pass discussion_id for discussion thread replies.read
create_issue_emoji_reactionAdd an emoji reaction to an issue (e.g. thumbsup, rocket, eyes)write
delete_issue_emoji_reactionRemove an emoji reaction from an issueadmin
create_issue_note_emoji_reactionAdd an emoji reaction to an issue note. Pass discussion_id for discussion thread replies.write
delete_issue_note_emoji_reactionRemove an emoji reaction from an issue note. Pass discussion_id for discussion thread replies.admin
list_issuesList issues (default: created by current user; use scope='all' for all)read
my_issuesList issues assigned to the authenticated userread
get_issueGet details of a specific issueread
update_issueUpdate an issuewrite
update_issue_description_patchApply a patch (search/replace or unified diff) to an issue description. Reduces token usage by allowing small changes without sending the full description. Supports dry_run to preview changes and create_note to summarize updates.write
delete_issueDelete an issueadmin
list_todosList GitLab to-do items for the current userread
mark_todo_doneMark a GitLab to-do item as donewrite
mark_all_todos_doneMark all pending GitLab to-do items as done for the current userwrite
list_issue_linksList all issue links for a specific issueread
list_issue_discussionsList discussions for an issueread
get_issue_linkGet a specific issue linkread
create_issue_linkCreate an issue link between two issueswrite
delete_issue_linkDelete an issue linkadmin
list_namespacesList all namespaces (users and groups) available to the current user. Filter by kind='group' for groups only.read
get_namespaceGet details of a namespace (user or group) by ID or path. Groups are namespaces with kind='group'.read
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 projectadmin
list_group_projectsList projects in a groupread
list_wiki_pagesList wiki pages in a projectread
get_wiki_pageGet details of a specific wiki pageread
create_wiki_pageCreate a wiki page in a projectwrite
update_wiki_pageUpdate a wiki page in a projectwrite
delete_wiki_pageDelete a wiki page from a projectadmin
list_group_wiki_pagesList wiki pages in a groupread
get_group_wiki_pageGet details of a specific group wiki pageread
create_group_wiki_pageCreate a wiki page in a groupwrite
update_group_wiki_pageUpdate a wiki page in a groupwrite
delete_group_wiki_pageDelete a wiki page from a groupadmin
get_repository_treeList files and directories in a repositoryread
list_pipelinesList pipelines with filtering optionsread
get_pipelineGet details of a specific pipelineread
list_deploymentsList deployments with filtering optionsread
get_deploymentGet details of a specific deploymentread
list_environmentsList environments in a projectread
get_environmentGet details of a specific environmentread
list_pipeline_jobsList all jobs in a specific pipelineread
list_pipeline_trigger_jobsList trigger jobs (bridges) in a pipelineread
get_pipeline_jobGet details of a GitLab pipeline job numberread
get_pipeline_job_outputGet the output/trace of a pipeline job with optional paginationread
validate_ci_lintValidate provided GitLab CI/CD YAML content for a projectread
validate_project_ci_lintValidate an existing .gitlab-ci.yml configuration for a projectread
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 archiveread
download_job_artifactsDownload job artifact archive (zip) and save to a local pathread
get_job_artifact_fileGet content of a single file from a job's artifactsread
list_merge_requestsList merge requests (without project_id: user's MRs; with project_id: project MRs)read
list_milestonesList milestones with filtering optionsread
get_milestoneGet details of a specific milestoneread
create_milestoneCreate a new milestonewrite
edit_milestoneEdit an existing milestonewrite
delete_milestoneDelete a milestoneadmin
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
get_userGet user details by IDread
whoamiGet current authenticated user detailsread
list_commitsList repository commits with filtering optionsread
get_commitGet details of a specific commitread
get_commit_diffGet changes/diffs of a specific commitread
get_file_blameGet git blame for a file at a given ref. Each entry maps a contiguous range of source lines to the commit that last changed them (id, author, authored_date, message). Use range_start/range_end to limit blame to specific lines.read
list_commit_statusesList statuses for a commitread
create_commit_statusCreate or update the status of a commitwrite
list_group_iterationsList group iterations with filtering optionsread
upload_markdownUpload a file for use in markdown contentwrite
download_attachmentDownload an uploaded file from a project (images returned as base64; use local_path to save to disk)read
health_checkVerify server status and authenticationread
list_eventsList events for the authenticated user (before/after: YYYY-MM-DD)read
get_project_eventsList events for a project (before/after: YYYY-MM-DD)read
list_releasesList all releases for a projectread
get_releaseGet a release by tag nameread
create_releaseCreate a new releasewrite
update_releaseUpdate an existing releasewrite
delete_releaseDelete a release (does not delete the tag)admin
create_release_evidenceCreate release evidence (Premium/Ultimate)write
download_release_assetDownload a release asset file by direct asset pathread
list_tagsList repository tags for a projectread
get_tagGet a repository tag by nameread
create_tagCreate a new repository tagwrite
delete_tagDelete a repository tagadmin
get_tag_signatureGet the X.509 signature of a signed tag (404 if unsigned)read
get_work_itemGet a work item with full details including status, hierarchy, type, and widgetsread
list_work_itemsList work items with filters (type, state, search, assignees, labels)read
create_work_itemCreate a work item (issue, task, incident, epic, etc.) with full field supportwrite
update_work_itemUpdate a work item (title, description, labels, assignees, state, parent, custom fields, etc.)write
convert_work_item_typeConvert a work item to a different typewrite
list_work_item_statusesList available statuses for a work item type (Premium/Ultimate)read
list_custom_field_definitionsList custom field definitions for a work item typeread
move_work_itemMove a work item to a different projectwrite
list_work_item_notesList notes and discussions on a work itemread
create_work_item_noteAdd a note to a work item (supports Markdown, internal notes, threads)write
list_work_item_emoji_reactionsList all emoji reactions on a work itemread
list_work_item_note_emoji_reactionsList all emoji reactions on a work item note (comment, thread, or thread reply)read
create_work_item_emoji_reactionAdd an emoji reaction to a work item (e.g. thumbsup, rocket, eyes)write
delete_work_item_emoji_reactionRemove an emoji reaction from a work itemadmin
create_work_item_note_emoji_reactionAdd an emoji reaction to a work item note (comment, thread, or thread reply)write
delete_work_item_note_emoji_reactionRemove an emoji reaction from a work item note (comment, thread, or thread reply)admin
get_timeline_eventsList timeline events for an incidentread
create_timeline_eventCreate a timeline event on an incidentwrite
list_webhooksList webhooks for a project or groupread
list_webhook_eventsList recent webhook events (past 7 days)read
get_webhook_eventGet full details of a specific webhook eventread
search_codeSearch for code across all projects (requires advanced search or Zoekt)read
search_project_codeSearch for code within a specific project (requires advanced search or Zoekt)read
search_group_codeSearch for code within a specific group (requires advanced search or Zoekt)read
discover_toolsDiscover and activate additional tool categories for this session. Available categories: merge_requests, issues, repositories, branches, projects, labels, ci, groups, pipelines, milestones, wiki, releases, tags, users, workitems, webhooks, search. Already-active categories are listed in the response.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