Skip to content

Latest commit

 

History

History
136 lines (102 loc) · 20.3 KB

File metadata and controls

136 lines (102 loc) · 20.3 KB

MCP Resources Reference

This document lists the MCP resources exposed by gitlab-mcp-server. With the default TOOL_SURFACE=dynamic and CAPABILITY_SURFACE=full, the server exposes 45 MCP resources: GitLab data resources, workflow guides, and a surface-aware tool manifest. Meta and individual modes expose the same public resource shape; the gitlab://tools manifest adapts its payload to the active tool surface selected at startup.

Diátaxis type: Reference Audience: MCP client developers, AI assistant users Prerequisites: Understanding of MCP resources concept

GitLab data resources and tool manifest resources return application/json. Workflow guide resources return text/markdown.

MCP separates fixed resources from URI templates. In default dynamic full mode, resources/list exposes 9 fixed URIs: the 4 static resources below and the 5 workflow guides. resources/templates/list exposes the remaining 37 URI templates. Registries that only inspect resources/list may therefore report 9 resources statically even though the runtime MCP resource surface contains 46 entries in total.


Static Resources (4 core)

Static resources have a fixed URI and require no parameters.

# Name URI Description
1 current_user gitlab://user/current Get the currently authenticated GitLab user profile. Returns username, display name, email, state (active/blocked), admin status, and web URL.
2 groups gitlab://groups List all GitLab groups accessible to the authenticated user. Returns each group's ID, name, full path, description, visibility level, and web URL.
4 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.

Resource Templates (37 core)

Resource templates use URI variables (e.g., {project_id}) that the client fills in at request time.

Project Resources

# Name URI Template Description
5 project gitlab://project/{project_id} 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.
6 project_members gitlab://project/{project_id}/members List all members of a GitLab project with their access levels (10=guest, 20=reporter, 30=developer, 40=maintainer, 50=owner). Includes inherited members from parent groups.
7 project_labels gitlab://project/{project_id}/labels List all labels defined in a GitLab project. Returns each label's name, color, description, and counts of open issues and merge requests using the label.
8 project_milestones gitlab://project/{project_id}/milestones List all milestones in a GitLab project. Returns each milestone's title, description, state (active/closed), due date, and web URL.
9 project_branches gitlab://project/{project_id}/branches List all branches in a GitLab project. Returns each branch's name, protection status, merge status, default flag, and web URL.
10 project_issues gitlab://project/{project_id}/issues List open issues for a GitLab project. Returns each issue's IID, title, state, labels, assignees, author, web URL, and creation date.
11 project_releases gitlab://project/{project_id}/releases List all releases for a GitLab project. Returns each release's tag name, name, description, author, and creation/release dates.
12 project_tags gitlab://project/{project_id}/tags List all repository tags for a GitLab project. Returns each tag's name, message, target commit SHA, protection status, and creation date.
13 commit 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/total).
14 file_blob gitlab://project/{project_id}/file/{ref}/{+path} 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.
15 wiki_page gitlab://project/{project_id}/wiki/{slug} 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.
16 branch gitlab://project/{project_id}/branch/{branch} Get a single branch by name. Returns name, protected/default flags, merge status, last commit, and web URL.
17 tag gitlab://project/{project_id}/tag/{tag_name} Get a single repository tag by name. Returns name, message, target SHA, protection flag, and creation date.
18 release gitlab://project/{project_id}/release/{tag_name} Get release details by tag name. Returns name, description, author, dates, and asset summary.
19 label gitlab://project/{project_id}/label/{label_id} Get a single project label. Returns name, color, description, and open issue/MR counts.
20 milestone gitlab://project/{project_id}/milestone/{milestone_iid} Get a single project milestone by IID. Returns title, description, state, due date, and web URL.
21 board gitlab://project/{project_id}/board/{board_id} Get a single issue board by ID. Returns name and lists.
22 deployment gitlab://project/{project_id}/deployment/{deployment_id} Get a deployment by ID. Returns ref, sha, status, and target environment.
23 environment gitlab://project/{project_id}/environment/{environment_id} Get an environment by ID. Returns name, slug, state, and tier.
24 job gitlab://project/{project_id}/job/{job_id} Get a single CI/CD job by ID. Returns name, stage, status, ref, duration, and web URL.
25 feature_flag gitlab://project/{project_id}/feature_flag/{name} Get a feature flag by name. Returns description, active flag, and version.
26 deploy_key gitlab://project/{project_id}/deploy_key/{deploy_key_id} Get a project deploy key by ID. Returns title, key, and fingerprint.
27 project_snippet gitlab://project/{project_id}/snippet/{snippet_id} Get a project-scoped snippet. Returns title, file name, visibility, and web URL.

Issue & Merge Request Resources

# Name URI Template Description
28 issue gitlab://project/{project_id}/issue/{issue_iid} Get details of a specific issue by its IID (project-scoped ID). Returns title, state, labels, assignees, author, web URL, and creation date.
29 merge_request gitlab://project/{project_id}/mr/{merge_request_iid} 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.
30 merge_request_notes gitlab://project/{project_id}/mr/{merge_request_iid}/notes List notes (comments) on a merge request. Returns each note's id, author username, body, system flag, resolvable/resolved flags, and timestamps.
31 merge_request_discussions gitlab://project/{project_id}/mr/{merge_request_iid}/discussions List discussion threads on a merge request. Each discussion has an id, individual_note flag, and an array of notes (id, author, body, system, resolved/resolvable, created_at).

CI/CD Resources

# Name URI Template Description
32 latest_pipeline gitlab://project/{project_id}/pipelines/latest 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.
33 pipeline gitlab://project/{project_id}/pipeline/{pipeline_id} Get details of a specific CI/CD pipeline by its numeric ID. Returns pipeline status, ref, SHA, source, and web URL.
34 pipeline_jobs gitlab://project/{project_id}/pipeline/{pipeline_id}/jobs List all jobs for a specific CI/CD pipeline including each job's name, stage, status, duration, failure reason (if failed), and web URL.

Group Resources

# Name URI Template Description
35 group gitlab://group/{group_id} Get details for a specific GitLab group by numeric ID or URL-encoded path. Returns name, full path, description, visibility, and web URL.
36 group_members gitlab://group/{group_id}/members List all members of a GitLab group with their access levels (10=guest, 20=reporter, 30=developer, 40=maintainer, 50=owner). Includes inherited members.
37 group_projects gitlab://group/{group_id}/projects List all projects within a GitLab group. Returns each project's ID, name, namespace path, visibility, web URL, description, and default branch.
38 group_label gitlab://group/{group_id}/label/{label_id} Get a single group label. Returns name, color, description, and open issue/MR counts.
39 group_milestone gitlab://group/{group_id}/milestone/{milestone_iid} Get a single group milestone by IID. Returns title, description, state, due date, and web URL.

Personal Snippet

# Name URI Template Description
40 snippet gitlab://snippet/{snippet_id} Get a personal (user-scoped) snippet. Returns title, file name, visibility, and web URL.

Tool Manifest Detail

# Name URI Template Description
41 tool_detail gitlab://tools/{id} Accepted call shape and input schema for one entry from gitlab://tools. Replace {id} with an entry ID such as project.get in dynamic mode, gitlab_project.get in meta mode, or gitlab_get_project in individual mode.

The tool manifest is the public discovery layer for every tool surface. The normal discovery flow is:

  1. Read gitlab://tools to see the active surface, the tools advertised through tools/list, and the executable entries accepted by that surface.
  2. Read gitlab://tools/{id} for the chosen entry. The response includes call, input_schema, destructive metadata, read-only metadata, and required params when they are known.
  3. Call the indicated MCP tool using the returned call shape.

For example, gitlab://tools/project.get describes a dynamic action that calls gitlab_execute_action with action="project.get" and params under params. gitlab://tools/gitlab_project.get describes a meta-tool action that calls gitlab_project with action="get" and params under params. gitlab://tools/gitlab_get_project describes an individual tool call where arguments are passed directly to the tool.

Workflow Guide Resources (5)

Static best-practice guides that provide AI assistants with GitLab workflow knowledge without requiring API calls.

# Name URI Description
42 guide_git_workflow gitlab://guides/git-workflow Git branching strategy, commit hygiene, and merge best practices for GitLab projects.
43 guide_merge_request_hygiene gitlab://guides/merge-request-hygiene MR best practices: sizing, descriptions, review workflow, and merge strategies.
44 guide_conventional_commits gitlab://guides/conventional-commits Conventional Commits specification with GitLab-specific examples and automation tips.
45 guide_code_review gitlab://guides/code-review Structured code review checklist covering quality, security, testing, and architecture.
46 guide_pipeline_troubleshooting gitlab://guides/pipeline-troubleshooting CI/CD pipeline debugging guide: common failures, job logs, retry strategies, and caching issues.

URI Parameters

Parameter Type Description
project_id string Numeric project ID or URL-encoded path (e.g., group%2Fproject)
group_id string Numeric group ID or URL-encoded path
pipeline_id integer Numeric pipeline ID
merge_request_iid integer Merge request IID (project-scoped numeric ID, visible as !N in GitLab)
issue_iid integer Issue IID (project-scoped numeric ID, visible as #N in GitLab)
sha string Commit SHA (full or short)
ref string Branch name, tag name, or commit SHA
path string Repository file path (may contain slashes; uses RFC 6570 reserved expansion {+path})
slug string Wiki page slug (case-sensitive; spaces are replaced with hyphens)

Autocomplete Support

All URI template parameters support intelligent autocomplete via the completions handler (internal/completions/). When a client sends a completion/complete request for a resource parameter, the server queries GitLab to suggest matching values (e.g., project IDs, group IDs).

Source

Resources are implemented in internal/resources/resources.go (GitLab data resources and templates), internal/resources/tool_manifest.go (surface-aware tool manifest), and internal/resources/workflow_guides.go (5 workflow guide resources).