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.

D
Caution
52/100

rokrokss/gitlab-mcp

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

Code Verified⚡ Live Monitored: not connected

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

Is this your MCP?

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.

// key findings
🚨
Secret credentials may flow to a network call
4 flows detected: GITLAB_API_URL. We can’t prove the destination matches the brand the credential belongs to.
🚨
Known vulnerabilities in dependencies: 1 critical, 3 high
Affects packages this MCP installs at runtime. Upgrade or remove the affected dependency.
🔐
You'll be asked for 2 credentials: GITLAB_OAUTH_CLIENT_SECRET, GITLAB_TOKEN
These are read from process.env at runtime. Make sure you trust where they’ll be sent.
// tools this server exposes119 tools

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_request

Merge a merge request in a GitLab project

approve_merge_request

Approve a merge request. Requires appropriate permissions.

unapprove_merge_request

Unapprove a previously approved merge request. Requires appropriate permissions.

get_merge_request_approval_state

Get merge request approval details including approvers (uses approval_state when available, falls back to approvals endpoint)

get_merge_request_conflicts

Get the conflicts of a merge request in a GitLab project

execute_graphql

Execute a GitLab GraphQL query

create_or_update_file

Create or update a single file in a GitLab project

search_repositories

Search for GitLab projects

create_repository

Create a new GitLab project

get_file_contents

Get the contents of a file or directory from a GitLab project

push_files

Push multiple files to a GitLab project in a single commit

create_issue

Create a new issue in a GitLab project

create_merge_request

Create a new merge request in a GitLab project

fork_repository

Fork a GitLab project to your account or specified namespace

create_branch

Create a new branch in a GitLab project

get_merge_request

Get details of a merge request with compact deployment, commit addition, and approval summaries (Either mergeRequestIid or branchName must be provided)

get_merge_request_diffs

Get the changes/diffs of a merge request (Either mergeRequestIid or branchName must be provided)

list_merge_request_diffs

List merge request diffs with pagination support (Either mergeRequestIid or branchName must be provided)

list_merge_request_versions

List all versions of a merge request

get_merge_request_version

Get a specific version of a merge request

get_branch_diffs

Get the changes/diffs between two branches or commits in a GitLab project

update_merge_request

Update a merge request (Either mergeRequestIid or branchName must be provided)

create_note

Create a new note (comment) to an issue or merge request

create_merge_request_thread

Create a new thread on a merge request

resolve_merge_request_thread

Resolve a thread on a merge request

mr_discussions

List discussion items for a merge request

delete_merge_request_discussion_note

Delete a discussion note on a merge request

update_merge_request_discussion_note

Update a discussion note on a merge request

create_merge_request_discussion_note

Add a new discussion note to an existing merge request thread

create_merge_request_note

Add a new note to a merge request

delete_merge_request_note

Delete an existing merge request note

get_merge_request_note

Get a specific note for a merge request

get_merge_request_notes

List notes for a merge request

update_merge_request_note

Modify an existing merge request note

get_draft_note

Get a single draft note from a merge request

list_draft_notes

List draft notes for a merge request

create_draft_note

Create a draft note for a merge request

update_draft_note

Update an existing draft note

delete_draft_note

Delete a draft note

publish_draft_note

Publish a single draft note

bulk_publish_draft_notes

Publish all draft notes for a merge request

update_issue_note

Modify an existing issue thread note

create_issue_note

Add a new note to an existing issue thread

list_issues

List issues (default: created by current user only; use scope='all' for all accessible issues)

my_issues

List issues assigned to the authenticated user (defaults to open issues)

get_issue

Get details of a specific issue in a GitLab project

update_issue

Update an issue in a GitLab project

delete_issue

Delete an issue from a GitLab project

list_issue_links

List all issue links for a specific issue

list_issue_discussions

List discussions for an issue in a GitLab project

get_issue_link

Get a specific issue link

create_issue_link

Create an issue link between two issues

delete_issue_link

Delete an issue link

list_namespaces

List all namespaces available to the current user

get_namespace

Get details of a namespace by ID or path

verify_namespace

Verify if a namespace path exists

get_project

Get details of a specific project

list_projects

List projects accessible by the current user

list_project_members

List members of a GitLab project

list_labels

List labels for a project

get_label

Get a single label from a project

create_label

Create a new label in a project

update_label

Update an existing label in a project

delete_label

Delete a label from a project

list_group_projects

List projects in a GitLab group with filtering options

list_wiki_pages

List wiki pages in a GitLab project

get_wiki_page

Get details of a specific wiki page

create_wiki_page

Create a new wiki page in a GitLab project

update_wiki_page

Update an existing wiki page in a GitLab project

delete_wiki_page

Delete a wiki page from a GitLab project

get_repository_tree

Get the repository tree for a GitLab project (list files and directories)

list_pipelines

List pipelines in a GitLab project with filtering options

get_pipeline

Get details of a specific pipeline in a GitLab project

list_deployments

List deployments in a GitLab project with filtering options

get_deployment

Get details of a specific deployment in a GitLab project

list_environments

List environments in a GitLab project

get_environment

Get details of a specific environment in a GitLab project

list_pipeline_jobs

List all jobs in a specific pipeline

list_pipeline_trigger_jobs

List all trigger jobs (bridges) in a specific pipeline that trigger downstream pipelines

get_pipeline_job

Get details of a GitLab pipeline job number

get_pipeline_job_output

Get the output/trace of a GitLab pipeline job with optional pagination to limit context window usage

create_pipeline

Create a new pipeline for a branch or tag

retry_pipeline

Retry a failed or canceled pipeline

cancel_pipeline

Cancel a running pipeline

play_pipeline_job

Run a manual pipeline job

retry_pipeline_job

Retry a failed or canceled pipeline job

cancel_pipeline_job

Cancel a running pipeline job

list_job_artifacts

List artifact files in a job's artifacts archive. Returns file names, paths, types, and sizes.

download_job_artifacts

Download the entire artifact archive (zip) for a job to a local path. Returns the saved file path.

get_job_artifact_file

Get the content of a single file from a job's artifacts by its path within the archive

list_merge_requests

List 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_milestones

List milestones in a GitLab project with filtering options

get_milestone

Get details of a specific milestone

create_milestone

Create a new milestone in a GitLab project

edit_milestone

Edit an existing milestone in a GitLab project

delete_milestone

Delete a milestone from a GitLab project

get_milestone_issue

Get issues associated with a specific milestone

get_milestone_merge_requests

Get merge requests associated with a specific milestone

promote_milestone

Promote a milestone to the next stage

get_milestone_burndown_events

Get burndown events for a specific milestone

19 further tools are not listed here. The complete surface is in the source.

// known CVEs in dependencies1 critical3 high1 low

Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.

criticalform-data@4.0.0GHSA-fjxv-7rqg-78g4

form-data uses unsafe random function in form-data for choosing boundary

high@modelcontextprotocol/sdk@1.24.2GHSA-345p-7cg4-v4c7

@modelcontextprotocol/sdk has cross-client data leak via shared server/transport instance reuse

high@modelcontextprotocol/sdk@1.24.2GHSA-8r9q-7v3j-jr4g

Anthropic's MCP TypeScript SDK has a ReDoS vulnerability

highform-data@4.0.0GHSA-hmw2-7cc7-3qxx

form-data: CRLF injection in form-data via unescaped multipart field names and filenames

lowesbuild@0.27.4GHSA-g7r4-m6w7-qqqr

esbuild allows arbitrary file read when running the development server on Windows

Depend on this server? Get alerted when its CVEs change.Watch this server free →
// environment variables
To run this server yourself, you supply these values. They go in your own MCP client configuration and stay on your machine. The secret label means the value is sensitive, not that the server mishandles it.
configDEFAULT_NULL
configDISCUSSION_ID
configGITLAB_ALLOWED_PROJECT_IDS"": "", // Optional: comma-separated list of allowed project IDs
configGITLAB_API_URL"": "your_gitlab_api_url",
configGITLAB_COMMIT_FILES_PER_PAGE
configGITLAB_GRAPHQL_URL
configGITLAB_OAUTH_CLIENT_ID"": "your_oauth_client_id",
🔐 secretGITLAB_OAUTH_CLIENT_SECRET"": "your_oauth_client_secret", // Required for Confidential apps only
configGITLAB_OAUTH_REDIRECT_URI"": "http://127.0.0.1:8888/callback",
configGITLAB_OAUTH_TOKEN_PATHCustom path to store the OAuth token. Default: ~/.gitlab-mcp-token.json
configGITLAB_PROJECT_ID"": "your_project_id", // Optional: default project
configGITLAB_READ_ONLY_MODE"": "false",
🔐 secretGITLAB_TOKEN
configISSUE_IID
configLOG_LEVEL
configMAX_REQUESTS_PER_MINUTERate limit per session in requests per minute. Default: 60. Valid range: 1-1000. Exceeded requests return HTTP 429.
configMAX_SESSIONSMaximum number of concurrent sessions allowed. Default: 1000. Valid range: 1-10000. When limit is reached, new connections are rejected with HTTP 503.
configNOTE_ID
configPROJECT_ID
configSESSION_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.
// quality suggestions

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.

// full audit trail
The findings above are the summary. The full trail, every check we ran, each deduction, the network hosts observed and the dependency advisories, goes to verified publishers, along with an alert whenever a new one lands. Verified publishers can also review each finding and dispute it in one click. Publisher corrections have sharpened several of our checks this month, because the maintainer knows the codebase better than any scanner.
// improvement guidance — verified publishers only
We have 6 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Verified](https://m8ven.ai/badge/mcp/rokrokss/gitlab-mcp?variant=verified)](https://m8ven.ai/mcp/rokrokss/gitlab-mcp)
Shows verification status without the grade. Want the grade badge instead? Remove ?variant=verified from the URL.
commit: d69af019bd2fc804bec95330c840a195c9f3297b
code hash: fecd828b2ad7095f65964d562fd2350cc244d41e61d201d65b4aaecd282b2470
view raw JSON →
Check MCPs from inside your assistant
Tool Check · MCP

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
check_toolsearch_toolscompare_toolsrecommend_alternativescheck_publisherreport_concern
How to add it →Free · no account needed · works in any MCP client