@zereight/mcp-gitlab 1.0.75 → 1.0.77

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -25,6 +25,8 @@ When using with the Claude App, you need to set up your API key and URLs directl
25
25
  "env": {
26
26
  "GITLAB_PERSONAL_ACCESS_TOKEN": "your_gitlab_token",
27
27
  "GITLAB_API_URL": "your_gitlab_api_url",
28
+ "GITLAB_PROJECT_ID": "your_project_id", // Optional: default project
29
+ "GITLAB_ALLOWED_PROJECT_IDS": "", // Optional: comma-separated list of allowed project IDs
28
30
  "GITLAB_READ_ONLY_MODE": "false",
29
31
  "USE_GITLAB_WIKI": "false", // use wiki api?
30
32
  "USE_MILESTONE": "false", // use milestone api?
@@ -168,6 +170,9 @@ $ sh scripts/image_push.sh docker_user_name
168
170
  - `GITLAB_PERSONAL_ACCESS_TOKEN`: Your GitLab personal access token.
169
171
  - `GITLAB_API_URL`: Your GitLab API URL. (Default: `https://gitlab.com/api/v4`)
170
172
  - `GITLAB_PROJECT_ID`: Default project ID. If set, Overwrite this value when making an API request.
173
+ - `GITLAB_ALLOWED_PROJECT_IDS`: Optional comma-separated list of allowed project IDs. When set with a single value, acts as a default project (like the old "lock" mode). When set with multiple values, restricts access to only those projects. Examples:
174
+ - Single value `123`: MCP server can only access project 123 and uses it as default
175
+ - Multiple values `123,456,789`: MCP server can access projects 123, 456, and 789 but requires explicit project ID in requests
171
176
  - `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.
172
177
  - `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.
173
178
  - `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.
@@ -181,71 +186,87 @@ $ sh scripts/image_push.sh docker_user_name
181
186
  ## Tools 🛠️
182
187
 
183
188
  +<!-- TOOLS-START -->
184
-
185
- 1. `create_or_update_file` - Create or update a single file in a GitLab project
186
- 2. `search_repositories` - Search for GitLab projects
187
- 3. `create_repository` - Create a new GitLab project
188
- 4. `get_file_contents` - Get the contents of a file or directory from a GitLab project
189
- 5. `push_files` - Push multiple files to a GitLab project in a single commit
190
- 6. `create_issue` - Create a new issue in a GitLab project
191
- 7. `create_merge_request` - Create a new merge request in a GitLab project
192
- 8. `fork_repository` - Fork a GitLab project to your account or specified namespace
193
- 9. `create_branch` - Create a new branch in a GitLab project
194
- 10. `get_merge_request` - Get details of a merge request (Either mergeRequestIid or branchName must be provided)
195
- 11. `get_merge_request_diffs` - Get the changes/diffs of a merge request (Either mergeRequestIid or branchName must be provided)
196
- 12. `list_merge_request_diffs` - List merge request diffs with pagination support (Either mergeRequestIid or branchName must be provided)
197
- 13. `get_branch_diffs` - Get the changes/diffs between two branches or commits in a GitLab project
198
- 14. `update_merge_request` - Update a merge request (Either mergeRequestIid or branchName must be provided)
199
- 15. `create_note` - Create a new note (comment) to an issue or merge request
200
- 16. `create_merge_request_thread` - Create a new thread on a merge request
201
- 17. `mr_discussions` - List discussion items for a merge request
202
- 18. `update_merge_request_note` - Modify an existing merge request thread note
203
- 19. `create_merge_request_note` - Add a new note to an existing merge request thread
204
- 20. `update_issue_note` - Modify an existing issue thread note
205
- 21. `create_issue_note` - Add a new note to an existing issue thread
206
- 22. `list_issues` - List issues in a GitLab project with filtering options
207
- 23. `get_issue` - Get details of a specific issue in a GitLab project
208
- 24. `update_issue` - Update an issue in a GitLab project
209
- 25. `delete_issue` - Delete an issue from a GitLab project
210
- 26. `list_issue_links` - List all issue links for a specific issue
211
- 27. `list_issue_discussions` - List discussions for an issue in a GitLab project
212
- 28. `get_issue_link` - Get a specific issue link
213
- 29. `create_issue_link` - Create an issue link between two issues
214
- 30. `delete_issue_link` - Delete an issue link
215
- 31. `list_namespaces` - List all namespaces available to the current user
216
- 32. `get_namespace` - Get details of a namespace by ID or path
217
- 33. `verify_namespace` - Verify if a namespace path exists
218
- 34. `get_project` - Get details of a specific project
219
- 35. `list_projects` - List projects accessible by the current user
220
- 36. `list_labels` - List labels for a project
221
- 37. `get_label` - Get a single label from a project
222
- 38. `create_label` - Create a new label in a project
223
- 39. `update_label` - Update an existing label in a project
224
- 40. `delete_label` - Delete a label from a project
225
- 41. `list_group_projects` - List projects in a GitLab group with filtering options
226
- 42. `list_wiki_pages` - List wiki pages in a GitLab project
227
- 43. `get_wiki_page` - Get details of a specific wiki page
228
- 44. `create_wiki_page` - Create a new wiki page in a GitLab project
229
- 45. `update_wiki_page` - Update an existing wiki page in a GitLab project
230
- 46. `delete_wiki_page` - Delete a wiki page from a GitLab project
231
- 47. `get_repository_tree` - Get the repository tree for a GitLab project (list files and directories)
232
- 48. `list_pipelines` - List pipelines in a GitLab project with filtering options
233
- 49. `get_pipeline` - Get details of a specific pipeline in a GitLab project
234
- 50. `list_pipeline_jobs` - List all jobs in a specific pipeline
235
- 51. `get_pipeline_job` - Get details of a GitLab pipeline job number
236
- 52. `get_pipeline_job_output` - Get the output/trace of a GitLab pipeline job number
237
- 53. `create_pipeline` - Create a new pipeline for a branch or tag
238
- 54. `retry_pipeline` - Retry a failed or canceled pipeline
239
- 55. `cancel_pipeline` - Cancel a running pipeline
240
- 56. `list_merge_requests` - List merge requests in a GitLab project with filtering options
241
- 57. `list_milestones` - List milestones in a GitLab project with filtering options
242
- 58. `get_milestone` - Get details of a specific milestone
243
- 59. `create_milestone` - Create a new milestone in a GitLab project
244
- 60. `edit_milestone` - Edit an existing milestone in a GitLab project
245
- 61. `delete_milestone` - Delete a milestone from a GitLab project
246
- 62. `get_milestone_issue` - Get issues associated with a specific milestone
247
- 63. `get_milestone_merge_requests` - Get merge requests associated with a specific milestone
248
- 64. `promote_milestone` - Promote a milestone to the next stage
249
- 65. `get_milestone_burndown_events` - Get burndown events for a specific milestone
250
- 66. `get_users` - Get GitLab user details by usernames
189
+ 1. `merge_merge_request` - Merge a merge request in a GitLab project
190
+ 2. `create_or_update_file` - Create or update a single file in a GitLab project
191
+ 3. `search_repositories` - Search for GitLab projects
192
+ 4. `create_repository` - Create a new GitLab project
193
+ 5. `get_file_contents` - Get the contents of a file or directory from a GitLab project
194
+ 6. `push_files` - Push multiple files to a GitLab project in a single commit
195
+ 7. `create_issue` - Create a new issue in a GitLab project
196
+ 8. `create_merge_request` - Create a new merge request in a GitLab project
197
+ 9. `fork_repository` - Fork a GitLab project to your account or specified namespace
198
+ 10. `create_branch` - Create a new branch in a GitLab project
199
+ 11. `get_merge_request` - Get details of a merge request (Either mergeRequestIid or branchName must be provided)
200
+ 12. `get_merge_request_diffs` - Get the changes/diffs of a merge request (Either mergeRequestIid or branchName must be provided)
201
+ 13. `list_merge_request_diffs` - List merge request diffs with pagination support (Either mergeRequestIid or branchName must be provided)
202
+ 14. `get_branch_diffs` - Get the changes/diffs between two branches or commits in a GitLab project
203
+ 15. `update_merge_request` - Update a merge request (Either mergeRequestIid or branchName must be provided)
204
+ 16. `create_note` - Create a new note (comment) to an issue or merge request
205
+ 17. `create_merge_request_thread` - Create a new thread on a merge request
206
+ 18. `mr_discussions` - List discussion items for a merge request
207
+ 19. `update_merge_request_note` - Modify an existing merge request thread note
208
+ 20. `create_merge_request_note` - Add a new note to an existing merge request thread
209
+ 21. `get_draft_note` - Get a single draft note from a merge request
210
+ 22. `list_draft_notes` - List draft notes for a merge request
211
+ 23. `create_draft_note` - Create a draft note for a merge request
212
+ 24. `update_draft_note` - Update an existing draft note
213
+ 25. `delete_draft_note` - Delete a draft note
214
+ 26. `publish_draft_note` - Publish a single draft note
215
+ 27. `bulk_publish_draft_notes` - Publish all draft notes for a merge request
216
+ 28. `update_issue_note` - Modify an existing issue thread note
217
+ 29. `create_issue_note` - Add a new note to an existing issue thread
218
+ 30. `list_issues` - List issues (default: created by current user only; use scope='all' for all accessible issues)
219
+ 31. `my_issues` - List issues assigned to the authenticated user (defaults to open issues)
220
+ 32. `get_issue` - Get details of a specific issue in a GitLab project
221
+ 33. `update_issue` - Update an issue in a GitLab project
222
+ 34. `delete_issue` - Delete an issue from a GitLab project
223
+ 35. `list_issue_links` - List all issue links for a specific issue
224
+ 36. `list_issue_discussions` - List discussions for an issue in a GitLab project
225
+ 37. `get_issue_link` - Get a specific issue link
226
+ 38. `create_issue_link` - Create an issue link between two issues
227
+ 39. `delete_issue_link` - Delete an issue link
228
+ 40. `list_namespaces` - List all namespaces available to the current user
229
+ 41. `get_namespace` - Get details of a namespace by ID or path
230
+ 42. `verify_namespace` - Verify if a namespace path exists
231
+ 43. `get_project` - Get details of a specific project
232
+ 44. `list_projects` - List projects accessible by the current user
233
+ 45. `list_project_members` - List members of a GitLab project
234
+ 46. `list_labels` - List labels for a project
235
+ 47. `get_label` - Get a single label from a project
236
+ 48. `create_label` - Create a new label in a project
237
+ 49. `update_label` - Update an existing label in a project
238
+ 50. `delete_label` - Delete a label from a project
239
+ 51. `list_group_projects` - List projects in a GitLab group with filtering options
240
+ 52. `list_wiki_pages` - List wiki pages in a GitLab project
241
+ 53. `get_wiki_page` - Get details of a specific wiki page
242
+ 54. `create_wiki_page` - Create a new wiki page in a GitLab project
243
+ 55. `update_wiki_page` - Update an existing wiki page in a GitLab project
244
+ 56. `delete_wiki_page` - Delete a wiki page from a GitLab project
245
+ 57. `get_repository_tree` - Get the repository tree for a GitLab project (list files and directories)
246
+ 58. `list_pipelines` - List pipelines in a GitLab project with filtering options
247
+ 59. `get_pipeline` - Get details of a specific pipeline in a GitLab project
248
+ 60. `list_pipeline_jobs` - List all jobs in a specific pipeline
249
+ 61. `list_pipeline_trigger_jobs` - List all trigger jobs (bridges) in a specific pipeline that trigger downstream pipelines
250
+ 62. `get_pipeline_job` - Get details of a GitLab pipeline job number
251
+ 63. `get_pipeline_job_output` - Get the output/trace of a GitLab pipeline job with optional pagination to limit context window usage
252
+ 64. `create_pipeline` - Create a new pipeline for a branch or tag
253
+ 65. `retry_pipeline` - Retry a failed or canceled pipeline
254
+ 66. `cancel_pipeline` - Cancel a running pipeline
255
+ 67. `list_merge_requests` - List merge requests in a GitLab project with filtering options
256
+ 68. `list_milestones` - List milestones in a GitLab project with filtering options
257
+ 69. `get_milestone` - Get details of a specific milestone
258
+ 70. `create_milestone` - Create a new milestone in a GitLab project
259
+ 71. `edit_milestone` - Edit an existing milestone in a GitLab project
260
+ 72. `delete_milestone` - Delete a milestone from a GitLab project
261
+ 73. `get_milestone_issue` - Get issues associated with a specific milestone
262
+ 74. `get_milestone_merge_requests` - Get merge requests associated with a specific milestone
263
+ 75. `promote_milestone` - Promote a milestone to the next stage
264
+ 76. `get_milestone_burndown_events` - Get burndown events for a specific milestone
265
+ 77. `get_users` - Get GitLab user details by usernames
266
+ 78. `list_commits` - List repository commits with filtering options
267
+ 79. `get_commit` - Get details of a specific commit
268
+ 80. `get_commit_diff` - Get changes/diffs of a specific commit
269
+ 81. `list_group_iterations` - List group iterations with filtering options
270
+ 82. `upload_markdown` - Upload a file to a GitLab project for use in markdown content
271
+ 83. `download_attachment` - Download an uploaded file from a GitLab project by secret and filename
251
272
  <!-- TOOLS-END -->
@@ -1,5 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { pino } from 'pino';
3
+ const DEFAULT_NULL = process.env.DEFAULT_NULL === "true";
3
4
  const logger = pino({
4
5
  level: process.env.LOG_LEVEL || 'info',
5
6
  transport: {
@@ -11,9 +12,17 @@ const logger = pino({
11
12
  },
12
13
  },
13
14
  });
14
- export const flexibleBoolean = z.preprocess((val) => {
15
- if (typeof val === 'string') {
16
- return val.toLowerCase() === 'true';
15
+ export const flexibleBoolean = z.preprocess(val => {
16
+ if (typeof val === "boolean") {
17
+ return val;
17
18
  }
18
- return val;
19
+ let result = "false";
20
+ try {
21
+ result = String(val).toLowerCase();
22
+ }
23
+ catch {
24
+ return false;
25
+ }
26
+ return ["true", "t", "1"].includes(result);
19
27
  }, z.boolean());
28
+ export const flexibleBooleanNullable = DEFAULT_NULL ? flexibleBoolean.nullable().default(null) : flexibleBoolean.nullable();