@structured-world/gitlab-mcp 6.31.0 → 6.31.1

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.
@@ -1,37 +1,2 @@
1
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
- export declare const server: Server<{
3
- method: string;
4
- params?: {
5
- [x: string]: unknown;
6
- _meta?: {
7
- [x: string]: unknown;
8
- progressToken?: string | number | undefined;
9
- "io.modelcontextprotocol/related-task"?: {
10
- taskId: string;
11
- } | undefined;
12
- } | undefined;
13
- } | undefined;
14
- }, {
15
- method: string;
16
- params?: {
17
- [x: string]: unknown;
18
- _meta?: {
19
- [x: string]: unknown;
20
- progressToken?: string | number | undefined;
21
- "io.modelcontextprotocol/related-task"?: {
22
- taskId: string;
23
- } | undefined;
24
- } | undefined;
25
- } | undefined;
26
- }, {
27
- [x: string]: unknown;
28
- _meta?: {
29
- [x: string]: unknown;
30
- progressToken?: string | number | undefined;
31
- "io.modelcontextprotocol/related-task"?: {
32
- taskId: string;
33
- } | undefined;
34
- } | undefined;
35
- }>;
36
1
  export declare function sendToolsListChangedNotification(): Promise<void>;
37
2
  export declare function startServer(): Promise<void>;
@@ -36,45 +36,28 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.server = void 0;
40
39
  exports.sendToolsListChangedNotification = sendToolsListChangedNotification;
41
40
  exports.startServer = startServer;
42
- const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
43
41
  const sse_js_1 = require("@modelcontextprotocol/sdk/server/sse.js");
44
42
  const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
45
43
  const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/server/streamableHttp.js");
46
44
  const express_1 = __importDefault(require("express"));
45
+ const crypto = __importStar(require("crypto"));
47
46
  const https = __importStar(require("https"));
48
47
  const fs = __importStar(require("fs"));
49
48
  const config_1 = require("./config");
50
- const config_2 = require("./config");
51
- const handlers_1 = require("./handlers");
52
49
  const logger_1 = require("./logger");
50
+ const session_manager_1 = require("./session-manager");
53
51
  const index_1 = require("./oauth/index");
54
52
  const index_2 = require("./middleware/index");
55
- const schema_utils_1 = require("./utils/schema-utils");
56
53
  const request_logger_1 = require("./utils/request-logger");
57
- exports.server = new index_js_1.Server({
58
- name: config_2.packageName,
59
- version: config_2.packageVersion,
60
- }, {
61
- capabilities: {
62
- tools: {
63
- listChanged: true,
64
- },
65
- },
66
- });
67
- exports.server.oninitialized = () => {
68
- const clientVersion = exports.server.getClientVersion();
69
- (0, schema_utils_1.setDetectedSchemaMode)(clientVersion?.name);
70
- };
71
54
  async function sendToolsListChangedNotification() {
72
55
  try {
73
- await exports.server.notification({ method: "notifications/tools/list_changed" });
74
- logger_1.logger.info("Sent tools/list_changed notification to clients");
56
+ const sessionManager = (0, session_manager_1.getSessionManager)();
57
+ await sessionManager.broadcastToolsListChanged();
75
58
  }
76
59
  catch (error) {
77
- logger_1.logger.debug({ err: error }, "Failed to send tools/list_changed notification");
60
+ logger_1.logger.error({ err: error }, "Failed to broadcast tools/list_changed notification");
78
61
  }
79
62
  }
80
63
  function registerOAuthEndpoints(app) {
@@ -173,143 +156,16 @@ async function startServer() {
173
156
  if (oauthConfig) {
174
157
  await index_1.sessionStore.initialize();
175
158
  }
176
- await (0, handlers_1.setupHandlers)(exports.server);
159
+ const sessionManager = (0, session_manager_1.getSessionManager)();
160
+ sessionManager.start();
177
161
  const transportMode = determineTransportMode();
178
162
  switch (transportMode) {
179
163
  case "stdio": {
180
164
  const transport = new stdio_js_1.StdioServerTransport();
181
- await exports.server.connect(transport);
165
+ await sessionManager.createSession("stdio", transport);
182
166
  logger_1.logger.info("GitLab MCP Server running on stdio");
183
167
  break;
184
168
  }
185
- case "sse": {
186
- logger_1.logger.info("Setting up SSE mode with MCP SDK...");
187
- const app = (0, express_1.default)();
188
- app.use(express_1.default.json());
189
- configureTrustProxy(app);
190
- app.use((0, index_2.rateLimiterMiddleware)());
191
- if ((0, index_1.isOAuthEnabled)()) {
192
- registerOAuthEndpoints(app);
193
- }
194
- const sseTransports = {};
195
- app.get("/sse", async (req, res) => {
196
- logger_1.logger.debug("SSE endpoint hit!");
197
- const transport = new sse_js_1.SSEServerTransport("/messages", res);
198
- await exports.server.connect(transport);
199
- const sessionId = transport.sessionId;
200
- sseTransports[sessionId] = transport;
201
- logger_1.logger.debug(`SSE transport created with session: ${sessionId}`);
202
- });
203
- app.post("/messages", async (req, res) => {
204
- logger_1.logger.debug("Messages endpoint hit!");
205
- const sessionId = req.query.sessionId;
206
- if (!sessionId || !sseTransports[sessionId]) {
207
- res.status(404).json({ error: "Session not found" });
208
- return;
209
- }
210
- try {
211
- const transport = sseTransports[sessionId];
212
- await transport.handlePostMessage(req, res, req.body);
213
- }
214
- catch (error) {
215
- logger_1.logger.error({ err: error }, "Error handling SSE message");
216
- res.status(500).json({ error: "Internal server error" });
217
- }
218
- });
219
- startHttpServer(app, () => {
220
- const url = `${getProtocol()}://${config_1.HOST}:${config_1.PORT}`;
221
- logger_1.logger.info(`GitLab MCP Server SSE running on ${url}`);
222
- if (isTLSEnabled()) {
223
- logger_1.logger.info("TLS/HTTPS enabled");
224
- }
225
- logger_1.logger.info("SSE server started successfully");
226
- });
227
- break;
228
- }
229
- case "streamable-http": {
230
- const app = (0, express_1.default)();
231
- app.use(express_1.default.json());
232
- configureTrustProxy(app);
233
- app.use((0, index_2.rateLimiterMiddleware)());
234
- if ((0, index_1.isOAuthEnabled)()) {
235
- registerOAuthEndpoints(app);
236
- }
237
- app.use("/mcp", (req, res, next) => {
238
- const accept = req.headers.accept ?? "";
239
- if (req.method === "POST" && !accept.includes("text/event-stream")) {
240
- req.headers.accept = accept
241
- ? `${accept}, text/event-stream`
242
- : "application/json, text/event-stream";
243
- logger_1.logger.debug({ originalAccept: accept, newAccept: req.headers.accept }, "Modified Accept header for MCP compatibility");
244
- }
245
- next();
246
- });
247
- if ((0, index_1.isOAuthEnabled)()) {
248
- app.use("/mcp", index_2.oauthAuthMiddleware);
249
- }
250
- const streamableTransports = {};
251
- app.all("/mcp", async (req, res) => {
252
- const sessionId = req.headers["mcp-session-id"];
253
- const oauthSessionId = res.locals.oauthSessionId;
254
- const gitlabToken = res.locals.gitlabToken;
255
- const gitlabUserId = res.locals.gitlabUserId;
256
- const gitlabUsername = res.locals.gitlabUsername;
257
- const handleWithContext = async (transport) => {
258
- if (gitlabToken && oauthSessionId && gitlabUserId && gitlabUsername) {
259
- await (0, index_1.runWithTokenContext)({
260
- gitlabToken,
261
- gitlabUserId,
262
- gitlabUsername,
263
- sessionId: oauthSessionId,
264
- }, async () => {
265
- await transport.handleRequest(req, res, req.body);
266
- });
267
- }
268
- else {
269
- await transport.handleRequest(req, res, req.body);
270
- }
271
- };
272
- try {
273
- let transport;
274
- if (sessionId && sessionId in streamableTransports) {
275
- transport = streamableTransports[sessionId];
276
- await handleWithContext(transport);
277
- }
278
- else {
279
- transport = new streamableHttp_js_1.StreamableHTTPServerTransport({
280
- sessionIdGenerator: () => Math.random().toString(36).substring(7),
281
- onsessioninitialized: (newSessionId) => {
282
- streamableTransports[newSessionId] = transport;
283
- logger_1.logger.info(`MCP session initialized: ${newSessionId} (method: ${req.method})`);
284
- if (oauthSessionId) {
285
- index_1.sessionStore.associateMcpSession(newSessionId, oauthSessionId);
286
- }
287
- },
288
- onsessionclosed: (closedSessionId) => {
289
- delete streamableTransports[closedSessionId];
290
- index_1.sessionStore.removeMcpSessionAssociation(closedSessionId);
291
- logger_1.logger.info(`MCP session closed: ${closedSessionId}`);
292
- },
293
- });
294
- await exports.server.connect(transport);
295
- await handleWithContext(transport);
296
- }
297
- }
298
- catch (error) {
299
- logger_1.logger.error({ err: error }, "Error in StreamableHTTP transport");
300
- res.status(500).json({ error: "Internal server error" });
301
- }
302
- });
303
- startHttpServer(app, () => {
304
- const url = `${getProtocol()}://${config_1.HOST}:${config_1.PORT}`;
305
- logger_1.logger.info(`GitLab MCP Server running on ${url}/mcp`);
306
- if (isTLSEnabled()) {
307
- logger_1.logger.info("TLS/HTTPS enabled");
308
- }
309
- logger_1.logger.info("Supports both SSE (GET) and JSON-RPC (POST) on same endpoint");
310
- });
311
- break;
312
- }
313
169
  case "dual": {
314
170
  logger_1.logger.info("Setting up dual transport mode (SSE + StreamableHTTP)...");
315
171
  const app = (0, express_1.default)();
@@ -337,10 +193,25 @@ async function startServer() {
337
193
  app.get("/sse", async (req, res) => {
338
194
  logger_1.logger.debug("SSE endpoint hit!");
339
195
  const transport = new sse_js_1.SSEServerTransport("/messages", res);
340
- await exports.server.connect(transport);
341
196
  const sessionId = transport.sessionId;
342
- sseTransports[sessionId] = transport;
343
- logger_1.logger.debug(`SSE transport created with session: ${sessionId}`);
197
+ try {
198
+ await sessionManager.createSession(sessionId, transport);
199
+ sseTransports[sessionId] = transport;
200
+ logger_1.logger.debug(`SSE transport created with session: ${sessionId}`);
201
+ }
202
+ catch (error) {
203
+ logger_1.logger.error({ err: error, sessionId }, "Failed to create SSE session");
204
+ if (!res.headersSent) {
205
+ res.status(500).end();
206
+ }
207
+ return;
208
+ }
209
+ res.on("close", () => {
210
+ delete sseTransports[sessionId];
211
+ sessionManager.removeSession(sessionId).catch((error) => {
212
+ logger_1.logger.debug({ err: error, sessionId }, "Error removing SSE session on disconnect");
213
+ });
214
+ });
344
215
  });
345
216
  app.post("/messages", async (req, res) => {
346
217
  logger_1.logger.debug("SSE messages endpoint hit!");
@@ -350,12 +221,15 @@ async function startServer() {
350
221
  return;
351
222
  }
352
223
  try {
224
+ sessionManager.touchSession(sessionId);
353
225
  const transport = sseTransports[sessionId];
354
226
  await transport.handlePostMessage(req, res, req.body);
355
227
  }
356
228
  catch (error) {
357
229
  logger_1.logger.error({ err: error }, "Error handling SSE message");
358
- res.status(500).json({ error: "Internal server error" });
230
+ if (!res.headersSent) {
231
+ res.status(500).json({ error: "Internal server error" });
232
+ }
359
233
  }
360
234
  });
361
235
  app.all(["/", "/mcp"], async (req, res) => {
@@ -388,32 +262,39 @@ async function startServer() {
388
262
  try {
389
263
  let transport;
390
264
  if (sessionId && sessionId in streamableTransports) {
265
+ sessionManager.touchSession(sessionId);
391
266
  transport = streamableTransports[sessionId];
392
267
  await handleWithContext(transport);
393
268
  }
394
269
  else {
270
+ const newSessionId = crypto.randomUUID();
395
271
  transport = new streamableHttp_js_1.StreamableHTTPServerTransport({
396
- sessionIdGenerator: () => Math.random().toString(36).substring(7),
397
- onsessioninitialized: (newSessionId) => {
398
- streamableTransports[newSessionId] = transport;
399
- logger_1.logger.info(`MCP session initialized: ${newSessionId} (method: ${req.method})`);
272
+ sessionIdGenerator: () => newSessionId,
273
+ onsessioninitialized: (sessionId) => {
274
+ streamableTransports[sessionId] = transport;
275
+ logger_1.logger.info(`MCP session initialized: ${sessionId} (method: ${req.method})`);
400
276
  if (oauthSessionId) {
401
- index_1.sessionStore.associateMcpSession(newSessionId, oauthSessionId);
277
+ index_1.sessionStore.associateMcpSession(sessionId, oauthSessionId);
402
278
  }
403
279
  },
404
280
  onsessionclosed: (closedSessionId) => {
405
281
  delete streamableTransports[closedSessionId];
406
282
  index_1.sessionStore.removeMcpSessionAssociation(closedSessionId);
283
+ sessionManager.removeSession(closedSessionId).catch((err) => {
284
+ logger_1.logger.debug({ err, sessionId: closedSessionId }, "Error removing closed session");
285
+ });
407
286
  logger_1.logger.info(`MCP session closed: ${closedSessionId}`);
408
287
  },
409
288
  });
410
- await exports.server.connect(transport);
289
+ await sessionManager.createSession(newSessionId, transport);
411
290
  await handleWithContext(transport);
412
291
  }
413
292
  }
414
293
  catch (error) {
415
294
  logger_1.logger.error({ err: error }, "Error in StreamableHTTP transport");
416
- res.status(500).json({ error: "Internal server error" });
295
+ if (!res.headersSent) {
296
+ res.status(500).json({ error: "Internal server error" });
297
+ }
417
298
  }
418
299
  });
419
300
  startHttpServer(app, () => {
@@ -439,6 +320,14 @@ async function startServer() {
439
320
  }
440
321
  async function gracefulShutdown(signal) {
441
322
  logger_1.logger.info({ signal }, "Shutting down GitLab MCP Server...");
323
+ try {
324
+ const sm = (0, session_manager_1.getSessionManager)();
325
+ await sm.shutdown();
326
+ logger_1.logger.info("Session manager shut down successfully");
327
+ }
328
+ catch (error) {
329
+ logger_1.logger.error({ err: error }, "Error shutting down session manager");
330
+ }
442
331
  try {
443
332
  await index_1.sessionStore.close();
444
333
  logger_1.logger.info("Session store closed successfully");
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
+ import { Transport } from "@modelcontextprotocol/sdk/shared/transport.js";
3
+ export declare class SessionManager {
4
+ private sessions;
5
+ private cleanupInterval;
6
+ private readonly sessionTimeoutMs;
7
+ private schemaModeDetected;
8
+ constructor(sessionTimeoutMs?: number);
9
+ start(): void;
10
+ createSession(sessionId: string, transport: Transport): Promise<Server>;
11
+ touchSession(sessionId: string): void;
12
+ removeSession(sessionId: string): Promise<void>;
13
+ broadcastToolsListChanged(): Promise<void>;
14
+ get activeSessionCount(): number;
15
+ private cleanupStaleSessions;
16
+ shutdown(): Promise<void>;
17
+ }
18
+ export declare function getSessionManager(): SessionManager;
19
+ export declare function resetSessionManager(): void;
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SessionManager = void 0;
4
+ exports.getSessionManager = getSessionManager;
5
+ exports.resetSessionManager = resetSessionManager;
6
+ const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
7
+ const config_1 = require("./config");
8
+ const handlers_1 = require("./handlers");
9
+ const schema_utils_1 = require("./utils/schema-utils");
10
+ const logger_1 = require("./logger");
11
+ const DEFAULT_SESSION_TIMEOUT_MS = 30 * 60 * 1000;
12
+ class SessionManager {
13
+ sessions = new Map();
14
+ cleanupInterval = null;
15
+ sessionTimeoutMs;
16
+ schemaModeDetected = false;
17
+ constructor(sessionTimeoutMs) {
18
+ this.sessionTimeoutMs = sessionTimeoutMs ?? DEFAULT_SESSION_TIMEOUT_MS;
19
+ }
20
+ start() {
21
+ this.cleanupInterval = setInterval(() => {
22
+ this.cleanupStaleSessions();
23
+ }, 60_000);
24
+ this.cleanupInterval.unref();
25
+ logger_1.logger.info({ sessionTimeoutMs: this.sessionTimeoutMs }, "Session manager started");
26
+ }
27
+ async createSession(sessionId, transport) {
28
+ if (this.sessions.has(sessionId)) {
29
+ logger_1.logger.warn({ sessionId }, "Duplicate sessionId detected — closing existing session");
30
+ await this.removeSession(sessionId);
31
+ }
32
+ const server = new index_js_1.Server({ name: config_1.packageName, version: config_1.packageVersion }, { capabilities: { tools: { listChanged: true } } });
33
+ server.oninitialized = () => {
34
+ if (!this.schemaModeDetected) {
35
+ this.schemaModeDetected = true;
36
+ const clientVersion = server.getClientVersion();
37
+ (0, schema_utils_1.setDetectedSchemaMode)(clientVersion?.name);
38
+ }
39
+ };
40
+ await (0, handlers_1.setupHandlers)(server);
41
+ await server.connect(transport);
42
+ const now = Date.now();
43
+ this.sessions.set(sessionId, {
44
+ server,
45
+ sessionId,
46
+ createdAt: now,
47
+ lastActivityAt: now,
48
+ });
49
+ logger_1.logger.info({ sessionId, activeSessions: this.sessions.size }, "Session created");
50
+ return server;
51
+ }
52
+ touchSession(sessionId) {
53
+ const session = this.sessions.get(sessionId);
54
+ if (session) {
55
+ session.lastActivityAt = Date.now();
56
+ }
57
+ }
58
+ async removeSession(sessionId) {
59
+ const session = this.sessions.get(sessionId);
60
+ if (!session)
61
+ return;
62
+ this.sessions.delete(sessionId);
63
+ try {
64
+ await session.server.close();
65
+ }
66
+ catch (error) {
67
+ logger_1.logger.debug({ err: error, sessionId }, "Error closing session server (may already be closed)");
68
+ }
69
+ logger_1.logger.info({ sessionId, activeSessions: this.sessions.size }, "Session removed");
70
+ }
71
+ async broadcastToolsListChanged() {
72
+ const promises = [];
73
+ for (const [sessionId, session] of this.sessions) {
74
+ promises.push(session.server
75
+ .notification({ method: "notifications/tools/list_changed" })
76
+ .then(() => {
77
+ logger_1.logger.debug({ sessionId }, "Sent tools/list_changed to session");
78
+ })
79
+ .catch((error) => {
80
+ logger_1.logger.debug({ err: error, sessionId }, "Failed to send tools/list_changed to session");
81
+ }));
82
+ }
83
+ await Promise.allSettled(promises);
84
+ logger_1.logger.info({ sessionCount: this.sessions.size }, "Broadcast tools/list_changed to all sessions");
85
+ }
86
+ get activeSessionCount() {
87
+ return this.sessions.size;
88
+ }
89
+ cleanupStaleSessions() {
90
+ const now = Date.now();
91
+ const stale = [];
92
+ for (const [sessionId, session] of this.sessions) {
93
+ if (now - session.lastActivityAt > this.sessionTimeoutMs) {
94
+ stale.push(sessionId);
95
+ }
96
+ }
97
+ if (stale.length === 0)
98
+ return;
99
+ logger_1.logger.info({ staleCount: stale.length, activeSessions: this.sessions.size }, "Cleaning up stale sessions");
100
+ for (const sessionId of stale) {
101
+ this.removeSession(sessionId).catch((error) => {
102
+ logger_1.logger.error({ err: error, sessionId }, "Error during stale session cleanup");
103
+ });
104
+ }
105
+ }
106
+ async shutdown() {
107
+ if (this.cleanupInterval) {
108
+ clearInterval(this.cleanupInterval);
109
+ this.cleanupInterval = null;
110
+ }
111
+ const sessionIds = [...this.sessions.keys()];
112
+ await Promise.allSettled(sessionIds.map(id => this.removeSession(id)));
113
+ logger_1.logger.info("Session manager shut down");
114
+ }
115
+ }
116
+ exports.SessionManager = SessionManager;
117
+ let sessionManagerInstance = null;
118
+ function getSessionManager() {
119
+ sessionManagerInstance ??= new SessionManager();
120
+ return sessionManagerInstance;
121
+ }
122
+ function resetSessionManager() {
123
+ sessionManagerInstance = null;
124
+ }
125
+ //# sourceMappingURL=session-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/session-manager.ts"],"names":[],"mappings":"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"}