@ttpears/gitlab-mcp-server 2.0.1 → 2.1.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/dist/oauth.js CHANGED
@@ -13,13 +13,16 @@ import { InvalidGrantError, InvalidTokenError, ServerError, } from '@modelcontex
13
13
  * never passing the client's MCP token through to GitLab (per the MCP security
14
14
  * best-practices: no token passthrough).
15
15
  *
16
- * Storage is in-memory and therefore single-instance. A horizontally-scaled
17
- * deployment would need a shared store (Redis, signed stateless tokens, etc.).
16
+ * Broker state (clients, pending flows, codes, tokens) lives behind a {@link KvStore}.
17
+ * With REDIS_URL set it is Redis-backed, so the connector survives redeploys and
18
+ * can run more than one replica; otherwise it falls back to in-process memory
19
+ * (fine for stdio/single-instance).
18
20
  */
19
21
  const AUTH_FLOW_TTL_MS = 10 * 60 * 1000; // pending-auth and one-time codes live 10 min
20
22
  const DEFAULT_TOKEN_TTL_MS = 2 * 60 * 60 * 1000; // fallback when GitLab omits expires_in
21
23
  const REFRESH_TOKEN_TTL_MS = 30 * 24 * 60 * 60 * 1000; // cap idle refresh tokens at 30 days
22
- const CLEANUP_INTERVAL_MS = 5 * 60 * 1000;
24
+ const CLIENT_TTL_MS = 90 * 24 * 60 * 60 * 1000; // DCR client registrations
25
+ const SWEEP_INTERVAL_MS = 5 * 60 * 1000;
23
26
  function base64url(buf) {
24
27
  return buf.toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
25
28
  }
@@ -29,30 +32,103 @@ function randomToken() {
29
32
  function pkceChallenge(verifier) {
30
33
  return base64url(createHash('sha256').update(verifier).digest());
31
34
  }
32
- /** In-memory Dynamic Client Registration store. */
33
- class InMemoryClientsStore {
34
- clients = new Map();
35
- getClient(clientId) {
36
- return this.clients.get(clientId);
37
- }
38
- registerClient(client) {
39
- this.clients.set(client.client_id, client);
35
+ /** In-process store with lazy expiry on read plus a periodic sweep. */
36
+ export class InMemoryKvStore {
37
+ map = new Map();
38
+ prefix;
39
+ sweep;
40
+ constructor(prefix = 'gitlab-mcp') {
41
+ this.prefix = prefix;
42
+ this.sweep = setInterval(() => {
43
+ const now = Date.now();
44
+ for (const [k, v] of this.map)
45
+ if (v.expiresAt < now)
46
+ this.map.delete(k);
47
+ }, SWEEP_INTERVAL_MS);
48
+ this.sweep.unref?.();
49
+ }
50
+ async get(key) {
51
+ const entry = this.map.get(this.prefix + key);
52
+ if (!entry)
53
+ return undefined;
54
+ if (entry.expiresAt < Date.now()) {
55
+ this.map.delete(this.prefix + key);
56
+ return undefined;
57
+ }
58
+ return entry.value;
59
+ }
60
+ async set(key, value, ttlMs) {
61
+ this.map.set(this.prefix + key, { value, expiresAt: Date.now() + ttlMs });
62
+ }
63
+ async del(key) {
64
+ this.map.delete(this.prefix + key);
65
+ }
66
+ dispose() {
67
+ if (this.sweep)
68
+ clearInterval(this.sweep);
69
+ }
70
+ }
71
+ /** Redis-backed store. TTL is enforced by Redis (PX), so no sweep needed. */
72
+ export class RedisKvStore {
73
+ client;
74
+ prefix;
75
+ constructor(client, prefix) {
76
+ this.client = client;
77
+ this.prefix = prefix;
78
+ }
79
+ async get(key) {
80
+ const raw = await this.client.get(this.prefix + key);
81
+ return raw == null ? undefined : JSON.parse(raw);
82
+ }
83
+ async set(key, value, ttlMs) {
84
+ await this.client.set(this.prefix + key, JSON.stringify(value), 'PX', Math.max(1, Math.floor(ttlMs)));
85
+ }
86
+ async del(key) {
87
+ await this.client.del(this.prefix + key);
88
+ }
89
+ dispose() {
90
+ void this.client.quit();
91
+ }
92
+ }
93
+ /**
94
+ * Build the OAuth state store. When `redisUrl` is set, connects ioredis (loaded
95
+ * lazily so non-Redis deployments don't pay for it); otherwise in-memory.
96
+ * `keyPrefix` should include the issuer so co-tenant MCPs don't collide while
97
+ * replicas of the same issuer DO share state.
98
+ */
99
+ export async function createOAuthStore(opts) {
100
+ const prefix = `${opts.keyPrefix}:`;
101
+ if (opts.redisUrl) {
102
+ const mod = await import('ioredis');
103
+ const Redis = mod.default || mod;
104
+ const client = new Redis(opts.redisUrl, { maxRetriesPerRequest: 2, lazyConnect: false });
105
+ return new RedisKvStore(client, prefix);
106
+ }
107
+ return new InMemoryKvStore(prefix);
108
+ }
109
+ /** Dynamic Client Registration store backed by the KvStore. */
110
+ class KvClientsStore {
111
+ store;
112
+ constructor(store) {
113
+ this.store = store;
114
+ }
115
+ async getClient(clientId) {
116
+ return this.store.get(`client:${clientId}`);
117
+ }
118
+ async registerClient(client) {
119
+ await this.store.set(`client:${client.client_id}`, client, CLIENT_TTL_MS);
40
120
  return client;
41
121
  }
42
122
  }
123
+ // --- provider ----------------------------------------------------------------
43
124
  export class GitLabOAuthProvider {
44
125
  opts;
45
- clients = new InMemoryClientsStore();
46
- pending = new Map();
47
- codes = new Map();
48
- accessTokens = new Map();
49
- refreshTokens = new Map();
50
- cleanupTimer;
51
- constructor(opts) {
126
+ store;
127
+ clients;
128
+ constructor(opts, store = new InMemoryKvStore()) {
52
129
  this.opts = opts;
53
- this.cleanupTimer = setInterval(() => this.purgeExpired(), CLEANUP_INTERVAL_MS);
54
- // Don't keep the process alive solely for cleanup.
55
- this.cleanupTimer.unref?.();
130
+ this.store = store;
131
+ this.clients = new KvClientsStore(store);
56
132
  }
57
133
  get clientsStore() {
58
134
  return this.clients;
@@ -72,7 +148,7 @@ export class GitLabOAuthProvider {
72
148
  // allow, so record those — not the client's requested scopes — to keep
73
149
  // AuthInfo.scopes honest about the token's real capability.
74
150
  const grantedScopes = this.opts.scopes.split(/[\s,]+/).filter(Boolean);
75
- this.pending.set(brokerState, {
151
+ await this.store.set(`pending:${brokerState}`, {
76
152
  clientId: client.client_id,
77
153
  clientRedirectUri: params.redirectUri,
78
154
  clientState: params.state,
@@ -80,14 +156,13 @@ export class GitLabOAuthProvider {
80
156
  scopes: grantedScopes,
81
157
  resource: params.resource?.toString(),
82
158
  gitlabCodeVerifier,
83
- expiresAt: Date.now() + AUTH_FLOW_TTL_MS,
84
- });
159
+ }, AUTH_FLOW_TTL_MS);
85
160
  const authUrl = new URL(`${this.opts.gitlabBaseUrl.replace(/\/$/, '')}/oauth/authorize`);
86
161
  authUrl.searchParams.set('client_id', this.opts.clientId);
87
162
  authUrl.searchParams.set('redirect_uri', this.callbackUrl);
88
163
  authUrl.searchParams.set('response_type', 'code');
89
164
  authUrl.searchParams.set('state', brokerState);
90
- authUrl.searchParams.set('scope', this.opts.scopes.split(/[\s,]+/).filter(Boolean).join(' '));
165
+ authUrl.searchParams.set('scope', grantedScopes.join(' '));
91
166
  authUrl.searchParams.set('code_challenge', pkceChallenge(gitlabCodeVerifier));
92
167
  authUrl.searchParams.set('code_challenge_method', 'S256');
93
168
  res.redirect(authUrl.toString());
@@ -113,13 +188,12 @@ export class GitLabOAuthProvider {
113
188
  res.status(400).type('text/plain').send('Missing code or state from GitLab callback');
114
189
  return;
115
190
  }
116
- const pending = this.pending.get(brokerState);
117
- if (!pending || pending.expiresAt < Date.now()) {
118
- this.pending.delete(brokerState);
191
+ const pending = await this.store.get(`pending:${brokerState}`);
192
+ if (!pending) {
119
193
  res.status(400).type('text/plain').send('Authorization request expired or unknown. Please restart sign-in.');
120
194
  return;
121
195
  }
122
- this.pending.delete(brokerState);
196
+ await this.store.del(`pending:${brokerState}`);
123
197
  let tokens;
124
198
  try {
125
199
  tokens = await this.gitlabTokenRequest({
@@ -133,8 +207,30 @@ export class GitLabOAuthProvider {
133
207
  res.status(502).type('text/plain').send(`Failed to exchange code with GitLab: ${err.message}`);
134
208
  return;
135
209
  }
210
+ // Access allow-list: reject users who aren't a member of any configured group
211
+ // before we mint anything. Return the OAuth error to the client's redirect URI
212
+ // (access_denied) so the MCP client surfaces a proper "not authorized" message.
213
+ if (this.opts.allowedGroups.length > 0) {
214
+ let allowed;
215
+ try {
216
+ allowed = await this.userIsInAllowedGroup(tokens.access_token);
217
+ }
218
+ catch (err) {
219
+ res.status(502).type('text/plain').send(`Failed to verify group membership: ${err.message}`);
220
+ return;
221
+ }
222
+ if (!allowed) {
223
+ const denied = new URL(pending.clientRedirectUri);
224
+ denied.searchParams.set('error', 'access_denied');
225
+ denied.searchParams.set('error_description', 'Your GitLab account is not a member of a group permitted to use this connector.');
226
+ if (pending.clientState)
227
+ denied.searchParams.set('state', pending.clientState);
228
+ res.redirect(denied.toString());
229
+ return;
230
+ }
231
+ }
136
232
  const mcpCode = randomToken();
137
- this.codes.set(mcpCode, {
233
+ await this.store.set(`code:${mcpCode}`, {
138
234
  clientId: pending.clientId,
139
235
  clientCodeChallenge: pending.clientCodeChallenge,
140
236
  redirectUri: pending.clientRedirectUri,
@@ -143,8 +239,7 @@ export class GitLabOAuthProvider {
143
239
  gitlabAccessToken: tokens.access_token,
144
240
  gitlabRefreshToken: tokens.refresh_token,
145
241
  gitlabExpiresAt: Date.now() + (tokens.expires_in ? tokens.expires_in * 1000 : DEFAULT_TOKEN_TTL_MS),
146
- expiresAt: Date.now() + AUTH_FLOW_TTL_MS,
147
- });
242
+ }, AUTH_FLOW_TTL_MS);
148
243
  const redirect = new URL(pending.clientRedirectUri);
149
244
  redirect.searchParams.set('code', mcpCode);
150
245
  if (pending.clientState)
@@ -153,27 +248,27 @@ export class GitLabOAuthProvider {
153
248
  }
154
249
  /** SDK calls this to validate the MCP client's PKCE verifier at token exchange. */
155
250
  async challengeForAuthorizationCode(_client, authorizationCode) {
156
- const record = this.codes.get(authorizationCode);
157
- if (!record || record.expiresAt < Date.now()) {
251
+ const record = await this.store.get(`code:${authorizationCode}`);
252
+ if (!record) {
158
253
  throw new InvalidGrantError('Authorization code is invalid or expired');
159
254
  }
160
255
  return record.clientCodeChallenge;
161
256
  }
162
257
  /** Step 3: client exchanges the one-time MCP code for an MCP bearer token. */
163
258
  async exchangeAuthorizationCode(client, authorizationCode) {
164
- const record = this.codes.get(authorizationCode);
165
- if (!record || record.expiresAt < Date.now()) {
259
+ const record = await this.store.get(`code:${authorizationCode}`);
260
+ if (!record) {
166
261
  throw new InvalidGrantError('Authorization code is invalid or expired');
167
262
  }
168
263
  // One-time use.
169
- this.codes.delete(authorizationCode);
264
+ await this.store.del(`code:${authorizationCode}`);
170
265
  if (record.clientId !== client.client_id) {
171
266
  throw new InvalidGrantError('Authorization code was issued to a different client');
172
267
  }
173
268
  return this.mintTokens(record);
174
269
  }
175
270
  async exchangeRefreshToken(client, refreshToken) {
176
- const record = this.refreshTokens.get(refreshToken);
271
+ const record = await this.store.get(`rt:${refreshToken}`);
177
272
  if (!record) {
178
273
  throw new InvalidGrantError('Refresh token is invalid');
179
274
  }
@@ -192,8 +287,8 @@ export class GitLabOAuthProvider {
192
287
  }
193
288
  // Rotate: drop the old refresh token and revoke its paired access token so a
194
289
  // stolen access token can't outlive a refresh.
195
- this.refreshTokens.delete(refreshToken);
196
- this.accessTokens.delete(record.accessToken);
290
+ await this.store.del(`rt:${refreshToken}`);
291
+ await this.store.del(`at:${record.accessToken}`);
197
292
  return this.mintTokens({
198
293
  clientId: record.clientId,
199
294
  clientCodeChallenge: '',
@@ -203,16 +298,15 @@ export class GitLabOAuthProvider {
203
298
  gitlabAccessToken: tokens.access_token,
204
299
  gitlabRefreshToken: tokens.refresh_token ?? record.gitlabRefreshToken,
205
300
  gitlabExpiresAt: Date.now() + (tokens.expires_in ? tokens.expires_in * 1000 : DEFAULT_TOKEN_TTL_MS),
206
- expiresAt: 0,
207
301
  });
208
302
  }
209
303
  async verifyAccessToken(token) {
210
- const record = this.accessTokens.get(token);
304
+ const record = await this.store.get(`at:${token}`);
211
305
  if (!record) {
212
306
  throw new InvalidTokenError('Unknown or revoked access token');
213
307
  }
214
308
  if (record.expiresAt * 1000 < Date.now()) {
215
- this.accessTokens.delete(token);
309
+ await this.store.del(`at:${token}`);
216
310
  throw new InvalidTokenError('Access token has expired');
217
311
  }
218
312
  return {
@@ -227,35 +321,33 @@ export class GitLabOAuthProvider {
227
321
  };
228
322
  }
229
323
  async revokeToken(_client, request) {
230
- this.accessTokens.delete(request.token);
231
- this.refreshTokens.delete(request.token);
324
+ await this.store.del(`at:${request.token}`);
325
+ await this.store.del(`rt:${request.token}`);
232
326
  }
233
327
  dispose() {
234
- if (this.cleanupTimer)
235
- clearInterval(this.cleanupTimer);
328
+ this.store.dispose();
236
329
  }
237
330
  // --- internals -----------------------------------------------------------
238
- mintTokens(record) {
331
+ async mintTokens(record) {
239
332
  const accessToken = randomToken();
240
333
  const refreshToken = randomToken();
241
334
  const ttlMs = Math.max(0, record.gitlabExpiresAt - Date.now()) || DEFAULT_TOKEN_TTL_MS;
242
335
  const expiresAtSec = Math.floor((Date.now() + ttlMs) / 1000);
243
- this.accessTokens.set(accessToken, {
336
+ await this.store.set(`at:${accessToken}`, {
244
337
  clientId: record.clientId,
245
338
  scopes: record.scopes,
246
339
  resource: record.resource,
247
340
  gitlabAccessToken: record.gitlabAccessToken,
248
341
  expiresAt: expiresAtSec,
249
- });
342
+ }, ttlMs);
250
343
  if (record.gitlabRefreshToken) {
251
- this.refreshTokens.set(refreshToken, {
344
+ await this.store.set(`rt:${refreshToken}`, {
252
345
  clientId: record.clientId,
253
346
  scopes: record.scopes,
254
347
  resource: record.resource,
255
348
  gitlabRefreshToken: record.gitlabRefreshToken,
256
349
  accessToken,
257
- expiresAt: Date.now() + REFRESH_TOKEN_TTL_MS,
258
- });
350
+ }, REFRESH_TOKEN_TTL_MS);
259
351
  }
260
352
  return {
261
353
  access_token: accessToken,
@@ -265,6 +357,49 @@ export class GitLabOAuthProvider {
265
357
  ...(record.gitlabRefreshToken ? { refresh_token: refreshToken } : {}),
266
358
  };
267
359
  }
360
+ /**
361
+ * Is the GitLab user (identified by their freshly-issued token) a member of any
362
+ * configured allowed group, or a subgroup thereof? Pages through the user's
363
+ * member groups and matches each allowed full-path as an exact or ancestor path
364
+ * (so allowing "team" admits members of "team/backend"). Case-insensitive.
365
+ */
366
+ async userIsInAllowedGroup(gitlabAccessToken) {
367
+ const allowed = this.opts.allowedGroups.map((g) => g.toLowerCase().replace(/^\/+|\/+$/g, ''));
368
+ if (allowed.length === 0)
369
+ return true;
370
+ // Up to 10 pages × 100 = 1000 groups; min_access_level=10 (Guest) = any membership.
371
+ for (let page = 1; page <= 10; page++) {
372
+ const resp = await this.gitlabApiGet(`/groups?min_access_level=10&per_page=100&page=${page}`, gitlabAccessToken);
373
+ if (!resp.ok) {
374
+ throw new Error(`GitLab group membership lookup returned ${resp.status}`);
375
+ }
376
+ const groups = (await resp.json());
377
+ for (const g of groups) {
378
+ const fp = (g.full_path || '').toLowerCase();
379
+ if (!fp)
380
+ continue;
381
+ if (allowed.some((a) => fp === a || fp.startsWith(a + '/')))
382
+ return true;
383
+ }
384
+ if (groups.length < 100)
385
+ break; // last page reached
386
+ }
387
+ return false;
388
+ }
389
+ /** Authenticated GET against the GitLab REST API as the user, with timeout. */
390
+ async gitlabApiGet(path, gitlabAccessToken) {
391
+ const controller = new AbortController();
392
+ const timeoutId = setTimeout(() => controller.abort(), this.opts.timeoutMs);
393
+ try {
394
+ return await fetch(`${this.opts.gitlabBaseUrl.replace(/\/$/, '')}/api/v4${path}`, {
395
+ headers: { Authorization: `Bearer ${gitlabAccessToken}`, Accept: 'application/json' },
396
+ signal: controller.signal,
397
+ });
398
+ }
399
+ finally {
400
+ clearTimeout(timeoutId);
401
+ }
402
+ }
268
403
  async gitlabTokenRequest(params) {
269
404
  const body = new URLSearchParams({
270
405
  ...params,
@@ -300,21 +435,6 @@ export class GitLabOAuthProvider {
300
435
  clearTimeout(timeoutId);
301
436
  }
302
437
  }
303
- purgeExpired() {
304
- const now = Date.now();
305
- for (const [k, v] of this.pending)
306
- if (v.expiresAt < now)
307
- this.pending.delete(k);
308
- for (const [k, v] of this.codes)
309
- if (v.expiresAt < now)
310
- this.codes.delete(k);
311
- for (const [k, v] of this.accessTokens)
312
- if (v.expiresAt * 1000 < now)
313
- this.accessTokens.delete(k);
314
- for (const [k, v] of this.refreshTokens)
315
- if (v.expiresAt < now)
316
- this.refreshTokens.delete(k);
317
- }
318
438
  }
319
439
  /**
320
440
  * Validate and assemble GitLab OAuth options from config/env. Throws a clear
@@ -346,6 +466,7 @@ export function buildOAuthOptions(input) {
346
466
  clientSecret: input.clientSecret || undefined,
347
467
  scopes: input.scopes && input.scopes.trim() ? input.scopes.trim() : 'api',
348
468
  callbackPath: input.callbackPath && input.callbackPath.startsWith('/') ? input.callbackPath : '/gitlab/callback',
469
+ allowedGroups: (input.allowedGroups || '').split(/[\s,]+/).map((s) => s.trim()).filter(Boolean),
349
470
  timeoutMs: input.timeoutMs,
350
471
  };
351
472
  }
package/dist/oauth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ttpears/gitlab-mcp-server",
3
- "version": "2.0.1",
3
+ "version": "2.1.0",
4
4
  "description": "GitLab MCP Server with GraphQL discovery",
5
5
  "main": "dist/index.js",
6
6
  "module": "./src/index.ts",
@@ -39,6 +39,7 @@
39
39
  "express": "^5.1.0",
40
40
  "graphql": "^16.8.1",
41
41
  "graphql-request": "^6.1.0",
42
+ "ioredis": "^5.11.1",
42
43
  "zod": "^3.22.4",
43
44
  "zod-to-json-schema": "^3.24.6"
44
45
  },