MCP server for using the GitLab API
npm install @harshmaur/gitlab-mcp
GitLab MCP(Model Context Protocol) Server. Includes bug fixes and improvements over the original GitLab MCP server.
When using with the Claude App, you need to set up your API key and URLs directly.
#### npx
``json`
{
"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
`mcp.json`
{
"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
`shell`
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
`json`
{
"mcpServers": {
"GitLab communication server": {
"url": "http://localhost:3333/sse"
}
}
}
#### Docker Image Push
`shell`
$ sh scripts/image_push.sh docker_user_name
- 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.
+
1. create_or_update_file - Create or update a single file in a GitLab projectsearch_repositories
2. - Search for GitLab projectscreate_repository
3. - Create a new GitLab projectget_file_contents
4. - Get the contents of a file or directory from a GitLab projectpush_files
5. - Push multiple files to a GitLab project in a single commitcreate_issue
6. - Create a new issue in a GitLab projectcreate_merge_request
7. - Create a new merge request in a GitLab projectfork_repository
8. - Fork a GitLab project to your account or specified namespacecreate_branch
9. - Create a new branch in a GitLab projectget_merge_request
10. - Get details of a merge request (Either mergeRequestIid or branchName must be provided)get_merge_request_diffs
11. - Get the changes/diffs of a merge request (Either mergeRequestIid or branchName must be provided)get_branch_diffs
12. - Get the changes/diffs between two branches or commits in a GitLab projectupdate_merge_request
13. - Update a merge request (Either mergeRequestIid or branchName must be provided)create_note
14. - Create a new note (comment) to an issue or merge requestcreate_merge_request_thread
15. - Create a new thread on a merge requestmr_discussions
16. - List discussion items for a merge requestupdate_merge_request_note
17. - Modify an existing merge request thread notecreate_merge_request_note
18. - Add a new note to an existing merge request threadupdate_issue_note
19. - Modify an existing issue thread notecreate_issue_note
20. - Add a new note to an existing issue threadlist_issues
21. - List issues in a GitLab project with filtering optionsget_issue
22. - Get details of a specific issue in a GitLab projectupdate_issue
23. - Update an issue in a GitLab projectdelete_issue
24. - Delete an issue from a GitLab projectlist_issue_links
25. - List all issue links for a specific issuelist_issue_discussions
26. - List discussions for an issue in a GitLab projectget_issue_link
27. - Get a specific issue linkcreate_issue_link
28. - Create an issue link between two issuesdelete_issue_link
29. - Delete an issue linklist_namespaces
30. - List all namespaces available to the current userget_namespace
31. - Get details of a namespace by ID or pathverify_namespace
32. - Verify if a namespace path existsget_project
33. - Get details of a specific projectlist_projects
34. - List projects accessible by the current userlist_labels
35. - List labels for a projectget_label
36. - Get a single label from a projectcreate_label
37. - Create a new label in a projectupdate_label
38. - Update an existing label in a projectdelete_label
39. - Delete a label from a projectlist_group_projects
40. - List projects in a GitLab group with filtering optionslist_wiki_pages
41. - List wiki pages in a GitLab projectget_wiki_page
42. - Get details of a specific wiki pagecreate_wiki_page
43. - Create a new wiki page in a GitLab projectupdate_wiki_page
44. - Update an existing wiki page in a GitLab projectdelete_wiki_page
45. - Delete a wiki page from a GitLab projectget_repository_tree
46. - Get the repository tree for a GitLab project (list files and directories)list_pipelines
47. - List pipelines in a GitLab project with filtering optionsget_pipeline
48. - Get details of a specific pipeline in a GitLab projectlist_pipeline_jobs
49. - List all jobs in a specific pipelineget_pipeline_job
50. - Get details of a GitLab pipeline job numberget_pipeline_job_output
51. - Get the output/trace of a GitLab pipeline job numbercreate_pipeline
52. - Create a new pipeline for a branch or tagretry_pipeline
53. - Retry a failed or canceled pipelinecancel_pipeline
54. - Cancel a running pipelinelist_merge_requests
55. - List merge requests in a GitLab project with filtering optionslist_milestones
56. - List milestones in a GitLab project with filtering optionsget_milestone
57. - Get details of a specific milestonecreate_milestone
58. - Create a new milestone in a GitLab projectedit_milestone
59. - Edit an existing milestone in a GitLab projectdelete_milestone
60. - Delete a milestone from a GitLab projectget_milestone_issue
61. - Get issues associated with a specific milestoneget_milestone_merge_requests
62. - Get merge requests associated with a specific milestonepromote_milestone
63. - Promote a milestone to the next stageget_milestone_burndown_events
64. - Get burndown events for a specific milestoneget_users` - Get GitLab user details by usernames
65.