Skip to content

Resources & Prompts

Beyond tools, GitLab MCP Server exposes resources and prompts — two additional MCP primitives that provide context and reusable templates to AI assistants. Tools perform actions; resources supply read-only context on demand; prompts package a data-gathering workflow into a single reusable template.

MCP resources provide read-only context data that clients can request at any time without invoking a tool. Resources are useful for supplying background information — a project’s metadata, members, labels, or latest pipeline — that helps the LLM make better decisions before it acts.

The server exposes 45 resources across several categories:

ResourceDescription
gitlab://user/currentCurrent authenticated user profile (username, email, state, admin status)
gitlab://groupsAll GitLab groups accessible to the authenticated user
gitlab://toolsSurface-aware manifest of visible tools and executable entries
ResourceDescription
gitlab://tools/{id}Accepted call shape and input schema for one entry from gitlab://tools

Use the tool manifest resources when a client needs the exact parameter shape for a meta-tool action without expanding every schema in tools/list, or when it wants to enumerate dynamic and individual entries in a consistent format.

  1. Read gitlab://tools to get the active surface, visible tools, and executable entries.
  2. Replace {id} in gitlab://tools/{id} to read the JSON Schema and call shape for that entry.
  3. Call the meta-tool with the normal { "action": "...", "params": { ... } } envelope.

For example, gitlab://tools/gitlab_merge_request.create returns the parameter schema and call shape for the create action of gitlab_merge_request. These manifest resources are available with CAPABILITY_SURFACE=full or minimal, regardless of META_PARAM_SCHEMA mode. Dynamic clients can also use gitlab_find_action for ranked discovery and inline schemas.

ResourceDescription
gitlab://project/{project_id}Project metadata (name, namespace, visibility, default branch)
gitlab://project/{project_id}/membersProject members with access levels (guest, reporter, developer, maintainer, owner)
gitlab://project/{project_id}/labelsProject labels with colors, descriptions, and issue/MR counts
gitlab://project/{project_id}/milestonesProject milestones with state, due dates, and web URLs
gitlab://project/{project_id}/branchesBranches with protection status, merge status, and default flag
gitlab://project/{project_id}/branch/{branch}Single branch by name
gitlab://project/{project_id}/issuesOpen issues with labels, assignees, author, and creation date
gitlab://project/{project_id}/releasesAll releases with tag names, descriptions, and dates
gitlab://project/{project_id}/release/{tag_name}Single release by tag
gitlab://project/{project_id}/tagsRepository tags with messages, commit SHAs, and protection status
gitlab://project/{project_id}/tag/{tag_name}Single tag by name
gitlab://project/{project_id}/commit/{sha}Single commit by SHA (stats, message, author)
gitlab://project/{project_id}/file/{ref}/{+path}File contents at a ref (branch, tag, or SHA)
gitlab://project/{project_id}/wiki/{slug}Wiki page by slug
gitlab://project/{project_id}/label/{label_id}Single project label
gitlab://project/{project_id}/milestone/{milestone_iid}Single project milestone
gitlab://project/{project_id}/board/{board_id}Single issue board
gitlab://project/{project_id}/deployment/{deployment_id}Single deployment
gitlab://project/{project_id}/environment/{environment_id}Single environment
gitlab://project/{project_id}/job/{job_id}Single CI/CD job
gitlab://project/{project_id}/feature_flag/{name}Single feature flag
gitlab://project/{project_id}/deploy_key/{deploy_key_id}Single deploy key
gitlab://project/{project_id}/snippet/{snippet_id}Project-scoped snippet
ResourceDescription
gitlab://project/{project_id}/issue/{issue_iid}Single issue details (title, state, labels, assignees, web URL)
gitlab://project/{project_id}/mr/{merge_request_iid}Single merge request details (title, state, branches, author, merge status)
gitlab://project/{project_id}/mr/{merge_request_iid}/notesNotes on a merge request
gitlab://project/{project_id}/mr/{merge_request_iid}/discussionsDiscussion threads on a merge request
ResourceDescription
gitlab://project/{project_id}/pipelines/latestMost recent pipeline (status, ref, SHA, source, web URL)
gitlab://project/{project_id}/pipeline/{pipeline_id}Specific pipeline details by numeric ID
gitlab://project/{project_id}/pipeline/{pipeline_id}/jobsAll jobs for a pipeline (name, stage, status, duration, failure reason)
ResourceDescription
gitlab://group/{group_id}Group details (name, path, description, visibility)
gitlab://group/{group_id}/membersGroup members with access levels, including inherited members
gitlab://group/{group_id}/projectsProjects within a group (ID, name, namespace, visibility)
gitlab://group/{group_id}/label/{label_id}Single group label
gitlab://group/{group_id}/milestone/{milestone_iid}Single group milestone
ResourceDescription
gitlab://snippet/{snippet_id}Personal (user) snippet

Static best-practice guides for AI assistants — no API calls required.

ResourceDescription
gitlab://guides/git-workflowGit branching strategy, commit hygiene, and merge best practices
gitlab://guides/merge-request-hygieneMR sizing, descriptions, review workflow, and merge strategies
gitlab://guides/conventional-commitsConventional Commits specification with GitLab-specific examples
gitlab://guides/code-reviewStructured code review checklist (quality, security, testing)
gitlab://guides/pipeline-troubleshootingCI/CD debugging guide: common failures, job logs, retry strategies

MCP clients can request resources at any time using the resources/read method:

{
"method": "resources/read",
"params": {
"uri": "gitlab://user/current"
}
}

The server returns the resource content as structured JSON data.

To inspect accepted call shapes, read the surface-aware tool manifest first and then the action schema:

{
"method": "resources/read",
"params": {
"uri": "gitlab://tools"
}
}
{
"method": "resources/read",
"params": {
"uri": "gitlab://tools/gitlab_merge_request.create"
}
}

MCP prompts are reusable templates that guide AI assistants through common workflows. When a client requests a prompt, the server collects the relevant data from GitLab and returns structured context that the LLM uses to produce a high-quality output — a code review, a release-notes draft, or a team report — without the user re-explaining the task each time.

The server provides 37 prompt templates organized into categories:

Merge request analysis, project overview, and personal productivity.

PromptDescription
summarize_mr_changesSummarize changed files and modifications in a merge request
review_mrStructured code review with risk categorization and per-file metrics
suggest_mr_reviewersSuggest reviewers based on changed files and active project members
mr_risk_assessmentAssess MR risk level (LOW/MEDIUM/HIGH/CRITICAL) based on size, files, and sensitive patterns
summarize_pipeline_statusLatest CI/CD pipeline status with failure reasons
summarize_open_mrsAll open MRs with age and merge status, highlighting stale MRs
project_health_checkComprehensive health assessment (pipeline, MRs, branch hygiene)
generate_release_notesRelease notes from commits between two Git refs
compare_branchesCompare two branches showing commit differences and file changes
daily_standupDaily standup summary from GitLab activity (done/planned/blockers)
team_member_workloadWorkload summary for a team member over configurable time period
user_statsUser statistics with contribution events, MR/issue stats, and activity chart

Personal dashboards that aggregate across all accessible projects.

PromptDescription
my_open_mrsAll open MRs where you are author or assignee
my_pending_reviewsAll open MRs assigned to you as reviewer
my_issuesAll issues assigned to you with overdue detection
my_activity_summaryPersonal activity summary across projects for N days

Group-level team management prompts.

PromptDescription
user_activity_reportDetailed activity report for a specific user (for managers)
team_overviewTeam dashboard with open MR counts and workload pie chart
group_mr_dashboardAll MRs for a group with state and target branch filters
reviewer_workloadReview distribution analysis to identify workload imbalances

Project-level analysis and reporting.

PromptDescription
branch_mr_summaryAll MRs targeting a branch with readiness summary
project_activity_reportProject activity report with events, merged MRs, and open issues
mr_discussion_healthDiscussion health of open MRs (unresolved thread counts)
unassigned_itemsFind open MRs and issues without assignees
stale_items_reportMRs and issues not updated for N days (default: 14)

Velocity and release analytics.

PromptDescription
merge_velocityMR throughput, average time-to-merge, and daily chart
release_readinessRelease branch readiness (open MRs, conflicts, drafts)
release_cadenceRelease frequency analysis with cadence chart
weekly_team_recapComprehensive weekly recap combining MRs, issues, events

Milestone tracking and label analysis.

PromptDescription
milestone_progressMilestone progress with completion percentage and due date risk
label_distributionLabel usage distribution (open/closed issues, open MRs per label)
group_milestone_progressMilestone progress across all projects in a group
project_contributorsRank contributors by commits, additions, and deletions

Commit history and MR authoring quality.

PromptDescription
audit_commit_hygieneCommit message and history quality between two Git refs
mr_description_qualityMR description readiness: context, linked work, tests, and risk notes

Project configuration audit prompts.

PromptDescription
audit_project_workflowAudit labels, milestones, issue/MR templates
audit_project_fullComprehensive audit combining all categories with a scorecard

Prompts are requested via the prompts/get MCP method:

{
"method": "prompts/get",
"params": {
"name": "review_mr",
"arguments": {
"project_id": "my-group/my-project",
"merge_request_iid": "42"
}
}
}

The server returns a structured prompt with context-aware content that the LLM uses to guide its workflow.

VariableDefaultDescription
CAPABILITY_SURFACEfullfull registers resources, workflow guides, prompts, and gitlab://tools; minimal keeps gitlab://tools

What is the difference between resources, prompts, and tools?

Section titled “What is the difference between resources, prompts, and tools?”

GitLab MCP Server exposes three MCP primitives. Tools perform actions, such as creating an issue or merging a request. Resources provide read-only context data — a project’s metadata or members, for example — that a client can request at any time without invoking a tool. Prompts are reusable templates that collect GitLab data and return structured context to guide a workflow. In short, resources and prompts add context, while tools change state.

What is the difference between a static resource and a resource template?

Section titled “What is the difference between a static resource and a resource template?”

A static resource is a fixed URI that always points to the same thing, such as gitlab://user/current. A resource template contains placeholders like {project_id} or {group_id} that the client fills in at request time to read a specific project, group, issue, or merge request. MCP lists fixed resources through resources/list and templates through resources/templates/list, so a client that inspects only resources/list sees the 45 resources as 8 fixed URIs plus 37 templates.

Yes. The CAPABILITY_SURFACE setting controls which capabilities are registered. The default full registers resources, workflow guides, prompts, and the surface-aware gitlab://tools manifest. Setting CAPABILITY_SURFACE=minimal keeps only the gitlab://tools manifest — useful when a client does not consume resources or prompts and you want a smaller capability surface.

How many resources and prompts are available?

Section titled “How many resources and prompts are available?”

The server exposes 45 resources (8 fixed URIs plus 37 URI templates) and 37 prompt templates organized into categories such as core MR analysis, cross-project dashboards, team reports, analytics, and audits. The exact counts are generated from the server’s live capability registration, so this page stays in sync with the running server.