@ttpears/gitlab-mcp-server 1.7.2 → 1.8.0
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 +49 -1
- package/dist/gitlab-client.d.ts +82 -9
- package/dist/gitlab-client.d.ts.map +1 -1
- package/dist/gitlab-client.js +1001 -40
- package/dist/gitlab-client.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -4
- package/dist/index.js.map +1 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +672 -31
- package/dist/tools.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,12 +3,46 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/@ttpears/gitlab-mcp-server)
|
|
4
4
|
[](https://opensource.org/licenses/MIT)
|
|
5
5
|
|
|
6
|
-
A
|
|
6
|
+
A community MCP server for GitLab — works with **any GitLab tier** (Free, Premium, Ultimate), no GitLab Duo required.
|
|
7
7
|
|
|
8
8
|
```bash
|
|
9
9
|
npx @ttpears/gitlab-mcp-server
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
+
## How This Differs from GitLab's Official MCP Server
|
|
13
|
+
|
|
14
|
+
GitLab ships an [official MCP server](https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_server/) (Beta) that requires **Premium/Ultimate** and **GitLab Duo** with beta features enabled. This community server is an alternative for teams that don't have those requirements or need different capabilities.
|
|
15
|
+
|
|
16
|
+
| | This server | GitLab official |
|
|
17
|
+
|---|---|---|
|
|
18
|
+
| **GitLab tier** | Free, Premium, Ultimate | Premium / Ultimate only |
|
|
19
|
+
| **GitLab Duo required** | No | Yes |
|
|
20
|
+
| **Auth** | Personal Access Token | OAuth 2.0 Dynamic Client Registration |
|
|
21
|
+
| **Transport** | stdio + streamable HTTP | stdio (via `mcp-remote`) + HTTP |
|
|
22
|
+
| **Multi-client** | Claude Code, LibreChat, any MCP client | Claude Desktop, Claude Code, Cursor, VS Code |
|
|
23
|
+
| **Multi-user auth modes** | hybrid / shared / per-user | OAuth per-user |
|
|
24
|
+
| **GraphQL schema discovery** | Yes — introspect & run custom queries | No |
|
|
25
|
+
| **Repository browsing & file reading** | Yes | No |
|
|
26
|
+
| **User / group search** | Yes | No |
|
|
27
|
+
| **Update issues & MRs** | Yes | No (create only) |
|
|
28
|
+
| **CI/CD pipeline management** | Yes | Yes |
|
|
29
|
+
| **MR diffs & commits** | Yes | Yes |
|
|
30
|
+
| **Work item notes** | Yes | Yes |
|
|
31
|
+
| **Semantic code search** | No | Yes (requires additional setup) |
|
|
32
|
+
| **Label search** | Yes | Yes |
|
|
33
|
+
| **Milestone tracking** | Yes | No |
|
|
34
|
+
| **Iteration/sprint tracking** | Yes | No |
|
|
35
|
+
| **Time tracking & timelogs** | Yes | No |
|
|
36
|
+
| **MR reviewer & approval status** | Yes | No |
|
|
37
|
+
| **Project statistics dashboard** | Yes | No |
|
|
38
|
+
| **Group member listing** | Yes | No |
|
|
39
|
+
|
|
40
|
+
**Choose this server** if you're on GitLab Free/Community Edition, need GraphQL flexibility, want repo browsing, or run LibreChat multi-user deployments.
|
|
41
|
+
|
|
42
|
+
**Choose the official server** if you have GitLab Premium/Ultimate with Duo, need semantic code search, or prefer OAuth over PATs.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
12
46
|
## Quick Start
|
|
13
47
|
|
|
14
48
|
### 1. Create a GitLab Token
|
|
@@ -116,6 +150,8 @@ docker compose down && docker compose -f docker-compose.yml -f docker-compose.ov
|
|
|
116
150
|
| `search_merge_requests` | Find merge requests by username or within a project |
|
|
117
151
|
| `search_users` | Find team members and contributors |
|
|
118
152
|
| `search_groups` | Discover groups and organizations |
|
|
153
|
+
| `search_labels` | Search labels in a project or group |
|
|
154
|
+
| `list_group_members` | List group members with access levels |
|
|
119
155
|
| `browse_repository` | Explore directory structure and files |
|
|
120
156
|
| `get_file_content` | Read file contents for code analysis |
|
|
121
157
|
|
|
@@ -125,6 +161,16 @@ docker compose down && docker compose -f docker-compose.yml -f docker-compose.ov
|
|
|
125
161
|
| `get_project` | Detailed project information |
|
|
126
162
|
| `get_issues` | List project issues with pagination |
|
|
127
163
|
| `get_merge_requests` | List project merge requests with pagination |
|
|
164
|
+
| `get_merge_request_pipelines` | Get CI/CD pipelines for a merge request |
|
|
165
|
+
| `get_pipeline_jobs` | Get jobs for a specific pipeline |
|
|
166
|
+
| `get_merge_request_diffs` | Get diff statistics for a merge request |
|
|
167
|
+
| `get_merge_request_commits` | Get commits for a merge request |
|
|
168
|
+
| `get_notes` | Get notes/comments on an issue or merge request |
|
|
169
|
+
| `list_milestones` | List milestones with progress statistics |
|
|
170
|
+
| `list_iterations` | List iterations/sprints (Premium/Ultimate) |
|
|
171
|
+
| `get_time_tracking` | Get time estimate, spent, and timelogs |
|
|
172
|
+
| `get_merge_request_reviewers` | Get MR approval and reviewer status |
|
|
173
|
+
| `get_project_statistics` | Aggregate project stats dashboard |
|
|
128
174
|
| `get_user_issues` | Get all issues assigned to a user |
|
|
129
175
|
| `get_user_merge_requests` | Get MRs authored by or assigned to a user |
|
|
130
176
|
| `resolve_path` | Resolve a path to a project or group |
|
|
@@ -136,6 +182,8 @@ docker compose down && docker compose -f docker-compose.yml -f docker-compose.ov
|
|
|
136
182
|
|------|-------------|
|
|
137
183
|
| `create_issue` | Create new issues |
|
|
138
184
|
| `create_merge_request` | Create new merge requests |
|
|
185
|
+
| `create_note` | Add a comment/note to an issue or merge request |
|
|
186
|
+
| `manage_pipeline` | Retry or cancel a CI/CD pipeline |
|
|
139
187
|
| `update_issue` | Update title, description, assignees, labels, due date |
|
|
140
188
|
| `update_merge_request` | Update title, description, assignees, reviewers, labels |
|
|
141
189
|
|
package/dist/gitlab-client.d.ts
CHANGED
|
@@ -32,6 +32,18 @@ export declare class GitLabAPIError extends Error {
|
|
|
32
32
|
originalError?: Error;
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
|
+
export interface PageInfo {
|
|
36
|
+
hasNextPage: boolean;
|
|
37
|
+
hasPreviousPage: boolean;
|
|
38
|
+
startCursor: string | null;
|
|
39
|
+
endCursor: string | null;
|
|
40
|
+
}
|
|
41
|
+
export interface PaginatedResult<T> {
|
|
42
|
+
nodes: T[];
|
|
43
|
+
totalFetched: number;
|
|
44
|
+
hasMore: boolean;
|
|
45
|
+
pageInfo: PageInfo;
|
|
46
|
+
}
|
|
35
47
|
export declare class GitLabGraphQLClient {
|
|
36
48
|
private baseClient;
|
|
37
49
|
private config;
|
|
@@ -51,11 +63,16 @@ export declare class GitLabGraphQLClient {
|
|
|
51
63
|
private getClient;
|
|
52
64
|
introspectSchema(userConfig?: UserConfig): Promise<void>;
|
|
53
65
|
query<T = any>(query: string, variables?: any, userConfig?: UserConfig, requiresWrite?: boolean): Promise<T>;
|
|
66
|
+
fetchAllPages<T = any>(query: string, variables: Record<string, any>, connectionPath: string, options?: {
|
|
67
|
+
maxItems?: number;
|
|
68
|
+
pageSize?: number;
|
|
69
|
+
userConfig?: UserConfig;
|
|
70
|
+
}): Promise<PaginatedResult<T>>;
|
|
54
71
|
getCurrentUser(userConfig?: UserConfig): Promise<any>;
|
|
55
72
|
getProject(fullPath: string, userConfig?: UserConfig): Promise<any>;
|
|
56
|
-
getProjects(first?: number, after?: string, userConfig?: UserConfig): Promise<any>;
|
|
57
|
-
getIssues(projectPath: string, first?: number, after?: string, userConfig?: UserConfig): Promise<any>;
|
|
58
|
-
getMergeRequests(projectPath: string, first?: number, after?: string, userConfig?: UserConfig): Promise<any>;
|
|
73
|
+
getProjects(first?: number, after?: string, fetchAll?: boolean, userConfig?: UserConfig, sort?: string): Promise<any>;
|
|
74
|
+
getIssues(projectPath: string, first?: number, after?: string, fetchAll?: boolean, userConfig?: UserConfig, sort?: string): Promise<any>;
|
|
75
|
+
getMergeRequests(projectPath: string, first?: number, after?: string, fetchAll?: boolean, userConfig?: UserConfig, sort?: string): Promise<any>;
|
|
59
76
|
createIssue(projectPath: string, title: string, description?: string, userConfig?: UserConfig): Promise<any>;
|
|
60
77
|
createMergeRequest(projectPath: string, title: string, sourceBranch: string, targetBranch: string, description?: string, userConfig?: UserConfig): Promise<any>;
|
|
61
78
|
getSchema(): any;
|
|
@@ -80,17 +97,73 @@ export declare class GitLabGraphQLClient {
|
|
|
80
97
|
labelNames?: string[];
|
|
81
98
|
}, userConfig?: UserConfig): Promise<any>;
|
|
82
99
|
getTypeFields(typeName: string): string[];
|
|
83
|
-
globalSearch(searchTerm?: string,
|
|
84
|
-
|
|
100
|
+
globalSearch(searchTerm?: string, first?: number, after?: string, userConfig?: UserConfig): Promise<any>;
|
|
101
|
+
globalSearchAll(searchTerm?: string, maxItems?: number, userConfig?: UserConfig): Promise<{
|
|
102
|
+
projects: PaginatedResult<any>;
|
|
103
|
+
issues: PaginatedResult<any>;
|
|
104
|
+
}>;
|
|
105
|
+
searchProjects(searchTerm: string, first?: number, after?: string, fetchAll?: boolean, userConfig?: UserConfig): Promise<any>;
|
|
85
106
|
private getTypeName;
|
|
86
107
|
private getEnumValues;
|
|
87
|
-
searchIssues(searchTerm?: string, projectPath?: string, state?: string, first?: number, after?: string, userConfig?: UserConfig, assigneeUsernames?: string[], authorUsername?: string, labelNames?: string[]): Promise<any>;
|
|
88
|
-
searchMergeRequests(searchTerm: string, projectPath?: string, state?: string, first?: number, after?: string, userConfig?: UserConfig): Promise<any>;
|
|
108
|
+
searchIssues(searchTerm?: string, projectPath?: string, state?: string, first?: number, after?: string, fetchAll?: boolean, userConfig?: UserConfig, assigneeUsernames?: string[], authorUsername?: string, labelNames?: string[], sort?: string): Promise<any>;
|
|
109
|
+
searchMergeRequests(searchTerm: string, projectPath?: string, state?: string, first?: number, after?: string, fetchAll?: boolean, userConfig?: UserConfig, sort?: string): Promise<any>;
|
|
89
110
|
searchRepositoryFiles(projectPath: string, path: string, ref?: string, userConfig?: UserConfig): Promise<any>;
|
|
90
111
|
resolvePath(fullPath: string, first?: number, after?: string, userConfig?: UserConfig): Promise<any>;
|
|
91
112
|
getGroup(fullPath: string, first?: number, after?: string, searchTerm?: string, userConfig?: UserConfig): Promise<any>;
|
|
92
113
|
getFileContent(projectPath: string, filePath: string, ref?: string, userConfig?: UserConfig): Promise<any>;
|
|
93
|
-
searchUsers(searchTerm: string, first?: number, userConfig?: UserConfig): Promise<any>;
|
|
94
|
-
searchGroups(searchTerm: string, first?: number, userConfig?: UserConfig): Promise<any>;
|
|
114
|
+
searchUsers(searchTerm: string, first?: number, after?: string, fetchAll?: boolean, userConfig?: UserConfig): Promise<any>;
|
|
115
|
+
searchGroups(searchTerm: string, first?: number, after?: string, fetchAll?: boolean, userConfig?: UserConfig): Promise<any>;
|
|
116
|
+
getMergeRequestPipelines(projectPath: string, iid: string, first?: number, after?: string, fetchAll?: boolean, userConfig?: UserConfig): Promise<any>;
|
|
117
|
+
getPipelineJobs(projectPath: string, pipelineIid: string, first?: number, after?: string, fetchAll?: boolean, userConfig?: UserConfig): Promise<any>;
|
|
118
|
+
getPipelineId(projectPath: string, pipelineIid: string, userConfig?: UserConfig): Promise<string>;
|
|
119
|
+
managePipeline(projectPath: string, pipelineIid: string, action: 'retry' | 'cancel', userConfig?: UserConfig): Promise<any>;
|
|
120
|
+
getMergeRequestDiffs(projectPath: string, iid: string, userConfig?: UserConfig): Promise<any>;
|
|
121
|
+
getMergeRequestCommits(projectPath: string, iid: string, first?: number, after?: string, fetchAll?: boolean, userConfig?: UserConfig): Promise<any>;
|
|
122
|
+
getNotes(projectPath: string, noteableType: 'issue' | 'merge_request', iid: string, first?: number, after?: string, fetchAll?: boolean, userConfig?: UserConfig): Promise<any>;
|
|
123
|
+
createNote(projectPath: string, noteableType: 'issue' | 'merge_request', iid: string, body: string, internal?: boolean, userConfig?: UserConfig): Promise<any>;
|
|
124
|
+
listMilestones(fullPath: string, isProject: boolean, state?: string, search?: string, includeAncestors?: boolean, first?: number, after?: string, fetchAll?: boolean, userConfig?: UserConfig): Promise<any>;
|
|
125
|
+
listIterations(groupPath: string, state?: string, first?: number, after?: string, fetchAll?: boolean, userConfig?: UserConfig): Promise<any>;
|
|
126
|
+
getTimeTracking(projectPath: string, resourceType: 'issue' | 'merge_request', iid: string, includeTimelogs?: boolean, first?: number, after?: string, userConfig?: UserConfig): Promise<any>;
|
|
127
|
+
getMergeRequestReviewers(projectPath: string, iid: string, userConfig?: UserConfig): Promise<any>;
|
|
128
|
+
getProjectStatistics(projectPath: string, userConfig?: UserConfig): Promise<any>;
|
|
129
|
+
listGroupMembers(groupPath: string, search?: string, first?: number, after?: string, fetchAll?: boolean, userConfig?: UserConfig): Promise<any>;
|
|
130
|
+
searchLabels(fullPath: string, isProject: boolean, search?: string, first?: number, after?: string, fetchAll?: boolean, userConfig?: UserConfig): Promise<any>;
|
|
131
|
+
/**
|
|
132
|
+
* Resolve the GitLab base URL and access token for a REST call, honoring
|
|
133
|
+
* per-request user credentials and falling back to the shared token.
|
|
134
|
+
*/
|
|
135
|
+
private resolveRestAuth;
|
|
136
|
+
/**
|
|
137
|
+
* Perform a GitLab REST API v4 request. Used for endpoints not exposed via GraphQL
|
|
138
|
+
* (e.g., broadcast messages).
|
|
139
|
+
*/
|
|
140
|
+
private restRequest;
|
|
141
|
+
listBroadcastMessages(page?: number, perPage?: number, userConfig?: UserConfig): Promise<any>;
|
|
142
|
+
getBroadcastMessage(id: number, userConfig?: UserConfig): Promise<any>;
|
|
143
|
+
createBroadcastMessage(input: {
|
|
144
|
+
message: string;
|
|
145
|
+
starts_at?: string;
|
|
146
|
+
ends_at?: string;
|
|
147
|
+
color?: string;
|
|
148
|
+
font?: string;
|
|
149
|
+
target_access_levels?: number[];
|
|
150
|
+
target_path?: string;
|
|
151
|
+
broadcast_type?: 'banner' | 'notification';
|
|
152
|
+
dismissable?: boolean;
|
|
153
|
+
theme?: string;
|
|
154
|
+
}, userConfig?: UserConfig): Promise<any>;
|
|
155
|
+
updateBroadcastMessage(id: number, input: {
|
|
156
|
+
message?: string;
|
|
157
|
+
starts_at?: string;
|
|
158
|
+
ends_at?: string;
|
|
159
|
+
color?: string;
|
|
160
|
+
font?: string;
|
|
161
|
+
target_access_levels?: number[];
|
|
162
|
+
target_path?: string;
|
|
163
|
+
broadcast_type?: 'banner' | 'notification';
|
|
164
|
+
dismissable?: boolean;
|
|
165
|
+
theme?: string;
|
|
166
|
+
}, userConfig?: UserConfig): Promise<any>;
|
|
167
|
+
deleteBroadcastMessage(id: number, userConfig?: UserConfig): Promise<any>;
|
|
95
168
|
}
|
|
96
169
|
//# sourceMappingURL=gitlab-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitlab-client.d.ts","sourceRoot":"","sources":["../src/gitlab-client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGtD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,QAAQ,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC3D,CAAC;CACH;AAED,qBAAa,cAAe,SAAQ,KAAK;IACvC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpC,SAAgB,WAAW,EAAE,OAAO,CAAC;IACrC,SAAgB,aAAa,EAAE,OAAO,CAAC;IACvC,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpC,SAAgB,aAAa,CAAC,EAAE,KAAK,CAAC;gBAGpC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;QACP,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,KAAK,CAAC;KAClB;CAWT;AAWD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,WAAW,CAAyC;gBAEhD,MAAM,EAAE,MAAM;IAS1B,OAAO,CAAC,YAAY;IAsBpB;;OAEG;IACH,OAAO,CAAC,UAAU;IA0GlB;;OAEG;YACW,gBAAgB;IAgD9B,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,SAAS;IAwBX,gBAAgB,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAcxD,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,aAAa,UAAQ,GAAG,OAAO,CAAC,CAAC,CAAC;IAQ1G,cAAc,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAerD,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IA4BnE,WAAW,CAAC,KAAK,GAAE,MAAW,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"gitlab-client.d.ts","sourceRoot":"","sources":["../src/gitlab-client.ts"],"names":[],"mappings":"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"}
|