rokrokss/gitlab-mcp (rokrokss/gitlab-mcp) is an MCP server listed on the M8ven Trust Index. It scores 52 out of 100, grade D. It declares 119 tools. No publisher has claimed this listing.
Enables AI agents to interact with GitLab repositories, issues, merge requests, pipelines, wikis, milestones, and more through the GitLab API.
Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.
How we verified
Verified is a snapshot. Live keeps it current, and builds your track record.
⚡ Connect GitHub → continuous verification on every pushwhy connect →Who stands behind it
rokrokss
Source: Glama
Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →
Install from
The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.
These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.
merge_merge_requestMerge a merge request in a GitLab project
approve_merge_requestApprove a merge request. Requires appropriate permissions.
unapprove_merge_requestUnapprove a previously approved merge request. Requires appropriate permissions.
get_merge_request_approval_stateGet merge request approval details including approvers (uses approval_state when available, falls back to approvals endpoint)
get_merge_request_conflictsGet the conflicts of a merge request in a GitLab project
execute_graphqlExecute a GitLab GraphQL query
create_or_update_fileCreate or update a single file in a GitLab project
search_repositoriesSearch for GitLab projects
create_repositoryCreate a new GitLab project
get_file_contentsGet the contents of a file or directory from a GitLab project
push_filesPush multiple files to a GitLab project in a single commit
create_issueCreate a new issue in a GitLab project
create_merge_requestCreate a new merge request in a GitLab project
fork_repositoryFork a GitLab project to your account or specified namespace
create_branchCreate a new branch in a GitLab project
get_merge_requestGet details of a merge request with compact deployment, commit addition, and approval summaries (Either mergeRequestIid or branchName must be provided)
get_merge_request_diffsGet the changes/diffs of a merge request (Either mergeRequestIid or branchName must be provided)
list_merge_request_diffsList merge request diffs with pagination support (Either mergeRequestIid or branchName must be provided)
list_merge_request_versionsList all versions of a merge request
get_merge_request_versionGet a specific version of a merge request
get_branch_diffsGet the changes/diffs between two branches or commits in a GitLab project
update_merge_requestUpdate a merge request (Either mergeRequestIid or branchName must be provided)
create_noteCreate a new note (comment) to an issue or merge request
create_merge_request_threadCreate a new thread on a merge request
resolve_merge_request_threadResolve a thread on a merge request
mr_discussionsList discussion items for a merge request
delete_merge_request_discussion_noteDelete a discussion note on a merge request
update_merge_request_discussion_noteUpdate a discussion note on a merge request
create_merge_request_discussion_noteAdd a new discussion note to an existing merge request thread
create_merge_request_noteAdd a new note to a merge request
delete_merge_request_noteDelete an existing merge request note
get_merge_request_noteGet a specific note for a merge request
get_merge_request_notesList notes for a merge request
update_merge_request_noteModify an existing merge request note
get_draft_noteGet a single draft note from a merge request
list_draft_notesList draft notes for a merge request
create_draft_noteCreate a draft note for a merge request
update_draft_noteUpdate an existing draft note
delete_draft_noteDelete a draft note
publish_draft_notePublish a single draft note
bulk_publish_draft_notesPublish all draft notes for a merge request
update_issue_noteModify an existing issue thread note
create_issue_noteAdd a new note to an existing issue thread
list_issuesList issues (default: created by current user only; use scope='all' for all accessible issues)
my_issuesList issues assigned to the authenticated user (defaults to open issues)
get_issueGet details of a specific issue in a GitLab project
update_issueUpdate an issue in a GitLab project
delete_issueDelete an issue from a GitLab project
list_issue_linksList all issue links for a specific issue
list_issue_discussionsList discussions for an issue in a GitLab project
get_issue_linkGet a specific issue link
create_issue_linkCreate an issue link between two issues
delete_issue_linkDelete an issue link
list_namespacesList all namespaces available to the current user
get_namespaceGet details of a namespace by ID or path
verify_namespaceVerify if a namespace path exists
get_projectGet details of a specific project
list_projectsList projects accessible by the current user
list_project_membersList members of a GitLab project
list_labelsList labels for a project
get_labelGet a single label from a project
create_labelCreate a new label in a project
update_labelUpdate an existing label in a project
delete_labelDelete a label from a project
list_group_projectsList projects in a GitLab group with filtering options
list_wiki_pagesList wiki pages in a GitLab project
get_wiki_pageGet details of a specific wiki page
create_wiki_pageCreate a new wiki page in a GitLab project
update_wiki_pageUpdate an existing wiki page in a GitLab project
delete_wiki_pageDelete a wiki page from a GitLab project
get_repository_treeGet the repository tree for a GitLab project (list files and directories)
list_pipelinesList pipelines in a GitLab project with filtering options
get_pipelineGet details of a specific pipeline in a GitLab project
list_deploymentsList deployments in a GitLab project with filtering options
get_deploymentGet details of a specific deployment in a GitLab project
list_environmentsList environments in a GitLab project
get_environmentGet details of a specific environment in a GitLab project
list_pipeline_jobsList all jobs in a specific pipeline
list_pipeline_trigger_jobsList all trigger jobs (bridges) in a specific pipeline that trigger downstream pipelines
get_pipeline_jobGet details of a GitLab pipeline job number
get_pipeline_job_outputGet the output/trace of a GitLab pipeline job with optional pagination to limit context window usage
create_pipelineCreate a new pipeline for a branch or tag
retry_pipelineRetry a failed or canceled pipeline
cancel_pipelineCancel a running pipeline
play_pipeline_jobRun a manual pipeline job
retry_pipeline_jobRetry a failed or canceled pipeline job
cancel_pipeline_jobCancel a running pipeline job
list_job_artifactsList artifact files in a job's artifacts archive. Returns file names, paths, types, and sizes.
download_job_artifactsDownload the entire artifact archive (zip) for a job to a local path. Returns the saved file path.
get_job_artifact_fileGet the content of a single file from a job's artifacts by its path within the archive
list_merge_requestsList merge requests. Without project_id, lists MRs assigned to the authenticated user by default (use scope='all' for all accessible MRs). With project_id, lists MRs for that specific project.
list_milestonesList milestones in a GitLab project with filtering options
get_milestoneGet details of a specific milestone
create_milestoneCreate a new milestone in a GitLab project
edit_milestoneEdit an existing milestone in a GitLab project
delete_milestoneDelete a milestone from a GitLab project
get_milestone_issueGet issues associated with a specific milestone
get_milestone_merge_requestsGet merge requests associated with a specific milestone
promote_milestonePromote a milestone to the next stage
get_milestone_burndown_eventsGet burndown events for a specific milestone
19 further tools are not listed here. The complete surface is in the source.
Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.
form-data uses unsafe random function in form-data for choosing boundary
@modelcontextprotocol/sdk has cross-client data leak via shared server/transport instance reuse
Anthropic's MCP TypeScript SDK has a ReDoS vulnerability
form-data: CRLF injection in form-data via unescaped multipart field names and filenames
esbuild allows arbitrary file read when running the development server on Windows
DEFAULT_NULLDISCUSSION_IDGITLAB_ALLOWED_PROJECT_IDS"": "", // Optional: comma-separated list of allowed project IDsGITLAB_API_URL"": "your_gitlab_api_url",GITLAB_COMMIT_FILES_PER_PAGEGITLAB_GRAPHQL_URLGITLAB_OAUTH_CLIENT_ID"": "your_oauth_client_id",GITLAB_OAUTH_CLIENT_SECRET"": "your_oauth_client_secret", // Required for Confidential apps onlyGITLAB_OAUTH_REDIRECT_URI"": "http://127.0.0.1:8888/callback",GITLAB_OAUTH_TOKEN_PATHCustom path to store the OAuth token. Default: ~/.gitlab-mcp-token.jsonGITLAB_PROJECT_ID"": "your_project_id", // Optional: default projectGITLAB_READ_ONLY_MODE"": "false",GITLAB_TOKENISSUE_IIDLOG_LEVELMAX_REQUESTS_PER_MINUTERate limit per session in requests per minute. Default: 60. Valid range: 1-1000. Exceeded requests return HTTP 429.MAX_SESSIONSMaximum number of concurrent sessions allowed. Default: 1000. Valid range: 1-10000. When limit is reached, new connections are rejected with HTTP 503.NOTE_IDPROJECT_IDSESSION_TIMEOUT_SECONDSSession timeout: Auth tokens expire after (default 1 hour) of inactivity. After timeout, the client must send auth headers again. The transport session remains active.Tool annotations
No tools have read-only/destructive annotations
Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.
All four hints declared on every tool
119/119 tools missing one or more hints — merge_merge_request (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); approve_merge_request (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); unapprove_merge_request (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +116 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.
For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.
Tests exist
No test files found
Add tests that exercise each declared tool.
Shell command execution
1 child_process call — runs shell commands
Prefer library functions over shell-outs. If you must shell out, ensure all inputs are properly escaped.
Secrets not logged
4 secret values sent to console.log
Redact or omit secret values from log output.
Production dependencies are patched
1 critical, 3 high severity in production deps — form-data@4.0.0 (critical), @modelcontextprotocol/sdk@1.24.2 (high)
Run npm audit fix, or upgrade the affected packages to a non-vulnerable version.
Dependency freshness
1/17 production deps stale: node-fetch@2023-11-30 (2.7y)
Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.
[](https://m8ven.ai/mcp/rokrokss/gitlab-mcp)?variant=verified from the URL.Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.
https://m8ven.ai/api/mcp/tool-check