CCM
/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

Claude Code Marketplaces

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
  • Skill index
  • MCP index
  • Marketplace index
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by mertbuilds.com

Independent project, not affiliated with Anthropic
vish288 avatar

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 →
inference shell
inference shell
create and run specialised agents in minutes
build now →
MCP-ready Email SendingMCP-ready Email Sending
MCP-ready Email Sending
Plug Mailtrap into your AI workflow and let it handle the email.
Connect Mailtrap MCP →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Capacitor - Shared memory for your team’s coding agents.
Capacitor - Shared memory for your team’s coding agents.
Make coding agent sessions - Searchable, Shareable, Vendor-neutral & Scored.
Try For Free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
inference shell
inference shell
create and run specialised agents in minutes
build now →
MCP-ready Email SendingMCP-ready Email Sending
MCP-ready Email Sending
Plug Mailtrap into your AI workflow and let it handle the email.
Connect Mailtrap MCP →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Capacitor - Shared memory for your team’s coding agents.
Capacitor - Shared memory for your team’s coding agents.
Make coding agent sessions - Searchable, Shareable, Vendor-neutral & Scored.
Try For Free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →

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
auto_devops_enabledboolean
Default to Auto DevOps pipeline for all projects within this group.
avatarstring
Image file for avatar of the group.
default_branchstring
The default branch name for group’s projects.
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": F...
descriptionstring
The group’s description.
duo_availabilitystring
Duo availability setting. Note: In the UI, never_on is displayed as "Always Off".one of default_on · default_off · never_on
emails_enabledboolean
Enable email notifications.
enabled_git_access_protocolstring
Enabled protocols for Git access.one of ssh · http · all
experiment_features_enabledboolean
Enable experiment features for this group.
extra_shared_runners_minutes_limitinteger
Can be set by administrators only. Additional compute minutes for this group. GitLab Self-Managed, Premium and Ultimate only.
lfs_enabledboolean
Enable/disable Large File Storage (LFS) for the projects in this group.
membership_lockboolean
Users cannot be added to projects in this group. Premium and Ultimate only.
mentions_disabledboolean
Disable the capability of a group from getting mentioned.
namestring
The name of the group.
organization_idinteger
The organization ID for the group.
parent_idinteger
The parent group ID for creating nested group.
pathstring
The path of the 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.
require_two_factor_authenticationboolean
Require all users in this group to set up two-factor authentication.

+6 more parameters. See the server's own documentation for the full schema.

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
build_git_strategystring
Git strategy for builds.
container_registry_enabledboolean
Enable container registry.
default_branchstring
The default branch name.
descriptionstring
Project description.
issues_enabledboolean
Enable issues feature.
merge_requests_enabledboolean
Enable merge requests feature.
namestring
The name of the project.
namespace_idinteger
The namespace (group or user ID) under which to create the project.
pathstring
The path or URL-friendly name for the project.
snippets_enabledboolean
Enable snippets feature.
visibilitystring
Project visibility.one of private · internal · public
wiki_enabledboolean
Enable wiki feature.
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
assignee_idinteger
The ID of the user to assign the issue to. Only appears on GitLab Free.
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
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.
descriptionstring
The description of an issue. Limited to 1,048,576 characters.
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`.
due_datestring
The due date. Date time string in the format `YYYY-MM-DD`, for example `2016-03-11`.
epic_idinteger
ID of the epic to add the issue to. Valid values are greater than or equal to 0. Premium and Ultimate only.
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.
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).
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
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.
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 value...
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.
titlestring
The title of an issue.
weightinteger
The weight of the issue. Valid values are greater than or equal to 0. Premium and Ultimate only.
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
branch_namestring
The name of the new branch.
project_idinteger
The ID or URL-encoded path of the project.
refstring
The branch name or commit SHA to create the new branch from.
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
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 1...
idinteger
The ID or URL-encoded path of the project to be deleted.
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...
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
project_idinteger
The ID or URL-encoded path of the project.
ref_typestring
The scope of commits to list. Possible values are `branch`, `tag`, or `all`.one of branch · tag · alldefault: all
shastring
The commit hash.
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
first_parentboolean
Follow only the first parent commit upon seeing a merge commit.
project_idinteger
The ID or URL-encoded path of the project.
shastring
The commit hash.
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_custom_attributesboolean
Include custom attributes in response (administrators only).
with_projectsboolean
Include details from projects that belong to the specified group (defaults to true). Deprecated, scheduled for removal in API v5.default: true
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
all_availableboolean
Include all groups the user has access to (admin only).
min_access_levelinteger
Limit to groups with minimum access level.
order_bystring
Return groups ordered by this field.one of id · name · path · created_at · updated_at
ownedboolean
Limit to groups owned by the current user.
pageinteger
Page number for pagination.
per_pageinteger
Number of results per page.
searchstring
Search for groups by name or path.
skip_groups[]array
List of group IDs to exclude.
sortstring
Return groups sorted in 'asc' or 'desc' order.one of asc · desc
statisticsboolean
Include group statistics (admin only).
with_custom_attributesboolean
Include custom attributes in response (admins only).
with_projectsboolean
Include project details in response (deprecated).
with_two_factorboolean
Include groups requiring two-factor authentication.
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.
merge_request_iidinteger
Internal ID of the merge request.
pageinteger
Page number to retrieve.
per_pageinteger
Number of notes per page (max 100).
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
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 def...
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 o...
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. Prem...
assignee_idinteger
Returns merge requests assigned to the given user id. None returns unassigned merge requests. Any returns merge requests with an assignee.
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.
author_usernamestring
Returns merge requests created by the given username. Mutually exclusive with author_id.
created_afterstring
Returns merge requests created 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).
deployed_beforestring
Returns merge requests deployed before the given date/time. Expected in ISO 8601 format (2019-03-15T08:00:00Z).
environmentstring
Returns merge requests deployed to the given environment.
idinteger
The ID or URL-encoded path of the project.
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-insen...
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.
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.
milestonestring
Returns merge requests for a specific milestone. None returns merge requests with no milestone. Any returns merge requests that have an assigned milestone.
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.
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...
order_bystring
Returns requests ordered by created_at, title, merged_at, or updated_at fields. Default is created_at.

+16 more parameters. See the server's own documentation for the full schema.

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
archivedboolean
Limit by archived status.
id_afterinteger
Limit results to projects with IDs greater than the specified ID.
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.
min_access_levelinteger
Limit by current user minimal role (access_level).
order_bystring
Return projects ordered by this field. Default is 'created_at'.one of id · name · path · created_at · updated_at · star_count
ownedboolean
Limit by projects explicitly owned by the current user.
pageinteger
Page number for pagination.
per_pageinteger
Number of items per page (1-100).
searchstring
Return list of projects matching search criteria (case-insensitive substring).
simpleboolean
Return only limited fields for each project.
sortstring
Return projects sorted in 'asc' or 'desc' order. Default is 'desc'.one of asc · desc
starredboolean
Limit by projects starred by the current user.
statisticsboolean
Include project statistics. Available to Reporter role and above.
visibilitystring
Limit by project visibility.one of private · internal · public
with_custom_attributesboolean
Include custom attributes in response (admin only).
with_issues_enabledboolean
Limit by enabled issues feature.
with_merge_requests_enabledboolean
Limit by enabled merge requests feature.
with_programming_languagestring
Limit by projects which use the given programming language.
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
branch_namestring
The URL-encoded name of the branch.
project_idinteger
The ID or URL-encoded path of the project.
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
project_idinteger
The ID or URL-encoded path of the project.
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`.
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
pipeline_idinteger
The ID of the pipeline.
project_idinteger
The ID or URL-encoded path of the project.
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
activeboolean
Filters only active users. Default is false.
adminsboolean
Return only administrators. Default is false. (Admin only)
auditorsboolean
Return only auditor users. Default is false. If not included, it returns all users. (Admin only, Premium and Ultimate only)
blockedboolean
Filters only blocked users. Default is false.
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_externalboolean
Filters only non external users. Default is false.
exclude_humansboolean
Filters only bot or internal users. Default is false.
exclude_internalboolean
Filters only non internal users. Default is false.
extern_uidstring
Get a single user with a specific external authentication provider UID. (Admin only)
externalboolean
Filters only external users. Default is false.
humansboolean
Filters only regular users that are not bot or internal 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
pageinteger
Page number for pagination.
per_pageinteger
Number of items per page for pagination.
providerstring
The external provider. (Admin only)
searchstring
Search for users by name, username, or public email.
skip_ldapboolean
Skip LDAP users. (Admin only, Premium and Ultimate only)
sortstring
Return users sorted in 'asc' or 'desc' order. Default is 'desc'. (Admin only)one of asc · desc

+4 more parameters. See the server's own documentation for the full schema.

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.
per_pageinteger
Number of items per page for pagination.
querystring
Filters results based on a given name, email, or username. Use partial values to widen the scope of the query.
show_seat_infoboolean
Show seat information for users.
statestring
Filter results by member state, one of 'awaiting' or 'active'. Premium and Ultimate only.one of awaiting · active
user_idsarray
Filter the results on the given user IDs.
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).
per_pageinteger
Number of items per page for pagination (must be ≥ 1).
searchstring
Search string to filter members by name, username, or public email.
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
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
activeboolean
When true, return only active users.
idinteger
The ID or URL-encoded path of the group.
include_inheritedboolean
Include members inherited from ancestor groups when true.
pageinteger
Page number for pagination.
per_pageinteger
Number of results per page (1–100).
querystring
Filter members by name, username, or email substring.
relationsarray
Membership relation types to include: direct, descendants, inherited, or shared.
skip_usersarray
List of user IDs to exclude from the results.
sortstring
Order results by access level, ascending or descending.one of access_level_asc · access_level_desc
two_factorstring
Filter users by two-factor authentication status.one of enabled · disabled
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.
include_retriedboolean
Include retried jobs in the response. Defaults to false.default: false
pipeline_idinteger
The ID of the pipeline.
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
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.
per_pageinteger
Number of items to return per page.
searchstring
Search for specific groups by name.
shared_min_access_levelinteger
Limit to shared groups with at least this access level.
shared_visible_onlyboolean
Limit to shared groups user has access to.
skip_groupsarray
Skip the group IDs passed.
with_sharedboolean
Include projects shared with this group. Default is false.
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
created_afterstring
Return pipelines created after the specified date (ISO 8601 format).
created_beforestring
Return pipelines created before the specified date (ISO 8601 format).
idinteger
The ID or URL-encoded path of the project.
namestring
Return pipelines with the specified name.
order_bystring
Order pipelines by 'id', 'status', 'ref', 'updated_at' or 'user_id'.one of id · status · ref · updated_at · user_iddefault: id
pageinteger
Page number for pagination.
per_pageinteger
Number of items per page for pagination.
refstring
The ref of pipelines.
scopestring
The scope of pipelines, one of: 'running', 'pending', 'finished', 'branches', 'tags'.one of running · pending · finished · branches · tags
shastring
The SHA of pipelines.
sortstring
Sort pipelines in 'asc' or 'desc' order.one of asc · descdefault: desc
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
updated_afterstring
Return pipelines updated after the specified date (ISO 8601 format).
updated_beforestring
Return pipelines updated before the specified date (ISO 8601 format).
usernamestring
The username of the user who triggered pipelines.
yaml_errorsboolean
Returns pipelines with invalid configurations.
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.
per_pageinteger
Number of items per page for pagination.
searchstring
Search term to filter groups by name or path.
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.
order_bystring
Return tags ordered by `name`, `updated`, or `version`. Default is `updated`.
pageinteger
Page number of the results to retrieve.
per_pageinteger
Number of items to return per page.
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`.
sortstring
Return tags sorted in `asc` or `desc` order. Default is `desc`.
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.
authorstring
Search commits by commit author.
first_parentboolean
Follow only the first parent commit upon seeing a merge commit.
orderstring
List commits in order. Possible values: default, topo. Defaults to default, the commits are shown in reverse chronological order.one of default · topo
pathstring
The file path to filter commits by.
project_idinteger
The ID or URL-encoded path of the project.
ref_namestring
The name of a repository branch, tag or revision range, or if not given the default branch.
sincestring
Only commits after or on this date are returned in ISO 8601 format YYYY-MM-DDTHH:MM:SSZ.
trailersboolean
Parse and include Git trailers for every commit.
untilstring
Only commits before or on this date are returned in ISO 8601 format YYYY-MM-DDTHH:MM:SSZ.
with_statsboolean
Stats about each commit are added to the response.
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
archivedboolean
Limit by archived status.
idinteger
The ID or username of the user whose projects to list.
id_afterinteger
Limit results to projects with IDs greater than the specified ID.
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.
min_access_levelinteger
Limit by current user minimal role (access_level).
order_bystring
Return projects ordered by this field. Default is 'created_at'.one of id · name · path · created_at · updated_at · star_count
ownedboolean
Limit by projects explicitly owned by the specified user.
pageinteger
Page number for pagination.
per_pageinteger
Number of items per page (1-100).
searchstring
Return list of projects matching search criteria (case-insensitive substring).
simpleboolean
Return only limited fields for each project.
sortstring
Return projects sorted in asc or desc order. Default is 'desc'.one of asc · desc
starredboolean
Limit by projects starred by the specified user.
statisticsboolean
Include project statistics. Available to Reporter role and above.
updated_afterstring
Limit projects updated after given time (ISO 8601).
updated_beforestring
Limit projects updated before given time (ISO 8601).
visibilitystring
Limit by project visibility.one of private · internal · public
with_custom_attributesboolean
Include custom attributes in response (admin only).
with_issues_enabledboolean
Limit by enabled issues feature.

+2 more parameters. See the server's own documentation for the full schema.

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
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.
show_whitespace_in_diffsboolean
Flag indicating the user sees whitespace changes in diffs.
view_diffs_file_by_fileboolean
Flag indicating the user sees only one file diff per page.
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
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
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.
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
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.
group_idinteger
The ID of the group to share with.
idinteger
The ID or URL-encoded path of the project.
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 →
inference shell
inference shell
create and run specialised agents in minutes
build now →
MCP-ready Email SendingMCP-ready Email Sending
MCP-ready Email Sending
Plug Mailtrap into your AI workflow and let it handle the email.
Connect Mailtrap MCP →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Capacitor - Shared memory for your team’s coding agents.
Capacitor - Shared memory for your team’s coding agents.
Make coding agent sessions - Searchable, Shareable, Vendor-neutral & Scored.
Try For Free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →

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

More from vish288

  • Mcp Atlassian Extended2
  • Mcp Coda1

Related Developer Tools MCP Servers

View all →
lawp09 avatar
Bitbucket MCP Server

lawp09/bitbucket-mcp

MCP server for Bitbucket API - manage repositories, pull requests, comments, pipelines and more
2
theupsider avatar
Lsp Mcp

theupsider/lsp-mcp

Universal LSP MCP server
2
domdomegg avatar
Filesystem

domdomegg/filesystem-mcp

Read, create, and edit files.
1
davidweb3-ctrl avatar
Git Enhanced

io.github.davidweb3-ctrl/git-enhanced

Enhanced Git MCP Server - Code review, commit analysis, and branch management
1
dingdawg avatar
Dingdawg Code Review

io.github.dingdawg/dingdawg-code-review

AI code review — security, quality, performance. Learns your patterns. Receipted.
1
ofershap avatar
Github Gist

io.github.ofershap/github-gist

MCP server to create, read, update, list, and search GitHub Gists from your IDE
1