@zereight/mcp-gitlab 2.1.60 → 2.1.61
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
|
-
- **
|
|
20
|
+
- **261개 도구 + `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 프록시, 요청별 원격 인증
|
|
@@ -30,7 +30,7 @@ PAT, OAuth, 읽기 전용 모드, 동적 API URL, 원격 인증을 지원하며
|
|
|
30
30
|
| | @zereight/mcp-gitlab | GitLab MCP A (커뮤니티 CQRS형) |
|
|
31
31
|
|---|----------------------|--------------------------------|
|
|
32
32
|
| **적합한 경우** | AI 에이전트 워크플로우 | 엔터프라이즈 멀티 인스턴스 / 그룹형 도구 |
|
|
33
|
-
| **도구 모델** | ~
|
|
33
|
+
| **도구 모델** | ~261개 세분화 도구 + `discover_tools` | ~50–60개 `browse_*` / `manage_*` 그룹 도구 |
|
|
34
34
|
| **MR 리뷰** | 2단계 배치 diff | 서버마다 다름 |
|
|
35
35
|
| **Node.js** | >=18.17 | 보통 >=24 |
|
|
36
36
|
| **라이선스** | MIT | 서버마다 다름 |
|
|
@@ -110,7 +110,7 @@ command = lib.getExe inputs.gitlab-mcp.packages.${system}.default;
|
|
|
110
110
|
|
|
111
111
|
예시는 기존 `mcp-gitlab`보다 충돌 가능성이 낮은 `zereight-mcp-gitlab` 별칭을 사용합니다. MCP 클라이언트가 찾지 못하면 `which zereight-mcp-gitlab`의 절대 경로를 사용하세요.
|
|
112
112
|
|
|
113
|
-
전역 설치를 쓰지 않으려면 `npx -y @zereight/mcp-gitlab@2.1.
|
|
113
|
+
전역 설치를 쓰지 않으려면 `npx -y @zereight/mcp-gitlab@2.1.60`처럼 직전 안정 버전(문서가 권장하는 버전)으로 고정하세요. 항상 최신 버전을 원하면 `npx -y @zereight/mcp-gitlab@latest`를 사용하세요. 새 버전이 나오면 서버가 시작 시 stderr로 알려줍니다(`GITLAB_DISABLE_VERSION_CHECK=true`로 비활성화 가능).
|
|
114
114
|
|
|
115
115
|
#### CLI 인자 사용하기(환경 변수 문제가 있는 클라이언트용)
|
|
116
116
|
|
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
|
-
- **
|
|
25
|
+
- **261 tools + `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
|
|
@@ -35,7 +35,7 @@ Supports PAT, OAuth, read-only mode, dynamic API URLs, and remote authorization
|
|
|
35
35
|
| | @zereight/mcp-gitlab | GitLab MCP A (community CQRS-style) |
|
|
36
36
|
|---|----------------------|-------------------------------------|
|
|
37
37
|
| **Best for** | AI agent workflows | Enterprise multi-instance / grouped tools |
|
|
38
|
-
| **Tool model** | ~
|
|
38
|
+
| **Tool model** | ~261 granular tools + `discover_tools` | ~50–60 grouped `browse_*` / `manage_*` tools |
|
|
39
39
|
| **MR review** | 2-step batched diff | Varies |
|
|
40
40
|
| **Node.js** | >=18.17 | Often >=24 |
|
|
41
41
|
| **License** | MIT | Varies |
|
|
@@ -115,7 +115,7 @@ The store path is pinned by your lock file; update it with `nix flake update git
|
|
|
115
115
|
|
|
116
116
|
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`.
|
|
117
117
|
|
|
118
|
-
No global install? Pin `npx` to the previous stable release (the version these docs recommend), for example `npx -y @zereight/mcp-gitlab@2.1.
|
|
118
|
+
No global install? Pin `npx` to the previous stable release (the version these docs recommend), for example `npx -y @zereight/mcp-gitlab@2.1.60`. 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
119
|
|
|
120
120
|
#### Using CLI Arguments (for clients with env var issues)
|
|
121
121
|
|
|
@@ -840,7 +840,11 @@ Register the skill directory in your AI client to get optimal tool usage guidanc
|
|
|
840
840
|
255. `get_vulnerability` - Get full details of a specific vulnerability
|
|
841
841
|
256. `dismiss_vulnerability` - Dismiss a vulnerability with a reason (acceptable_risk, false_positive, used_in_tests, mitigating_control, not_applicable) and optional comment
|
|
842
842
|
257. `confirm_vulnerability` - Confirm a vulnerability as a real finding requiring remediation
|
|
843
|
-
258. `
|
|
843
|
+
258. `orbit_query` - Execute a GitLab Orbit graph query over the indexed SDLC knowledge graph
|
|
844
|
+
259. `orbit_get_schema` - Fetch the current GitLab Orbit graph schema (node and edge types)
|
|
845
|
+
260. `orbit_get_status` - Check GitLab Orbit indexing status for the enabled scope
|
|
846
|
+
261. `orbit_list_tools` - List the MCP tool definitions exposed by GitLab Orbit
|
|
847
|
+
262. `discover_tools` - Discover and activate additional tool categories for this session. Available categories: merge_requests, issues, repositories, branches, projects, labels, ci, groups, pipelines, milestones, wiki, releases, tags, users, workitems, webhooks, search, variables, dependency_proxy, vulnerabilities, orbit. Already-active categories are listed in the response.
|
|
844
848
|
|
|
845
849
|
<!-- TOOLS-END -->
|
|
846
850
|
|
package/README.zh-CN.md
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
### 为什么使用这个 GitLab MCP?
|
|
19
19
|
|
|
20
|
-
- **
|
|
20
|
+
- **261 个工具 + `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 代理、按请求远程授权
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
| | @zereight/mcp-gitlab | GitLab MCP A(社区 CQRS 型) |
|
|
31
31
|
|---|----------------------|------------------------------|
|
|
32
32
|
| **更适合** | AI 代理工作流 | 企业多实例 / 分组工具 |
|
|
33
|
-
| **工具模型** | ~
|
|
33
|
+
| **工具模型** | ~261 个细粒度工具 + `discover_tools` | ~50–60 个 `browse_*` / `manage_*` 分组工具 |
|
|
34
34
|
| **MR 审查** | 两步批量 diff | 因服务器而异 |
|
|
35
35
|
| **Node.js** | >=18.17 | 通常 >=24 |
|
|
36
36
|
| **许可证** | MIT | 因服务器而异 |
|
|
@@ -110,7 +110,7 @@ command = lib.getExe inputs.gitlab-mcp.packages.${system}.default;
|
|
|
110
110
|
|
|
111
111
|
示例使用 `zereight-mcp-gitlab`,这是比旧的 `mcp-gitlab` 更不容易冲突的别名。如果 MCP 客户端找不到它,请使用 `which zereight-mcp-gitlab` 输出的绝对路径。
|
|
112
112
|
|
|
113
|
-
如果不想全局安装,请将 `npx` 固定到上一个稳定版本(即文档推荐的版本),例如 `npx -y @zereight/mcp-gitlab@2.1.
|
|
113
|
+
如果不想全局安装,请将 `npx` 固定到上一个稳定版本(即文档推荐的版本),例如 `npx -y @zereight/mcp-gitlab@2.1.60`。如果始终想使用最新版本,请改用 `npx -y @zereight/mcp-gitlab@latest`。有新版本发布时,服务器会在启动时通过 stderr 提示(可用 `GITLAB_DISABLE_VERSION_CHECK=true` 关闭)。
|
|
114
114
|
|
|
115
115
|
#### 使用 CLI 参数(适用于环境变量有问题的客户端)
|
|
116
116
|
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import assert from "node:assert/strict";
|
|
2
2
|
import { describe, it } from "node:test";
|
|
3
3
|
import { allTools, TOOLSET_DEFINITIONS } from "../tools/registry.js";
|
|
4
|
+
function getExposedTool(name) {
|
|
5
|
+
const tool = allTools.find(candidate => candidate.name === name);
|
|
6
|
+
assert.ok(tool);
|
|
7
|
+
return tool;
|
|
8
|
+
}
|
|
4
9
|
function getDefaultToolNames() {
|
|
5
10
|
return new Set(TOOLSET_DEFINITIONS.filter(definition => definition.isDefault).flatMap(definition => [
|
|
6
11
|
...definition.tools,
|
|
@@ -17,9 +22,29 @@ describe("When MCP tool descriptions are exposed", () => {
|
|
|
17
22
|
});
|
|
18
23
|
describe("with create_branch", () => {
|
|
19
24
|
it("should explain its source revision and neighboring branch operations", () => {
|
|
20
|
-
const tool =
|
|
21
|
-
assert.ok(tool);
|
|
25
|
+
const tool = getExposedTool("create_branch");
|
|
22
26
|
assert.match(tool.description, /source branch|tag|commit[\s\S]*protect_branch[\s\S]*already-exists/i);
|
|
23
27
|
});
|
|
24
28
|
});
|
|
29
|
+
describe("with list_issues", () => {
|
|
30
|
+
it("should include issue-management guidance and omit group_id", () => {
|
|
31
|
+
const tool = getExposedTool("list_issues");
|
|
32
|
+
assert.match(tool.description, /issue management/i);
|
|
33
|
+
assert.doesNotMatch(tool.description, /group_id/);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
describe("with my_issues", () => {
|
|
37
|
+
it("should include issue-management guidance and omit group_id", () => {
|
|
38
|
+
const tool = getExposedTool("my_issues");
|
|
39
|
+
assert.match(tool.description, /issue management/i);
|
|
40
|
+
assert.doesNotMatch(tool.description, /group_id/);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
describe("with get_issue", () => {
|
|
44
|
+
it("should include issue-management guidance and omit group_id", () => {
|
|
45
|
+
const tool = getExposedTool("get_issue");
|
|
46
|
+
assert.match(tool.description, /issue management/i);
|
|
47
|
+
assert.doesNotMatch(tool.description, /group_id/);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
25
50
|
});
|
|
@@ -8,6 +8,9 @@ const TOOL_GUIDANCE = {
|
|
|
8
8
|
create_or_update_file: "Use this for a single repository file when you know whether the target path is new or already exists; use `push_files` for a multi-file commit. Optional `encoding` (`text` or `base64`) defaults to `GITLAB_REPO_FILE_ENCODING` so existing callers stay unchanged. The operation creates or updates remote content in a commit, requires repository write permission, and returns the commit result or a conflict/validation error.",
|
|
9
9
|
push_files: "Use this to commit several file changes atomically; use `create_or_update_file` when only one path is involved. Each file defaults to action `create`; optional per-file `action` (create/update/delete/move) and `encoding` (text/base64) are additive. `GITLAB_PERMISSION_MODE=modify` rejects `delete` and `move`. The operation writes repository history on the selected branch, requires repository write permission, and returns the commit result or a validation, conflict, or protected-branch error.",
|
|
10
10
|
create_issue: "Use this to open a new issue; use `update_issue` for an existing issue and `create_issue_note` to add discussion without changing issue fields. The operation creates remote project data, requires issue creation permission, and returns the new issue or a validation, permission, or duplicate-related error.",
|
|
11
|
+
list_issues: "Use this for issue management: list GitLab issues, optionally scoped with `project_id`. Use `get_issue` when the issue iid is already known and `my_issues` for issues assigned to the current user. It is read-only and paginated, requires issue read permission, and returns issue records or GitLab errors for invalid identifiers, missing resources, or rate limits.",
|
|
12
|
+
my_issues: "Use this for issue management: list issues assigned to the authenticated user. Use `list_issues` for project-wide or author-scoped listing and `get_issue` for one issue. It is read-only and paginated, requires authentication, and returns assigned issue records or permission/rate-limit errors.",
|
|
13
|
+
get_issue: "Use this for issue management: inspect one issue's fields; use `list_issues` or `my_issues` to discover issues first. It is read-only, requires issue read permission, and returns the issue or an error when the identifier is invalid, the issue is missing, or access is denied.",
|
|
11
14
|
create_merge_request: "Use this to open a new merge request from an existing source branch to a target branch; use `update_merge_request` after it exists. The operation creates remote review state, requires project access, and returns the new merge request or a validation, permission, branch, or duplicate-related error.",
|
|
12
15
|
fork_repository: "Use this to create a copy of an existing project in the current user's namespace or a permitted namespace; use `search_repositories` or `get_project` to inspect projects without copying them. The operation creates a new project, requires fork permission, and returns the forked project or a namespace/permission error.",
|
|
13
16
|
create_branch: "Use this to create a branch from a branch, tag, or commit; use `get_branch` or `list_branches` to inspect branches and `protect_branch` to configure protection afterward. The operation changes remote repository state, requires branch-creation permission, and returns the new branch or a validation, missing-ref, protected-project, or already-exists error. `project_id` accepts a numeric ID or URL-encoded path, `branch` is the new name, and `ref` selects its starting revision.",
|
package/package.json
CHANGED