CAT
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Cross AI Tools

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by @mertduzgun

Independent project, not affiliated with Anthropic

Mcp Gitlab

vish288/mcp-gitlab
354 toolsauthSTDIOregistry active
Summary

A comprehensive GitLab API wrapper that exposes 84 tools covering the full development lifecycle. You get project management, merge request workflows with inline code review and multi-line discussion threads, CI/CD pipeline control, approval rule configuration at both project and MR level, and CI/CD variable management for projects and groups. Supports both GitLab.com and self-hosted instances without requiring GitLab Duo or Premium tiers. Works in read-only mode if you want to lock down write operations. Built on FastMCP with clean Pydantic models. Particularly useful for teams managing complex approval workflows or automating pipeline operations across multiple projects, since it handles everything from creating commits with file actions to sequencing merge operations and retrying failed jobs.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Tools

Public tool metadata for what this MCP can expose to an agent.

54 tools
GITLAB_ARCHIVE_PROJECTTool to archive a project. Use when you need to mark a project read-only after finishing active development. Call after confirming no further changes are required.1 params

Tool to archive a project. Use when you need to mark a project read-only after finishing active development. Call after confirming no further changes are required.

Parameters* required
idinteger
The ID or URL-encoded path of the project to archive.
GITLAB_CREATE_GROUPTool to create a new group in GitLab. Use when you need to establish a new group for projects or collaboration.26 params

Tool to create a new group in GitLab. Use when you need to establish a new group for projects or collaboration.

Parameters* required
namestring
The name of the group.
pathstring
The path of the group.
avatarstring
Image file for avatar of the group.
parent_idinteger
The parent group ID for creating nested group.
visibilitystring
The group’s visibility.one of private · internal · public
descriptionstring
The group’s description.
lfs_enabledboolean
Enable/disable Large File Storage (LFS) for the projects in this group.
default_branchstring
The default branch name for group’s projects.
emails_enabledboolean
Enable email notifications.
membership_lockboolean
Users cannot be added to projects in this group. Premium and Ultimate only.
organization_idinteger
The organization ID for the group.
duo_availabilitystring
Duo availability setting. Note: In the UI, never_on is displayed as "Always Off".one of default_on · default_off · never_on
mentions_disabledboolean
Disable the capability of a group from getting mentioned.
wiki_access_levelstring
The wiki access level. Premium and Ultimate only.one of disabled · private · enabled
auto_devops_enabledboolean
Default to Auto DevOps pipeline for all projects within this group.
share_with_group_lockboolean
Prevent sharing a project with another group within this group.
project_creation_levelstring
Determine if developers can create projects in the group.one of administrator · noone · maintainer · developer
request_access_enabledboolean
Allow users to request member access.
subgroup_creation_levelstring
Allowed to create subgroups.one of owner · maintainer
two_factor_grace_periodinteger
Time before Two-factor authentication is enforced (in hours).
enabled_git_access_protocolstring
Enabled protocols for Git access.one of ssh · http · all
experiment_features_enabledboolean
Enable experiment features for this group.
shared_runners_minutes_limitinteger
Can be set by administrators only. Maximum number of monthly compute minutes for this group. Can be nil (default; inherit system default), 0 (unlimited), or > 0. GitLab Self-Managed, Premium and Ultimate only.
require_two_factor_authenticationboolean
Require all users in this group to set up two-factor authentication.
default_branch_protection_defaultsobject
Options for default_branch_protection_defaults. E.g. {"allowed_to_push": [{"access_level":40}], "allow_force_push": False, "allowed_to_merge": [{"access_level":40}], "developer_can_initial_push": False}
extra_shared_runners_minutes_limitinteger
Can be set by administrators only. Additional compute minutes for this group. GitLab Self-Managed, Premium and Ultimate only.
GITLAB_CREATE_PROJECTTool to create a new project in GitLab. Implements POST /projects endpoint.12 params

Tool to create a new project in GitLab. Implements POST /projects endpoint.

Parameters* required
namestring
The name of the project.
pathstring
The path or URL-friendly name for the project.
visibilitystring
Project visibility.one of private · internal · public
descriptionstring
Project description.
namespace_idinteger
The namespace (group or user ID) under which to create the project.
wiki_enabledboolean
Enable wiki feature.
default_branchstring
The default branch name.
issues_enabledboolean
Enable issues feature.
snippets_enabledboolean
Enable snippets feature.
build_git_strategystring
Git strategy for builds.
merge_requests_enabledboolean
Enable merge requests feature.
container_registry_enabledboolean
Enable container registry.
GITLAB_CREATE_PROJECT_ISSUETool to create a new issue in a GitLab project. Use when you need to report a bug, request a feature, or track a task within a specific project.17 params

Tool to create a new issue in a GitLab project. Use when you need to report a bug, request a feature, or track a task within a specific project.

Parameters* required
idstring
The global ID or URL-encoded path of the project.
iidinteger
The internal ID of the project’s issue (requires administrator or project owner rights).
titlestring
The title of an issue.
labelsstring
Comma-separated label names to assign to the new issue. If a label does not already exist, this creates a new project label and assigns it to the issue.
weightinteger
The weight of the issue. Valid values are greater than or equal to 0. Premium and Ultimate only.
epic_idinteger
ID of the epic to add the issue to. Valid values are greater than or equal to 0. Premium and Ultimate only.
due_datestring
The due date. Date time string in the format `YYYY-MM-DD`, for example `2016-03-11`.
epic_iidinteger
IID of the epic to add the issue to. Valid values are greater than or equal to 0. (deprecated, scheduled for removal in API version 5). Premium and Ultimate only.
created_atstring
When the issue was created. Date time string, ISO 8601 formatted, for example `2016-03-11T03:45:40Z`. Requires administrator or project/group owner rights.
issue_typestring
The type of issue. One of `issue`, `incident`, `test_case` or `task`. Default is `issue`.one of issue · incident · test_case · taskdefault: issue
assignee_idinteger
The ID of the user to assign the issue to. Only appears on GitLab Free.
descriptionstring
The description of an issue. Limited to 1,048,576 characters.
assignee_idsarray
The IDs of the users to assign the issue to. Premium and Ultimate only.
confidentialboolean
Set an issue to be confidential. Default is false.default: false
milestone_idinteger
The global ID of a milestone to assign issue. To find the `milestone_id` associated with a milestone, view an issue with the milestone assigned and use the API to retrieve the issue’s details.
discussion_to_resolvestring
The ID of a discussion to resolve. This fills out the issue with a default description and mark the discussion as resolved. Use in combination with `merge_request_to_resolve_discussions_of`.
merge_request_to_resolve_discussions_ofinteger
The IID of a merge request in which to resolve all issues. This fills out the issue with a default description and mark all discussions as resolved. When passing a description or title, these values take precedence over the default values.
GITLAB_CREATE_REPOSITORY_BRANCHTool to create a new branch in a project. Use when you need to create a new branch from an existing branch or a specific commit in a GitLab project.3 params

Tool to create a new branch in a project. Use when you need to create a new branch from an existing branch or a specific commit in a GitLab project.

Parameters* required
refstring
The branch name or commit SHA to create the new branch from.
project_idinteger
The ID or URL-encoded path of the project.
branch_namestring
The name of the new branch.
GITLAB_DELETE_PROJECTTool to delete a GitLab project by its ID. Use when you need to remove a project, either by marking it for later deletion or deleting it immediately.3 params

Tool to delete a GitLab project by its ID. Use when you need to remove a project, either by marking it for later deletion or deleting it immediately.

Parameters* required
idinteger
The ID or URL-encoded path of the project to be deleted.
full_pathstring
The full path of the project (e.g., namespace/project_name). Used with `permanently_remove=true` for immediate deletion. Available in GitLab Free from 18.0 (previously Premium/Ultimate only since 15.11).
permanently_removeboolean
If true, the project is deleted immediately. Otherwise, it is marked for deletion and removed after a retention period. Available in GitLab Free from 18.0 (previously Premium/Ultimate only since 15.11).
GITLAB_DOWNLOAD_PROJECT_AVATARTool to download a project’s avatar image. Use when you need the raw avatar bytes after confirming the project exists.1 params

Tool to download a project’s avatar image. Use when you need the raw avatar bytes after confirming the project exists.

Parameters* required
idstring
The ID or URL-encoded path of the project whose avatar to download.
GITLAB_ERASE_JOBTool to erase the content of a specified job within a project. Use when you need to remove job artifacts and logs.2 params

Tool to erase the content of a specified job within a project. Use when you need to remove job artifacts and logs.

Parameters* required
job_idinteger
The ID of the job to be erased.
project_idinteger
The ID or URL-encoded path of the project.
GITLAB_GET_COMMIT_REFSTool to get all references (branches or tags) a commit is pushed to. Use when you need to find out which branches or tags a specific commit belongs to in a GitLab project.3 params

Tool to get all references (branches or tags) a commit is pushed to. Use when you need to find out which branches or tags a specific commit belongs to in a GitLab project.

Parameters* required
shastring
The commit hash.
ref_typestring
The scope of commits to list. Possible values are `branch`, `tag`, or `all`.one of branch · tag · alldefault: all
project_idinteger
The ID or URL-encoded path of the project.
GITLAB_GET_COMMIT_SEQUENCETool to get the sequence number of a commit in a project by following parent links from the given commit. Use when you need to determine the order of a commit in the project's history.3 params

Tool to get the sequence number of a commit in a project by following parent links from the given commit. Use when you need to determine the order of a commit in the project's history.

Parameters* required
shastring
The commit hash.
project_idinteger
The ID or URL-encoded path of the project.
first_parentboolean
Follow only the first parent commit upon seeing a merge commit.
GITLAB_GET_GROUPTool to retrieve information about a specific group by its ID. Use when you need to get details of a GitLab group.3 params

Tool to retrieve information about a specific group by its ID. Use when you need to get details of a GitLab group.

Parameters* required
idinteger
The ID or URL-encoded path of the group.
with_projectsboolean
Include details from projects that belong to the specified group (defaults to true). Deprecated, scheduled for removal in API v5.default: true
with_custom_attributesboolean
Include custom attributes in response (administrators only).
GITLAB_GET_GROUP_MEMBERTool to retrieve details for a specific group member. Use when you need to fetch membership information for a user in a group after you know both group ID and user ID.2 params

Tool to retrieve details for a specific group member. Use when you need to fetch membership information for a user in a group after you know both group ID and user ID.

Parameters* required
idinteger
The ID or URL-encoded path of the group.
user_idinteger
The user ID of the group member to retrieve.
GITLAB_GET_GROUPSGet Groups13 params

Get Groups

Parameters* required
pageinteger
Page number for pagination.
sortstring
Return groups sorted in 'asc' or 'desc' order.one of asc · desc
ownedboolean
Limit to groups owned by the current user.
searchstring
Search for groups by name or path.
order_bystring
Return groups ordered by this field.one of id · name · path · created_at · updated_at
per_pageinteger
Number of results per page.
statisticsboolean
Include group statistics (admin only).
all_availableboolean
Include all groups the user has access to (admin only).
skip_groups[]array
List of group IDs to exclude.
with_projectsboolean
Include project details in response (deprecated).
with_two_factorboolean
Include groups requiring two-factor authentication.
min_access_levelinteger
Limit to groups with minimum access level.
with_custom_attributesboolean
Include custom attributes in response (admins only).
GITLAB_GET_JOB_DETAILSTool to retrieve details of a single job by its ID within a specified project. Use this when you need to fetch specific information about a particular CI/CD job.2 params

Tool to retrieve details of a single job by its ID within a specified project. Use this when you need to fetch specific information about a particular CI/CD job.

Parameters* required
job_idinteger
The ID of the job.
project_idinteger
The ID or URL-encoded path of the project.
GITLAB_GET_MERGE_REQUEST_NOTESTool to fetch comments on a merge request. Use when you need to retrieve all notes for a specific merge request.4 params

Tool to fetch comments on a merge request. Use when you need to retrieve all notes for a specific merge request.

Parameters* required
idinteger
The ID or URL-encoded path of the project.
pageinteger
Page number to retrieve.
per_pageinteger
Number of notes per page (max 100).
merge_request_iidinteger
Internal ID of the merge request.
GITLAB_GET_PROJECTTool to get a single project by ID or URL-encoded path.1 params

Tool to get a single project by ID or URL-encoded path.

Parameters* required
idinteger
The ID or URL-encoded path of the project.
GITLAB_GET_PROJECT_LANGUAGESTool to list programming languages used in a project with percentages. Use when you need the project language breakdown.1 params

Tool to list programming languages used in a project with percentages. Use when you need the project language breakdown.

Parameters* required
idinteger
The ID or URL-encoded path of the project.
GITLAB_GET_PROJECT_MEMBERTool to retrieve details for a specific project member. Use after confirming project and user IDs to fetch membership information for a project member.2 params

Tool to retrieve details for a specific project member. Use after confirming project and user IDs to fetch membership information for a project member.

Parameters* required
idinteger
The ID or URL-encoded path of the project.
user_idinteger
The user ID of the project member to retrieve.
GITLAB_GET_PROJECT_MEMBER_ALLTool to retrieve details for a specific project member (including inherited and invited members). Use when you need the effective membership info (including invitations and inheritance).2 params

Tool to retrieve details for a specific project member (including inherited and invited members). Use when you need the effective membership info (including invitations and inheritance).

Parameters* required
idinteger
The ID or URL-encoded path of the project.
user_idinteger
The user ID of the project member.
GITLAB_GET_PROJECT_MERGE_REQUEST_COMMITSTool to get commits of a merge request. Use when you need to retrieve all commits associated with a specific merge request.2 params

Tool to get commits of a merge request. Use when you need to retrieve all commits associated with a specific merge request.

Parameters* required
idinteger
The ID or URL-encoded path of the project.
merge_request_iidinteger
Internal ID of the merge request.
GITLAB_GET_PROJECT_MERGE_REQUESTSTool to retrieve a list of merge requests for a specific project. Use when you need to get all merge requests associated with a project, with options to filter by state, labels, milestones, and other attributes.36 params

Tool to retrieve a list of merge requests for a specific project. Use when you need to get all merge requests associated with a project, with options to filter by state, labels, milestones, and other attributes.

Parameters* required
idinteger
The ID or URL-encoded path of the project.
wipstring
Filter merge requests against their wip status. Use yes to return only draft merge requests, no to return non-draft merge requests.
pageinteger
The page of results to return. Defaults to 1.
sortstring
Returns requests sorted in asc or desc order. Default is desc.
viewstring
If simple, returns the iid, URL, title, description, and basic state of merge request.
scopestring
Returns merge requests for the given scope: created_by_me, assigned_to_me or all. Defaults to created_by_me.
statestring
Returns all merge requests or just those that are opened, closed, locked, or merged.
iids[]array
Returns the request having the given iid.
labelsstring
Returns merge requests matching a comma-separated list of labels. None lists all merge requests with no labels. Any lists all merge requests with at least one label. Predefined names are case-insensitive.
searchstring
Search merge requests against their title and description.
approvedstring
Filters merge requests by their approved status. yes returns only approved merge requests. no returns only non-approved merge requests. Requires the mr_approved_filter feature flag, disabled by default.
order_bystring
Returns requests ordered by created_at, title, merged_at, or updated_at fields. Default is created_at.
per_pageinteger
The number of results per page. Defaults to 20.
author_idinteger
Returns merge requests created by the given user id. Mutually exclusive with author_username. Combine with scope=all or scope=assigned_to_me.
milestonestring
Returns merge requests for a specific milestone. None returns merge requests with no milestone. Any returns merge requests that have an assigned milestone.
not_filterobject
Returns merge requests that do not match the parameters supplied. Accepts: labels, milestone, author_id, author_username, assignee_id, assignee_username, reviewer_id, reviewer_username, my_reaction_emoji.
assignee_idinteger
Returns merge requests assigned to the given user id. None returns unassigned merge requests. Any returns merge requests with an assignee.
environmentstring
Returns merge requests deployed to the given environment.
reviewer_idinteger
Returns merge requests which have the user as a reviewer with the given user id. None returns merge requests with no reviewers. Any returns merge requests with any reviewer. Mutually exclusive with reviewer_username.
approver_idsarray
Returns merge requests which have specified all the users with the given id as individual approvers. None returns merge requests without approvers. Any returns merge requests with an approver. Premium and Ultimate only.
created_afterstring
Returns merge requests created on or after the given time. Expected in ISO 8601 format (2019-03-15T08:00:00Z).
merge_user_idinteger
Returns the merge requests merged by the user with the given user id. Mutually exclusive with merge_user_username. Introduced in GitLab 17.0.
source_branchstring
Returns merge requests with the given source branch.
target_branchstring
Returns merge requests with the given target branch.
updated_afterstring
Returns merge requests updated on or after the given time. Expected in ISO 8601 format (2019-03-15T08:00:00Z).
created_beforestring
Returns merge requests created on or before the given time. Expected in ISO 8601 format (2019-03-15T08:00:00Z).
deployed_afterstring
Returns merge requests deployed after the given date/time. Expected in ISO 8601 format (2019-03-15T08:00:00Z).
updated_beforestring
Returns merge requests updated on or before the given time. Expected in ISO 8601 format (2019-03-15T08:00:00Z).
approved_by_idsarray
Returns merge requests approved by all the users with the given id, up to 5 users. None returns merge requests with no approvals. Any returns merge requests with an approval. Premium and Ultimate only.
author_usernamestring
Returns merge requests created by the given username. Mutually exclusive with author_id.
deployed_beforestring
Returns merge requests deployed before the given date/time. Expected in ISO 8601 format (2019-03-15T08:00:00Z).
my_reaction_emojistring
Returns merge requests reacted by the authenticated user by the given emoji. None returns issues not given a reaction. Any returns issues given at least one reaction.
reviewer_usernamestring
Returns merge requests which have the user as a reviewer with the given username. None returns merge requests with no reviewers. Any returns merge requests with any reviewer. Mutually exclusive with reviewer_id.
merge_user_usernamestring
Returns the merge requests merged by the user with the given username. Mutually exclusive with merge_user_id. Introduced in GitLab 17.0.
with_labels_detailsboolean
If true, response returns more details for each label in labels field: :name, :color, :description, :description_html, :text_color. Default is false.
with_merge_status_recheckboolean
If true, this projection requests (but does not guarantee) an asynchronous recalculation of the merge_status field. Enable the restrict_merge_status_recheck feature flag to ignore this attribute when requested by users without at least the Developer role.
GITLAB_GET_PROJECTSTool to list all projects accessible to the authenticated user. Supports filtering.19 params

Tool to list all projects accessible to the authenticated user. Supports filtering.

Parameters* required
pageinteger
Page number for pagination.
sortstring
Return projects sorted in 'asc' or 'desc' order. Default is 'desc'.one of asc · desc
ownedboolean
Limit by projects explicitly owned by the current user.
searchstring
Return list of projects matching search criteria (case-insensitive substring).
simpleboolean
Return only limited fields for each project.
starredboolean
Limit by projects starred by the current user.
archivedboolean
Limit by archived status.
id_afterinteger
Limit results to projects with IDs greater than the specified ID.
order_bystring
Return projects ordered by this field. Default is 'created_at'.one of id · name · path · created_at · updated_at · star_count
per_pageinteger
Number of items per page (1-100).
id_beforeinteger
Limit results to projects with IDs less than the specified ID.
membershipboolean
Limit by projects that the current user is a member of.
statisticsboolean
Include project statistics. Available to Reporter role and above.
visibilitystring
Limit by project visibility.one of private · internal · public
min_access_levelinteger
Limit by current user minimal role (access_level).
with_issues_enabledboolean
Limit by enabled issues feature.
with_custom_attributesboolean
Include custom attributes in response (admin only).
with_programming_languagestring
Limit by projects which use the given programming language.
with_merge_requests_enabledboolean
Limit by enabled merge requests feature.
GITLAB_GET_PROJECTS_ID_MERGE_REQUESTS_IID_DIFFSTool to list all diff versions of a merge request. Use when you need to inspect changes across different diff versions after creating or updating a merge request.2 params

Tool to list all diff versions of a merge request. Use when you need to inspect changes across different diff versions after creating or updating a merge request.

Parameters* required
idinteger
The ID or URL-encoded path of the project.
merge_request_iidinteger
The internal ID of the merge request.
GITLAB_GET_REPOSITORY_BRANCHTool to retrieve information about a specific branch in a project. Use when you need to get details for a single branch.2 params

Tool to retrieve information about a specific branch in a project. Use when you need to get details for a single branch.

Parameters* required
project_idinteger
The ID or URL-encoded path of the project.
branch_namestring
The URL-encoded name of the branch.
GITLAB_GET_REPOSITORY_BRANCHESRetrieves a list of repository branches for a project. Use this when you need to get all branches or search for specific branches within a GitLab project.3 params

Retrieves a list of repository branches for a project. Use this when you need to get all branches or search for specific branches within a GitLab project.

Parameters* required
regexstring
Return list of branches with names matching a re2 regular expression.
searchstring
Return list of branches containing the search string. Use `^term` to find branches that begin with `term`, and `term$` to find branches that end with `term`.
project_idinteger
The ID or URL-encoded path of the project.
GITLAB_GET_SINGLE_COMMITTool to get a specific commit identified by the commit hash or name of a branch or tag. Use this when you need to retrieve detailed information about a single commit in a GitLab project repository.3 params

Tool to get a specific commit identified by the commit hash or name of a branch or tag. Use this when you need to retrieve detailed information about a single commit in a GitLab project repository.

Parameters* required
idinteger
The ID or URL-encoded path of the project.
shastring
The commit hash or name of a repository branch or tag.
statsboolean
Include commit stats. Default is true.default: true
GITLAB_GET_SINGLE_PIPELINETool to retrieve details of a single pipeline by its ID within a specified project. Use when you need to get information about a specific CI/CD pipeline.2 params

Tool to retrieve details of a single pipeline by its ID within a specified project. Use when you need to get information about a specific CI/CD pipeline.

Parameters* required
project_idinteger
The ID or URL-encoded path of the project.
pipeline_idinteger
The ID of the pipeline.
GITLAB_GET_USERTool to retrieve information about a specific user by their ID. Use when you need to fetch details for a single GitLab user.1 params

Tool to retrieve information about a specific user by their ID. Use when you need to fetch details for a single GitLab user.

Parameters* required
idinteger
The ID of the user.
GITLAB_GET_USER_PREFERENCESTool to get the current user's preferences. Use when you need to retrieve the user's diff display and CI identity JWT settings after authentication.

Tool to get the current user's preferences. Use when you need to retrieve the user's diff display and CI identity JWT settings after authentication.

No parameter schema in public metadata yet.

GITLAB_GET_USERSTool to retrieve a list of users from GitLab. Use this when you need to find user information, search for specific users, or filter users based on various criteria like activity status or creation date.24 params

Tool to retrieve a list of users from GitLab. Use this when you need to find user information, search for specific users, or filter users based on various criteria like activity status or creation date.

Parameters* required
pageinteger
Page number for pagination.
sortstring
Return users sorted in 'asc' or 'desc' order. Default is 'desc'. (Admin only)one of asc · desc
activeboolean
Filters only active users. Default is false.
adminsboolean
Return only administrators. Default is false. (Admin only)
humansboolean
Filters only regular users that are not bot or internal users. Default is false.
searchstring
Search for users by name, username, or public email.
blockedboolean
Filters only blocked users. Default is false.
auditorsboolean
Return only auditor users. Default is false. If not included, it returns all users. (Admin only, Premium and Ultimate only)
externalboolean
Filters only external users. Default is false.
order_bystring
Return users ordered by 'id', 'name', 'username', 'created_at', or 'updated_at' fields. Default is 'id'. (Admin only)one of id · name · username · created_at · updated_at
per_pageinteger
Number of items per page for pagination.
providerstring
The external provider. (Admin only)
usernamestring
Get a single user with a specific username.
skip_ldapboolean
Skip LDAP users. (Admin only, Premium and Ultimate only)
extern_uidstring
Get a single user with a specific external authentication provider UID. (Admin only)
two_factorstring
Filter users by Two-factor authentication. Filter values are 'enabled' or 'disabled'. (Admin only)one of enabled · disabled
created_afterstring
Return users created after specified time (ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ).
created_beforestring
Return users created before specified time (ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ).
exclude_activeboolean
Filters only non active users. Default is false.
exclude_humansboolean
Filters only bot or internal users. Default is false.
exclude_externalboolean
Filters only non external users. Default is false.
exclude_internalboolean
Filters only non internal users. Default is false.
without_projectsboolean
Filter users without projects. Default is false. (Admin only)
without_project_botsboolean
Filters user without project bots. Default is false.
GITLAB_GET_USERS_ID_STATUSTool to get a user's status by ID. Use when you need to retrieve a GitLab user's current status message, emoji, and availability after identifying their user ID.1 params

Tool to get a user's status by ID. Use when you need to retrieve a GitLab user's current status message, emoji, and availability after identifying their user ID.

Parameters* required
user_idinteger
The numeric ID of the GitLab user whose status you want to retrieve.
GITLAB_GET_USER_STATUSTool to get the current user's status. Use when displaying or verifying the authenticated user's GitLab status after login.

Tool to get the current user's status. Use when displaying or verifying the authenticated user's GitLab status after login.

No parameter schema in public metadata yet.

GITLAB_GET_USER_SUPPORT_PINTool to get details of the current user's Support PIN. Use when you need to retrieve the active support PIN and its expiration for the authenticated user.

Tool to get details of the current user's Support PIN. Use when you need to retrieve the active support PIN and its expiration for the authenticated user.

No parameter schema in public metadata yet.

GITLAB_IMPORT_PROJECT_MEMBERSTool to import members from one project to another. Use when migrating members between projects.2 params

Tool to import members from one project to another. Use when migrating members between projects.

Parameters* required
idstring
ID or URL-encoded path of the target project to receive members.
project_idstring
ID or URL-encoded path of the source project to import members from.
GITLAB_LIST_ALL_GROUP_MEMBERSTool to list all members of a group including direct, inherited, and invited members. Use when you need a comprehensive membership list beyond direct members.3 params

Tool to list all members of a group including direct, inherited, and invited members. Use when you need a comprehensive membership list beyond direct members.

Parameters* required
idinteger
The ID or URL-encoded path of the group.
pageinteger
Page number for pagination.
per_pageinteger
Number of items per page for pagination.
GITLAB_LIST_ALL_PROJECT_MEMBERSTool to list all members of a project (direct, inherited, invited). Use when you need the effective membership list including inherited and invited members.7 params

Tool to list all members of a project (direct, inherited, invited). Use when you need the effective membership list including inherited and invited members.

Parameters* required
idinteger
The ID or URL-encoded path of the project.
pageinteger
Page number for pagination.
querystring
Filters results based on a given name, email, or username. Use partial values to widen the scope of the query.
statestring
Filter results by member state, one of 'awaiting' or 'active'. Premium and Ultimate only.one of awaiting · active
per_pageinteger
Number of items per page for pagination.
user_idsarray
Filter the results on the given user IDs.
show_seat_infoboolean
Show seat information for users.
GITLAB_LIST_BILLABLE_GROUP_MEMBERSTool to list billable members of a top-level group (including its subgroups and projects). Use when generating billing reports; requires Owner role on the group.5 params

Tool to list billable members of a top-level group (including its subgroups and projects). Use when generating billing reports; requires Owner role on the group.

Parameters* required
idinteger
The ID or URL-encoded path of the top-level group. Only top-level groups are supported.
pageinteger
Page number for pagination (must be ≥ 1).
sortstring
Sort order for results. Supported values: access_level_asc|access_level_desc|last_joined|name_asc|name_desc|oldest_joined|oldest_sign_in|recent_sign_in|last_activity_on_asc|last_activity_on_desc.one of access_level_asc · access_level_desc · last_joined · name_asc · name_desc · oldest_joined
searchstring
Search string to filter members by name, username, or public email.
per_pageinteger
Number of items per page for pagination (must be ≥ 1).
GITLAB_LIST_GROUP_MEMBERSTool to list direct members of a group. Use when you need to retrieve or filter a group's direct membership.10 params

Tool to list direct members of a group. Use when you need to retrieve or filter a group's direct membership.

Parameters* required
idinteger
The ID or URL-encoded path of the group.
pageinteger
Page number for pagination.
sortstring
Order results by access level, ascending or descending.one of access_level_asc · access_level_desc
querystring
Filter members by name, username, or email substring.
activeboolean
When true, return only active users.
per_pageinteger
Number of results per page (1–100).
relationsarray
Membership relation types to include: direct, descendants, inherited, or shared.
skip_usersarray
List of user IDs to exclude from the results.
two_factorstring
Filter users by two-factor authentication status.one of enabled · disabled
include_inheritedboolean
Include members inherited from ancestor groups when true.
GITLAB_LIST_PENDING_GROUP_MEMBERSTool to list pending members of a group and its subgroups and projects. Use when you need to review users awaiting approval or invited without an account. Call after confirming the top-level group ID.3 params

Tool to list pending members of a group and its subgroups and projects. Use when you need to review users awaiting approval or invited without an account. Call after confirming the top-level group ID.

Parameters* required
idinteger
The ID or URL-encoded path of the top-level group.
pageinteger
Page number for pagination (1-based index).
per_pageinteger
Number of items per page for pagination (max 100).
GITLAB_LIST_PIPELINE_JOBSTool to retrieve a list of jobs for a specified pipeline within a project. Use this when you need to inspect the status or details of jobs associated with a particular CI/CD pipeline.4 params

Tool to retrieve a list of jobs for a specified pipeline within a project. Use this when you need to inspect the status or details of jobs associated with a particular CI/CD pipeline.

Parameters* required
idinteger
The ID or URL-encoded path of the project.
scopestring
The scope of jobs to show. Can be a single status or a list of statuses. If not provided, all jobs are returned.one of canceled · canceling · created · failed · manual · pending
pipeline_idinteger
The ID of the pipeline.
include_retriedboolean
Include retried jobs in the response. Defaults to false.default: false
GITLAB_LIST_PROJECT_GROUPSTool to list ancestor groups of a project. Use when you need to retrieve all groups a project belongs to or is shared with.8 params

Tool to list ancestor groups of a project. Use when you need to retrieve all groups a project belongs to or is shared with.

Parameters* required
idinteger
The ID or URL-encoded path of the project.
pageinteger
Page number of the results to retrieve.
searchstring
Search for specific groups by name.
per_pageinteger
Number of items to return per page.
skip_groupsarray
Skip the group IDs passed.
with_sharedboolean
Include projects shared with this group. Default is false.
shared_visible_onlyboolean
Limit to shared groups user has access to.
shared_min_access_levelinteger
Limit to shared groups with at least this access level.
GITLAB_LIST_PROJECT_INVITED_GROUPSTool to list groups invited to a project. Use when auditing which groups have access to a project.3 params

Tool to list groups invited to a project. Use when auditing which groups have access to a project.

Parameters* required
idinteger
The ID or URL-encoded path of the project.
pageinteger
Page number for pagination.
per_pageinteger
Number of items to return per page.
GITLAB_LIST_PROJECT_PIPELINESTool to retrieve a list of pipelines for a specified project. Use when you need to get information about CI/CD pipelines, such as their status, source, or creation/update times.17 params

Tool to retrieve a list of pipelines for a specified project. Use when you need to get information about CI/CD pipelines, such as their status, source, or creation/update times.

Parameters* required
idinteger
The ID or URL-encoded path of the project.
refstring
The ref of pipelines.
shastring
The SHA of pipelines.
namestring
Return pipelines with the specified name.
pageinteger
Page number for pagination.
sortstring
Sort pipelines in 'asc' or 'desc' order.one of asc · descdefault: desc
scopestring
The scope of pipelines, one of: 'running', 'pending', 'finished', 'branches', 'tags'.one of running · pending · finished · branches · tags
sourcestring
The pipeline source. To return child pipelines, set to 'parent_pipeline'.
statusstring
The status of pipelines.one of created · waiting_for_resource · preparing · pending · running · success
order_bystring
Order pipelines by 'id', 'status', 'ref', 'updated_at' or 'user_id'.one of id · status · ref · updated_at · user_iddefault: id
per_pageinteger
Number of items per page for pagination.
usernamestring
The username of the user who triggered pipelines.
yaml_errorsboolean
Returns pipelines with invalid configurations.
created_afterstring
Return pipelines created after the specified date (ISO 8601 format).
updated_afterstring
Return pipelines updated after the specified date (ISO 8601 format).
created_beforestring
Return pipelines created before the specified date (ISO 8601 format).
updated_beforestring
Return pipelines updated before the specified date (ISO 8601 format).
GITLAB_LIST_PROJECT_SHAREABLE_GROUPSTool to list groups that can be shared with a project. Use before sharing a project to fetch eligible groups.5 params

Tool to list groups that can be shared with a project. Use before sharing a project to fetch eligible groups.

Parameters* required
idinteger
The ID or URL-encoded path of the project.
pageinteger
Page number for pagination.
searchstring
Search term to filter groups by name or path.
per_pageinteger
Number of items per page for pagination.
skip_groupsarray
List of group IDs to exclude from the results.
GITLAB_LIST_PROJECT_TAGSTool to retrieve a list of repository tags for a specified project. Use when you need to get all tags associated with a project in GitLab.6 params

Tool to retrieve a list of repository tags for a specified project. Use when you need to get all tags associated with a project in GitLab.

Parameters* required
idinteger
The ID or URL-encoded path of the project.
pageinteger
Page number of the results to retrieve.
sortstring
Return tags sorted in `asc` or `desc` order. Default is `desc`.
searchstring
Return a list of tags matching the search criteria. You can use `^term` and `term$` to find tags that begin and end with `term`.
order_bystring
Return tags ordered by `name`, `updated`, or `version`. Default is `updated`.
per_pageinteger
Number of items to return per page.
GITLAB_LIST_PROJECT_TRANSFER_LOCATIONSTool to list namespaces available for project transfer. Use when you need to determine which groups a project can be transferred into.2 params

Tool to list namespaces available for project transfer. Use when you need to determine which groups a project can be transferred into.

Parameters* required
idinteger
The ID or URL-encoded path of the project.
searchstring
The group names to search for.
GITLAB_LIST_PROJECT_USERSTool to list users of a project. Use after you have a project ID and want to retrieve its users.3 params

Tool to list users of a project. Use after you have a project ID and want to retrieve its users.

Parameters* required
idstring
The ID or URL-encoded path of the project.
searchstring
Filter users by name or username.
skip_usersarray
List of user IDs to exclude from the result.
GITLAB_LIST_REPOSITORY_COMMITSTool to get a list of repository commits in a project. Use when you need to retrieve commit history for a specific project, branch, or time range.11 params

Tool to get a list of repository commits in a project. Use when you need to retrieve commit history for a specific project, branch, or time range.

Parameters* required
allboolean
Retrieve every commit from the repository. When set to true, the ref_name parameter is ignored.
pathstring
The file path to filter commits by.
orderstring
List commits in order. Possible values: default, topo. Defaults to default, the commits are shown in reverse chronological order.one of default · topo
sincestring
Only commits after or on this date are returned in ISO 8601 format YYYY-MM-DDTHH:MM:SSZ.
untilstring
Only commits before or on this date are returned in ISO 8601 format YYYY-MM-DDTHH:MM:SSZ.
authorstring
Search commits by commit author.
ref_namestring
The name of a repository branch, tag or revision range, or if not given the default branch.
trailersboolean
Parse and include Git trailers for every commit.
project_idinteger
The ID or URL-encoded path of the project.
with_statsboolean
Stats about each commit are added to the response.
first_parentboolean
Follow only the first parent commit upon seeing a merge commit.
GITLAB_LIST_USER_PROJECTSTool to list projects owned by a specific user. Use after obtaining target user identity to fetch owned projects.22 params

Tool to list projects owned by a specific user. Use after obtaining target user identity to fetch owned projects.

Parameters* required
idinteger
The ID or username of the user whose projects to list.
pageinteger
Page number for pagination.
sortstring
Return projects sorted in asc or desc order. Default is 'desc'.one of asc · desc
ownedboolean
Limit by projects explicitly owned by the specified user.
searchstring
Return list of projects matching search criteria (case-insensitive substring).
simpleboolean
Return only limited fields for each project.
starredboolean
Limit by projects starred by the specified user.
archivedboolean
Limit by archived status.
id_afterinteger
Limit results to projects with IDs greater than the specified ID.
order_bystring
Return projects ordered by this field. Default is 'created_at'.one of id · name · path · created_at · updated_at · star_count
per_pageinteger
Number of items per page (1-100).
id_beforeinteger
Limit results to projects with IDs less than the specified ID.
membershipboolean
Limit by projects that the current user is a member of.
statisticsboolean
Include project statistics. Available to Reporter role and above.
visibilitystring
Limit by project visibility.one of private · internal · public
updated_afterstring
Limit projects updated after given time (ISO 8601).
updated_beforestring
Limit projects updated before given time (ISO 8601).
min_access_levelinteger
Limit by current user minimal role (access_level).
with_issues_enabledboolean
Limit by enabled issues feature.
with_custom_attributesboolean
Include custom attributes in response (admin only).
with_programming_languagestring
Limit by projects which use the given programming language.
with_merge_requests_enabledboolean
Limit by enabled merge requests feature.
GITLAB_POST_USER_SUPPORT_PINTool to create a support PIN for your authenticated user. Use when GitLab Support requests a PIN to verify your identity.

Tool to create a support PIN for your authenticated user. Use when GitLab Support requests a PIN to verify your identity.

No parameter schema in public metadata yet.

GITLAB_PUT_USER_PREFERENCESTool to update the current user's preferences. Use when adjusting default diff viewing and CI identity settings.3 params

Tool to update the current user's preferences. Use when adjusting default diff viewing and CI identity settings.

Parameters* required
view_diffs_file_by_fileboolean
Flag indicating the user sees only one file diff per page.
show_whitespace_in_diffsboolean
Flag indicating the user sees whitespace changes in diffs.
pass_user_identities_to_ci_jwtboolean
Flag indicating the user passes their external identities as CI information. Internal use only; do not expose to third-party services.
GITLAB_SET_USER_STATUSTool to set the current user's status. Use when you need to update availability or convey current mood on GitLab.3 params

Tool to set the current user's status. Use when you need to update availability or convey current mood on GitLab.

Parameters* required
emojistring
Name of the emoji to use as status. Defaults to 'speech_balloon' if omitted.
messagestring
Status message to display. Max 100 characters; can contain emoji codes.
clear_status_afterstring
Automatically clear status after the specified time interval. Allowed values: 30_minutes, 3_hours, 8_hours, 1_day, 3_days, 7_days, 30_days.one of 30_minutes · 3_hours · 8_hours · 1_day · 3_days · 7_days
GITLAB_SHARE_PROJECT_WITH_GROUPTool to share a project with a group. Use when you need to grant a group specific access level to a project.4 params

Tool to share a project with a group. Use when you need to grant a group specific access level to a project.

Parameters* required
idinteger
The ID or URL-encoded path of the project.
group_idinteger
The ID of the group to share with.
expires_atstring
Expiration date for the group share in YYYY-MM-DD format (ISO 8601).
group_accessinteger
The access level to grant the group. One of GitLab's access levels, e.g., 30 for Developer, 40 for Maintainer.
GITLAB_START_PROJECT_HOUSEKEEPINGTool to start the housekeeping task for a project. Use when you need to trigger manual maintenance or pruning on a repository.2 params

Tool to start the housekeeping task for a project. Use when you need to trigger manual maintenance or pruning on a repository.

Parameters* required
idinteger
The ID or URL-encoded path of the project.
taskstring
Type of housekeeping task to perform. `prune` triggers a manual prune of unreachable objects; `eager` triggers eager housekeeping.one of prune · eager

mcp-gitlab

PyPI version PyPI downloads Python License: MIT CI MCP Registry

mcp-gitlab is a Model Context Protocol (MCP) server for the GitLab REST API that provides 83 tools, 7 resources, and 6 prompts for AI assistants to manage projects, merge requests, pipelines, CI/CD variables, approvals, issues, code reviews, and more. Works with Claude Desktop, Claude Code, Cursor, Windsurf, VS Code Copilot, and any MCP-compatible client.

Supports GitLab.com and self-hosted GitLab instances (CE/EE). No GitLab Duo or Premium required.

Built with FastMCP, httpx, and Pydantic.

Install: uvx mcp-gitlab | PyPI | MCP Registry | Changelog

1-Click Installation

Install in Cursor

Install in VS Code Install in VS Code Insiders

💡 Tip: For other AI assistants (Claude Code, Windsurf, IntelliJ, Gemini CLI), visit the GitLab MCP Installation Gateway.

Manual Setup Guides (Click to expand)

Prerequisite: Install uv first (required for all uvx install flows). Install uv.

Claude Code

claude mcp add gitlab -- uvx mcp-gitlab

Windsurf & IntelliJ

Windsurf: Add to ~/.codeium/windsurf/mcp_config.json IntelliJ: Add to Settings | Tools | MCP Servers

Note: The actual server config starts at gitlab inside the mcpServers object.

{
  "mcpServers": {
    "gitlab": {
      "command": "uvx",
      "args": ["mcp-gitlab"],
      "env": {
        "GITLAB_URL": "https://gitlab.example.com",
        "GITLAB_TOKEN": "glpat-xxxxxxxxxxxxxxxxxxxx"
      }
    }
  }
}

Gemini CLI

gemini mcp add -e GITLAB_URL=https://gitlab.example.com -e GITLAB_TOKEN=glpat-xxxxxxxxxxxxxxxxxxxx gitlab uvx mcp-gitlab

pip / uv

uv pip install mcp-gitlab

Configuration

VariableRequiredDefaultDescription
GITLAB_URLYes-GitLab instance URL (e.g. https://gitlab.example.com)
GITLAB_TOKENYes-Authentication token (see below)
GITLAB_READ_ONLYNofalseSet to true to disable write operations
GITLAB_TIMEOUTNo30Request timeout in seconds
GITLAB_SSL_VERIFYNotrueSet to false to skip SSL verification

Supported Token Types

The server checks these environment variables in order — first match wins:

  1. GITLAB_TOKEN
  2. GITLAB_PAT
  3. GITLAB_PERSONAL_ACCESS_TOKEN
  4. GITLAB_API_TOKEN

These accept any of the following token types:

Token TypeFormatUse Case
Personal access tokenglpat-xxxUser-level access with api scope
OAuth2 tokenoauth-xxxOAuth app integrations
CI job token$CI_JOB_TOKENGitLab CI pipeline access

Compatibility

ClientSupportedInstall Method
Claude DesktopYesclaude_desktop_config.json
Claude CodeYesclaude mcp add
CursorYesOne-click deeplink or .cursor/mcp.json
VS Code CopilotYesOne-click deeplink or .vscode/mcp.json
WindsurfYes~/.codeium/windsurf/mcp_config.json
Any MCP clientYesstdio or HTTP transport

Tools (83)

CategoryCountTools
Projects4get, create, delete, update merge settings
Project Approvals10get/update config, CRUD approval rules (project + MR)
Groups6list, get, share/unshare project, share/unshare group
Branches3list, create, delete
Commits4list, get (with diff), create, compare
Merge Requests16list, get, create, update, merge, merge-sequence, rebase, changes, approve, unapprove, get approvals, list reviewers, list pipelines, list commits, subscribe, unsubscribe
MR Notes6list, add, delete, update, award emoji, remove emoji
MR Discussions4list, create (inline + multi-line), reply, resolve
Pipelines5list, get (with jobs), create, retry, cancel
Jobs4retry, play, cancel, get log
Tags4list, get, create, delete
Releases5list, get, create, update, delete
CI/CD Variables8CRUD for project variables, CRUD for group variables
Issues5list, get, create, update, add comment
Full tool reference (click to expand)

Projects

ToolDescription
gitlab_get_projectGet project details
gitlab_create_projectCreate a new project
gitlab_delete_projectDelete a project
gitlab_update_project_merge_settingsUpdate merge settings

Project Approvals

ToolDescription
gitlab_get_project_approvalsGet approval config
gitlab_update_project_approvalsUpdate approval settings
gitlab_list_project_approval_rulesList approval rules
gitlab_create_project_approval_ruleCreate approval rule
gitlab_update_project_approval_ruleUpdate approval rule
gitlab_delete_project_approval_ruleDelete approval rule
gitlab_list_mr_approval_rulesList MR approval rules
gitlab_create_mr_approval_ruleCreate MR approval rule
gitlab_update_mr_approval_ruleUpdate MR approval rule
gitlab_delete_mr_approval_ruleDelete MR approval rule

Groups

ToolDescription
gitlab_list_groupsList groups
gitlab_get_groupGet group details
gitlab_share_project_with_groupShare project with group
gitlab_unshare_project_with_groupUnshare project from group
gitlab_share_group_with_groupShare group with group
gitlab_unshare_group_with_groupUnshare group from group

Branches

ToolDescription
gitlab_list_branchesList branches
gitlab_create_branchCreate a branch
gitlab_delete_branchDelete a branch

Commits

ToolDescription
gitlab_list_commitsList commits
gitlab_get_commitGet commit (with optional diff)
gitlab_create_commitCreate commit with file actions
gitlab_compareCompare branches/tags/commits

Merge Requests

ToolDescription
gitlab_list_mrsList merge requests
gitlab_get_mrGet MR details
gitlab_create_mrCreate merge request
gitlab_update_mrUpdate merge request
gitlab_merge_mrMerge a merge request
gitlab_merge_mr_sequenceMerge multiple MRs in order
gitlab_rebase_mrRebase a merge request
gitlab_mr_changesGet MR file changes
gitlab_approve_mrApprove a merge request
gitlab_unapprove_mrRemove approval from a merge request
gitlab_get_mr_approvalsGet MR approval state
gitlab_list_mr_pipelinesList MR pipelines
gitlab_list_mr_commitsList MR commits
gitlab_subscribe_mrSubscribe to MR notifications
gitlab_unsubscribe_mrUnsubscribe from MR notifications

MR Notes

ToolDescription
gitlab_list_mr_notesList MR comments
gitlab_add_mr_noteAdd comment to MR
gitlab_delete_mr_noteDelete MR comment
gitlab_update_mr_noteUpdate MR comment
gitlab_award_emojiAward emoji to note
gitlab_remove_emojiRemove emoji from note

MR Discussions

ToolDescription
gitlab_list_mr_discussionsList discussions
gitlab_create_mr_discussionCreate discussion (inline + multi-line)
gitlab_reply_to_discussionReply to discussion
gitlab_resolve_discussionResolve/unresolve discussion

Pipelines

ToolDescription
gitlab_list_pipelinesList pipelines
gitlab_get_pipelineGet pipeline (with optional jobs)
gitlab_create_pipelineTrigger pipeline
gitlab_retry_pipelineRetry failed jobs
gitlab_cancel_pipelineCancel pipeline

Jobs

ToolDescription
gitlab_retry_jobRetry a job
gitlab_play_jobTrigger manual job
gitlab_cancel_jobCancel a job
gitlab_get_job_logGet job log output

Tags

ToolDescription
gitlab_list_tagsList tags
gitlab_get_tagGet tag details
gitlab_create_tagCreate a tag
gitlab_delete_tagDelete a tag

Releases

ToolDescription
gitlab_list_releasesList releases
gitlab_get_releaseGet release details
gitlab_create_releaseCreate a release
gitlab_update_releaseUpdate a release
gitlab_delete_releaseDelete a release

CI/CD Variables

ToolDescription
gitlab_list_variablesList project variables
gitlab_create_variableCreate project variable
gitlab_update_variableUpdate project variable
gitlab_delete_variableDelete project variable
gitlab_list_group_variablesList group variables
gitlab_create_group_variableCreate group variable
gitlab_update_group_variableUpdate group variable
gitlab_delete_group_variableDelete group variable

Issues

ToolDescription
gitlab_list_issuesList issues
gitlab_get_issueGet issue details
gitlab_create_issueCreate an issue
gitlab_update_issueUpdate an issue
gitlab_add_issue_commentAdd comment to issue

Resources (7)

The server exposes curated workflow guides as MCP resources that clients can read on demand.

URINameDescription
resource://rules/gitlab-ciGitLab CI/CD Pipeline PatternsStage design, job rules, caching, artifacts, needs DAG, multi-project pipelines
resource://rules/git-workflowGit Workflow StandardsBranch naming, trunk-based flow, merge vs rebase, protected branches
resource://rules/mr-hygieneMerge Request Best PracticesMR size, description templates, review checklists, thread resolution
resource://rules/conventional-commitsConventional Commits SpecCommit types, scopes, breaking changes, changelog generation
resource://guides/code-reviewCode Review StandardsReview priorities, inline comments, approval workflows, nit vs blocker
resource://guides/codeownersGitLab CODEOWNERS ReferenceSyntax, section owners, approval rules, pattern matching
resource://guides/approval-workflowApproval Workflow GuideApproval types, project vs MR-level rules, SHA safety, merge readiness

Prompts (6)

The server provides MCP prompts — reusable multi-tool workflow templates that clients can surface as slash commands.

PromptParametersWorkflow
review_mrproject_id, mr_iidFetch MR → check pipeline → review changes → write discussion notes
approve_mrproject_id, mr_iidCheck approvals → verify pipeline → review changes → approve or request changes
diagnose_pipelineproject_id, pipeline_idFetch pipeline → identify failed jobs → get logs → suggest fix
prepare_releaseproject_id, tag_name, refCompare commits since last tag → draft changelog → create tag + release
setup_branch_protectionproject_idReview settings → configure merge method → set approval rules
triage_issuesproject_id, labelList open issues → categorize → prioritize → identify duplicates

Usage Examples

Projects & Branches

"Get details for project my-org/api-gateway"
→ gitlab_get_project(project_id="my-org/api-gateway")

"Create a feature branch from main"
→ gitlab_create_branch(project_id="123", branch_name="feat/login", ref="main")

"Delete all branches merged into main"
→ gitlab_list_branches(project_id="123") → filter merged → gitlab_delete_branch for each

Merge Requests & Code Review

"Open a merge request from feat/login to main"
→ gitlab_create_mr(project_id="123", source_branch="feat/login", target_branch="main", title="Add login")

"Review MR !42 — list changes and add inline comments"
→ gitlab_mr_changes(project_id="123", mr_iid=42)
→ gitlab_create_mr_discussion(project_id="123", mr_iid=42, body="nit: ...", new_path="src/auth.py", new_line=15)

"Merge MR !42 after resolving all threads"
→ gitlab_list_mr_discussions(project_id="123", mr_iid=42) → resolve unresolved
→ gitlab_merge_mr(project_id="123", mr_iid=42, squash=True)

Pipelines & CI/CD

"Show failed pipelines on main this week"
→ gitlab_list_pipelines(project_id="123", ref="main", status="failed")

"Retry a failed pipeline"
→ gitlab_retry_pipeline(project_id="123", pipeline_id=456)

"Get the build log for job 789"
→ gitlab_get_job_log(project_id="123", job_id=789, tail_lines=100)

Issues

"Create a bug report in project 123"
→ gitlab_create_issue(project_id="123", title="Login page 500 error", labels=["bug","P1"])

"Find open issues assigned to me"
→ gitlab_list_issues(project_id="123", state="opened", assignee_username="johndoe")

Security Considerations

  • Token scope: Use the minimum required scope. api scope grants full access; prefer read_api for read-only deployments.
  • Read-only mode: Set GITLAB_READ_ONLY=true to disable all write operations (create, update, delete, merge). Read-only mode is enforced server-side before any API call.
  • SSL verification: GITLAB_SSL_VERIFY=true by default. Only disable for self-signed certificates in trusted networks.
  • CI/CD variable masking: gitlab_list_variables and gitlab_list_group_variables automatically mask values of variables marked as masked in GitLab, returning ***MASKED*** instead of the actual value.
  • MCP tool annotations: Each tool declares readOnlyHint, destructiveHint, and idempotentHint for client-side permission prompts.
  • No credential storage: The server does not persist tokens. Credentials are read from environment variables at startup.

Rate Limits & Permissions

Rate Limits

GitLab enforces per-user rate limits (default: 2000 requests/minute for authenticated users). When rate-limited, tools return a 429 error with a hint to wait before retrying. Paginated endpoints default to 20 results per page; use per_page (max 100) to reduce the number of API calls.

Required Permissions

OperationMinimum GitLab Role
Read projects, MRs, pipelines, issuesReporter
Create branches, MRs, issuesDeveloper
Merge MRs, manage CI/CD variablesMaintainer
Delete projects, manage approval rulesMaintainer/Owner
Share projects/groupsOwner (or Admin)

CLI & Transport Options

# Default: stdio transport (for MCP clients)
uvx mcp-gitlab

# HTTP transport (SSE or streamable-http)
uvx mcp-gitlab --transport sse --host 127.0.0.1 --port 8000
uvx mcp-gitlab --transport streamable-http --port 9000

# CLI overrides for config
uvx mcp-gitlab --gitlab-url https://gitlab.example.com --gitlab-token glpat-xxx --read-only

The server loads .env files from the working directory automatically via python-dotenv.

Related MCP Servers

  • mcp-atlassian-extended — Jira + Confluence integration (23 tools, 15 resources, 5 prompts)
  • mcp-coda — Coda.io integration (54 tools, 12 resources, 5 prompts)

Development

git clone https://github.com/vish288/mcp-gitlab.git
cd mcp-gitlab
uv sync --all-extras

uv run pytest --cov
uv run ruff check .
uv run ruff format --check .

License

MIT

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Configuration

GITLAB_TOKEN*secret

GitLab personal access token (also accepts GITLAB_PAT or GITLAB_API_TOKEN)

GITLAB_URL*

GitLab instance URL (e.g. https://gitlab.com)

GITLAB_READ_ONLY

Restrict to read-only operations (true/false)

Categories
Developer Tools
Registryactive
Packagemcp-gitlab
TransportSTDIO
AuthRequired
UpdatedMar 5, 2026
View on GitHub

Related Developer Tools MCP Servers

View all →
Git Mcp Server

ray0907/git-mcp-server

MCP server for GitLab and GitHub
Git Mcp Server

cyanheads/git-mcp-server

Comprehensive Git MCP server enabling native git tools including clone, commit, worktree, & more.
221
Atlassian Dc Mcp Bitbucket

io.github.b1ff/atlassian-dc-mcp-bitbucket

MCP server for Atlassian Bitbucket Data Center - interact with repositories and code
77
Atlassian Dc Mcp Jira

io.github.b1ff/atlassian-dc-mcp-jira

MCP server for Atlassian Jira Data Center - search, view, and create issues
77
Atlassian Jira

com.mcparmory/atlassian-jira

Create, search, and manage issues, projects, and team workflows
25
Vscode Terminal Mcp

sirlordt/vscode-terminal-mcp

Execute commands in visible VSCode terminal tabs with output capture and session reuse.
1