@ttpears/gitlab-mcp-server 1.19.0 → 2.0.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 +59 -6
- package/dist/config.d.ts +6 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +28 -0
- package/dist/config.js.map +1 -1
- package/dist/gitlab-client.d.ts +28 -0
- package/dist/gitlab-client.d.ts.map +1 -1
- package/dist/gitlab-client.js +93 -16
- package/dist/gitlab-client.js.map +1 -1
- package/dist/index.js +87 -53
- package/dist/index.js.map +1 -1
- package/dist/oauth.d.ts +72 -0
- package/dist/oauth.d.ts.map +1 -0
- package/dist/oauth.js +352 -0
- package/dist/oauth.js.map +1 -0
- package/dist/tools.js +3 -3
- package/dist/tools.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -158,7 +158,7 @@ mcpServers:
|
|
|
158
158
|
timeout: 120000
|
|
159
159
|
headers:
|
|
160
160
|
Authorization: "Bearer {{GITLAB_PAT}}"
|
|
161
|
-
X-GitLab-Url: "{{GITLAB_URL_OVERRIDE}}" #
|
|
161
|
+
X-GitLab-Url: "{{GITLAB_URL_OVERRIDE}}" # only honored when GITLAB_PIN_HOST=false (default pins to GITLAB_URL)
|
|
162
162
|
customUserVars:
|
|
163
163
|
GITLAB_PAT:
|
|
164
164
|
title: "GitLab Personal Access Token"
|
|
@@ -256,6 +256,51 @@ The `Authorization` and `Mcp-Session-Id` headers must pass through unchanged. Mo
|
|
|
256
256
|
|
|
257
257
|
---
|
|
258
258
|
|
|
259
|
+
## OAuth for remote users
|
|
260
|
+
|
|
261
|
+
For a publicly hosted instance where each user signs in with **their own GitLab
|
|
262
|
+
identity** — and modern MCP clients (Claude.ai, Claude Code) connect with **no
|
|
263
|
+
manual token setup** — enable brokered OAuth 2.1. The server then acts as its own
|
|
264
|
+
OAuth Authorization Server in front of GitLab:
|
|
265
|
+
|
|
266
|
+
- advertises Protected Resource Metadata (RFC 9728) and Authorization Server
|
|
267
|
+
Metadata (RFC 8414) at the standard `.well-known` endpoints,
|
|
268
|
+
- supports Dynamic Client Registration (RFC 7591), so clients self-register,
|
|
269
|
+
- runs authorization-code + PKCE against both the MCP client **and** GitLab
|
|
270
|
+
(dual-PKCE) behind **one** fixed GitLab callback,
|
|
271
|
+
- gates the MCP endpoints with bearer validation — unauthenticated requests get
|
|
272
|
+
`401` + `WWW-Authenticate` pointing at the resource metadata (the discovery trigger),
|
|
273
|
+
- mints its own opaque tokens and keeps each user's GitLab token server-side
|
|
274
|
+
(no token passthrough).
|
|
275
|
+
|
|
276
|
+
**Setup**
|
|
277
|
+
|
|
278
|
+
1. Register **one** GitLab application (instance/group/user → **Applications**):
|
|
279
|
+
- Redirect URI: `https://<your-host>/gitlab/callback`
|
|
280
|
+
- Scopes: `api` (read + write) or `read_api`
|
|
281
|
+
- Confidential: yes (recommended) → you get a client secret; or mark it public for PKCE-only.
|
|
282
|
+
2. Run the server (HTTP mode) with **no** `GITLAB_TOKEN` — identity comes from each user's OAuth login:
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
MCP_TRANSPORT=http GITLAB_MCP_PORT=8008 \
|
|
286
|
+
GITLAB_URL=https://gitlab.example.com \
|
|
287
|
+
GITLAB_MCP_OAUTH=true \
|
|
288
|
+
MCP_SERVER_URL=https://gitlab-mcp.example.com \
|
|
289
|
+
GITLAB_OAUTH_CLIENT_ID=<application id> \
|
|
290
|
+
GITLAB_OAUTH_CLIENT_SECRET=<application secret> \
|
|
291
|
+
GITLAB_OAUTH_SCOPES=api \
|
|
292
|
+
npx -y @ttpears/gitlab-mcp-server
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
3. Point an MCP client at `https://gitlab-mcp.example.com/` — it discovers the
|
|
296
|
+
metadata, registers, and walks the user through GitLab sign-in automatically.
|
|
297
|
+
|
|
298
|
+
`MCP_SERVER_URL` must be HTTPS (terminate TLS at your reverse proxy) and must
|
|
299
|
+
match the host the GitLab redirect URI is registered under. Token/registration
|
|
300
|
+
state is in-memory, so run a single instance (or add a shared store) per issuer.
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
259
304
|
## How this differs from GitLab's official MCP server
|
|
260
305
|
|
|
261
306
|
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**.
|
|
@@ -264,9 +309,9 @@ GitLab ships an [official MCP server](https://docs.gitlab.com/user/gitlab_duo/mo
|
|
|
264
309
|
|---|---|---|
|
|
265
310
|
| **GitLab tier** | Free, Premium, Ultimate | Premium / Ultimate only |
|
|
266
311
|
| **GitLab Duo required** | No | Yes |
|
|
267
|
-
| **Auth** |
|
|
312
|
+
| **Auth** | PAT, or brokered OAuth 2.1 + Dynamic Client Registration | OAuth 2.0 Dynamic Client Registration |
|
|
268
313
|
| **Transport** | stdio + streamable HTTP | stdio + HTTP |
|
|
269
|
-
| **Multi-user** | Per-call PAT or service-account fallback | OAuth per-user |
|
|
314
|
+
| **Multi-user** | Per-call PAT, OAuth per-user, or service-account fallback | OAuth per-user |
|
|
270
315
|
| **GraphQL schema discovery** | Yes — introspect & run custom queries | No |
|
|
271
316
|
| **Repository browsing & file reading** | Yes | No |
|
|
272
317
|
| **Update issues / MRs / notes** | Yes | No (create only) |
|
|
@@ -280,9 +325,9 @@ GitLab ships an [official MCP server](https://docs.gitlab.com/user/gitlab_duo/mo
|
|
|
280
325
|
| **Group member listing** | Yes | No |
|
|
281
326
|
| **Semantic code search** | No | Yes (requires additional setup) |
|
|
282
327
|
|
|
283
|
-
**Choose this server** for Free/CE, GraphQL flexibility,
|
|
284
|
-
|
|
285
|
-
|
|
328
|
+
**Choose this server** for Free/CE, GraphQL flexibility, LibreChat multi-user,
|
|
329
|
+
or brokered OAuth without GitLab Duo. **Choose the official server** for
|
|
330
|
+
Premium+Duo with semantic code search.
|
|
286
331
|
|
|
287
332
|
---
|
|
288
333
|
|
|
@@ -362,10 +407,18 @@ code search, or if you prefer OAuth.
|
|
|
362
407
|
| `GITLAB_URL` | GitLab instance URL | `https://gitlab.com` |
|
|
363
408
|
| `GITLAB_TOKEN` | Full-access fallback token (reads + writes) | — |
|
|
364
409
|
| `GITLAB_READ_TOKEN` | Read-only fallback token (writes always rejected) | — |
|
|
410
|
+
| `GITLAB_PIN_HOST` | Force every request to `GITLAB_URL`, ignoring per-call/header `gitlabUrl` (SSRF guard). Set `false` to serve multiple instances | `true` |
|
|
411
|
+
| `GITLAB_ALLOW_SHARED_ESCAPE_HATCH` | Allow `execute_custom_query` / `execute_rest_read` / `execute_rest_write` to run on the shared token (otherwise they require per-call credentials) | `false` |
|
|
365
412
|
| `GITLAB_MAX_PAGE_SIZE` | Maximum items per page (1–100) | `50` |
|
|
366
413
|
| `GITLAB_TIMEOUT` | Request timeout in milliseconds | `30000` |
|
|
367
414
|
| `GITLAB_MCP_PORT` | HTTP server port | `8008` |
|
|
368
415
|
| `MCP_TRANSPORT` | Transport mode (`http` for LibreChat) | `stdio` |
|
|
416
|
+
| `GITLAB_MCP_OAUTH` | Enable brokered OAuth 2.1 (HTTP mode) — see [OAuth for remote users](#oauth-for-remote-users) | `false` |
|
|
417
|
+
| `MCP_SERVER_URL` | Public HTTPS URL of this server (OAuth issuer/resource id) — required when OAuth is on | — |
|
|
418
|
+
| `GITLAB_OAUTH_CLIENT_ID` | GitLab application id — required when OAuth is on | — |
|
|
419
|
+
| `GITLAB_OAUTH_CLIENT_SECRET` | GitLab application secret (omit for a public/PKCE-only app) | — |
|
|
420
|
+
| `GITLAB_OAUTH_SCOPES` | Space-separated GitLab scopes to request | `api` |
|
|
421
|
+
| `GITLAB_OAUTH_CALLBACK_PATH` | Path of the fixed GitLab redirect URI | `/gitlab/callback` |
|
|
369
422
|
|
|
370
423
|
`GITLAB_TOKEN` and `GITLAB_READ_TOKEN` are **mutually exclusive**; setting both is a startup error.
|
|
371
424
|
|
package/dist/config.d.ts
CHANGED
|
@@ -5,10 +5,14 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
5
5
|
readToken: z.ZodOptional<z.ZodString>;
|
|
6
6
|
maxPageSize: z.ZodDefault<z.ZodNumber>;
|
|
7
7
|
defaultTimeout: z.ZodDefault<z.ZodNumber>;
|
|
8
|
+
pinHost: z.ZodDefault<z.ZodBoolean>;
|
|
9
|
+
allowSharedEscapeHatch: z.ZodDefault<z.ZodBoolean>;
|
|
8
10
|
}, "strip", z.ZodTypeAny, {
|
|
9
11
|
gitlabUrl: string;
|
|
10
12
|
maxPageSize: number;
|
|
11
13
|
defaultTimeout: number;
|
|
14
|
+
pinHost: boolean;
|
|
15
|
+
allowSharedEscapeHatch: boolean;
|
|
12
16
|
token?: string | undefined;
|
|
13
17
|
readToken?: string | undefined;
|
|
14
18
|
}, {
|
|
@@ -17,6 +21,8 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
17
21
|
readToken?: string | undefined;
|
|
18
22
|
maxPageSize?: number | undefined;
|
|
19
23
|
defaultTimeout?: number | undefined;
|
|
24
|
+
pinHost?: boolean | undefined;
|
|
25
|
+
allowSharedEscapeHatch?: boolean | undefined;
|
|
20
26
|
}>;
|
|
21
27
|
export type Config = z.infer<typeof ConfigSchema>;
|
|
22
28
|
export declare const UserConfigSchema: z.ZodObject<{
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;EAqBvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAelD,eAAO,MAAM,gBAAgB;;;;;;;;;EAG3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,wBAAgB,UAAU,IAAI,MAAM,CAoCnC;AAED,wBAAgB,kBAAkB,CAAC,eAAe,EAAE,GAAG,GAAG,UAAU,CAEnE"}
|
package/dist/config.js
CHANGED
|
@@ -9,7 +9,33 @@ export const ConfigSchema = z.object({
|
|
|
9
9
|
readToken: z.string().optional(),
|
|
10
10
|
maxPageSize: z.number().min(1).max(100).default(50),
|
|
11
11
|
defaultTimeout: z.number().min(1000).default(30000),
|
|
12
|
+
// When true (default), per-call/header-supplied gitlabUrl is ignored and every
|
|
13
|
+
// request targets the configured gitlabUrl. This closes the SSRF vector where a
|
|
14
|
+
// caller points the server at internal/metadata hosts via X-GitLab-Url. Set
|
|
15
|
+
// GITLAB_PIN_HOST=false only if you intentionally serve multiple GitLab instances.
|
|
16
|
+
pinHost: z.boolean().default(true),
|
|
17
|
+
// The open-ended escape-hatch tools (execute_custom_query, execute_rest_read,
|
|
18
|
+
// execute_rest_write) require per-call user credentials by default — they will not
|
|
19
|
+
// run on the shared GITLAB_TOKEN unless this is enabled. Set
|
|
20
|
+
// GITLAB_ALLOW_SHARED_ESCAPE_HATCH=true for single-operator/stdio setups where the
|
|
21
|
+
// shared token is the operator's own.
|
|
22
|
+
allowSharedEscapeHatch: z.boolean().default(false),
|
|
12
23
|
});
|
|
24
|
+
/**
|
|
25
|
+
* Parse a boolean environment variable. Unset/empty → fallback. Recognizes
|
|
26
|
+
* "false"/"0"/"no"/"off" (case-insensitive) as false and "true"/"1"/"yes"/"on"
|
|
27
|
+
* as true; anything else falls back to the default.
|
|
28
|
+
*/
|
|
29
|
+
function parseBoolEnv(value, fallback) {
|
|
30
|
+
if (value === undefined || value.trim() === '')
|
|
31
|
+
return fallback;
|
|
32
|
+
const v = value.trim().toLowerCase();
|
|
33
|
+
if (['false', '0', 'no', 'off'].includes(v))
|
|
34
|
+
return false;
|
|
35
|
+
if (['true', '1', 'yes', 'on'].includes(v))
|
|
36
|
+
return true;
|
|
37
|
+
return fallback;
|
|
38
|
+
}
|
|
13
39
|
export const UserConfigSchema = z.object({
|
|
14
40
|
accessToken: z.string().min(1, 'User access token is required'),
|
|
15
41
|
gitlabUrl: z.string().url().optional(),
|
|
@@ -36,6 +62,8 @@ export function loadConfig() {
|
|
|
36
62
|
readToken,
|
|
37
63
|
maxPageSize: parseInt(process.env.GITLAB_MAX_PAGE_SIZE || '50'),
|
|
38
64
|
defaultTimeout: parseInt(process.env.GITLAB_TIMEOUT || '30000'),
|
|
65
|
+
pinHost: parseBoolEnv(process.env.GITLAB_PIN_HOST, true),
|
|
66
|
+
allowSharedEscapeHatch: parseBoolEnv(process.env.GITLAB_ALLOW_SHARED_ESCAPE_HATCH, false),
|
|
39
67
|
};
|
|
40
68
|
return ConfigSchema.parse(config);
|
|
41
69
|
}
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC;IACzD,2EAA2E;IAC3E,oEAAoE;IACpE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,2EAA2E;IAC3E,iCAAiC;IACjC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACnD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/gitlab-client.d.ts
CHANGED
|
@@ -45,6 +45,7 @@ export interface PaginatedResult<T> {
|
|
|
45
45
|
pageInfo: PageInfo;
|
|
46
46
|
}
|
|
47
47
|
export declare class GitLabGraphQLClient {
|
|
48
|
+
private static readonly MAX_USER_CLIENTS;
|
|
48
49
|
private fullAccessClient?;
|
|
49
50
|
private readClient?;
|
|
50
51
|
private config;
|
|
@@ -60,10 +61,37 @@ export declare class GitLabGraphQLClient {
|
|
|
60
61
|
* Execute request with exponential backoff retry
|
|
61
62
|
*/
|
|
62
63
|
private executeWithRetry;
|
|
64
|
+
/**
|
|
65
|
+
* Resolve the GitLab base URL to use for a request. When host-pinning is on
|
|
66
|
+
* (the default), any per-call/header-supplied gitlabUrl is ignored and the
|
|
67
|
+
* configured gitlabUrl is always used — this prevents a caller from steering
|
|
68
|
+
* the server at internal/metadata hosts (SSRF). With pinning off, the
|
|
69
|
+
* per-call gitlabUrl wins, falling back to the configured one.
|
|
70
|
+
*/
|
|
71
|
+
private effectiveBaseUrl;
|
|
63
72
|
private getUserClient;
|
|
73
|
+
/**
|
|
74
|
+
* Guard the open-ended escape-hatch tools (custom GraphQL, arbitrary REST).
|
|
75
|
+
* They run on a user's own credentials by default; using the shared
|
|
76
|
+
* GITLAB_TOKEN for them requires GITLAB_ALLOW_SHARED_ESCAPE_HATCH=true.
|
|
77
|
+
*/
|
|
78
|
+
private assertEscapeHatchAllowed;
|
|
64
79
|
private getClient;
|
|
65
80
|
introspectSchema(userConfig?: UserConfig): Promise<void>;
|
|
66
81
|
query<T = any>(query: string, variables?: any, userConfig?: UserConfig, requiresWrite?: boolean): Promise<T>;
|
|
82
|
+
/**
|
|
83
|
+
* Detect whether a GraphQL document contains a mutation operation. Used to
|
|
84
|
+
* force write-gating regardless of a caller-supplied flag. Unparseable input
|
|
85
|
+
* returns false — it will fail at GitLab with a clear syntax error.
|
|
86
|
+
*/
|
|
87
|
+
private documentHasMutation;
|
|
88
|
+
/**
|
|
89
|
+
* Open-ended GraphQL escape hatch. Requires per-call credentials by default
|
|
90
|
+
* (see assertEscapeHatchAllowed) and derives write-gating from the document
|
|
91
|
+
* itself — a caller cannot run a mutation against a read-only token by leaving
|
|
92
|
+
* the requiresWrite flag false.
|
|
93
|
+
*/
|
|
94
|
+
executeCustomQuery<T = any>(query: string, variables?: any, userConfig?: UserConfig, declaredWrite?: boolean): Promise<T>;
|
|
67
95
|
fetchAllPages<T = any>(query: string, variables: Record<string, any>, connectionPath: string, options?: {
|
|
68
96
|
maxItems?: number;
|
|
69
97
|
pageSize?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitlab-client.d.ts","sourceRoot":"","sources":["../src/gitlab-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gitlab-client.d.ts","sourceRoot":"","sources":["../src/gitlab-client.ts"],"names":[],"mappings":"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"}
|
package/dist/gitlab-client.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { GraphQLClient, gql, ClientError } from 'graphql-request';
|
|
2
|
-
import { buildClientSchema, getIntrospectionQuery } from 'graphql';
|
|
2
|
+
import { buildClientSchema, getIntrospectionQuery, parse } from 'graphql';
|
|
3
3
|
export class GitLabAPIError extends Error {
|
|
4
4
|
code;
|
|
5
5
|
statusCode;
|
|
@@ -27,6 +27,8 @@ const RETRY_CONFIG = {
|
|
|
27
27
|
retryableErrorCodes: ['ECONNRESET', 'ETIMEDOUT', 'ENOTFOUND', 'ECONNREFUSED', 'EAI_AGAIN'],
|
|
28
28
|
};
|
|
29
29
|
export class GitLabGraphQLClient {
|
|
30
|
+
// Upper bound on the per-user client cache (see getUserClient). LRU-evicted.
|
|
31
|
+
static MAX_USER_CLIENTS = 500;
|
|
30
32
|
// Cached clients keyed by token role. At most one of these is set.
|
|
31
33
|
fullAccessClient;
|
|
32
34
|
readClient;
|
|
@@ -153,13 +155,53 @@ export class GitLabGraphQLClient {
|
|
|
153
155
|
// TypeScript: should never reach here, but just in case
|
|
154
156
|
throw lastError || new GitLabAPIError('Unknown error during retry');
|
|
155
157
|
}
|
|
158
|
+
/**
|
|
159
|
+
* Resolve the GitLab base URL to use for a request. When host-pinning is on
|
|
160
|
+
* (the default), any per-call/header-supplied gitlabUrl is ignored and the
|
|
161
|
+
* configured gitlabUrl is always used — this prevents a caller from steering
|
|
162
|
+
* the server at internal/metadata hosts (SSRF). With pinning off, the
|
|
163
|
+
* per-call gitlabUrl wins, falling back to the configured one.
|
|
164
|
+
*/
|
|
165
|
+
effectiveBaseUrl(userConfig) {
|
|
166
|
+
if (this.config.pinHost)
|
|
167
|
+
return this.config.gitlabUrl;
|
|
168
|
+
return userConfig?.gitlabUrl || this.config.gitlabUrl;
|
|
169
|
+
}
|
|
156
170
|
getUserClient(userConfig) {
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
-
|
|
171
|
+
const baseUrl = this.effectiveBaseUrl(userConfig);
|
|
172
|
+
const userKey = `${baseUrl}:${userConfig.accessToken}`;
|
|
173
|
+
let client = this.userClients.get(userKey);
|
|
174
|
+
if (!client) {
|
|
175
|
+
// Bound the cache: evict the oldest entry once we exceed the cap so a
|
|
176
|
+
// public multi-user server can't grow one client per distinct token forever.
|
|
177
|
+
if (this.userClients.size >= GitLabGraphQLClient.MAX_USER_CLIENTS) {
|
|
178
|
+
const oldestKey = this.userClients.keys().next().value;
|
|
179
|
+
if (oldestKey !== undefined)
|
|
180
|
+
this.userClients.delete(oldestKey);
|
|
181
|
+
}
|
|
182
|
+
client = this.createClient(baseUrl, userConfig.accessToken);
|
|
183
|
+
this.userClients.set(userKey, client);
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
// Refresh LRU recency: re-insert so it becomes the most-recently-used.
|
|
187
|
+
this.userClients.delete(userKey);
|
|
160
188
|
this.userClients.set(userKey, client);
|
|
161
189
|
}
|
|
162
|
-
return
|
|
190
|
+
return client;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Guard the open-ended escape-hatch tools (custom GraphQL, arbitrary REST).
|
|
194
|
+
* They run on a user's own credentials by default; using the shared
|
|
195
|
+
* GITLAB_TOKEN for them requires GITLAB_ALLOW_SHARED_ESCAPE_HATCH=true.
|
|
196
|
+
*/
|
|
197
|
+
assertEscapeHatchAllowed(userConfig) {
|
|
198
|
+
if (userConfig)
|
|
199
|
+
return;
|
|
200
|
+
if (this.config.allowSharedEscapeHatch)
|
|
201
|
+
return;
|
|
202
|
+
throw new Error('This open-ended tool requires per-call user credentials. Provide a token via ' +
|
|
203
|
+
'Authorization: Bearer (HTTP) or userCredentials (stdio). To allow it to use the ' +
|
|
204
|
+
'shared GITLAB_TOKEN instead, set GITLAB_ALLOW_SHARED_ESCAPE_HATCH=true.');
|
|
163
205
|
}
|
|
164
206
|
getClient(userConfig, requiresWrite = false) {
|
|
165
207
|
// 1. Per-call user credentials always win.
|
|
@@ -199,6 +241,30 @@ export class GitLabGraphQLClient {
|
|
|
199
241
|
const client = this.getClient(userConfig, requiresWrite);
|
|
200
242
|
return this.executeWithRetry(() => client.request(query, variables), 'GraphQL query');
|
|
201
243
|
}
|
|
244
|
+
/**
|
|
245
|
+
* Detect whether a GraphQL document contains a mutation operation. Used to
|
|
246
|
+
* force write-gating regardless of a caller-supplied flag. Unparseable input
|
|
247
|
+
* returns false — it will fail at GitLab with a clear syntax error.
|
|
248
|
+
*/
|
|
249
|
+
documentHasMutation(query) {
|
|
250
|
+
try {
|
|
251
|
+
return parse(query).definitions.some((def) => def.kind === 'OperationDefinition' && def.operation === 'mutation');
|
|
252
|
+
}
|
|
253
|
+
catch {
|
|
254
|
+
return false;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Open-ended GraphQL escape hatch. Requires per-call credentials by default
|
|
259
|
+
* (see assertEscapeHatchAllowed) and derives write-gating from the document
|
|
260
|
+
* itself — a caller cannot run a mutation against a read-only token by leaving
|
|
261
|
+
* the requiresWrite flag false.
|
|
262
|
+
*/
|
|
263
|
+
async executeCustomQuery(query, variables, userConfig, declaredWrite = false) {
|
|
264
|
+
this.assertEscapeHatchAllowed(userConfig);
|
|
265
|
+
const requiresWrite = declaredWrite || this.documentHasMutation(query);
|
|
266
|
+
return this.query(query, variables, userConfig, requiresWrite);
|
|
267
|
+
}
|
|
202
268
|
async fetchAllPages(query, variables, connectionPath, options = {}) {
|
|
203
269
|
const maxItems = options.maxItems ?? 100;
|
|
204
270
|
const pageSize = Math.min(options.pageSize ?? 50, this.config.maxPageSize);
|
|
@@ -270,6 +336,9 @@ export class GitLabGraphQLClient {
|
|
|
270
336
|
return this.query(query, { fullPath }, userConfig);
|
|
271
337
|
}
|
|
272
338
|
async getProjects(first = 20, after, fetchAll = false, userConfig, sort) {
|
|
339
|
+
// Recency bias by default. Note the projects sort vocabulary is GitLab's
|
|
340
|
+
// string form (e.g. latest_activity_desc), not the IssueSort UPDATED_DESC enum.
|
|
341
|
+
const effectiveSort = sort || 'latest_activity_desc';
|
|
273
342
|
const query = gql `
|
|
274
343
|
query getProjects($first: Int!, $after: String, $sort: String) {
|
|
275
344
|
projects(first: $first, after: $after, sort: $sort) {
|
|
@@ -286,13 +355,13 @@ export class GitLabGraphQLClient {
|
|
|
286
355
|
}
|
|
287
356
|
`;
|
|
288
357
|
if (fetchAll) {
|
|
289
|
-
return this.fetchAllPages(query, { sort }, 'projects', {
|
|
358
|
+
return this.fetchAllPages(query, { sort: effectiveSort }, 'projects', {
|
|
290
359
|
maxItems: first,
|
|
291
360
|
pageSize: this.config.maxPageSize,
|
|
292
361
|
userConfig,
|
|
293
362
|
});
|
|
294
363
|
}
|
|
295
|
-
return this.query(query, { first: Math.min(first, this.config.maxPageSize), after, sort }, userConfig);
|
|
364
|
+
return this.query(query, { first: Math.min(first, this.config.maxPageSize), after, sort: effectiveSort }, userConfig);
|
|
296
365
|
}
|
|
297
366
|
async getIssues(projectPath, first = 20, after, fetchAll = false, userConfig, sort) {
|
|
298
367
|
const query = gql `
|
|
@@ -936,7 +1005,7 @@ export class GitLabGraphQLClient {
|
|
|
936
1005
|
}
|
|
937
1006
|
async searchIssues(searchTerm, projectPath, state, first = 20, after, fetchAll = false, userConfig, assigneeUsernames, authorUsername, labelNames, sort) {
|
|
938
1007
|
await this.introspectSchema(userConfig);
|
|
939
|
-
const
|
|
1008
|
+
const cappedFirst = Math.min(first, this.config.maxPageSize);
|
|
940
1009
|
if (projectPath) {
|
|
941
1010
|
const projectType = this.schema.getType('Project');
|
|
942
1011
|
const projFields = projectType?.getFields?.() || {};
|
|
@@ -986,7 +1055,7 @@ export class GitLabGraphQLClient {
|
|
|
986
1055
|
projectPath,
|
|
987
1056
|
search: searchTerm,
|
|
988
1057
|
state: mapped,
|
|
989
|
-
first,
|
|
1058
|
+
first: cappedFirst,
|
|
990
1059
|
after,
|
|
991
1060
|
assigneeUsernames,
|
|
992
1061
|
authorUsername,
|
|
@@ -1046,7 +1115,7 @@ export class GitLabGraphQLClient {
|
|
|
1046
1115
|
return this.query(query, {
|
|
1047
1116
|
search: searchTerm,
|
|
1048
1117
|
state: mapped,
|
|
1049
|
-
first,
|
|
1118
|
+
first: cappedFirst,
|
|
1050
1119
|
after,
|
|
1051
1120
|
assigneeUsernames,
|
|
1052
1121
|
authorUsername,
|
|
@@ -1691,7 +1760,7 @@ export class GitLabGraphQLClient {
|
|
|
1691
1760
|
*/
|
|
1692
1761
|
async destroyIssue(projectPath, iid, userConfig) {
|
|
1693
1762
|
const encodedPath = encodeURIComponent(projectPath);
|
|
1694
|
-
await this.restRequest('DELETE', `/projects/${encodedPath}/issues/${iid}`, {
|
|
1763
|
+
await this.restRequest('DELETE', `/projects/${encodedPath}/issues/${encodeURIComponent(iid)}`, {
|
|
1695
1764
|
userConfig,
|
|
1696
1765
|
requiresWrite: true,
|
|
1697
1766
|
});
|
|
@@ -2467,7 +2536,7 @@ export class GitLabGraphQLClient {
|
|
|
2467
2536
|
resolveRestAuth(userConfig, requiresWrite = false) {
|
|
2468
2537
|
if (userConfig) {
|
|
2469
2538
|
return {
|
|
2470
|
-
baseUrl:
|
|
2539
|
+
baseUrl: this.effectiveBaseUrl(userConfig),
|
|
2471
2540
|
token: userConfig.accessToken,
|
|
2472
2541
|
};
|
|
2473
2542
|
}
|
|
@@ -2492,6 +2561,12 @@ export class GitLabGraphQLClient {
|
|
|
2492
2561
|
async restRequest(method, path, options = {}) {
|
|
2493
2562
|
const { baseUrl, token } = this.resolveRestAuth(options.userConfig, options.requiresWrite);
|
|
2494
2563
|
const url = new URL(`${baseUrl.replace(/\/$/, '')}/api/v4${path}`);
|
|
2564
|
+
// Defense in depth: the URL constructor normalizes any ".." segments, so a
|
|
2565
|
+
// path that tried to traverse above /api/v4 would resolve elsewhere. Reject
|
|
2566
|
+
// anything that no longer sits under the API root before we issue the request.
|
|
2567
|
+
if (url.pathname !== '/api/v4' && !url.pathname.startsWith('/api/v4/')) {
|
|
2568
|
+
throw new Error(`Refusing REST request that escapes /api/v4: ${path}`);
|
|
2569
|
+
}
|
|
2495
2570
|
if (options.query) {
|
|
2496
2571
|
for (const [k, v] of Object.entries(options.query)) {
|
|
2497
2572
|
if (v !== undefined && v !== null)
|
|
@@ -2568,6 +2643,7 @@ export class GitLabGraphQLClient {
|
|
|
2568
2643
|
* GITLAB_READ_TOKEN).
|
|
2569
2644
|
*/
|
|
2570
2645
|
async executeRestRead(path, query, userConfig) {
|
|
2646
|
+
this.assertEscapeHatchAllowed(userConfig);
|
|
2571
2647
|
return this.restRequest('GET', this.validateRestPath(path), { query, userConfig });
|
|
2572
2648
|
}
|
|
2573
2649
|
/**
|
|
@@ -2577,6 +2653,7 @@ export class GitLabGraphQLClient {
|
|
|
2577
2653
|
* token resolution rejects GITLAB_READ_TOKEN-only setups.
|
|
2578
2654
|
*/
|
|
2579
2655
|
async executeRestWrite(method, path, options = {}, userConfig) {
|
|
2656
|
+
this.assertEscapeHatchAllowed(userConfig);
|
|
2580
2657
|
return this.restRequest(method, this.validateRestPath(path), {
|
|
2581
2658
|
body: options.body,
|
|
2582
2659
|
query: options.query,
|
|
@@ -2647,25 +2724,25 @@ export class GitLabGraphQLClient {
|
|
|
2647
2724
|
}
|
|
2648
2725
|
async getIssueRelatedMergeRequests(projectPath, iid, userConfig) {
|
|
2649
2726
|
const encodedPath = encodeURIComponent(projectPath);
|
|
2650
|
-
return this.restRequest('GET', `/projects/${encodedPath}/issues/${iid}/related_merge_requests`, {
|
|
2727
|
+
return this.restRequest('GET', `/projects/${encodedPath}/issues/${encodeURIComponent(iid)}/related_merge_requests`, {
|
|
2651
2728
|
userConfig,
|
|
2652
2729
|
});
|
|
2653
2730
|
}
|
|
2654
2731
|
async getIssueClosedBy(projectPath, iid, userConfig) {
|
|
2655
2732
|
const encodedPath = encodeURIComponent(projectPath);
|
|
2656
|
-
return this.restRequest('GET', `/projects/${encodedPath}/issues/${iid}/closed_by`, {
|
|
2733
|
+
return this.restRequest('GET', `/projects/${encodedPath}/issues/${encodeURIComponent(iid)}/closed_by`, {
|
|
2657
2734
|
userConfig,
|
|
2658
2735
|
});
|
|
2659
2736
|
}
|
|
2660
2737
|
async getIssueLinks(projectPath, iid, userConfig) {
|
|
2661
2738
|
const encodedPath = encodeURIComponent(projectPath);
|
|
2662
|
-
return this.restRequest('GET', `/projects/${encodedPath}/issues/${iid}/links`, {
|
|
2739
|
+
return this.restRequest('GET', `/projects/${encodedPath}/issues/${encodeURIComponent(iid)}/links`, {
|
|
2663
2740
|
userConfig,
|
|
2664
2741
|
});
|
|
2665
2742
|
}
|
|
2666
2743
|
async getMergeRequestClosesIssues(projectPath, iid, userConfig) {
|
|
2667
2744
|
const encodedPath = encodeURIComponent(projectPath);
|
|
2668
|
-
return this.restRequest('GET', `/projects/${encodedPath}/merge_requests/${iid}/closes_issues`, {
|
|
2745
|
+
return this.restRequest('GET', `/projects/${encodedPath}/merge_requests/${encodeURIComponent(iid)}/closes_issues`, {
|
|
2669
2746
|
userConfig,
|
|
2670
2747
|
});
|
|
2671
2748
|
}
|