@wanadev/mcp-gitlab 1.0.3 → 1.0.5
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 +16 -5
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @wanadev/mcp-gitlab
|
|
2
2
|
|
|
3
|
-
A Model Context Protocol (MCP) server that gives project managers full control over GitLab **epics**, **issues**, **milestones**, **merge requests**, **labels**, and **boards** from Claude Desktop or any MCP-compatible client.
|
|
3
|
+
A Model Context Protocol (MCP) server that gives project managers full control over GitLab **epics**, **issues**, **milestones**, **iterations**, **merge requests**, **labels**, and **boards** from Claude Desktop, Claude Code, or any MCP-compatible client.
|
|
4
4
|
|
|
5
5
|
## Why this MCP server?
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@ Existing tools like **glab** are developer-oriented: they focus on merge request
|
|
|
8
8
|
|
|
9
9
|
`@wanadev/mcp-gitlab` fills that gap:
|
|
10
10
|
|
|
11
|
-
- **Epics &
|
|
11
|
+
- **Epics, milestones & iterations** -- create, update, close, and link issues to epics. Track sprints with iterations.
|
|
12
12
|
- **Cross-group visibility** -- query multiple GitLab groups in the same conversation (no hardcoded group ID).
|
|
13
13
|
- **Time tracking** -- see estimated vs. spent time on issues at a glance.
|
|
14
14
|
- **Labels & boards** -- list labels and issue boards without leaving your chat.
|
|
@@ -22,7 +22,7 @@ Existing tools like **glab** are developer-oriented: they focus on merge request
|
|
|
22
22
|
|
|
23
23
|
- **Node.js >= 20**
|
|
24
24
|
- A GitLab **Personal Access Token** (PAT) with the `api` scope (or `read_api` for read-only access)
|
|
25
|
-
- **GitLab Premium/Ultimate** for epics (issues, milestones, MRs, and
|
|
25
|
+
- **GitLab Premium/Ultimate** for epics and iterations (issues, milestones, MRs, labels, and boards work with all editions)
|
|
26
26
|
|
|
27
27
|
### 1. Generate a GitLab token
|
|
28
28
|
|
|
@@ -30,7 +30,18 @@ Existing tools like **glab** are developer-oriented: they focus on merge request
|
|
|
30
30
|
2. Create a token with the `api` scope
|
|
31
31
|
3. Copy the token
|
|
32
32
|
|
|
33
|
-
### 2.
|
|
33
|
+
### 2. Install
|
|
34
|
+
|
|
35
|
+
#### Claude Code (plugin)
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
/plugin marketplace add wanadev/gitlab-mcp
|
|
39
|
+
/plugin install wanadev-gitlab@wanadev-gitlab
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Set `GITLAB_TOKEN` in your environment (`.bashrc`, `.zshrc`, or system variable). The plugin will guide you on first launch if it's missing.
|
|
43
|
+
|
|
44
|
+
#### Claude Desktop (manual config)
|
|
34
45
|
|
|
35
46
|
Add the following to your `claude_desktop_config.json`:
|
|
36
47
|
|
|
@@ -53,7 +64,7 @@ Add the following to your `claude_desktop_config.json`:
|
|
|
53
64
|
}
|
|
54
65
|
```
|
|
55
66
|
|
|
56
|
-
### 3. Restart
|
|
67
|
+
### 3. Restart and test
|
|
57
68
|
|
|
58
69
|
The MCP server will be available immediately. Test with: *"List my GitLab groups"*
|
|
59
70
|
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { dirname, resolve } from "node:path";
|
|
2
5
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
6
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
7
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
8
|
+
const pkg = JSON.parse(readFileSync(resolve(__dirname, "..", "package.json"), "utf8"));
|
|
4
9
|
import { GitLabClient } from "./client.js";
|
|
5
10
|
import { registerEpicTools } from "./tools/epics.js";
|
|
6
11
|
import { registerIssueTools } from "./tools/issues.js";
|
|
@@ -23,8 +28,8 @@ async function main() {
|
|
|
23
28
|
const readOnly = process.env["GITLAB_READ_ONLY"] === "true";
|
|
24
29
|
const client = new GitLabClient({ baseUrl, token, readOnly });
|
|
25
30
|
const server = new McpServer({
|
|
26
|
-
name:
|
|
27
|
-
version:
|
|
31
|
+
name: pkg.name,
|
|
32
|
+
version: pkg.version,
|
|
28
33
|
});
|
|
29
34
|
registerEpicTools(server, client);
|
|
30
35
|
registerIssueTools(server, client);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAsC,CAAC;AAC5H,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,SAAS,YAAY,CAAC,IAAY,EAAE,WAAmB;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CACX,uCAAuC,IAAI,iBAAiB;YAC1D,GAAG,WAAW,IAAI;YAClB,YAAY,IAAI,8BAA8B,CACjD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,KAAK,GAAG,YAAY,CACxB,cAAc,EACd,uEAAuE,CACxE,CAAC;IAEF,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,oBAAoB,CAAC;IACvE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,MAAM,CAAC;IAE5D,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE9D,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,GAAG,CAAC,OAAO;KACrB,CAAC,CAAC;IAEH,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAElC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACrD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|