MCP server card

gitlab

GitLab MCP Server

Over 700 GitLab operations on gitlab.com — projects, merge requests, issues, pipelines. OAuth or a PAT as Bearer, per request, never stored.

Connect it to your client

Sign in with OAuth (recommended)

Your client opens gitlab.com in the browser, you authorize it there, and it stores the token itself — you never paste one. The client ID has to be configured explicitly: without it these clients fall back to dynamic registration, which GitLab answers with a scope this server cannot use.

Claude Code
                claude mcp add gitlab --transport http --client-id c9431f281376dab9390349f60bed0503285786e19577df14a9c291c588b85941 --callback-port 8090 https://mcp.jmrp.io/gitlab
              
Cursor — ~/.cursor/mcp.json
                {
  "mcpServers": {
    "gitlab": {
      "type": "http",
      "url": "https://mcp.jmrp.io/gitlab",
      "oauth": {
        "clientId": "c9431f281376dab9390349f60bed0503285786e19577df14a9c291c588b85941",
        "scopes": [
          "api"
        ]
      }
    }
  }
}
              
VS Code — .vscode/mcp.json
                {
  "servers": {
    "gitlab": {
      "type": "http",
      "url": "https://mcp.jmrp.io/gitlab",
      "oauth": {
        "clientId": "c9431f281376dab9390349f60bed0503285786e19577df14a9c291c588b85941",
        "scopes": [
          "api"
        ]
      }
    }
  }
}
              

Or paste a token

For anything that cannot open a browser — headless, CI — a gitlab.com personal access token sent as Bearer is verified exactly like an OAuth one.

Claude Code
            claude mcp add --transport http gitlab https://mcp.jmrp.io/gitlab --header "Authorization: Bearer <your token>"
          
Cursor — ~/.cursor/mcp.json
            {
  "mcpServers": {
    "gitlab": {
      "url": "https://mcp.jmrp.io/gitlab",
      "headers": {
        "Authorization": "Bearer ${env:GITLAB_TOKEN}"
      }
    }
  }
}
          
VS Code — .vscode/mcp.json
            {
  "inputs": [
    {
      "type": "promptString",
      "id": "gitlab-token",
      "description": "Your gitlab.com credential, sent as Bearer: an OAuth access token, or a personal access token used the same way. Never written to disk or logged on the server.",
      "password": true
    }
  ],
  "servers": {
    "gitlab": {
      "type": "http",
      "url": "https://mcp.jmrp.io/gitlab",
      "headers": {
        "Authorization": "Bearer ${input:gitlab-token}"
      }
    }
  }
}
          

In the JSON files the ${…} placeholders keep the credential out of the file: Cursor reads it from your environment, VS Code prompts for it once and stores it itself. In the command, replace <your token> by hand.

Before you rely on this

This endpoint is a personal service, run by one person and offered as-is: no SLA, no support channel, and no promise it is still here — or unchanged — next week. Both servers are open source and ship as a single static binary, so anything you cannot afford to lose is better run on your own instance.

It adds no quota of its own beyond the site-wide one: every call is spent against gitlab.com's limits, under your own token.

Behind the endpoint are three instances of this server. A consistent hash keeps sending the same client back to the same one, and each instance leaves for the outside world through a fixed country, Spain or the United Kingdom: How a request is routed, hop by hop

What is logged and for how long, where a request appears to come from, and the legal footing under all of it are set out in full: Privacy, logging and legal position

Overview

Server name
gitlab-mcp-server
Version
branch:main
Endpoint
https://mcp.jmrp.io/gitlab
Authentication
Credentials required (oauth2)

In the server's own words: Model Context Protocol server for GitLab: projects, issues, merge requests, pipelines, repositories, releases, groups, and admin workflows over the GitLab REST and GraphQL APIs.

Usage instructions

What the server itself tells every client on connect (server/discover), quoted verbatim.

gitlab-mcp-server exposes GitLab projects, merge requests, issues, branches, tags, releases, repositories, commits, files, groups, members, and uploads.

FINDING TOOLS. This server exposes two tools that reach the whole GitLab API:
1. Call gitlab_find_action with a natural-language description of the task to get matching action IDs and their input schemas.
2. Call gitlab_execute_action with that action ID, its parameters under 'params'.
3. Every action="..." named below is a canonical action ID: pass it to gitlab_execute_action directly, no find step needed.

PROJECT DISCOVERY. To find the project_id needed for most operations:
1. Read the .git/config file from the workspace to find [remote "origin"] url = ...
2. Call action="discover_project.resolve" with that URL to get the project_id.
3. Alternatively, use action="project.list" (owned=true) or action="search.projects" to find projects by name.

DEFAULT BRANCH. When generating URLs to repository files or branches:
1. Call action="project.get" to retrieve the project metadata, which includes the default_branch field.
2. ALWAYS use the returned default_branch value (e.g. develop, master) instead of assuming 'main'.
3. Projects can use any branch as default, so NEVER hardcode 'main' in URLs.

PACKAGE + RELEASE WORKFLOW. When uploading packages and linking them to releases:
1. Preferred: Use action="package.publish_and_link" to upload a file and create the release link in one step.
2. Alternative: Use action="package.publish" first, then use the 'url' field from its response as the URL for action="release.link_create".
3. NEVER construct package download URLs manually. Always use the actual URL returned by the publish tool.
4. RELEASE LINK NAMING: The link_name MUST be the exact filename (e.g. 'checksums.txt.asc'), NEVER add descriptive suffixes like '(GPG signature)'. go-selfupdate and other tools match asset names exactly.

RELEASE CREATION. When creating releases:
1. You do NOT need to create the tag first. Provide 'ref' (branch or SHA) in action="release.create" and GitLab auto-creates the tag.
2. The response includes 'assets_sources' with auto-generated tar.gz/zip archive URLs. Use those, never construct source archive URLs.
3. Use 'tag_message' to create an annotated tag instead of a lightweight one.

ID vs IID. GitLab uses two identifiers for issues and merge requests:
1. IID is the project-scoped number shown in URLs and UI (e.g. issue #3, MR !5). Most operations expect IID.
2. ID is the global numeric identifier. Only use action="issue.get_by_id" when you have a global ID from another API response.

WATCHING RESOURCES. Instead of re-reading a resource in a loop to detect change:
1. Single-object resources (a pipeline, an issue, a merge request, a file, a wiki page, ...) can be watched for change notifications via MCP subscriptions/listen, which protocol revision 2026-07-28 introduced (a client speaking an earlier revision cannot watch resources on this transport: the legacy resources/subscribe is refused here, because each request's session ends with its response); collections (issue lists, branch lists) cannot.
2. Example: subscribe to gitlab://project/{project_id}/pipelines/latest to be notified when a pipeline's state changes, instead of polling it yourself. The server watches GitLab and sends notifications/resources/updated only when the content actually changed.

Tools(2)

GitLab Execute Action

gitlab_execute_action

  • destructive
  • external network

Execute one GitLab catalog action by canonical ID or alias. Always pass params as an object. Destructive actions require top-level confirm=true. Use find first only when action or params are unclear.

Arguments (3 fields)
action string · required
Canonical action ID returned by gitlab_find_action, or a supported compatibility alias, such as project.list, issue.update, or issue.close.
params object · required
Required action-specific parameters object validated by the selected action schema. Use an empty object for actions with no parameters.
confirm boolean
Set top-level confirm=true to explicitly approve destructive actions. Do not put confirm inside params for gitlab_execute_action.
What it returns (2 fields)
next_steps string[]
Optional. Suggested follow-up actions or tool calls for the LLM, contextual to the result.
pagination object
Present on list actions. Use `has_more` and `next_page` to paginate through results.

Try in the inspector

GitLab Find Action

gitlab_find_action

  • read-only
  • idempotent
  • external network

Search the local GitLab action catalog. Read-only and no GitLab API call. Use when the action ID or params are unclear. Returns schemas, hints, destructive flags, and execute examples.

Arguments (3 fields)
query string · required
Search terms combining a GitLab domain or resource with a verb, filter, or object name, such as project create, merge request approve, pipeline retry, issue delete, or ci variable.
explain boolean
When true, include deterministic scoring reasons for each returned action. Defaults to false to keep responses compact.
limit integer
Maximum number of matches to return. Defaults to 20 and is capped at 50.
What it returns (3 fields)
count integer
Number of returned matches.
query string
Original search query.
results object[]
Matching GitLab catalog actions with schemas and execute examples.

Try in the inspector

Action catalog (747)

Behind the tools above sits a catalog of fine-grained actions, invoked through gitlab_execute_action and published as the gitlab://tools resource. This table only counts it, by domain — the full list is the resource itself.

Counted with a Free-tier GitLab token. The catalog is scoped to the token that asks, so the count moves with both its tier and its permissions: higher tiers expose more actions, and administration domains only appear to tokens allowed to use them.

Actions by domain
DomainActionsDestructiveRead-only
project1232450
user761437
group751332
issue59731
access48919
merge_request46723
repository41227
snippet34617
pipeline33415
package29812
job25513
mr_review23310
runner1948
environment1847
ci_variable1536
release1225
template12012
branch1135
feature_flags1024
search10010
tag925
wiki612
interactive400
custom_emoji311
ci_catalog202
server202
discover_project101
model_registry101

Prompts (37)

Canned plans a client can render, beyond the tools above. Ask your assistant for one by name.

Audit Commit Hygiene

audit_commit_hygiene

Audit commit message quality between two refs. Scores Conventional Commit usage, merge commits, breaking-change markers, body/detail quality, and linked work references for release and contribution readiness.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')
from · required
Starting ref: tag name, branch name, or commit SHA
to
Ending ref: tag name, branch name, or commit SHA (defaults to HEAD if omitted)

Try in the inspector

Audit Project Full

audit_project_full

Run a comprehensive audit of a GitLab project covering settings, branch protection, access management, labels, milestones, and templates in a single report. Use this for a complete project health assessment with actionable recommendations.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')

Try in the inspector

Audit Project Workflow

audit_project_workflow

Audit workflow configuration for a GitLab project: labels (names, colors, descriptions), milestones (open/closed, due dates), and issue/MR templates. Identifies gaps like labels without descriptions, milestones without due dates, or missing templates.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')

Try in the inspector

Branch MR Summary

branch_mr_summary

List all MRs targeting a specific branch in a project. Shows readiness summary with conflict/draft/approval counts. Ideal for release branch reviews.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')
target_branch · required
Target branch name to filter MRs (e.g. 'develop_5.4.0')
state
State filter: opened, closed, merged, all (default: opened)

Try in the inspector

Compare Branches

compare_branches

Compare commit and file differences between two Git refs. Use for release branch preparation, feature branch divergence analysis, or deciding whether a merge/backport needs deeper review.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')
from · required
Source branch name, tag, or commit SHA to compare from
to · required
Target branch name, tag, or commit SHA to compare to

Try in the inspector

Daily Standup

daily_standup

Generate a daily standup summary based on the user's GitLab activity in the last 24 hours: contribution events, authored MRs, assigned MRs, MRs under review, assigned issues, and created issues. Produces a comprehensive report with done/planned/blockers sections.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')
username
GitLab username to generate the standup for (defaults to the authenticated user if omitted)

Try in the inspector

Generate Release Notes

generate_release_notes

Generate comprehensive release notes from commits, merge requests, and file changes between two Git refs (tags, branches, or SHAs). Produces a structured document with commits, merged MRs with labels, contributors, and statistics for organizing into user-friendly release notes.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')
from · required
Starting ref: tag name (e.g. 'v1.0.0'), branch name, or commit SHA
to
Ending ref: tag name, branch name, or commit SHA (defaults to HEAD if omitted)

Try in the inspector

Group Milestone Progress

group_milestone_progress

Track milestone progress across all projects in a group. Shows issue/MR completion per milestone with progress bars.

group_id · required
GitLab group ID (numeric) or URL-encoded path (e.g. 'my-group' or 'parent/child')

Try in the inspector

Group MR Dashboard

group_mr_dashboard

List merge requests across a GitLab group with optional state and target branch filters. Shows MRs grouped by project with blocker and readiness summary statistics.

group_id · required
GitLab group ID (numeric) or URL-encoded path (e.g. 'my-group' or 'parent/child')
state
State filter: opened, closed, merged, all (default: opened)
target_branch
Target branch name to filter MRs (e.g. 'develop_5.4.0')

Try in the inspector

Label Distribution

label_distribution

Analyze label usage distribution in a project. Shows open/closed issue counts and open MR counts per label. Zero additional API calls beyond label list.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')

Try in the inspector

Merge Velocity

merge_velocity

Analyze MR throughput metrics for a project. Shows merge rate, average time-to-merge, and daily merged count chart. Ideal for tracking team delivery pace.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')
days
Number of days to look back (default: 30)

Try in the inspector

Milestone Progress

milestone_progress

Track milestone progress for a project. Shows issue/MR completion, progress bar, and due date risk. Omit milestone argument to see all active milestones.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')
milestone
Specific milestone title (omit for all active)

Try in the inspector

MR Description Quality

mr_description_quality

Score a merge request description for reviewer readiness. Checks context, linked work, test evidence, rollout/risk notes, checklists, and whether changed files suggest missing screenshots or migration notes.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')
merge_request_iid · required
Merge request IID (project-scoped numeric ID, visible as !N in GitLab)

Try in the inspector

MR Discussion Health

mr_discussion_health

Analyze unresolved discussion threads across open MRs in a project. Use this for review follow-up and merge-readiness cleanup, not approval-rule status.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')

Try in the inspector

MR Risk Assessment

mr_risk_assessment

Assess the risk level (LOW/MEDIUM/HIGH/CRITICAL) of a merge request based on size (lines added/removed), number of changed files, new/deleted files, sensitive file patterns (env, auth, migration, CI, security), and conflict status.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')
merge_request_iid · required
Merge request IID (project-scoped numeric ID, visible as !N in GitLab)

Try in the inspector

My Activity Summary

my_activity_summary

Generate a personal activity summary for a configurable time period. Includes contribution events breakdown, MRs created/merged/reviewed, issues created/closed, and a daily activity chart. Aggregates across all projects.

username
GitLab username to query
days
Number of days to look back (default: 7)

Try in the inspector

My Issues

my_issues

Show all issues assigned to you across all projects. Includes overdue detection and project grouping. Use this to see your full issue backlog without specifying a project.

username
GitLab username to query
state
State filter: opened, closed, all (default: opened)

Try in the inspector

My Open MRs

my_open_mrs

Show all open merge requests across all projects where you are author or assignee. Results are grouped by project for easy scanning. Use this to get a personal MR dashboard without specifying a project.

username
GitLab username to query

Try in the inspector

My Pending Reviews

my_pending_reviews

Show all open merge requests where you are assigned as reviewer across all projects. Helps track which MRs are waiting for your review. Results grouped by project.

username
GitLab username to query

Try in the inspector

Project Activity Report

project_activity_report

Generate a project activity report including recent events, merged MRs, and open issues. Shows daily activity chart and contributor breakdown.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')
days
Number of days to look back (default: 7)

Try in the inspector

Project Contributors

project_contributors

Rank project contributors by commits, additions, and deletions. Uses the repository contributors API for accurate stats.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')

Try in the inspector

Project Health Check

project_health_check

Comprehensive project health assessment combining latest pipeline status, open merge requests, and branch hygiene (merged/stale branch counts). Provides actionable recommendations for project maintenance.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')

Try in the inspector

Release Cadence

release_cadence

Analyze release frequency for a project. Shows time between releases, average cadence, and release history chart.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')
days
Number of days to look back (default: 90)

Try in the inspector

Release Readiness

release_readiness

Check readiness of a release branch by analyzing open MRs targeting it, draft/conflict counts, and unresolved discussion threads.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')
branch
Target release branch (default: main)

Try in the inspector

Review MR

review_mr

Generate a structured code review for a merge request. Files are categorized by risk (high-risk, business logic, tests, documentation) with per-file metrics, branch context, and a review plan. Full diffs are included without truncation.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')
merge_request_iid · required
Merge request IID (project-scoped numeric ID, visible as !N in GitLab)

Try in the inspector

Reviewer Workload

reviewer_workload

Analyze review distribution across group members. Shows how many open MRs each member is reviewing and identifies imbalances. Useful for managers to ensure fair review distribution.

group_id · required
GitLab group ID (numeric) or URL-encoded path (e.g. 'my-group' or 'parent/child')

Try in the inspector

Stale Items Report

stale_items_report

Find MRs and issues in a project that haven't been updated for a configurable number of days. Helps identify forgotten or blocked items.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')
stale_days
Days without update to consider stale (default: 14)

Try in the inspector

Suggest MR Reviewers

suggest_mr_reviewers

Suggest suitable merge request reviewers based on the files changed and the list of active project members. Excludes the MR author and asks the model to consider ownership, approval-rule fit, and workload balance.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')
merge_request_iid · required
Merge request IID (project-scoped numeric ID, visible as !N in GitLab)

Try in the inspector

Summarize MR Changes

summarize_mr_changes

Summarize the changed files and key modifications in a merge request. Lists each file with its change type (new/modified/deleted/renamed). Use this to quickly understand the scope of a merge request.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')
merge_request_iid · required
Merge request IID (project-scoped numeric ID, visible as !N in GitLab)

Try in the inspector

Summarize Open MRs

summarize_open_mrs

Summarize all open merge requests in a project including title, author, branches, age in days, and merge status. Highlights stale MRs (>7 days) and blockers. For one target branch, use branch_mr_summary.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')

Try in the inspector

Summarize Pipeline Status

summarize_pipeline_status

Summarize the latest CI/CD pipeline status for a project. Groups jobs by outcome (failed/passed/other) and includes failure reasons for debugging.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')

Try in the inspector

Team Member Workload

team_member_workload

Generate a comprehensive workload summary for a specific team member over a configurable time period. Includes contribution events, authored and assigned merge requests, MRs under review, authored and assigned issues. Use this for team management and capacity planning.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')
username · required
GitLab username of the team member to analyze
days
Number of days to look back for activity (default: 7)

Try in the inspector

Team Overview

team_overview

Generate a team dashboard showing all group members with their open MR counts and recently merged MRs. Includes a workload distribution pie chart. Requires a GitLab group ID.

group_id · required
GitLab group ID (numeric) or URL-encoded path (e.g. 'my-group' or 'parent/child')
days
Number of days to look back (default: 7)

Try in the inspector

Unassigned Items

unassigned_items

Find open MRs and issues in a project that have no assignee. Helps identify ownership gaps and items needing attention.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')

Try in the inspector

User Activity Report

user_activity_report

Generate a detailed activity report for a specific user: contribution events, merged MRs, reviewed MRs, daily activity chart. Designed for managers to review team member productivity.

username · required
GitLab username to report on
days
Number of days to look back (default: 7)

Try in the inspector

User Stats

user_stats

Generate comprehensive user statistics from GitLab: contribution events breakdown, merge request stats (authored/assigned/reviewed by state), issue stats (authored/assigned by state), daily activity trends, and a Mermaid activity chart. Use this for performance reviews, productivity tracking, or personal dashboards.

project_id · required
Project ID (numeric) or URL-encoded path (e.g. 'group/project')
username
GitLab username to generate stats for (defaults to the authenticated user if omitted)
days
Number of days to look back for activity (default: 30)

Try in the inspector

Weekly Team Recap

weekly_team_recap

Generate a comprehensive weekly recap for a team. Combines merged MRs, open MRs, issues activity, and events into a single summary with Mermaid charts.

group_id · required
GitLab group ID (numeric) or URL-encoded path (e.g. 'my-group' or 'parent/child')
days
Number of days to look back (default: 7)

Try in the inspector

Resources (8)

All Groups

gitlab://groups

Groups accessible to the authenticated user, up to one page (100). Returns each group's ID, name, full path, description, visibility level, and web URL.

Try in the inspector

Code Review Guide

gitlab://guides/code-review

Code review checklist and best practices for GitLab merge request reviews.

Try in the inspector

Conventional Commits Guide

gitlab://guides/conventional-commits

Conventional commit message format and examples for consistent Git history.

Try in the inspector

Git Workflow Guide

gitlab://guides/git-workflow

Best practices for Git branching strategies with GitLab (feature branches, trunk-based, GitLab Flow).

Try in the inspector

Merge Request Hygiene Guide

gitlab://guides/merge-request-hygiene

Guidelines for creating and reviewing high-quality merge requests.

Try in the inspector

Pipeline Troubleshooting Guide

gitlab://guides/pipeline-troubleshooting

Common GitLab CI/CD pipeline issues and how to diagnose and fix them.

Try in the inspector

Tool Manifest

gitlab://tools

Surface-aware manifest of the tools and executable actions available in this server instance. Use gitlab://tools/{id} to fetch one entry's accepted call shape and input schema.

Try in the inspector

Current User Profile

gitlab://user/current

Get the currently authenticated GitLab user profile. Returns username, display name, email, state (active/blocked), admin status, and web URL.

Try in the inspector

Resource templates (37)

Parameterised resources: the same shape as the resources above, with a placeholder in the URI a client fills in before reading it.

Group Details

gitlab://group/{group_id}

  • subscribable

Get details for a specific GitLab group by numeric ID or URL-encoded path. Returns name, full path, description, visibility, and web URL. Subscribable: subscriptions/listen (protocol 2026-07-28). Resources/subscribe on stateful sessions.

Group Label Details

gitlab://group/{group_id}/label/{label_id}

  • subscribable

Get details for a single group label by numeric ID or name. Returns id, name, color, description, and open issue/MR counts. Subscribable: subscriptions/listen (protocol 2026-07-28). Resources/subscribe on stateful sessions.

Group Members

gitlab://group/{group_id}/members

Members of a GitLab group, up to one page (100), with their access levels (10=guest, 20=reporter, 30=developer, 40=maintainer, 50=owner). Includes inherited members.

Group Milestone Details

gitlab://group/{group_id}/milestone/{milestone_iid}

  • subscribable

Get details for a single group milestone by IID. Returns id, iid, title, description, state, due date, and web URL. Subscribable: subscriptions/listen (protocol 2026-07-28). Resources/subscribe on stateful sessions.

Group Projects

gitlab://group/{group_id}/projects

Projects within a GitLab group, up to one page (100). Returns each project's ID, name, namespace path, visibility, web URL, description, and default branch.

Project Metadata

gitlab://project/{project_id}

  • subscribable

Get basic metadata for a GitLab project by numeric ID or URL-encoded path. Returns name, namespace path, visibility, web URL, description, and default branch. Subscribable: subscriptions/listen (protocol 2026-07-28). Resources/subscribe on stateful sessions.

Board Details

gitlab://project/{project_id}/board/{board_id}

  • subscribable

Get details for a single project issue board by numeric ID. Returns id and name. Subscribable: subscriptions/listen (protocol 2026-07-28). Resources/subscribe on stateful sessions.

Branch Details

gitlab://project/{project_id}/branch/{branch}

  • subscribable

Get details for a single repository branch. Returns name, protection status, merge status, default flag, and web URL. Subscribable: subscriptions/listen (protocol 2026-07-28). Resources/subscribe on stateful sessions.

Project Branches

gitlab://project/{project_id}/branches

Branches in a GitLab project, up to one page (100). Returns each branch's name, protection status, merge status, default flag, and web URL.

Commit Details

gitlab://project/{project_id}/commit/{sha}

Get details for a single commit by SHA. Returns short_id, title, message, author, committer, authored/committed dates, parent commits, web URL, and stats (additions/deletions).

Deploy Key Details

gitlab://project/{project_id}/deploy_key/{deploy_key_id}

  • subscribable

Get details for a single project deploy key by numeric ID. Returns id, title, key, and fingerprint. Subscribable: subscriptions/listen (protocol 2026-07-28). Resources/subscribe on stateful sessions.

Deployment Details

gitlab://project/{project_id}/deployment/{deployment_id}

  • subscribable

Get details for a single project deployment by numeric ID. Returns id, iid, ref, sha, status, and environment name. Subscribable: subscriptions/listen (protocol 2026-07-28). Resources/subscribe on stateful sessions.

Environment Details

gitlab://project/{project_id}/environment/{environment_id}

  • subscribable

Get details for a single project environment by numeric ID. Returns id, name, slug, state, and tier. Subscribable: subscriptions/listen (protocol 2026-07-28). Resources/subscribe on stateful sessions.

Feature Flag Details

gitlab://project/{project_id}/feature_flag/{name}

  • subscribable

Get details for a single project feature flag by name. Returns name, description, active, and version. Subscribable: subscriptions/listen (protocol 2026-07-28). Resources/subscribe on stateful sessions.

Repository File

gitlab://project/{project_id}/file/{ref}/{+path}

  • subscribable

Get the contents of a repository file at a specific ref (branch, tag, or SHA). Path may include slashes. Files over 1 MiB return metadata only with truncated=true. Binary files return metadata with empty content. Subscribable: subscriptions/listen (protocol 2026-07-28). Resources/subscribe on stateful sessions.

Issue Details

gitlab://project/{project_id}/issue/{issue_iid}

  • subscribable

Get details of a specific issue by its IID (project-scoped ID). Returns title, state, labels, assignees, author, web URL, and creation date. Subscribable: subscriptions/listen (protocol 2026-07-28). Resources/subscribe on stateful sessions.

Project Issues

gitlab://project/{project_id}/issues

Open issues for a GitLab project, up to one page (100). Returns each issue's IID, title, state, labels, assignees, author, web URL, and creation date.

Job Details

gitlab://project/{project_id}/job/{job_id}

  • subscribable

Get details for a single CI job by numeric ID. Returns id, name, stage, status, ref, duration, and web URL. Subscribable: subscriptions/listen (protocol 2026-07-28). Resources/subscribe on stateful sessions.

Label Details

gitlab://project/{project_id}/label/{label_id}

  • subscribable

Get details for a single project label by numeric ID or label name. Returns id, name, color, description, and open issue/MR counts. Subscribable: subscriptions/listen (protocol 2026-07-28). Resources/subscribe on stateful sessions.

Project Labels

gitlab://project/{project_id}/labels

Labels defined in a GitLab project, up to one page (100). Returns each label's name, color, description, and counts of open issues and merge requests using the label.

Project Members

gitlab://project/{project_id}/members

Members of a GitLab project, up to one page (100), with their access levels (10=guest, 20=reporter, 30=developer, 40=maintainer, 50=owner). Includes inherited members from parent groups.

Milestone Details

gitlab://project/{project_id}/milestone/{milestone_iid}

  • subscribable

Get details for a single project milestone by IID. Returns id, iid, title, description, state, due date, and web URL. Subscribable: subscriptions/listen (protocol 2026-07-28). Resources/subscribe on stateful sessions.

Project Milestones

gitlab://project/{project_id}/milestones

Milestones in a GitLab project, up to one page (100). Returns each milestone's title, description, state (active/closed), due date, and web URL.

Merge Request Details

gitlab://project/{project_id}/mr/{merge_request_iid}

  • subscribable

Get details of a specific merge request by its IID (project-scoped ID). Returns title, state, source/target branches, author, merge status, and web URL. Subscribable: subscriptions/listen (protocol 2026-07-28). Resources/subscribe on stateful sessions.

Merge Request Discussions

gitlab://project/{project_id}/mr/{merge_request_iid}/discussions

  • subscribable

List discussion threads on a merge request. Returns up to one page of 100 discussions. A busier merge request has more than this resource shows. Each discussion has an id, individual_note flag, and an array of notes (id, author, body, system, resolved/resolvable, created_at). Subscribable: subscriptions/listen (protocol 2026-07-28). Resources/subscribe on stateful sessions.

Merge Request Notes

gitlab://project/{project_id}/mr/{merge_request_iid}/notes

  • subscribable

List notes (comments) on a merge request. Returns up to one page of 100 notes, newest ordering as GitLab returns it. A busier merge request has more than this resource shows. Each note carries id, author username, body, system flag, resolvable/resolved flags, and timestamps. Subscribable: subscriptions/listen (protocol 2026-07-28). Resources/subscribe on stateful sessions.

Pipeline Details

gitlab://project/{project_id}/pipeline/{pipeline_id}

  • subscribable

Get details of a specific CI/CD pipeline by its numeric ID. Returns pipeline status, ref, SHA, source, and web URL. Subscribable: subscriptions/listen (protocol 2026-07-28). Resources/subscribe on stateful sessions.

Pipeline Jobs

gitlab://project/{project_id}/pipeline/{pipeline_id}/jobs

  • subscribable

Jobs for a specific CI/CD pipeline, up to one page (100), including each job's name, stage, status, duration, failure reason (if failed), and web URL. Subscribable: subscriptions/listen (protocol 2026-07-28). Resources/subscribe on stateful sessions.

Latest Pipeline

gitlab://project/{project_id}/pipelines/latest

  • subscribable

Get the most recent CI/CD pipeline for a GitLab project. Returns pipeline ID, status (running/pending/success/failed/canceled), ref, SHA, source, and web URL. Subscribable: subscriptions/listen (protocol 2026-07-28). Resources/subscribe on stateful sessions.

Release Details

gitlab://project/{project_id}/release/{tag_name}

  • subscribable

Get details for a single GitLab release by tag name. Returns tag_name, name, description, author, creation/release dates. Subscribable: subscriptions/listen (protocol 2026-07-28). Resources/subscribe on stateful sessions.

Project Releases

gitlab://project/{project_id}/releases

Releases for a GitLab project, up to one page (100). Returns each release's tag name, name, description, author, and creation/release dates.

Project Snippet Details

gitlab://project/{project_id}/snippet/{snippet_id}

  • subscribable

Get details for a single project snippet by numeric ID. Returns id, title, file_name, description, visibility, and web URL. Subscribable: subscriptions/listen (protocol 2026-07-28). Resources/subscribe on stateful sessions.

Tag Details

gitlab://project/{project_id}/tag/{tag_name}

  • subscribable

Get details for a single Git tag. Returns name, target commit SHA, annotation message, and protection status. Subscribable: subscriptions/listen (protocol 2026-07-28). Resources/subscribe on stateful sessions.

Project Tags

gitlab://project/{project_id}/tags

Repository tags for a GitLab project, up to one page (100). Returns each tag's name, message, target commit SHA, protection status, and creation date.

Wiki Page

gitlab://project/{project_id}/wiki/{slug}

  • subscribable

Get a wiki page by slug. Returns title, slug, format (markdown/rdoc/asciidoc/org), and raw content. Slugs are case-sensitive and use hyphens for spaces. Subscribable: subscriptions/listen (protocol 2026-07-28). Resources/subscribe on stateful sessions.

Snippet Details

gitlab://snippet/{snippet_id}

  • subscribable

Get details for a single personal/global snippet by numeric ID. Returns id, title, file_name, description, visibility, and web URL. Subscribable: subscriptions/listen (protocol 2026-07-28). Resources/subscribe on stateful sessions.

Tool Detail

gitlab://tools/{id}

Accepted call shape and input schema for one entry from gitlab://tools. Replace {id} with an entry ID from the active surface, such as project.get in dynamic mode, gitlab_project.get in meta mode, or gitlab_get_project in individual mode.

Subscriptions

Whether a client can watch a resource for changes instead of polling it, and which of the URI templates above accept a subscription — those carry a chip.

resources/subscribe
Not available on this deployment · requires: stateful sessions (--stateless=false)
subscriptions/listen
Available on this deployment · since protocol 2026-07-28

This page was last updated on