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 |
|---|---|
| search_repositoriesC | Search for GitLab projects and repositories (optionally filtered by group) |
| get_projectB | Get comprehensive project metadata, description, default branch, and statistics |
| create_repositoryC | Create a new GitLab project/repository (supports groups/namespaces and empty repos) |
| update_projectC | Update project metadata (description, name, default branch, visibility, topics) |
| delete_projectB | Delete a project/repository (requires explicit name confirmation for safety) |
| get_file_contentsC | Read file or directory content from a project repository |
| create_or_update_fileC | Create or update a single file in a GitLab repository |
| push_filesB | Commit multiple files in a single atomic commit |
| fork_repositoryC | Fork a project into a user or group namespace |
| list_branchesB | List repository branches with commit details, default flag, and protected status |
| get_branchB | Get specific branch details, commit SHA, and protection rules |
| create_branchB | Create a new branch from a commit, tag, or branch |
| delete_branchA | Delete a branch from a project repository (blocks accidental deletion of default branch) |
| list_project_membersB | List project members and collaborators with access levels and roles |
| get_project_memberC | Get details for a specific project member by user ID or username |
| add_project_memberC | Add a user to a project with specified role/access level |
| update_project_memberC | Update a project member's access level role or expiration date |
| remove_project_memberC | Remove a user/collaborator from a project |
| list_project_variablesB | List CI/CD project variables with keys, types, protected/masked flags, and environment scopes |
| get_project_variableC | Get specific CI/CD variable details and value by key |
| create_project_variableC | Create a new CI/CD project variable (env_var or file) |
| update_project_variableC | Update an existing CI/CD project variable's value or configuration |
| delete_project_variableC | Delete a CI/CD project variable by key |
| list_issuesB | List and filter issues by state, milestone, label, assignee, or search with clean summaries |
| get_issueA | Get comprehensive details for a specific issue by its IID (#) |
| create_issueC | Create a new issue with milestone (by title or ID), labels, assignees, and due date |
| update_issueC | Update issue title, description, state (close/reopen), milestone, labels, or assignees |
| list_issue_notesC | List discussions, comments, and activity log on an issue |
| create_issue_noteC | Post a comment or progress/verification note to an issue |
| list_issue_linksC | List related, blocking, or blocked-by issue dependencies |
| create_issue_linkC | Create an issue dependency link (relates_to, blocks, is_blocked_by) |
| list_milestonesC | List project milestones (active, closed, all) with start and due dates |
| get_milestoneC | Get details for a specific milestone by ID |
| create_milestoneC | Create a project milestone with due dates and roadmap scope |
| update_milestoneC | Update milestone dates, title, description, or state (close/activate) |
| list_labelsC | List labels available in the project |
| create_labelC | Create a project label with color and description |
| list_pipelinesC | List CI/CD pipelines filtered by branch, tag, status, or commit SHA |
| get_pipelineB | Get detailed status, duration, and commit info for a pipeline |
| create_pipelineA | Trigger a new CI/CD pipeline execution for a branch or tag |
| list_pipeline_jobsB | List all jobs (build, test, lint, deploy) and their status in a pipeline |
| get_jobB | Get comprehensive details about a CI/CD job (duration, runner, failure reason, artifacts list) |
| get_job_traceA | Get the terminal output log of a build/test job (supports tailing to diagnose test failures) |
| get_job_artifact_fileC | Download and read a specific file from a job's build artifacts archive |
| get_pipeline_test_reportB | Get JUnit test report summary (total, passed, failed test suites and error details) |
| list_releasesC | List published project releases and version changelogs |
| get_releaseB | Get release details by tag name |
| create_releaseC | Publish a formal release with tag, description/changelog, and associated milestones |
| list_tagsC | List git tags in the repository |
| create_tagC | Create a git tag pointing to a branch or commit |
| list_merge_requestsC | List merge requests filtered by state, branches, milestone, or labels |
| get_merge_requestB | Get details and status of a merge request by IID (!) |
| create_merge_requestC | Create a merge request between branches with description and options |
| update_merge_requestC | Update MR title, description, state (close/reopen), target branch, milestone, or labels |
| get_merge_request_changesB | Inspect code diffs and modified files in an MR (supports token-saving summary, file filtering, and lockfile pruning) |
| list_merge_request_discussionsC | List inline code review discussions and threads on an MR (supports unresolved_only filter) |
| create_diff_discussionA | Post an inline code review comment on a specific line and file in an MR (resolves SHAs automatically) |
| reply_merge_request_discussionB | Post a reply comment into an existing MR code review discussion thread |
| update_merge_request_discussion_noteB | Update or edit the text of an existing review comment in an MR discussion thread |
| resolve_merge_request_discussionB | Resolve or unresolve a code review discussion thread on an MR |
| accept_merge_requestB | Merge an approved merge request into the target branch |
| create_merge_request_noteB | Post a general review comment or note on a merge request |
| list_wikisB | List all wiki pages in a GitLab project (slugs, titles, and formats) |
| get_wikiA | Get wiki page content, structured Table of Contents (toc_only), or a specific chapter/section by heading |
| create_wikiC | Create a new wiki page in a GitLab project |
| update_wikiB | Update an existing wiki page's content or title in a GitLab project |
| list_snippetsC | List code snippets in a GitLab project with visibility and author details |
| get_snippetB | Get code snippet details and raw file content by snippet ID |
| create_snippetC | Create a new code snippet in a GitLab project |
| update_snippetC | Update an existing code snippet's content, title, file name, or visibility |
| get_current_userA | Get the profile and identity of the authenticated user (username, ID, name, email) |
| list_my_groupsB | List groups the authenticated user is a member or owner of |
| get_groupB | Get comprehensive group details, metadata, visibility, and description by group ID or path |
| list_group_projectsC | List all projects and repositories belonging to a specific group or organization |
| list_my_projectsB | List projects the authenticated user participates in, owns, or has starred |
| list_commitsC | List commit history for a project, branch, or specific file path |
| get_commitB | Get commit details, author info, stats, changed file list, and selective file diffs |
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 77 tools
Most tools target distinct resource+action pairs, and descriptions clarify boundaries well (e.g., get_job vs get_job_trace vs get_job_artifact_file). However, the merge-request comment tools (create_diff_discussion, reply_merge_request_discussion, create_merge_request_note) and multiple project/member listing tools require careful reading, creating some misselection risk.
Almost all tools follow a predictable snake_case verb_noun pattern (list_issues, get_project, create_branch, delete_project_variable). Minor deviations include create_or_update_file, push_files, accept_merge_request, and remove_project_member instead of delete_project_member, but the overall convention is clear.
77 tools is an extreme count for an MCP server, far exceeding practical limits and imposing heavy selection burden on an agent. Even though GitLab is a broad platform, this surface likely needs consolidation into fewer, higher-level tools.
Core development workflows (issues, merge requests, pipelines, commits) are reasonably covered, but many resources lack full CRUD: labels have only list/create, tags only list/create, and wikis, snippets, releases, and milestones lack delete or full update operations. Group management and pipeline/job cancel/retry operations are also missing, creating dead ends for common administrative tasks.