@zereight/mcp-gitlab 2.0.2 → 2.0.4
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 +18 -19
- package/build/{src/customSchemas.js → customSchemas.js} +12 -0
- package/build/index.js +4081 -211
- package/build/{src/schemas.js → schemas.js} +2 -3
- package/package.json +3 -9
- package/build/scripts/generate-tools-readme.js +0 -41
- package/build/src/argon2wrapper.js +0 -68
- package/build/src/authentication.js +0 -78
- package/build/src/authhelpers.js +0 -44
- package/build/src/config.js +0 -99
- package/build/src/gitlabhandler.js +0 -1666
- package/build/src/gitlabsession.js +0 -103
- package/build/src/logger.js +0 -11
- package/build/src/mcpserver.js +0 -1344
- package/build/src/oauth.js +0 -389
package/README.md
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# GitLab MCP Server
|
|
2
|
+
|
|
3
|
+
[](https://www.star-history.com/#zereight/gitlab-mcp&Date)
|
|
2
4
|
|
|
3
5
|
## @zereight/mcp-gitlab
|
|
4
6
|
|
|
@@ -10,7 +12,7 @@ GitLab MCP(Model Context Protocol) Server. **Includes bug fixes and improvements
|
|
|
10
12
|
|
|
11
13
|
## Usage
|
|
12
14
|
|
|
13
|
-
### Using with Claude App, Cline, Roo Code, Cursor
|
|
15
|
+
### Using with Claude App, Cline, Roo Code, Cursor, Kilo Code
|
|
14
16
|
|
|
15
17
|
When using with the Claude App, you need to set up your API key and URLs directly.
|
|
16
18
|
|
|
@@ -19,7 +21,7 @@ When using with the Claude App, you need to set up your API key and URLs directl
|
|
|
19
21
|
```json
|
|
20
22
|
{
|
|
21
23
|
"mcpServers": {
|
|
22
|
-
"
|
|
24
|
+
"gitlab": {
|
|
23
25
|
"command": "npx",
|
|
24
26
|
"args": ["-y", "@zereight/mcp-gitlab"],
|
|
25
27
|
"env": {
|
|
@@ -72,7 +74,7 @@ When using with the Claude App, you need to set up your API key and URLs directl
|
|
|
72
74
|
```json
|
|
73
75
|
{
|
|
74
76
|
"mcpServers": {
|
|
75
|
-
"
|
|
77
|
+
"gitlab": {
|
|
76
78
|
"command": "docker",
|
|
77
79
|
"args": [
|
|
78
80
|
"run",
|
|
@@ -110,7 +112,7 @@ When using with the Claude App, you need to set up your API key and URLs directl
|
|
|
110
112
|
```shell
|
|
111
113
|
docker run -i --rm \
|
|
112
114
|
-e GITLAB_PERSONAL_ACCESS_TOKEN=your_gitlab_token \
|
|
113
|
-
-e GITLAB_API_URL=
|
|
115
|
+
-e GITLAB_API_URL="https://gitlab.com/api/v4" \
|
|
114
116
|
-e GITLAB_READ_ONLY_MODE=true \
|
|
115
117
|
-e USE_GITLAB_WIKI=true \
|
|
116
118
|
-e USE_MILESTONE=true \
|
|
@@ -123,7 +125,7 @@ docker run -i --rm \
|
|
|
123
125
|
```json
|
|
124
126
|
{
|
|
125
127
|
"mcpServers": {
|
|
126
|
-
"
|
|
128
|
+
"gitlab": {
|
|
127
129
|
"type": "sse",
|
|
128
130
|
"url": "http://localhost:3333/sse"
|
|
129
131
|
}
|
|
@@ -131,10 +133,8 @@ docker run -i --rm \
|
|
|
131
133
|
}
|
|
132
134
|
```
|
|
133
135
|
|
|
134
|
-
|
|
135
136
|
- streamable-http
|
|
136
137
|
|
|
137
|
-
|
|
138
138
|
```shell
|
|
139
139
|
docker run -i --rm \
|
|
140
140
|
-e GITLAB_PERSONAL_ACCESS_TOKEN=your_gitlab_token \
|
|
@@ -151,20 +151,14 @@ docker run -i --rm \
|
|
|
151
151
|
```json
|
|
152
152
|
{
|
|
153
153
|
"mcpServers": {
|
|
154
|
-
"
|
|
154
|
+
"gitlab": {
|
|
155
|
+
"type": "streamable-http",
|
|
155
156
|
"url": "http://localhost:3333/mcp"
|
|
156
157
|
}
|
|
157
158
|
}
|
|
158
159
|
}
|
|
159
160
|
```
|
|
160
161
|
|
|
161
|
-
|
|
162
|
-
#### Docker Image Push
|
|
163
|
-
|
|
164
|
-
```shell
|
|
165
|
-
$ sh scripts/image_push.sh docker_user_name
|
|
166
|
-
```
|
|
167
|
-
|
|
168
162
|
### Environment Variables
|
|
169
163
|
|
|
170
164
|
- `GITLAB_PERSONAL_ACCESS_TOKEN`: Your GitLab personal access token.
|
|
@@ -174,6 +168,7 @@ $ sh scripts/image_push.sh docker_user_name
|
|
|
174
168
|
- Single value `123`: MCP server can only access project 123 and uses it as default
|
|
175
169
|
- Multiple values `123,456,789`: MCP server can access projects 123, 456, and 789 but requires explicit project ID in requests
|
|
176
170
|
- `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.
|
|
171
|
+
- `GITLAB_DENIED_TOOLS_REGEX`: When set as a regular expression, it excludes the matching tools.
|
|
177
172
|
- `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.
|
|
178
173
|
- `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.
|
|
179
174
|
- `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.
|
|
@@ -181,11 +176,13 @@ $ sh scripts/image_push.sh docker_user_name
|
|
|
181
176
|
- `SSE`: When set to 'true', enables the Server-Sent Events transport.
|
|
182
177
|
- `STREAMABLE_HTTP`: When set to 'true', enables the Streamable HTTP transport. If both **SSE** and **STREAMABLE_HTTP** are set to 'true', the server will prioritize Streamable HTTP over SSE transport.
|
|
183
178
|
|
|
184
|
-
[](https://www.star-history.com/#zereight/gitlab-mcp&Date)
|
|
185
|
-
|
|
186
179
|
## Tools 🛠️
|
|
187
180
|
|
|
188
|
-
|
|
181
|
+
<details>
|
|
182
|
+
<summary>Click to expand</summary>
|
|
183
|
+
|
|
184
|
+
<!-- TOOLS-START -->
|
|
185
|
+
|
|
189
186
|
1. `merge_merge_request` - Merge a merge request in a GitLab project
|
|
190
187
|
2. `create_or_update_file` - Create or update a single file in a GitLab project
|
|
191
188
|
3. `search_repositories` - Search for GitLab projects
|
|
@@ -270,3 +267,5 @@ $ sh scripts/image_push.sh docker_user_name
|
|
|
270
267
|
82. `upload_markdown` - Upload a file to a GitLab project for use in markdown content
|
|
271
268
|
83. `download_attachment` - Download an uploaded file from a GitLab project by secret and filename
|
|
272
269
|
<!-- TOOLS-END -->
|
|
270
|
+
|
|
271
|
+
</details>
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { pino } from 'pino';
|
|
2
3
|
const DEFAULT_NULL = process.env.DEFAULT_NULL === "true";
|
|
4
|
+
const logger = pino({
|
|
5
|
+
level: process.env.LOG_LEVEL || 'info',
|
|
6
|
+
transport: {
|
|
7
|
+
target: 'pino-pretty',
|
|
8
|
+
options: {
|
|
9
|
+
colorize: true,
|
|
10
|
+
levelFirst: true,
|
|
11
|
+
destination: 2,
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
});
|
|
3
15
|
export const flexibleBoolean = z.preprocess(val => {
|
|
4
16
|
if (typeof val === "boolean") {
|
|
5
17
|
return val;
|