Provides integration with GitLab's API, allowing access to and management of GitLab resources. Requires a personal access token for authentication.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@GitLab MCP Servercreate a new issue in the backend-api project about the authentication bug"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Better GitLab MCP Server
@zereight/mcp-gitlab
GitLab MCP(Model Context Protocol) Server. Includes bug fixes and improvements over the original GitLab MCP server.
Related MCP server: Git MCP
Usage
Using with Claude App, Cline, Roo Code, Cursor
When using with the Claude App, you need to set up your API key and URLs directly.
npx
{
"mcpServers": {
"GitLab communication server": {
"command": "npx",
"args": ["-y", "@zereight/mcp-gitlab"],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "your_gitlab_token",
"GITLAB_API_URL": "your_gitlab_api_url",
"GITLAB_READ_ONLY_MODE": "false",
"USE_GITLAB_WIKI": "false", // use wiki api?
"USE_MILESTONE": "false", // use milestone api?
"USE_PIPELINE": "false" // use pipeline api?
}
}
}
}Docker
stdio
{
"mcpServers": {
"GitLab communication server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITLAB_PERSONAL_ACCESS_TOKEN",
"-e",
"GITLAB_API_URL",
"-e",
"GITLAB_READ_ONLY_MODE",
"-e",
"USE_GITLAB_WIKI",
"-e",
"USE_MILESTONE",
"-e",
"USE_PIPELINE",
"iwakitakuma/gitlab-mcp"
],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "your_gitlab_token",
"GITLAB_API_URL": "https://gitlab.com/api/v4", // Optional, for self-hosted GitLab
"GITLAB_READ_ONLY_MODE": "false",
"USE_GITLAB_WIKI": "true",
"USE_MILESTONE": "true",
"USE_PIPELINE": "true"
}
}
}
}sse
docker run -i --rm \
-e GITLAB_PERSONAL_ACCESS_TOKEN=your_gitlab_token \
-e GITLAB_API_URL= "https://gitlab.com/api/v4"\
-e GITLAB_READ_ONLY_MODE=true \
-e USE_GITLAB_WIKI=true \
-e USE_MILESTONE=true \
-e USE_PIPELINE=true \
-e SSE=true \
-p 3333:3002 \
iwakitakuma/gitlab-mcp{
"mcpServers": {
"GitLab communication server": {
"url": "http://localhost:3333/sse"
}
}
}Docker Image Push
$ sh scripts/image_push.sh docker_user_nameEnvironment Variables
GITLAB_PERSONAL_ACCESS_TOKEN: Your GitLab personal access token.GITLAB_API_URL: Your GitLab API URL. (Default:https://gitlab.com/api/v4)GITLAB_READ_ONLY_MODE: When set to 'true', restricts the server to only expose read-only operations. Useful for enhanced security or when write access is not needed. Also useful for using with Cursor and it's 40 tool limit.USE_GITLAB_WIKI: When set to 'true', enables the wiki-related tools (list_wiki_pages, get_wiki_page, create_wiki_page, update_wiki_page, delete_wiki_page). By default, wiki features are disabled.USE_MILESTONE: When set to 'true', enables the milestone-related tools (list_milestones, get_milestone, create_milestone, edit_milestone, delete_milestone, get_milestone_issue, get_milestone_merge_requests, promote_milestone, get_milestone_burndown_events). By default, milestone features are disabled.USE_PIPELINE: When set to 'true', enables the pipeline-related tools (list_pipelines, get_pipeline, list_pipeline_jobs, get_pipeline_job, get_pipeline_job_output, create_pipeline, retry_pipeline, cancel_pipeline). By default, pipeline features are disabled.
Tools 🛠️
+
create_or_update_file- Create or update a single file in a GitLab projectsearch_repositories- Search for GitLab projectscreate_repository- Create a new GitLab projectget_file_contents- Get the contents of a file or directory from a GitLab projectpush_files- Push multiple files to a GitLab project in a single commitcreate_issue- Create a new issue in a GitLab projectcreate_merge_request- Create a new merge request in a GitLab projectfork_repository- Fork a GitLab project to your account or specified namespacecreate_branch- Create a new branch in a GitLab projectget_merge_request- Get details of a merge request (Either mergeRequestIid or branchName must be provided)get_merge_request_diffs- Get the changes/diffs of a merge request (Either mergeRequestIid or branchName must be provided)get_branch_diffs- Get the changes/diffs between two branches or commits in a GitLab projectupdate_merge_request- Update a merge request (Either mergeRequestIid or branchName must be provided)create_note- Create a new note (comment) to an issue or merge requestcreate_merge_request_thread- Create a new thread on a merge requestmr_discussions- List discussion items for a merge requestupdate_merge_request_note- Modify an existing merge request thread notecreate_merge_request_note- Add a new note to an existing merge request threadupdate_issue_note- Modify an existing issue thread notecreate_issue_note- Add a new note to an existing issue threadlist_issues- List issues in a GitLab project with filtering optionsget_issue- Get details of a specific issue in a GitLab projectupdate_issue- Update an issue in a GitLab projectdelete_issue- Delete an issue from a GitLab projectlist_issue_links- List all issue links for a specific issuelist_issue_discussions- List discussions for an issue in a GitLab projectget_issue_link- Get a specific issue linkcreate_issue_link- Create an issue link between two issuesdelete_issue_link- Delete an issue linklist_namespaces- List all namespaces available to the current userget_namespace- Get details of a namespace by ID or pathverify_namespace- Verify if a namespace path existsget_project- Get details of a specific projectlist_projects- List projects accessible by the current userlist_labels- List labels for a projectget_label- Get a single label from a projectcreate_label- Create a new label in a projectupdate_label- Update an existing label in a projectdelete_label- Delete a label from a projectlist_group_projects- List projects in a GitLab group with filtering optionslist_wiki_pages- List wiki pages in a GitLab projectget_wiki_page- Get details of a specific wiki pagecreate_wiki_page- Create a new wiki page in a GitLab projectupdate_wiki_page- Update an existing wiki page in a GitLab projectdelete_wiki_page- Delete a wiki page from a GitLab projectget_repository_tree- Get the repository tree for a GitLab project (list files and directories)list_pipelines- List pipelines in a GitLab project with filtering optionsget_pipeline- Get details of a specific pipeline in a GitLab projectlist_pipeline_jobs- List all jobs in a specific pipelineget_pipeline_job- Get details of a GitLab pipeline job numberget_pipeline_job_output- Get the output/trace of a GitLab pipeline job numbercreate_pipeline- Create a new pipeline for a branch or tagretry_pipeline- Retry a failed or canceled pipelinecancel_pipeline- Cancel a running pipelinelist_merge_requests- List merge requests in a GitLab project with filtering optionslist_milestones- List milestones in a GitLab project with filtering optionsget_milestone- Get details of a specific milestonecreate_milestone- Create a new milestone in a GitLab projectedit_milestone- Edit an existing milestone in a GitLab projectdelete_milestone- Delete a milestone from a GitLab projectget_milestone_issue- Get issues associated with a specific milestoneget_milestone_merge_requests- Get merge requests associated with a specific milestonepromote_milestone- Promote a milestone to the next stageget_milestone_burndown_events- Get burndown events for a specific milestoneget_users- Get GitLab user details by usernames