@zereight/mcp-gitlab 2.2.1 → 2.2.2

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.ko.md CHANGED
@@ -17,7 +17,7 @@ PAT, OAuth, 읽기 전용 모드, 동적 API URL, 원격 인증을 지원하며
17
17
 
18
18
  ### 왜 이 GitLab MCP를 사용하나요?
19
19
 
20
- - **268개 도구: toolset 266개 + `execute_graphql` + `discover_tools`** — 작은 toolset으로 시작하고, 런타임에 카테고리 활성화
20
+ - **274개 도구: toolset 272개 + `execute_graphql` + `discover_tools`** — 작은 toolset으로 시작하고, 런타임에 카테고리 활성화
21
21
  - **MR 2단계 리뷰** — `list_merge_request_changed_files` → 배치 `get_merge_request_file_diff`
22
22
  - **Agent Skill 내장** — `skills/gitlab-mcp/` 워크플로우 가이드
23
23
  - **유연한 인증** — Personal Access Token, 로컬 OAuth2 브라우저 플로우, MCP OAuth 프록시, 요청별 원격 인증
@@ -31,7 +31,7 @@ PAT, OAuth, 읽기 전용 모드, 동적 API URL, 원격 인증을 지원하며
31
31
  | | @zereight/mcp-gitlab | GitLab MCP A (커뮤니티 CQRS형) |
32
32
  |---|----------------------|--------------------------------|
33
33
  | **적합한 경우** | AI 에이전트 워크플로우 | 엔터프라이즈 멀티 인스턴스 / 그룹형 도구 |
34
- | **도구 모델** | 268개 도구: toolset 266개 + `execute_graphql` + `discover_tools` | ~50–60개 `browse_*` / `manage_*` 그룹 도구 |
34
+ | **도구 모델** | 274개 도구: toolset 272개 + `execute_graphql` + `discover_tools` | ~50–60개 `browse_*` / `manage_*` 그룹 도구 |
35
35
  | **MR 리뷰** | 2단계 배치 diff | 서버마다 다름 |
36
36
  | **Node.js** | >=18.17 | 보통 >=24 |
37
37
  | **라이선스** | MIT | 서버마다 다름 |
@@ -111,7 +111,7 @@ command = lib.getExe inputs.gitlab-mcp.packages.${system}.default;
111
111
 
112
112
  예시는 기존 `mcp-gitlab`보다 충돌 가능성이 낮은 `zereight-mcp-gitlab` 별칭을 사용합니다. MCP 클라이언트가 찾지 못하면 `which zereight-mcp-gitlab`의 절대 경로를 사용하세요.
113
113
 
114
- 전역 설치를 쓰지 않으려면 `npx -y @zereight/mcp-gitlab@2.2.0`처럼 직전 안정 버전(문서가 권장하는 버전)으로 고정하세요. 항상 최신 버전을 원하면 `npx -y @zereight/mcp-gitlab@latest`를 사용하세요. 새 버전이 나오면 서버가 시작 시 stderr로 알려줍니다(`GITLAB_DISABLE_VERSION_CHECK=true`로 비활성화 가능).
114
+ 전역 설치를 쓰지 않으려면 `npx -y @zereight/mcp-gitlab@2.2.1`처럼 직전 안정 버전(문서가 권장하는 버전)으로 고정하세요. 항상 최신 버전을 원하면 `npx -y @zereight/mcp-gitlab@latest`를 사용하세요. 새 버전이 나오면 서버가 시작 시 stderr로 알려줍니다(`GITLAB_DISABLE_VERSION_CHECK=true`로 비활성화 가능).
115
115
 
116
116
  #### CLI 인자 사용하기(환경 변수 문제가 있는 클라이언트용)
117
117
 
@@ -133,13 +133,13 @@ command = lib.getExe inputs.gitlab-mcp.packages.${system}.default;
133
133
 
134
134
  - `--token` - GitLab Personal Access Token (`GITLAB_PERSONAL_ACCESS_TOKEN` 대체)
135
135
  - `--api-url` - GitLab API URL (`GITLAB_API_URL` 대체)
136
- - `--read-only=true` - 읽기 전용 모드 활성화 (`GITLAB_READ_ONLY_MODE` 대체, deprecated — `--permission-mode=readonly` 권장)
136
+ - `--read-only=true` - Deprecated (removed in next major (v3.0.0)); `--permission-mode=readonly`를 사용 (`GITLAB_READ_ONLY_MODE` 대체)
137
137
  - `--permission-mode` - 권한 수준: `readonly`, `modify`(삭제/중단 도구 비활성), `full` (`GITLAB_PERMISSION_MODE` 대체, 기본값 `full`)
138
138
  - `--toolsets=all` - 지정한 툴셋 활성화 (`GITLAB_TOOLSETS` 대체, 미설정 시 lean `core` 기본값 사용)
139
139
  - `--tools=list_issues` - 개별 도구 추가 (`GITLAB_TOOLS` 대체)
140
- - `--use-wiki=true` - 위키 API 활성화 (`USE_GITLAB_WIKI` 대체, 레거시 — `GITLAB_TOOLSETS=wiki` 권장)
141
- - `--use-milestone=true` - 마일스톤 API 활성화 (`USE_MILESTONE` 대체, 레거시 — `GITLAB_TOOLSETS=milestones` 권장)
142
- - `--use-pipeline=true` - 파이프라인 API 활성화 (`USE_PIPELINE` 대체, 레거시 — `GITLAB_TOOLSETS=pipelines` 권장)
140
+ - `--use-wiki=true` - Deprecated (removed in next major (v3.0.0)); `--toolsets=core,wiki`를 사용 (`USE_GITLAB_WIKI` 대체)
141
+ - `--use-milestone=true` - Deprecated (removed in next major (v3.0.0)); `--toolsets=core,milestones`를 사용 (`USE_MILESTONE` 대체)
142
+ - `--use-pipeline=true` - Deprecated (removed in next major (v3.0.0)); `--toolsets=core,pipelines`를 사용하고, 기존 `--tools` 목록에 `validate_ci_lint,validate_project_ci_lint`를 추가하세요. 목록이 없으면 `--tools=validate_ci_lint,validate_project_ci_lint`를 설정하세요 (`USE_PIPELINE` 대체)
143
143
  - `--disable-version-check=true` - 시작 시 신규 버전 알림 비활성화 (`GITLAB_DISABLE_VERSION_CHECK` 대체)
144
144
  - `--masking-enabled=true` - 텍스트 응답 마스킹 활성화 (`GITLAB_MASKING_ENABLED` 대체)
145
145
  - `--masking-config` - 마스킹 설정 파일 경로 (`GITLAB_MASKING_CONFIG` 대체)
@@ -150,6 +150,8 @@ command = lib.getExe inputs.gitlab-mcp.packages.${system}.default;
150
150
  - `--compact-tools` - 전역 compact를 켜지 않고, 응답이 클 때 compact할 도구 이름을 쉼표로 지정 (`GITLAB_MCP_COMPACT_TOOLS` 대체)
151
151
  - `--tool-profile` - `full`(기본값) 또는 `slim`. `slim`은 draft note, 이모지 반응, 라벨, CI 카탈로그 도구와 `create_group`을 초기 목록에서 뺌. `GITLAB_TOOLSETS`에 공백이 아닌 값이 설정된 경우에만 무시됨 (`GITLAB_TOOL_PROFILE` 대체)
152
152
 
153
+ 이미 `GITLAB_TOOLSETS` 또는 `--toolsets`를 설정했다면 목록을 바꾸지 말고 `wiki`, `milestones`, `pipelines`를 기존 목록에 추가하세요. 이미 `GITLAB_TOOLS` 또는 `--tools`를 설정했다면 `validate_ci_lint`와 `validate_project_ci_lint`를 그 목록에 추가하세요. 명시적 목록은 기본 `core` toolset을 대체하며, 합쳐지지 않습니다.
154
+
153
155
  CLI 인자는 환경 변수보다 우선합니다.
154
156
 
155
157
  `zereight-mcp-gitlab auth`는 MCP 서버 플래그가 아니라 서브커맨드입니다. GitLab device flow를 실행한 뒤 종료합니다. [CLI 인자](./docs/getting-started/cli-arguments.md#auth)를 참고하세요.
@@ -158,14 +160,19 @@ CLI 인자는 환경 변수보다 우선합니다.
158
160
 
159
161
  > **세밀한 도구 필터링:** `GITLAB_PERMISSION_MODE=modify`로 생성/수정은 허용하고 모든 삭제 도구와
160
162
  > 파괴적인 중단(teardown) 도구(`cancel_pipeline`, `cancel_pipeline_job`, `stop_environment`,
161
- > `stop_stale_environments`, `unprotect_branch`)를 차단하거나(`execute_graphql`을 통한 파괴적
163
+ > `stop_stale_environments`, `unprotect_branch`, `unprotect_tag`)를 차단하거나(`execute_graphql`을 통한 파괴적
162
164
  > mutation — 삭제·중단 동사 — 과 `push_files`의 `delete`/`move` 포함),
163
165
  > `GITLAB_PERMISSION_MODE=readonly`로 읽기 전용으로 운영할 수
164
166
  > 있습니다. 또한
165
167
  > `GITLAB_TOOLSETS=<group,…>`로 도구 그룹을 활성화하고, `GITLAB_TOOLS=<tool,…>`로 개별 도구만
166
168
  > 허용하며(예: 읽기 도구 + 특정 쓰기 도구 몇 개), `GITLAB_DENIED_TOOLS_REGEX`로 패턴 차단할 수
167
- > 있습니다. 레거시 `USE_GITLAB_WIKI` / `USE_MILESTONE` / `USE_PIPELINE` 플래그는 하위 호환용으로만
168
- > 유지됩니다. [Tools Reference](./docs/tools/index.md#feature-toggles)와
169
+ > 있습니다. 레거시 `USE_GITLAB_WIKI` / `USE_MILESTONE` / `USE_PIPELINE` 플래그는
170
+ > deprecated (removed in next major (v3.0.0))입니다.
171
+ > `GITLAB_TOOLSETS=core,wiki`, `core,milestones`, `core,pipelines`를 사용하세요
172
+ > (`USE_PIPELINE`은 기존 `GITLAB_TOOLS` 목록에 `validate_ci_lint,validate_project_ci_lint`를 추가해야 하며, 그 목록을 통째로 바꾸면 안 됩니다).
173
+ > 이미 `GITLAB_TOOLSETS`를 설정했다면 toolset을 기존 목록에 추가하고, 목록 전체를 바꾸지 마세요.
174
+ > `GITLAB_TOOLS`가 없으면 `GITLAB_TOOLS=validate_ci_lint,validate_project_ci_lint`로 설정하세요. 이미 있으면 `validate_ci_lint,validate_project_ci_lint`를 기존 목록에 추가하고, 목록 전체를 바꾸지 마세요.
175
+ > [Tools Reference](./docs/tools/index.md#feature-toggles)와
169
176
  > [Environment Variables](./docs/configuration/environment-variables.md)를 참고하세요.
170
177
 
171
178
  - sse
@@ -176,7 +183,7 @@ docker run -i --rm \
176
183
  -e GITLAB_PERSONAL_ACCESS_TOKEN=your_gitlab_token \
177
184
  -e GITLAB_API_URL="https://gitlab.com/api/v4" \
178
185
  -e GITLAB_PERMISSION_MODE=readonly \
179
- -e GITLAB_TOOLSETS=wiki,milestones,pipelines \
186
+ -e GITLAB_TOOLSETS=core,wiki,milestones,pipelines \
180
187
  -e SSE=true \
181
188
  -e SSE_AUTH_TOKEN=your_mcp_sse_token \
182
189
  -p 3333:3002 \
@@ -205,7 +212,7 @@ docker run -i --rm \
205
212
  -e REMOTE_AUTHORIZATION=true \
206
213
  -e GITLAB_API_URL="https://gitlab.com/api/v4" \
207
214
  -e GITLAB_PERMISSION_MODE=readonly \
208
- -e GITLAB_TOOLSETS=wiki,milestones,pipelines \
215
+ -e GITLAB_TOOLSETS=core,wiki,milestones,pipelines \
209
216
  -e STREAMABLE_HTTP=true \
210
217
  -p 3333:3002 \
211
218
  zereight050/gitlab-mcp
@@ -525,7 +532,7 @@ node build/index.js
525
532
  | `MCP_SERVER_URL` | 예 | MCP 서버의 공개 HTTPS URL |
526
533
  | `GITLAB_API_URL` | 예 | GitLab 인스턴스 API URL(예: `https://gitlab.com/api/v4`) |
527
534
  | `STREAMABLE_HTTP` | 예 | 반드시 `true`(SSE 미지원) |
528
- | `GITLAB_OAUTH_SCOPES` | 아니오 | 요청할 GitLab scope 목록(쉼표 구분). 기본값은 `api` 또는 `GITLAB_READ_ONLY_MODE=true`일 때 `read_api`입니다. 사전 등록 애플리케이션에 해당 scope가 설정되어 있어야 합니다. |
535
+ | `GITLAB_OAUTH_SCOPES` | 아니오 | 요청할 GitLab scope 목록(쉼표 구분). 기본값은 `api`이며, 유효 permission mode가 `readonly`일 때 `read_api`입니다. 사전 등록 애플리케이션에 해당 scope가 설정되어 있어야 합니다. |
529
536
  | `OAUTH_REGISTER_RATE_LIMIT_PER_HOUR` | 아니오 | Dynamic Client Registration(`POST /register`)의 클라이언트 IP당 rolling 한도. 기본 `20`/시간, 범위 `1`–`1000`. IDE 창 여러 개 등으로 등록이 막히면 올리세요. GitLab API 한도와 무관합니다. |
530
537
  | `MCP_DANGEROUSLY_ALLOW_INSECURE_ISSUER_URL` | 아니오 | 로컬 HTTP 개발에서만 `true` |
531
538
 
package/README.md CHANGED
@@ -22,7 +22,7 @@ Supports PAT, OAuth, read-only mode, dynamic API URLs, and remote authorization
22
22
 
23
23
  ### Why use this GitLab MCP?
24
24
 
25
- - **268 tools: 266 in toolsets + `execute_graphql` + `discover_tools`** — start with a small toolset; activate more at runtime without CQRS-style grouping
25
+ - **274 tools: 272 in toolsets + `execute_graphql` + `discover_tools`** — start with a small toolset; activate more at runtime without CQRS-style grouping
26
26
  - **MR 2-step review** — `list_merge_request_changed_files` → batched `get_merge_request_file_diff`
27
27
  - **Agent Skill built in** — workflow guidance in `skills/gitlab-mcp/`
28
28
  - **Flexible auth** — Personal Access Token, local OAuth2 browser flow, MCP OAuth proxy, and per-request remote authorization
@@ -36,7 +36,7 @@ Supports PAT, OAuth, read-only mode, dynamic API URLs, and remote authorization
36
36
  | | @zereight/mcp-gitlab | GitLab MCP A (community CQRS-style) |
37
37
  |---|----------------------|-------------------------------------|
38
38
  | **Best for** | AI agent workflows | Enterprise multi-instance / grouped tools |
39
- | **Tool model** | 268 tools: 266 in toolsets + `execute_graphql` + `discover_tools` | ~50–60 grouped `browse_*` / `manage_*` tools |
39
+ | **Tool model** | 274 tools: 272 in toolsets + `execute_graphql` + `discover_tools` | ~50–60 grouped `browse_*` / `manage_*` tools |
40
40
  | **MR review** | 2-step batched diff | Varies |
41
41
  | **Node.js** | >=18.17 | Often >=24 |
42
42
  | **License** | MIT | Varies |
@@ -116,7 +116,7 @@ The store path is pinned by your lock file; update it with `nix flake update git
116
116
 
117
117
  The examples use `zereight-mcp-gitlab`, a less collision-prone alias for the legacy `mcp-gitlab` binary. If your MCP client cannot find it, use the absolute path from `which zereight-mcp-gitlab`.
118
118
 
119
- No global install? Pin `npx` to the previous stable release (the version these docs recommend), for example `npx -y @zereight/mcp-gitlab@2.2.0`. If you always want the newest release, use `npx -y @zereight/mcp-gitlab@latest` instead. The server prints a notice to stderr on startup when a newer version is available (disable with `GITLAB_DISABLE_VERSION_CHECK=true`).
119
+ No global install? Pin `npx` to the previous stable release (the version these docs recommend), for example `npx -y @zereight/mcp-gitlab@2.2.1`. If you always want the newest release, use `npx -y @zereight/mcp-gitlab@latest` instead. The server prints a notice to stderr on startup when a newer version is available (disable with `GITLAB_DISABLE_VERSION_CHECK=true`).
120
120
 
121
121
  #### Using CLI Arguments (for clients with env var issues)
122
122
 
@@ -138,13 +138,13 @@ Some MCP clients (like GitHub Copilot CLI) have issues with environment variable
138
138
 
139
139
  - `--token` - GitLab Personal Access Token (replaces `GITLAB_PERSONAL_ACCESS_TOKEN`)
140
140
  - `--api-url` - GitLab API URL (replaces `GITLAB_API_URL`)
141
- - `--read-only=true` - Enable read-only mode (replaces `GITLAB_READ_ONLY_MODE`, deprecated — prefer `--permission-mode=readonly`)
141
+ - `--read-only=true` - Deprecated (removed in next major (v3.0.0)); use `--permission-mode=readonly` instead (replaces `GITLAB_READ_ONLY_MODE`)
142
142
  - `--permission-mode` - Permission level: `readonly`, `modify` (no delete or teardown tools), or `full` (replaces `GITLAB_PERMISSION_MODE`, default `full`)
143
143
  - `--toolsets=all` - Enable named toolsets (replaces `GITLAB_TOOLSETS`; unset uses the lean `core` default)
144
144
  - `--tools=list_issues` - Add individual tools (replaces `GITLAB_TOOLS`)
145
- - `--use-wiki=true` - Enable wiki API (replaces `USE_GITLAB_WIKI`, legacy — prefer `GITLAB_TOOLSETS=wiki`)
146
- - `--use-milestone=true` - Enable milestone API (replaces `USE_MILESTONE`, legacy — prefer `GITLAB_TOOLSETS=milestones`)
147
- - `--use-pipeline=true` - Enable pipeline API (replaces `USE_PIPELINE`, legacy — prefer `GITLAB_TOOLSETS=pipelines`)
145
+ - `--use-wiki=true` - Deprecated (removed in next major (v3.0.0)); use `--toolsets=core,wiki` instead (replaces `USE_GITLAB_WIKI`)
146
+ - `--use-milestone=true` - Deprecated (removed in next major (v3.0.0)); use `--toolsets=core,milestones` instead (replaces `USE_MILESTONE`)
147
+ - `--use-pipeline=true` - Deprecated (removed in next major (v3.0.0)); use `--toolsets=core,pipelines` and append `validate_ci_lint,validate_project_ci_lint` to the existing `--tools` list (or set `--tools=validate_ci_lint,validate_project_ci_lint` when that list is unset) (replaces `USE_PIPELINE`)
148
148
  - `--disable-version-check=true` - Disable the startup new-version notice (replaces `GITLAB_DISABLE_VERSION_CHECK`)
149
149
  - `--masking-enabled=true` - Enable text-response masking (replaces `GITLAB_MASKING_ENABLED`)
150
150
  - `--masking-config` - Path to a masking configuration file (replaces `GITLAB_MASKING_CONFIG`)
@@ -155,6 +155,8 @@ Some MCP clients (like GitHub Copilot CLI) have issues with environment variable
155
155
  - `--compact-tools` - Comma-separated tool names to compact when oversized, without turning global compact on (replaces `GITLAB_MCP_COMPACT_TOOLS`)
156
156
  - `--tool-profile` - `full` (default) or `slim`. `slim` drops draft notes, emoji reactions, labels, CI catalog tools, and `create_group` from the initial list. Ignored when `GITLAB_TOOLSETS` is set (replaces `GITLAB_TOOL_PROFILE`)
157
157
 
158
+ If you already set `GITLAB_TOOLSETS` or `--toolsets`, append `wiki`, `milestones`, or `pipelines` to that list instead of replacing it. If you already set `GITLAB_TOOLS` or `--tools`, append `validate_ci_lint` and `validate_project_ci_lint` to that list instead of replacing it. An explicit list replaces the default `core` toolset; it does not merge.
159
+
158
160
  CLI arguments take precedence over environment variables.
159
161
 
160
162
  `zereight-mcp-gitlab auth` is a subcommand (not an MCP server flag). It runs GitLab device flow and exits. See [CLI Arguments](./docs/getting-started/cli-arguments.md#auth).
@@ -163,14 +165,19 @@ The same binary is also a `gh`-style GitLab CLI (`tool <name>` or curated forms
163
165
 
164
166
  > **Fine-grained tool filtering:** use `GITLAB_PERMISSION_MODE=modify` to allow create/update while
165
167
  > blocking every delete tool and the destructive teardown tools (`cancel_pipeline`,
166
- > `cancel_pipeline_job`, `stop_environment`, `stop_stale_environments`, `unprotect_branch`) —
168
+ > `cancel_pipeline_job`, `stop_environment`, `stop_stale_environments`, `unprotect_branch`,
169
+ > `unprotect_tag`) —
167
170
  > including destructive mutations (deletion and teardown verbs) through `execute_graphql` and
168
171
  > `push_files` `delete`/`move` actions — or `GITLAB_PERMISSION_MODE=readonly` for read-only
169
172
  > access. You can also
170
173
  > enable toolset groups with `GITLAB_TOOLSETS=<group,…>`, allow-list individual tools with
171
174
  > `GITLAB_TOOLS=<tool,…>` (e.g. read-only groups plus a few specific write tools), and
172
175
  > deny-list by pattern with `GITLAB_DENIED_TOOLS_REGEX`. The legacy `USE_GITLAB_WIKI` /
173
- > `USE_MILESTONE` / `USE_PIPELINE` flags are kept for backward compatibility only.
176
+ > `USE_MILESTONE` / `USE_PIPELINE` flags are deprecated (removed in next major (v3.0.0)).
177
+ > Use `GITLAB_TOOLSETS=core,wiki`, `core,milestones`, or `core,pipelines`
178
+ > (`USE_PIPELINE` also needs `validate_ci_lint,validate_project_ci_lint` appended to an existing `GITLAB_TOOLS` list instead of replacing it).
179
+ > If you already set `GITLAB_TOOLSETS`, append the toolset to your existing list instead of replacing it.
180
+ > If `GITLAB_TOOLS` is unset, set `GITLAB_TOOLS=validate_ci_lint,validate_project_ci_lint`. If it is already set, append `validate_ci_lint,validate_project_ci_lint` instead of replacing that list.
174
181
  > See [Tools Reference](./docs/tools/index.md#feature-toggles) and
175
182
  > [Environment Variables](./docs/configuration/environment-variables.md).
176
183
 
@@ -182,7 +189,7 @@ docker run -i --rm \
182
189
  -e GITLAB_PERSONAL_ACCESS_TOKEN=your_gitlab_token \
183
190
  -e GITLAB_API_URL="https://gitlab.com/api/v4" \
184
191
  -e GITLAB_PERMISSION_MODE=readonly \
185
- -e GITLAB_TOOLSETS=wiki,milestones,pipelines \
192
+ -e GITLAB_TOOLSETS=core,wiki,milestones,pipelines \
186
193
  -e SSE=true \
187
194
  -e SSE_AUTH_TOKEN=your_mcp_sse_token \
188
195
  -p 3333:3002 \
@@ -211,7 +218,7 @@ docker run -i --rm \
211
218
  -e REMOTE_AUTHORIZATION=true \
212
219
  -e GITLAB_API_URL="https://gitlab.com/api/v4" \
213
220
  -e GITLAB_PERMISSION_MODE=readonly \
214
- -e GITLAB_TOOLSETS=wiki,milestones,pipelines \
221
+ -e GITLAB_TOOLSETS=core,wiki,milestones,pipelines \
215
222
  -e STREAMABLE_HTTP=true \
216
223
  -p 3333:3002 \
217
224
  zereight050/gitlab-mcp
@@ -567,7 +574,7 @@ No `headers` field is needed — Claude.ai obtains the token via OAuth automatic
567
574
  | `MCP_SERVER_URL` | Yes | Public HTTPS URL of your MCP server; also allowed for `/mcp` Host/Origin checks |
568
575
  | `GITLAB_API_URL` | Yes | Your GitLab instance API URL (e.g. `https://gitlab.com/api/v4`) |
569
576
  | `STREAMABLE_HTTP` | Yes | Must be `true` (SSE is not supported) |
570
- | `GITLAB_OAUTH_SCOPES` | No | Comma-separated GitLab scopes to request (e.g. `api,read_user`). Defaults to `api` (or `read_api` when `GITLAB_READ_ONLY_MODE=true`). The pre-registered application must be configured with at least these scopes. |
577
+ | `GITLAB_OAUTH_SCOPES` | No | Comma-separated GitLab scopes to request (e.g. `api,read_user`). Defaults to `api` (or `read_api` when the effective permission mode is `readonly`). The pre-registered application must be configured with at least these scopes. |
571
578
  | `OAUTH_REGISTER_RATE_LIMIT_PER_HOUR` | No | Per-IP rolling limit for Dynamic Client Registration (`POST /register`). Default `20`/hour; range `1`–`1000`. Raise when clients (e.g. multiple IDE windows) hit registration throttling. Not a GitLab API limit. |
572
579
  | `MCP_DANGEROUSLY_ALLOW_INSECURE_ISSUER_URL` | No | Set `true` for local HTTP dev only |
573
580
 
@@ -822,61 +829,67 @@ Register the skill directory in your AI client to get optimal tool usage guidanc
822
829
  211. `create_tag` - Create a new repository tag
823
830
  212. `delete_tag` - Delete a repository tag
824
831
  213. `get_tag_signature` - Get the X.509 signature of a signed tag (404 if unsigned)
825
- 214. `get_work_item` - Get a work item with full details including status, hierarchy, type, and widgets
826
- 215. `list_work_items` - List work items with filters (type, state, search, assignees, labels)
827
- 216. `create_work_item` - Create a work item (issue, task, incident, epic, etc.) with full field support
828
- 217. `update_work_item` - Update a work item (title, description, labels, assignees, state, parent, custom fields, etc.)
829
- 218. `convert_work_item_type` - Convert a work item to a different type
830
- 219. `list_work_item_statuses` - List available statuses for a work item type (Premium/Ultimate)
831
- 220. `list_custom_field_definitions` - List custom field definitions for a work item type
832
- 221. `move_work_item` - Move a work item to a different project
833
- 222. `list_work_item_notes` - List notes and discussions on a work item
834
- 223. `create_work_item_note` - Add a note to a work item (supports Markdown, internal notes, threads)
835
- 224. `list_work_item_emoji_reactions` - List all emoji reactions on a work item
836
- 225. `list_work_item_note_emoji_reactions` - List all emoji reactions on a work item note (comment, thread, or thread reply)
837
- 226. `create_work_item_emoji_reaction` - Add an emoji reaction to a work item (e.g. thumbsup, rocket, eyes)
838
- 227. `delete_work_item_emoji_reaction` - Remove an emoji reaction from a work item
839
- 228. `create_work_item_note_emoji_reaction` - Add an emoji reaction to a work item note (comment, thread, or thread reply)
840
- 229. `delete_work_item_note_emoji_reaction` - Remove an emoji reaction from a work item note (comment, thread, or thread reply)
841
- 230. `get_timeline_events` - List timeline events for an incident
842
- 231. `create_timeline_event` - Create a timeline event on an incident
843
- 232. `list_webhooks` - List webhooks for a project or group
844
- 233. `create_webhook` - Create a webhook on a project or group
845
- 234. `update_webhook` - Update an existing project or group webhook
846
- 235. `delete_webhook` - Delete a project or group webhook
847
- 236. `list_webhook_events` - List recent webhook events (past 7 days)
848
- 237. `get_webhook_event` - Get full details of a specific webhook event
849
- 238. `search_code` - Search for code across all projects (requires advanced search or Zoekt)
850
- 239. `search_project_code` - Search for code within a specific project (requires advanced search or Zoekt)
851
- 240. `search_group_code` - Search for code within a specific group (requires advanced search or Zoekt)
852
- 241. `list_project_variables` - List CI/CD variables for a project
853
- 242. `get_project_variable` - Get a single CI/CD variable from a project
854
- 243. `create_project_variable` - Create a CI/CD variable for a project
855
- 244. `update_project_variable` - Update an existing CI/CD variable in a project
856
- 245. `delete_project_variable` - Delete a CI/CD variable from a project
857
- 246. `list_group_variables` - List CI/CD variables for a group
858
- 247. `get_group_variable` - Get a single CI/CD variable from a group
859
- 248. `create_group_variable` - Create a CI/CD variable for a group
860
- 249. `update_group_variable` - Update an existing CI/CD variable in a group
861
- 250. `delete_group_variable` - Delete a CI/CD variable from a group
862
- 251. `get_dependency_proxy_settings` - Get dependency proxy settings for a group
863
- 252. `update_dependency_proxy_settings` - Update dependency proxy settings for a group (enable/disable, credentials for authenticated Docker Hub pulls)
864
- 253. `list_dependency_proxy_blobs` - List cached dependency proxy blobs for a group
865
- 254. `purge_dependency_proxy_cache` - Schedule purge of all cached dependency proxy blobs for a group
866
- 255. `list_project_vulnerabilities` - List vulnerabilities for a project with optional state, severity, and report type filters (GraphQL-backed, cursor pagination)
867
- 256. `get_vulnerability` - Get full details of a specific vulnerability
868
- 257. `dismiss_vulnerability` - Dismiss a vulnerability with a reason (acceptable_risk, false_positive, used_in_tests, mitigating_control, not_applicable) and optional comment
869
- 258. `confirm_vulnerability` - Confirm a vulnerability as a real finding requiring remediation
870
- 259. `orbit_query` - Execute a GitLab Orbit graph query over the indexed SDLC knowledge graph
871
- 260. `orbit_get_schema` - Fetch the current GitLab Orbit graph schema (node and edge types)
872
- 261. `orbit_get_status` - Check GitLab Orbit indexing status for the enabled scope
873
- 262. `orbit_list_tools` - List the MCP tool definitions exposed by GitLab Orbit
874
- 263. `list_snippets` - List snippets — project snippets when project_id is given, otherwise personal snippets
875
- 264. `get_snippet` - Get a snippet's metadata. Set include_content=true to also fetch the raw file content.
876
- 265. `create_snippet` - Create a snippet — project-scoped when project_id is given, otherwise a personal snippet. Requires title plus either file_name + content (single file) or files[] (multi-file); the two shapes cannot be mixed.
877
- 266. `update_snippet` - Update an existing snippet (provide at least one field to change). For multi-file edits — renames, deletions, additions — pass files[] with action (create/update/delete/move) and previous_path. The file_name + content shortcut still works for single-file content replacement.
878
- 267. `delete_snippet` - Delete a snippet
879
- 268. `discover_tools` - Discover and activate additional tool categories for this session. Available categories: core, merge_requests, issues, repositories, branches, projects, labels, ci, groups, pipelines, milestones, wiki, releases, tags, snippets, users, workitems, webhooks, search, variables, dependency_proxy, vulnerabilities, orbit. Already-active categories are listed in the response.
832
+ 214. `list_protected_tags` - List protected tags in a project
833
+ 215. `get_protected_tag` - Get details of a single protected tag or wildcard (create access levels)
834
+ 216. `protect_tag` - Protect a repository tag or wildcard (set who can create it)
835
+ 217. `unprotect_tag` - Remove protection from a previously protected tag or wildcard
836
+ 218. `get_work_item` - Get a work item with full details including status, hierarchy, type, and widgets
837
+ 219. `list_work_items` - List work items with filters (type, state, search, assignees, labels)
838
+ 220. `create_work_item` - Create a work item (issue, task, incident, epic, etc.) with full field support
839
+ 221. `update_work_item` - Update a work item (title, description, labels, assignees, state, parent, custom fields, etc.)
840
+ 222. `convert_work_item_type` - Convert a work item to a different type
841
+ 223. `list_work_item_statuses` - List available statuses for a work item type (Premium/Ultimate)
842
+ 224. `list_custom_field_definitions` - List custom field definitions for a work item type
843
+ 225. `move_work_item` - Move a work item to a different project
844
+ 226. `list_work_item_notes` - List notes and discussions on a work item
845
+ 227. `create_work_item_note` - Add a note to a work item (supports Markdown, internal notes, threads)
846
+ 228. `list_work_item_emoji_reactions` - List all emoji reactions on a work item
847
+ 229. `list_work_item_note_emoji_reactions` - List all emoji reactions on a work item note (comment, thread, or thread reply)
848
+ 230. `create_work_item_emoji_reaction` - Add an emoji reaction to a work item (e.g. thumbsup, rocket, eyes)
849
+ 231. `delete_work_item_emoji_reaction` - Remove an emoji reaction from a work item
850
+ 232. `create_work_item_note_emoji_reaction` - Add an emoji reaction to a work item note (comment, thread, or thread reply)
851
+ 233. `delete_work_item_note_emoji_reaction` - Remove an emoji reaction from a work item note (comment, thread, or thread reply)
852
+ 234. `get_timeline_events` - List timeline events for an incident
853
+ 235. `create_timeline_event` - Create a timeline event on an incident
854
+ 236. `list_webhooks` - List webhooks for a project or group
855
+ 237. `create_webhook` - Create a webhook on a project or group
856
+ 238. `update_webhook` - Update an existing project or group webhook
857
+ 239. `delete_webhook` - Delete a project or group webhook
858
+ 240. `list_webhook_events` - List recent webhook events (past 7 days)
859
+ 241. `get_webhook_event` - Get full details of a specific webhook event
860
+ 242. `search_code` - Search for code across all projects (requires advanced search or Zoekt)
861
+ 243. `search_project_code` - Search for code within a specific project (requires advanced search or Zoekt)
862
+ 244. `search_group_code` - Search for code within a specific group (requires advanced search or Zoekt)
863
+ 245. `list_project_variables` - List CI/CD variables for a project
864
+ 246. `get_project_variable` - Get a single CI/CD variable from a project
865
+ 247. `create_project_variable` - Create a CI/CD variable for a project
866
+ 248. `update_project_variable` - Update an existing CI/CD variable in a project
867
+ 249. `delete_project_variable` - Delete a CI/CD variable from a project
868
+ 250. `list_group_variables` - List CI/CD variables for a group
869
+ 251. `get_group_variable` - Get a single CI/CD variable from a group
870
+ 252. `create_group_variable` - Create a CI/CD variable for a group
871
+ 253. `update_group_variable` - Update an existing CI/CD variable in a group
872
+ 254. `delete_group_variable` - Delete a CI/CD variable from a group
873
+ 255. `get_dependency_proxy_settings` - Get dependency proxy settings for a group
874
+ 256. `update_dependency_proxy_settings` - Update dependency proxy settings for a group (enable/disable, credentials for authenticated Docker Hub pulls)
875
+ 257. `list_dependency_proxy_blobs` - List cached dependency proxy blobs for a group
876
+ 258. `purge_dependency_proxy_cache` - Schedule purge of all cached dependency proxy blobs for a group
877
+ 259. `list_project_vulnerabilities` - List vulnerabilities for a project with optional state, severity, and report type filters (GraphQL-backed, cursor pagination)
878
+ 260. `get_vulnerability` - Get full details of a specific vulnerability
879
+ 261. `dismiss_vulnerability` - Dismiss a vulnerability with a reason (acceptable_risk, false_positive, used_in_tests, mitigating_control, not_applicable) and optional comment
880
+ 262. `confirm_vulnerability` - Confirm a vulnerability as a real finding requiring remediation
881
+ 263. `orbit_query` - Execute a GitLab Orbit graph query over the indexed SDLC knowledge graph
882
+ 264. `orbit_get_schema` - Fetch the current GitLab Orbit graph schema (node and edge types)
883
+ 265. `orbit_get_status` - Check GitLab Orbit indexing status for the enabled scope
884
+ 266. `orbit_list_tools` - List the MCP tool definitions exposed by GitLab Orbit
885
+ 267. `list_snippets` - List snippets — project snippets when project_id is given, otherwise personal snippets
886
+ 268. `get_snippet` - Get a snippet's metadata. Set include_content=true to also fetch the raw file content.
887
+ 269. `create_snippet` - Create a snippet — project-scoped when project_id is given, otherwise a personal snippet. Requires title plus either file_name + content (single file) or files[] (multi-file); the two shapes cannot be mixed.
888
+ 270. `update_snippet` - Update an existing snippet (provide at least one field to change). For multi-file edits — renames, deletions, additions — pass files[] with action (create/update/delete/move) and previous_path. The file_name + content shortcut still works for single-file content replacement.
889
+ 271. `delete_snippet` - Delete a snippet
890
+ 272. `list_project_runners` - List runners available to a project (type, status, paused, tag_list). Omits registration and authentication tokens.
891
+ 273. `get_runner` - Get a runner's tag_list, run_untagged, locked, and access_level. When a project allowlist is active, the runner must be available to an allowed project. Omits registration and authentication tokens.
892
+ 274. `discover_tools` - Discover and activate additional tool categories for this session. Available categories: core, merge_requests, issues, repositories, branches, projects, labels, ci, groups, pipelines, milestones, wiki, releases, tags, snippets, users, workitems, webhooks, search, variables, dependency_proxy, vulnerabilities, orbit. Already-active categories are listed in the response.
880
893
 
881
894
  <!-- TOOLS-END -->
882
895
 
package/README.pt-BR.md CHANGED
@@ -17,7 +17,7 @@ Suporta PAT, OAuth, modo somente leitura, URLs de API dinâmicas e autorização
17
17
 
18
18
  ### Por que usar este GitLab MCP?
19
19
 
20
- - **268 ferramentas: 266 em toolsets + `execute_graphql` + `discover_tools`** — comece com um toolset pequeno e ative mais categorias em tempo de execução
20
+ - **274 ferramentas: 272 em toolsets + `execute_graphql` + `discover_tools`** — comece com um toolset pequeno e ative mais categorias em tempo de execução
21
21
  - **Revisão de MR em 2 etapas** — `list_merge_request_changed_files` → `get_merge_request_file_diff` em lote
22
22
  - **Agent Skill integrado** — orientação de workflows em `skills/gitlab-mcp/`
23
23
  - **Autenticação flexível** — Personal Access Token, fluxo OAuth2 local no navegador, proxy MCP OAuth e autorização remota por requisição
@@ -31,7 +31,7 @@ Suporta PAT, OAuth, modo somente leitura, URLs de API dinâmicas e autorização
31
31
  | | @zereight/mcp-gitlab | GitLab MCP A (comunidade, estilo CQRS) |
32
32
  | ------------------------- | ---------------------------------------------- | --------------------------------------------------------- |
33
33
  | **Mais indicado para** | Workflows de agentes de IA | Múltiplas instâncias corporativas / ferramentas agrupadas |
34
- | **Modelo de ferramentas** | 268 ferramentas: 266 em toolsets + `execute_graphql` + `discover_tools` | ~50–60 ferramentas agrupadas `browse_*` / `manage_*` |
34
+ | **Modelo de ferramentas** | 274 ferramentas: 272 em toolsets + `execute_graphql` + `discover_tools` | ~50–60 ferramentas agrupadas `browse_*` / `manage_*` |
35
35
  | **Revisão de MR** | Diff em lote em 2 etapas | Varia |
36
36
  | **Node.js** | >=18.17 | Frequentemente >=24 |
37
37
  | **Licença** | MIT | Varia |
@@ -111,7 +111,7 @@ O caminho no store é fixado pelo seu lock file; atualize-o com `nix flake updat
111
111
 
112
112
  Os exemplos usam `zereight-mcp-gitlab`, um alias com menor chance de conflito que o binário legado `mcp-gitlab`. Se o seu cliente MCP não o encontrar, use o caminho absoluto retornado por `which zereight-mcp-gitlab`.
113
113
 
114
- Não quer instalar globalmente? Fixe o `npx` na versão estável anterior (a versão recomendada por esta documentação), por exemplo `npx -y @zereight/mcp-gitlab@2.2.0`. Se quiser sempre a versão mais recente, use `npx -y @zereight/mcp-gitlab@latest`. O servidor exibe um aviso no stderr durante a inicialização quando existe uma versão mais nova disponível (desative com `GITLAB_DISABLE_VERSION_CHECK=true`).
114
+ Não quer instalar globalmente? Fixe o `npx` na versão estável anterior (a versão recomendada por esta documentação), por exemplo `npx -y @zereight/mcp-gitlab@2.2.1`. Se quiser sempre a versão mais recente, use `npx -y @zereight/mcp-gitlab@latest`. O servidor exibe um aviso no stderr durante a inicialização quando existe uma versão mais nova disponível (desative com `GITLAB_DISABLE_VERSION_CHECK=true`).
115
115
 
116
116
  #### Usando argumentos de CLI (para clientes com problemas com variáveis de ambiente)
117
117
 
@@ -133,13 +133,13 @@ Alguns clientes MCP, como o GitHub Copilot CLI, têm problemas com variáveis de
133
133
 
134
134
  - `--token` - GitLab Personal Access Token (substitui `GITLAB_PERSONAL_ACCESS_TOKEN`)
135
135
  - `--api-url` - URL da API do GitLab (substitui `GITLAB_API_URL`)
136
- - `--read-only=true` - ativa o modo somente leitura (substitui `GITLAB_READ_ONLY_MODE`, obsoleto — prefira `--permission-mode=readonly`)
136
+ - `--read-only=true` - Deprecated (removed in next major (v3.0.0)); use `--permission-mode=readonly` (substitui `GITLAB_READ_ONLY_MODE`)
137
137
  - `--permission-mode` - nível de permissão: `readonly`, `modify` (sem ferramentas de exclusão ou teardown) ou `full` (substitui `GITLAB_PERMISSION_MODE`, padrão `full`)
138
138
  - `--toolsets=all` - ativa toolsets nomeados (substitui `GITLAB_TOOLSETS`; sem valor usa o padrão enxuto `core`)
139
139
  - `--tools=list_issues` - adiciona ferramentas individuais (substitui `GITLAB_TOOLS`)
140
- - `--use-wiki=true` - ativa a API de Wiki (substitui `USE_GITLAB_WIKI`, legado — prefira `GITLAB_TOOLSETS=wiki`)
141
- - `--use-milestone=true` - ativa a API de milestones (substitui `USE_MILESTONE`, legado — prefira `GITLAB_TOOLSETS=milestones`)
142
- - `--use-pipeline=true` - ativa a API de pipelines (substitui `USE_PIPELINE`, legado — prefira `GITLAB_TOOLSETS=pipelines`)
140
+ - `--use-wiki=true` - Deprecated (removed in next major (v3.0.0)); use `--toolsets=core,wiki` (substitui `USE_GITLAB_WIKI`)
141
+ - `--use-milestone=true` - Deprecated (removed in next major (v3.0.0)); use `--toolsets=core,milestones` (substitui `USE_MILESTONE`)
142
+ - `--use-pipeline=true` - Deprecated (removed in next major (v3.0.0)); use `--toolsets=core,pipelines` e acrescente `validate_ci_lint,validate_project_ci_lint` à lista `--tools` existente (ou defina `--tools=validate_ci_lint,validate_project_ci_lint` se ela não existir) (substitui `USE_PIPELINE`)
143
143
  - `--disable-version-check=true` - desativa o aviso de nova versão na inicialização (substitui `GITLAB_DISABLE_VERSION_CHECK`)
144
144
  - `--masking-enabled=true` - ativa o mascaramento de respostas de texto (substitui `GITLAB_MASKING_ENABLED`)
145
145
  - `--masking-config` - caminho para um arquivo de configuração de mascaramento (substitui `GITLAB_MASKING_CONFIG`)
@@ -150,6 +150,8 @@ Alguns clientes MCP, como o GitHub Copilot CLI, têm problemas com variáveis de
150
150
  - `--compact-tools` - nomes de ferramentas separados por vírgula para compactar quando a resposta for grande, sem ativar o compact global (substitui `GITLAB_MCP_COMPACT_TOOLS`)
151
151
  - `--tool-profile` - `full` (padrão) ou `slim`. `slim` remove draft notes, reações com emoji, labels, ferramentas do catálogo de CI e `create_group` da lista inicial. Ignorado apenas quando `GITLAB_TOOLSETS` tem um valor não em branco (substitui `GITLAB_TOOL_PROFILE`)
152
152
 
153
+ Se você já definiu `GITLAB_TOOLSETS` ou `--toolsets`, acrescente `wiki`, `milestones` ou `pipelines` a essa lista em vez de substituí-la. Se você já definiu `GITLAB_TOOLS` ou `--tools`, acrescente `validate_ci_lint` e `validate_project_ci_lint` a essa lista em vez de substituí-la. Uma lista explícita substitui o toolset padrão `core`; ela não é mesclada.
154
+
153
155
  Os argumentos de CLI têm precedência sobre as variáveis de ambiente.
154
156
 
155
157
  `zereight-mcp-gitlab auth` é um subcomando, não uma flag do servidor MCP. Ele executa o device flow do GitLab e encerra. Veja [Argumentos de CLI](./docs/getting-started/cli-arguments.md#auth).
@@ -158,13 +160,18 @@ O mesmo binário também é uma CLI do GitLab no estilo `gh` (`tool <name>` ou f
158
160
 
159
161
  > **Filtragem granular de ferramentas:** use `GITLAB_PERMISSION_MODE=modify` para permitir criação/atualização enquanto
160
162
  > bloqueia todas as ferramentas de exclusão e as ferramentas destrutivas de teardown (`cancel_pipeline`,
161
- > `cancel_pipeline_job`, `stop_environment`, `stop_stale_environments`, `unprotect_branch`) —
163
+ > `cancel_pipeline_job`, `stop_environment`, `stop_stale_environments`, `unprotect_branch`,
164
+ > `unprotect_tag`) —
162
165
  > incluindo mutations destrutivas (verbos de exclusão e teardown) por meio de `execute_graphql` e
163
166
  > ações `delete`/`move` do `push_files` — ou use `GITLAB_PERMISSION_MODE=readonly` para acesso somente leitura.
164
167
  > Também é possível habilitar grupos de ferramentas com `GITLAB_TOOLSETS=<group,…>`, permitir ferramentas individuais com
165
168
  > `GITLAB_TOOLS=<tool,…>` (por exemplo, grupos somente leitura mais algumas ferramentas específicas de escrita) e
166
169
  > bloquear por padrão usando `GITLAB_DENIED_TOOLS_REGEX`. As flags legadas `USE_GITLAB_WIKI` /
167
- > `USE_MILESTONE` / `USE_PIPELINE` são mantidas apenas para compatibilidade retroativa.
170
+ > `USE_MILESTONE` / `USE_PIPELINE` estão deprecated (removed in next major (v3.0.0)).
171
+ > Use `GITLAB_TOOLSETS=core,wiki`, `core,milestones` ou `core,pipelines`
172
+ > (`USE_PIPELINE` também precisa acrescentar `validate_ci_lint,validate_project_ci_lint` à lista `GITLAB_TOOLS` existente em vez de substituí-la).
173
+ > Se você já definiu `GITLAB_TOOLSETS`, acrescente o toolset à lista existente em vez de substituí-la.
174
+ > Se `GITLAB_TOOLS` não estiver definido, defina `GITLAB_TOOLS=validate_ci_lint,validate_project_ci_lint`. Se já estiver definido, acrescente `validate_ci_lint,validate_project_ci_lint` à lista existente em vez de substituí-la.
168
175
  > Consulte a [Referência de ferramentas](./docs/tools/index.md#feature-toggles) e
169
176
  > [Variáveis de ambiente](./docs/configuration/environment-variables.md).
170
177
 
@@ -176,7 +183,7 @@ docker run -i --rm \
176
183
  -e GITLAB_PERSONAL_ACCESS_TOKEN=your_gitlab_token \
177
184
  -e GITLAB_API_URL="https://gitlab.com/api/v4" \
178
185
  -e GITLAB_PERMISSION_MODE=readonly \
179
- -e GITLAB_TOOLSETS=wiki,milestones,pipelines \
186
+ -e GITLAB_TOOLSETS=core,wiki,milestones,pipelines \
180
187
  -e SSE=true \
181
188
  -e SSE_AUTH_TOKEN=your_mcp_sse_token \
182
189
  -p 3333:3002 \
@@ -205,7 +212,7 @@ docker run -i --rm \
205
212
  -e REMOTE_AUTHORIZATION=true \
206
213
  -e GITLAB_API_URL="https://gitlab.com/api/v4" \
207
214
  -e GITLAB_PERMISSION_MODE=readonly \
208
- -e GITLAB_TOOLSETS=wiki,milestones,pipelines \
215
+ -e GITLAB_TOOLSETS=core,wiki,milestones,pipelines \
209
216
  -e STREAMABLE_HTTP=true \
210
217
  -p 3333:3002 \
211
218
  zereight050/gitlab-mcp
@@ -525,7 +532,7 @@ Não é necessário definir `headers`. O Claude.ai obtém o token via OAuth.
525
532
  | `MCP_SERVER_URL` | sim | URL HTTPS pública do servidor MCP |
526
533
  | `GITLAB_API_URL` | sim | URL da API da instância GitLab (por exemplo, `https://gitlab.com/api/v4`) |
527
534
  | `STREAMABLE_HTTP` | sim | Deve ser `true` (SSE não é suportado) |
528
- | `GITLAB_OAUTH_SCOPES` | não | Scopes do GitLab a solicitar, separados por vírgula. O padrão é `api`, ou `read_api` quando `GITLAB_READ_ONLY_MODE=true`. O aplicativo previamente registrado deve ter pelo menos esses scopes configurados. |
535
+ | `GITLAB_OAUTH_SCOPES` | não | Scopes do GitLab a solicitar, separados por vírgula. O padrão é `api`, ou `read_api` quando o permission mode efetivo é `readonly`. O aplicativo previamente registrado deve ter pelo menos esses scopes configurados. |
529
536
  | `OAUTH_REGISTER_RATE_LIMIT_PER_HOUR` | não | Limite rolling de Dynamic Client Registration (`POST /register`) por IP do cliente. Padrão `20`/hora, intervalo `1`–`1000`. Aumente se múltiplas janelas de IDE estiverem atingindo o limite. Não está relacionado aos limites da API do GitLab. |
530
537
  | `MCP_DANGEROUSLY_ALLOW_INSECURE_ISSUER_URL` | não | Apenas para desenvolvimento local via HTTP |
531
538
 
package/README.zh-CN.md CHANGED
@@ -17,7 +17,7 @@
17
17
 
18
18
  ### 为什么使用这个 GitLab MCP?
19
19
 
20
- - **268 个工具:toolset 中 266 个 + `execute_graphql` + `discover_tools`** — 从小型 toolset 开始,运行时按需激活类别
20
+ - **274 个工具:toolset 中 272 个 + `execute_graphql` + `discover_tools`** — 从小型 toolset 开始,运行时按需激活类别
21
21
  - **MR 两步审查** — `list_merge_request_changed_files` → 批量 `get_merge_request_file_diff`
22
22
  - **内置 Agent Skill** — `skills/gitlab-mcp/` 工作流指南
23
23
  - **认证灵活** — Personal Access Token、本地 OAuth2 浏览器流程、MCP OAuth 代理、按请求远程授权
@@ -31,7 +31,7 @@
31
31
  | | @zereight/mcp-gitlab | GitLab MCP A(社区 CQRS 型) |
32
32
  |---|----------------------|------------------------------|
33
33
  | **更适合** | AI 代理工作流 | 企业多实例 / 分组工具 |
34
- | **工具模型** | 268 个工具:toolset 中 266 个 + `execute_graphql` + `discover_tools` | ~50–60 个 `browse_*` / `manage_*` 分组工具 |
34
+ | **工具模型** | 274 个工具:toolset 中 272 个 + `execute_graphql` + `discover_tools` | ~50–60 个 `browse_*` / `manage_*` 分组工具 |
35
35
  | **MR 审查** | 两步批量 diff | 因服务器而异 |
36
36
  | **Node.js** | >=18.17 | 通常 >=24 |
37
37
  | **许可证** | MIT | 因服务器而异 |
@@ -111,7 +111,7 @@ command = lib.getExe inputs.gitlab-mcp.packages.${system}.default;
111
111
 
112
112
  示例使用 `zereight-mcp-gitlab`,这是比旧的 `mcp-gitlab` 更不容易冲突的别名。如果 MCP 客户端找不到它,请使用 `which zereight-mcp-gitlab` 输出的绝对路径。
113
113
 
114
- 如果不想全局安装,请将 `npx` 固定到上一个稳定版本(即文档推荐的版本),例如 `npx -y @zereight/mcp-gitlab@2.2.0`。如果始终想使用最新版本,请改用 `npx -y @zereight/mcp-gitlab@latest`。有新版本发布时,服务器会在启动时通过 stderr 提示(可用 `GITLAB_DISABLE_VERSION_CHECK=true` 关闭)。
114
+ 如果不想全局安装,请将 `npx` 固定到上一个稳定版本(即文档推荐的版本),例如 `npx -y @zereight/mcp-gitlab@2.2.1`。如果始终想使用最新版本,请改用 `npx -y @zereight/mcp-gitlab@latest`。有新版本发布时,服务器会在启动时通过 stderr 提示(可用 `GITLAB_DISABLE_VERSION_CHECK=true` 关闭)。
115
115
 
116
116
  #### 使用 CLI 参数(适用于环境变量有问题的客户端)
117
117
 
@@ -133,13 +133,13 @@ command = lib.getExe inputs.gitlab-mcp.packages.${system}.default;
133
133
 
134
134
  - `--token` - GitLab Personal Access Token(替代 `GITLAB_PERSONAL_ACCESS_TOKEN`)
135
135
  - `--api-url` - GitLab API URL(替代 `GITLAB_API_URL`)
136
- - `--read-only=true` - 启用只读模式(替代 `GITLAB_READ_ONLY_MODE`,已弃用 — 推荐 `--permission-mode=readonly`)
136
+ - `--read-only=true` - Deprecated (removed in next major (v3.0.0));请改用 `--permission-mode=readonly`(替代 `GITLAB_READ_ONLY_MODE`)
137
137
  - `--permission-mode` - 权限级别:`readonly`、`modify`(禁用删除/拆除工具)或 `full`(替代 `GITLAB_PERMISSION_MODE`,默认 `full`)
138
138
  - `--toolsets=all` - 启用指定工具集(替代 `GITLAB_TOOLSETS`;未设置时使用精简 `core` 默认值)
139
139
  - `--tools=list_issues` - 添加单个工具(替代 `GITLAB_TOOLS`)
140
- - `--use-wiki=true` - 启用 Wiki API(替代 `USE_GITLAB_WIKI`,旧版 — 推荐 `GITLAB_TOOLSETS=wiki`)
141
- - `--use-milestone=true` - 启用里程碑 API(替代 `USE_MILESTONE`,旧版 — 推荐 `GITLAB_TOOLSETS=milestones`)
142
- - `--use-pipeline=true` - 启用流水线 API(替代 `USE_PIPELINE`,旧版 — 推荐 `GITLAB_TOOLSETS=pipelines`)
140
+ - `--use-wiki=true` - Deprecated (removed in next major (v3.0.0));请改用 `--toolsets=core,wiki`(替代 `USE_GITLAB_WIKI`)
141
+ - `--use-milestone=true` - Deprecated (removed in next major (v3.0.0));请改用 `--toolsets=core,milestones`(替代 `USE_MILESTONE`)
142
+ - `--use-pipeline=true` - Deprecated (removed in next major (v3.0.0));请改用 `--toolsets=core,pipelines`,并把 `validate_ci_lint,validate_project_ci_lint` 追加到现有 `--tools` 列表(如果还没有该列表,则设置 `--tools=validate_ci_lint,validate_project_ci_lint`)(替代 `USE_PIPELINE`)
143
143
  - `--disable-version-check=true` - 关闭启动时的新版本提示(替代 `GITLAB_DISABLE_VERSION_CHECK`)
144
144
  - `--masking-enabled=true` - 启用文本响应掩码(替代 `GITLAB_MASKING_ENABLED`)
145
145
  - `--masking-config` - 掩码配置文件路径(替代 `GITLAB_MASKING_CONFIG`)
@@ -150,6 +150,8 @@ command = lib.getExe inputs.gitlab-mcp.packages.${system}.default;
150
150
  - `--compact-tools` - 以逗号分隔的工具名,仅在回复过大时对这些工具进行 compact,而不开启全局 compact(替代 `GITLAB_MCP_COMPACT_TOOLS`)
151
151
  - `--tool-profile` - `full`(默认)或 `slim`。`slim` 会从初始列表中移除 draft note、表情回应、标签、CI 目录工具以及 `create_group`。仅当 `GITLAB_TOOLSETS` 设置为非空白值时忽略(替代 `GITLAB_TOOL_PROFILE`)
152
152
 
153
+ 如果已经设置了 `GITLAB_TOOLSETS` 或 `--toolsets`,请把 `wiki`、`milestones` 或 `pipelines` 追加到该列表,不要整段替换。如果已经设置了 `GITLAB_TOOLS` 或 `--tools`,请把 `validate_ci_lint` 和 `validate_project_ci_lint` 追加到该列表,不要整段替换。显式列表会替换默认的 `core` toolset,不会合并。
154
+
153
155
  CLI 参数优先于环境变量。
154
156
 
155
157
  `zereight-mcp-gitlab auth` 是子命令,不是 MCP 服务器参数。它运行 GitLab device flow 后退出。参见 [CLI 参数](./docs/getting-started/cli-arguments.md#auth)。
@@ -158,12 +160,17 @@ CLI 参数优先于环境变量。
158
160
 
159
161
  > **细粒度工具过滤:**使用 `GITLAB_PERMISSION_MODE=modify` 允许创建/更新,同时阻止所有删除工具以及
160
162
  > 破坏性的拆除(teardown)工具(`cancel_pipeline`、`cancel_pipeline_job`、`stop_environment`、
161
- > `stop_stale_environments`、`unprotect_branch`)(包括通过 `execute_graphql` 的破坏性 mutation
163
+ > `stop_stale_environments`、`unprotect_branch`、`unprotect_tag`)(包括通过 `execute_graphql` 的破坏性 mutation
162
164
  > —— 删除与拆除动词 —— 以及 `push_files` 的 `delete`/`move`),或使用
163
165
  > `GITLAB_PERMISSION_MODE=readonly` 只读运行。还可以用
164
166
  > `GITLAB_TOOLSETS=<group,…>` 启用工具分组,用 `GITLAB_TOOLS=<tool,…>` 白名单启用单个工具
165
167
  > (例如:只读分组 + 少数几个写工具),用 `GITLAB_DENIED_TOOLS_REGEX` 按正则屏蔽工具。
166
- > 旧版 `USE_GITLAB_WIKI` / `USE_MILESTONE` / `USE_PIPELINE` 标志仅为向后兼容保留。
168
+ > 旧版 `USE_GITLAB_WIKI` / `USE_MILESTONE` / `USE_PIPELINE` 已弃用
169
+ > (Deprecated, removed in next major (v3.0.0))。
170
+ > 请改用 `GITLAB_TOOLSETS=core,wiki`、`core,milestones` 或 `core,pipelines`
171
+ > (`USE_PIPELINE` 还需要把 `validate_ci_lint,validate_project_ci_lint` 追加到现有 `GITLAB_TOOLS`,不要整段替换)。
172
+ > 如果已经设置了 `GITLAB_TOOLSETS`,请把 toolset 追加到现有列表,不要整段替换。
173
+ > 如果未设置 `GITLAB_TOOLS`,请设置 `GITLAB_TOOLS=validate_ci_lint,validate_project_ci_lint`。如果已经设置,请把 `validate_ci_lint,validate_project_ci_lint` 追加到现有列表,不要整段替换。
167
174
  > 参见 [Tools Reference](./docs/tools/index.md#feature-toggles) 和
168
175
  > [Environment Variables](./docs/configuration/environment-variables.md)。
169
176
 
@@ -175,7 +182,7 @@ docker run -i --rm \
175
182
  -e GITLAB_PERSONAL_ACCESS_TOKEN=your_gitlab_token \
176
183
  -e GITLAB_API_URL="https://gitlab.com/api/v4" \
177
184
  -e GITLAB_PERMISSION_MODE=readonly \
178
- -e GITLAB_TOOLSETS=wiki,milestones,pipelines \
185
+ -e GITLAB_TOOLSETS=core,wiki,milestones,pipelines \
179
186
  -e SSE=true \
180
187
  -e SSE_AUTH_TOKEN=your_mcp_sse_token \
181
188
  -p 3333:3002 \
@@ -204,7 +211,7 @@ docker run -i --rm \
204
211
  -e REMOTE_AUTHORIZATION=true \
205
212
  -e GITLAB_API_URL="https://gitlab.com/api/v4" \
206
213
  -e GITLAB_PERMISSION_MODE=readonly \
207
- -e GITLAB_TOOLSETS=wiki,milestones,pipelines \
214
+ -e GITLAB_TOOLSETS=core,wiki,milestones,pipelines \
208
215
  -e STREAMABLE_HTTP=true \
209
216
  -p 3333:3002 \
210
217
  zereight050/gitlab-mcp
@@ -524,7 +531,7 @@ node build/index.js
524
531
  | `MCP_SERVER_URL` | 是 | MCP 服务器的公开 HTTPS URL |
525
532
  | `GITLAB_API_URL` | 是 | GitLab 实例 API URL(例如 `https://gitlab.com/api/v4`) |
526
533
  | `STREAMABLE_HTTP` | 是 | 必须为 `true`(不支持 SSE) |
527
- | `GITLAB_OAUTH_SCOPES` | 否 | 要请求的 GitLab scopes,以逗号分隔。默认值为 `api`,当 `GITLAB_READ_ONLY_MODE=true` 时为 `read_api`。预注册应用必须配置至少这些 scopes。 |
534
+ | `GITLAB_OAUTH_SCOPES` | 否 | 要请求的 GitLab scopes,以逗号分隔。默认值为 `api`;有效 permission mode 为 `readonly` 时为 `read_api`。预注册应用必须配置至少这些 scopes。 |
528
535
  | `OAUTH_REGISTER_RATE_LIMIT_PER_HOUR` | 否 | Dynamic Client Registration(`POST /register`)的每客户端 IP rolling 限制。默认 `20`/小时,范围 `1`–`1000`。多个 IDE 窗口等导致注册被限流时可调高。与 GitLab API 限额无关。 |
529
536
  | `MCP_DANGEROUSLY_ALLOW_INSECURE_ISSUER_URL` | 否 | 仅用于本地 HTTP 开发 |
530
537