@zereight/mcp-gitlab 2.1.38 → 2.1.39
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 +2 -1
- package/README.md +2 -1
- package/README.zh-CN.md +2 -1
- package/build/schemas.js +3 -0
- package/build/test/nullish-tool-arguments-schema.test.js +20 -1
- package/package.json +1 -1
package/README.ko.md
CHANGED
|
@@ -68,6 +68,7 @@ PAT, OAuth, 읽기 전용 모드, 동적 API URL, 원격 인증을 지원하며
|
|
|
68
68
|
서버를 한 번 설치하세요.
|
|
69
69
|
|
|
70
70
|
```shell
|
|
71
|
+
brew tap zereight/gitlab-mcp https://github.com/zereight/gitlab-mcp
|
|
71
72
|
brew install zereight/gitlab-mcp/zereight-mcp-gitlab
|
|
72
73
|
```
|
|
73
74
|
|
|
@@ -79,7 +80,7 @@ npm install -g @zereight/mcp-gitlab
|
|
|
79
80
|
|
|
80
81
|
예시는 기존 `mcp-gitlab`보다 충돌 가능성이 낮은 `zereight-mcp-gitlab` 별칭을 사용합니다. MCP 클라이언트가 찾지 못하면 `which zereight-mcp-gitlab`의 절대 경로를 사용하세요.
|
|
81
82
|
|
|
82
|
-
전역 설치를 쓰지 않으려면 `npx -y @zereight/mcp-gitlab@2.1.
|
|
83
|
+
전역 설치를 쓰지 않으려면 `npx -y @zereight/mcp-gitlab@2.1.38`처럼 직전 안정 버전(문서가 권장하는 버전)으로 고정하세요. 항상 최신 버전을 원하면 `npx -y @zereight/mcp-gitlab@latest`를 사용하세요. 새 버전이 나오면 서버가 시작 시 stderr로 알려줍니다(`GITLAB_DISABLE_VERSION_CHECK=true`로 비활성화 가능).
|
|
83
84
|
|
|
84
85
|
#### CLI 인자 사용하기(환경 변수 문제가 있는 클라이언트용)
|
|
85
86
|
|
package/README.md
CHANGED
|
@@ -68,6 +68,7 @@ For the simplest local setup, start with a Personal Access Token. For browser-ba
|
|
|
68
68
|
Install the server once:
|
|
69
69
|
|
|
70
70
|
```shell
|
|
71
|
+
brew tap zereight/gitlab-mcp https://github.com/zereight/gitlab-mcp
|
|
71
72
|
brew install zereight/gitlab-mcp/zereight-mcp-gitlab
|
|
72
73
|
```
|
|
73
74
|
|
|
@@ -79,7 +80,7 @@ npm install -g @zereight/mcp-gitlab
|
|
|
79
80
|
|
|
80
81
|
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`.
|
|
81
82
|
|
|
82
|
-
No global install? Pin `npx` to the previous stable release (the version these docs recommend), for example `npx -y @zereight/mcp-gitlab@2.1.
|
|
83
|
+
No global install? Pin `npx` to the previous stable release (the version these docs recommend), for example `npx -y @zereight/mcp-gitlab@2.1.38`. 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`).
|
|
83
84
|
|
|
84
85
|
#### Using CLI Arguments (for clients with env var issues)
|
|
85
86
|
|
package/README.zh-CN.md
CHANGED
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
安装服务器:
|
|
69
69
|
|
|
70
70
|
```shell
|
|
71
|
+
brew tap zereight/gitlab-mcp https://github.com/zereight/gitlab-mcp
|
|
71
72
|
brew install zereight/gitlab-mcp/zereight-mcp-gitlab
|
|
72
73
|
```
|
|
73
74
|
|
|
@@ -79,7 +80,7 @@ npm install -g @zereight/mcp-gitlab
|
|
|
79
80
|
|
|
80
81
|
示例使用 `zereight-mcp-gitlab`,这是比旧的 `mcp-gitlab` 更不容易冲突的别名。如果 MCP 客户端找不到它,请使用 `which zereight-mcp-gitlab` 输出的绝对路径。
|
|
81
82
|
|
|
82
|
-
如果不想全局安装,请将 `npx` 固定到上一个稳定版本(即文档推荐的版本),例如 `npx -y @zereight/mcp-gitlab@2.1.
|
|
83
|
+
如果不想全局安装,请将 `npx` 固定到上一个稳定版本(即文档推荐的版本),例如 `npx -y @zereight/mcp-gitlab@2.1.38`。如果始终想使用最新版本,请改用 `npx -y @zereight/mcp-gitlab@latest`。有新版本发布时,服务器会在启动时通过 stderr 提示(可用 `GITLAB_DISABLE_VERSION_CHECK=true` 关闭)。
|
|
83
84
|
|
|
84
85
|
#### 使用 CLI 参数(适用于环境变量有问题的客户端)
|
|
85
86
|
|
package/build/schemas.js
CHANGED
|
@@ -1765,6 +1765,9 @@ export const UpdateMergeRequestSchema = MergeRequestParamsSchema.extend({
|
|
|
1765
1765
|
.optional()
|
|
1766
1766
|
.describe("Squash commits into a single commit when merging"),
|
|
1767
1767
|
draft: z.coerce.boolean().optional().describe("Work in progress merge request"),
|
|
1768
|
+
milestone_id: z
|
|
1769
|
+
.preprocess(val => (val === null ? undefined : val), z.coerce.string().optional())
|
|
1770
|
+
.describe("Milestone ID to assign. Set to 0 to unassign. Null is treated as omitted."),
|
|
1768
1771
|
});
|
|
1769
1772
|
export const MergeMergeRequestSchema = ProjectParamsSchema.extend({
|
|
1770
1773
|
merge_request_iid: z.coerce.string().optional().describe("The IID of a merge request"),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import assert from "node:assert/strict";
|
|
2
2
|
import { describe, test } from "node:test";
|
|
3
|
-
import { CreateDraftNoteSchema, CreateLabelSchema, ExecuteGraphQLSchema, GetBranchDiffsSchema, UpdateMergeRequestDiscussionNoteSchema, } from "../schemas.js";
|
|
3
|
+
import { CreateDraftNoteSchema, CreateLabelSchema, ExecuteGraphQLSchema, GetBranchDiffsSchema, UpdateMergeRequestDiscussionNoteSchema, UpdateMergeRequestSchema, } from "../schemas.js";
|
|
4
4
|
import { sanitizeToolArguments } from "../utils/tool-args.js";
|
|
5
5
|
const PROJECT_ID = "group/project";
|
|
6
6
|
const MERGE_REQUEST_IID = "1";
|
|
@@ -42,6 +42,25 @@ describe("When validating tool arguments after sanitization", () => {
|
|
|
42
42
|
assert.equal(parsed.position?.new_line, 10);
|
|
43
43
|
});
|
|
44
44
|
});
|
|
45
|
+
describe("with update_merge_request", () => {
|
|
46
|
+
test("should omit null milestone_id instead of coercing to string null", () => {
|
|
47
|
+
const parsed = UpdateMergeRequestSchema.parse({
|
|
48
|
+
project_id: PROJECT_ID,
|
|
49
|
+
merge_request_iid: MERGE_REQUEST_IID,
|
|
50
|
+
title: "keep",
|
|
51
|
+
milestone_id: null,
|
|
52
|
+
});
|
|
53
|
+
assert.equal(parsed.milestone_id, undefined);
|
|
54
|
+
});
|
|
55
|
+
test("should keep 0 as unassign sentinel", () => {
|
|
56
|
+
const parsed = UpdateMergeRequestSchema.parse({
|
|
57
|
+
project_id: PROJECT_ID,
|
|
58
|
+
merge_request_iid: MERGE_REQUEST_IID,
|
|
59
|
+
milestone_id: 0,
|
|
60
|
+
});
|
|
61
|
+
assert.equal(parsed.milestone_id, "0");
|
|
62
|
+
});
|
|
63
|
+
});
|
|
45
64
|
describe("with update_merge_request_discussion_note", () => {
|
|
46
65
|
test("should accept body plus resolved null after sanitize", () => {
|
|
47
66
|
const parsed = parseAfterSanitize("update_merge_request_discussion_note", {
|
package/package.json
CHANGED