MCP-gitlab
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GITLAB_API_URL | No | Base API URL of your GitLab CE/EE or cloud instance. | https://gitlab.com/api/v4 |
| GITLAB_READ_ONLY | No | Enable Read-Only safety mode (`true`, `1`, `yes`). Filters out mutating tools and strictly blocks write/modify HTTP requests. | false |
| GITLAB_PERSONAL_ACCESS_TOKEN | Yes | Personal access token with `api` scope. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| gitlab_find_actionsA | Search and discover available GitLab operations on-demand across the entire platform. Returns matching action names, purpose descriptions, and parameter schemas for use with 'gitlab_execute_action'. Keeps prompt context minimal (<500 tokens) while retaining 100% coverage. |
| gitlab_execute_actionB | Execute any discovered GitLab platform action with input validation and token-optimized response projection. Dispatches directly to the corresponding API endpoint while enforcing read-only safety restrictions. |
| get_file_contentsA | Read the raw content of a specific file or directory tree from a repository at a designated branch, tag, or commit ref. Use when inspecting current repository source code or configs. Do NOT use for reviewing diffs between branches (use 'get_merge_request_changes') or viewing commit diffs (use 'get_commit'). |
| get_projectA | Retrieve comprehensive metadata for a specific GitLab project, including default branch, repository statistics, visibility, and topic tags. Use to inspect repository settings or verify project access. Do NOT use to inspect directory trees or source code; use 'get_file_contents' instead. |
| get_commitA | Retrieve comprehensive details for a specific Git commit SHA, including author info, statistics, modified files, and selective unified file diffs. Use to inspect exact code changes made in a commit. Supports file_path filtering and line limits to prevent context exhaustion on large commits. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 5 tools
The three get_* tools target distinct resources (file, project, commit) with clear exclusions. However, gitlab_execute_action can perform the same operations as the specific getters, creating overlap; the find/execute pair is distinct from the getters but the generic executor's broad scope can cause indecision.
Three tools use snake_case verb_noun without a prefix; two use a gitlab_ prefix with verb_noun. The core convention is consistent, but the prefix split and find_actions/execute_action (plural vs singular) are minor deviations.
5 tools is well within the typical 3-15 range. The discovery+execute pattern allows broad platform coverage with a minimal surface, so each tool earns its place.
The server covers read-only GitLab operations: three specific getters plus dynamic discovery and execution of any read-only action, claiming 100% coverage. No write operations exist, but the read-only constraint is consistently enforced, so the surface is complete for its apparent scope.