@structured-world/gitlab-mcp 5.7.0 → 5.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.
Files changed (92) hide show
  1. package/README.md +236 -1
  2. package/dist/config.d.ts +5 -0
  3. package/dist/config.js +6 -1
  4. package/dist/config.js.map +1 -1
  5. package/dist/entities/core/registry.js +53 -20
  6. package/dist/entities/core/registry.js.map +1 -1
  7. package/dist/entities/core/schema-readonly.d.ts +172 -442
  8. package/dist/entities/core/schema.d.ts +65 -173
  9. package/dist/entities/files/registry.js +42 -19
  10. package/dist/entities/files/registry.js.map +1 -1
  11. package/dist/entities/files/schema-readonly.d.ts +24 -124
  12. package/dist/entities/files/schema.d.ts +17 -82
  13. package/dist/entities/labels/registry.js +39 -6
  14. package/dist/entities/labels/registry.js.map +1 -1
  15. package/dist/entities/labels/schema-readonly.d.ts +6 -24
  16. package/dist/entities/labels/schema.d.ts +5 -37
  17. package/dist/entities/milestones/registry.js +44 -11
  18. package/dist/entities/milestones/registry.js.map +1 -1
  19. package/dist/entities/milestones/schema-readonly.d.ts +20 -100
  20. package/dist/entities/milestones/schema.d.ts +11 -48
  21. package/dist/entities/mrs/registry.js +56 -23
  22. package/dist/entities/mrs/registry.js.map +1 -1
  23. package/dist/entities/mrs/schema-readonly.d.ts +68 -243
  24. package/dist/entities/mrs/schema.d.ts +142 -885
  25. package/dist/entities/pipelines/registry.js +46 -13
  26. package/dist/entities/pipelines/registry.js.map +1 -1
  27. package/dist/entities/pipelines/schema-readonly.d.ts +115 -525
  28. package/dist/entities/pipelines/schema.d.ts +30 -104
  29. package/dist/entities/shared.d.ts +110 -787
  30. package/dist/entities/utils.d.ts +2 -2
  31. package/dist/entities/variables/registry.js +40 -7
  32. package/dist/entities/variables/registry.js.map +1 -1
  33. package/dist/entities/variables/schema-readonly.d.ts +3 -28
  34. package/dist/entities/variables/schema.d.ts +20 -80
  35. package/dist/entities/wiki/registry.js +39 -6
  36. package/dist/entities/wiki/registry.js.map +1 -1
  37. package/dist/entities/wiki/schema-readonly.d.ts +4 -35
  38. package/dist/entities/wiki/schema.d.ts +3 -31
  39. package/dist/entities/workitems/registry.js +40 -7
  40. package/dist/entities/workitems/registry.js.map +1 -1
  41. package/dist/entities/workitems/schema-readonly.d.ts +35 -32
  42. package/dist/entities/workitems/schema-readonly.js +1 -1
  43. package/dist/entities/workitems/schema-readonly.js.map +1 -1
  44. package/dist/entities/workitems/schema.d.ts +21 -45
  45. package/dist/middleware/index.d.ts +1 -0
  46. package/dist/middleware/index.js +8 -0
  47. package/dist/middleware/index.js.map +1 -0
  48. package/dist/middleware/oauth-auth.d.ts +4 -0
  49. package/dist/middleware/oauth-auth.js +135 -0
  50. package/dist/middleware/oauth-auth.js.map +1 -0
  51. package/dist/oauth/config.d.ts +19 -0
  52. package/dist/oauth/config.js +70 -0
  53. package/dist/oauth/config.js.map +1 -0
  54. package/dist/oauth/endpoints/authorize.d.ts +3 -0
  55. package/dist/oauth/endpoints/authorize.js +414 -0
  56. package/dist/oauth/endpoints/authorize.js.map +1 -0
  57. package/dist/oauth/endpoints/index.d.ts +3 -0
  58. package/dist/oauth/endpoints/index.js +13 -0
  59. package/dist/oauth/endpoints/index.js.map +1 -0
  60. package/dist/oauth/endpoints/metadata.d.ts +4 -0
  61. package/dist/oauth/endpoints/metadata.js +36 -0
  62. package/dist/oauth/endpoints/metadata.js.map +1 -0
  63. package/dist/oauth/endpoints/token.d.ts +2 -0
  64. package/dist/oauth/endpoints/token.js +159 -0
  65. package/dist/oauth/endpoints/token.js.map +1 -0
  66. package/dist/oauth/gitlab-device-flow.d.ts +8 -0
  67. package/dist/oauth/gitlab-device-flow.js +172 -0
  68. package/dist/oauth/gitlab-device-flow.js.map +1 -0
  69. package/dist/oauth/index.d.ts +8 -0
  70. package/dist/oauth/index.js +48 -0
  71. package/dist/oauth/index.js.map +1 -0
  72. package/dist/oauth/session-store.d.ts +37 -0
  73. package/dist/oauth/session-store.js +182 -0
  74. package/dist/oauth/session-store.js.map +1 -0
  75. package/dist/oauth/token-context.d.ts +8 -0
  76. package/dist/oauth/token-context.js +40 -0
  77. package/dist/oauth/token-context.js.map +1 -0
  78. package/dist/oauth/token-utils.d.ts +14 -0
  79. package/dist/oauth/token-utils.js +148 -0
  80. package/dist/oauth/token-utils.js.map +1 -0
  81. package/dist/oauth/types.d.ts +94 -0
  82. package/dist/oauth/types.js +3 -0
  83. package/dist/oauth/types.js.map +1 -0
  84. package/dist/server.js +147 -9
  85. package/dist/server.js.map +1 -1
  86. package/dist/structured-world-gitlab-mcp-5.8.0.tgz +0 -0
  87. package/dist/tsconfig.build.tsbuildinfo +1 -1
  88. package/dist/utils/fetch.d.ts +3 -7
  89. package/dist/utils/fetch.js +82 -54
  90. package/dist/utils/fetch.js.map +1 -1
  91. package/package.json +23 -23
  92. package/dist/structured-world-gitlab-mcp-5.7.0.tgz +0 -0
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.createJWT = createJWT;
37
+ exports.verifyJWT = verifyJWT;
38
+ exports.verifyMCPToken = verifyMCPToken;
39
+ exports.generateCodeVerifier = generateCodeVerifier;
40
+ exports.generateCodeChallenge = generateCodeChallenge;
41
+ exports.verifyCodeChallenge = verifyCodeChallenge;
42
+ exports.generateRandomString = generateRandomString;
43
+ exports.generateUUID = generateUUID;
44
+ exports.generateAuthorizationCode = generateAuthorizationCode;
45
+ exports.generateSessionId = generateSessionId;
46
+ exports.generateRefreshToken = generateRefreshToken;
47
+ exports.isTokenExpiringSoon = isTokenExpiringSoon;
48
+ exports.calculateTokenExpiry = calculateTokenExpiry;
49
+ const crypto = __importStar(require("crypto"));
50
+ function createJWT(payload, secret, expiresIn) {
51
+ const header = { alg: "HS256", typ: "JWT" };
52
+ const now = Math.floor(Date.now() / 1000);
53
+ const fullPayload = {
54
+ ...payload,
55
+ iat: now,
56
+ exp: now + expiresIn,
57
+ };
58
+ const headerB64 = base64UrlEncode(JSON.stringify(header));
59
+ const payloadB64 = base64UrlEncode(JSON.stringify(fullPayload));
60
+ const signature = crypto
61
+ .createHmac("sha256", secret)
62
+ .update(`${headerB64}.${payloadB64}`)
63
+ .digest("base64url");
64
+ return `${headerB64}.${payloadB64}.${signature}`;
65
+ }
66
+ function verifyJWT(token, secret) {
67
+ try {
68
+ const parts = token.split(".");
69
+ if (parts.length !== 3) {
70
+ return null;
71
+ }
72
+ const [headerB64, payloadB64, signature] = parts;
73
+ const expectedSig = crypto
74
+ .createHmac("sha256", secret)
75
+ .update(`${headerB64}.${payloadB64}`)
76
+ .digest("base64url");
77
+ if (signature !== expectedSig) {
78
+ return null;
79
+ }
80
+ const payload = JSON.parse(base64UrlDecode(payloadB64));
81
+ const exp = payload.exp;
82
+ if (exp && exp < Math.floor(Date.now() / 1000)) {
83
+ return null;
84
+ }
85
+ return payload;
86
+ }
87
+ catch {
88
+ return null;
89
+ }
90
+ }
91
+ function verifyMCPToken(token, secret) {
92
+ const payload = verifyJWT(token, secret);
93
+ if (!payload) {
94
+ return null;
95
+ }
96
+ if (typeof payload.iss !== "string" ||
97
+ typeof payload.sub !== "string" ||
98
+ typeof payload.aud !== "string" ||
99
+ typeof payload.sid !== "string" ||
100
+ typeof payload.scope !== "string" ||
101
+ typeof payload.gitlab_user !== "string" ||
102
+ typeof payload.iat !== "number" ||
103
+ typeof payload.exp !== "number") {
104
+ return null;
105
+ }
106
+ return payload;
107
+ }
108
+ function generateCodeVerifier() {
109
+ return crypto.randomBytes(32).toString("base64url");
110
+ }
111
+ function generateCodeChallenge(verifier) {
112
+ return crypto.createHash("sha256").update(verifier).digest("base64url");
113
+ }
114
+ function verifyCodeChallenge(verifier, challenge, method) {
115
+ if (method !== "S256") {
116
+ return false;
117
+ }
118
+ return generateCodeChallenge(verifier) === challenge;
119
+ }
120
+ function generateRandomString(length = 32) {
121
+ const byteLength = Math.ceil((length * 3) / 4);
122
+ return crypto.randomBytes(byteLength).toString("base64url").slice(0, length);
123
+ }
124
+ function generateUUID() {
125
+ return crypto.randomUUID();
126
+ }
127
+ function generateAuthorizationCode() {
128
+ return generateRandomString(32);
129
+ }
130
+ function generateSessionId() {
131
+ return generateUUID();
132
+ }
133
+ function generateRefreshToken() {
134
+ return generateRandomString(64);
135
+ }
136
+ function base64UrlEncode(str) {
137
+ return Buffer.from(str, "utf-8").toString("base64url");
138
+ }
139
+ function base64UrlDecode(str) {
140
+ return Buffer.from(str, "base64url").toString("utf-8");
141
+ }
142
+ function isTokenExpiringSoon(expiryMs, bufferMs = 5 * 60 * 1000) {
143
+ return Date.now() + bufferMs >= expiryMs;
144
+ }
145
+ function calculateTokenExpiry(expiresIn) {
146
+ return Date.now() + expiresIn * 1000;
147
+ }
148
+ //# sourceMappingURL=token-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-utils.js","sourceRoot":"","sources":["../../src/oauth/token-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ export interface OAuthSession {
2
+ id: string;
3
+ mcpAccessToken: string;
4
+ mcpRefreshToken: string;
5
+ mcpTokenExpiry: number;
6
+ gitlabAccessToken: string;
7
+ gitlabRefreshToken: string;
8
+ gitlabTokenExpiry: number;
9
+ gitlabUserId: number;
10
+ gitlabUsername: string;
11
+ clientId: string;
12
+ scopes: string[];
13
+ createdAt: number;
14
+ updatedAt: number;
15
+ }
16
+ export interface DeviceFlowState {
17
+ deviceCode: string;
18
+ userCode: string;
19
+ verificationUri: string;
20
+ verificationUriComplete?: string;
21
+ expiresAt: number;
22
+ interval: number;
23
+ clientId: string;
24
+ codeChallenge: string;
25
+ codeChallengeMethod: string;
26
+ state: string;
27
+ redirectUri?: string;
28
+ }
29
+ export interface AuthorizationCode {
30
+ code: string;
31
+ sessionId: string;
32
+ clientId: string;
33
+ codeChallenge: string;
34
+ codeChallengeMethod: string;
35
+ redirectUri?: string;
36
+ expiresAt: number;
37
+ }
38
+ export interface GitLabTokenResponse {
39
+ access_token: string;
40
+ token_type: string;
41
+ expires_in: number;
42
+ refresh_token: string;
43
+ created_at: number;
44
+ scope?: string;
45
+ }
46
+ export interface GitLabDeviceResponse {
47
+ device_code: string;
48
+ user_code: string;
49
+ verification_uri: string;
50
+ verification_uri_complete?: string;
51
+ expires_in: number;
52
+ interval: number;
53
+ }
54
+ export interface TokenContext {
55
+ gitlabToken: string;
56
+ gitlabUserId: number;
57
+ gitlabUsername: string;
58
+ sessionId: string;
59
+ }
60
+ export interface GitLabUserInfo {
61
+ id: number;
62
+ username: string;
63
+ name?: string;
64
+ email?: string;
65
+ }
66
+ export interface MCPTokenResponse {
67
+ access_token: string;
68
+ token_type: "Bearer";
69
+ expires_in: number;
70
+ refresh_token: string;
71
+ scope: string;
72
+ }
73
+ export interface OAuthErrorResponse {
74
+ error: string;
75
+ error_description?: string;
76
+ }
77
+ export type DeviceFlowPollStatus = "pending" | "complete" | "failed" | "expired";
78
+ export interface DeviceFlowPollResponse {
79
+ status: DeviceFlowPollStatus;
80
+ redirect_uri?: string;
81
+ code?: string;
82
+ state?: string;
83
+ error?: string;
84
+ }
85
+ export interface MCPTokenPayload {
86
+ iss: string;
87
+ sub: string;
88
+ aud: string;
89
+ sid: string;
90
+ scope: string;
91
+ gitlab_user: string;
92
+ iat: number;
93
+ exp: number;
94
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/oauth/types.ts"],"names":[],"mappings":""}
package/dist/server.js CHANGED
@@ -1,4 +1,37 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
37
  };
@@ -10,10 +43,13 @@ const sse_js_1 = require("@modelcontextprotocol/sdk/server/sse.js");
10
43
  const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
11
44
  const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/server/streamableHttp.js");
12
45
  const express_1 = __importDefault(require("express"));
46
+ const https = __importStar(require("https"));
47
+ const fs = __importStar(require("fs"));
13
48
  const config_1 = require("./config");
14
49
  const config_2 = require("./config");
15
50
  const handlers_1 = require("./handlers");
16
51
  const logger_1 = require("./logger");
52
+ const index_1 = require("./oauth/index");
17
53
  exports.server = new index_js_1.Server({
18
54
  name: config_2.packageName,
19
55
  version: config_2.packageVersion,
@@ -22,6 +58,71 @@ exports.server = new index_js_1.Server({
22
58
  tools: {},
23
59
  },
24
60
  });
61
+ function registerOAuthEndpoints(app) {
62
+ app.get("/.well-known/oauth-authorization-server", index_1.metadataHandler);
63
+ app.get("/authorize", index_1.authorizeHandler);
64
+ app.get("/oauth/poll", index_1.pollHandler);
65
+ app.post("/token", express_1.default.urlencoded({ extended: true }), index_1.tokenHandler);
66
+ app.get("/health", index_1.healthHandler);
67
+ logger_1.logger.info("OAuth endpoints registered");
68
+ }
69
+ function isTLSEnabled() {
70
+ return !!(config_1.SSL_CERT_PATH && config_1.SSL_KEY_PATH);
71
+ }
72
+ function loadTLSOptions() {
73
+ if (!config_1.SSL_CERT_PATH || !config_1.SSL_KEY_PATH) {
74
+ return undefined;
75
+ }
76
+ try {
77
+ const options = {
78
+ cert: fs.readFileSync(config_1.SSL_CERT_PATH),
79
+ key: fs.readFileSync(config_1.SSL_KEY_PATH),
80
+ };
81
+ if (config_1.SSL_CA_PATH) {
82
+ options.ca = fs.readFileSync(config_1.SSL_CA_PATH);
83
+ logger_1.logger.info(`CA certificate loaded from ${config_1.SSL_CA_PATH}`);
84
+ }
85
+ if (config_1.SSL_PASSPHRASE) {
86
+ options.passphrase = config_1.SSL_PASSPHRASE;
87
+ }
88
+ logger_1.logger.info(`TLS certificates loaded from ${config_1.SSL_CERT_PATH}`);
89
+ return options;
90
+ }
91
+ catch (error) {
92
+ logger_1.logger.error({ err: error }, "Failed to load TLS certificates");
93
+ throw new Error(`Failed to load TLS certificates: ${String(error)}`);
94
+ }
95
+ }
96
+ function configureTrustProxy(app) {
97
+ if (!config_1.TRUST_PROXY) {
98
+ return;
99
+ }
100
+ let trustValue = config_1.TRUST_PROXY;
101
+ if (config_1.TRUST_PROXY === "true" || config_1.TRUST_PROXY === "1") {
102
+ trustValue = true;
103
+ }
104
+ else if (config_1.TRUST_PROXY === "false" || config_1.TRUST_PROXY === "0") {
105
+ trustValue = false;
106
+ }
107
+ else if (!isNaN(Number(config_1.TRUST_PROXY))) {
108
+ trustValue = Number(config_1.TRUST_PROXY);
109
+ }
110
+ app.set("trust proxy", trustValue);
111
+ logger_1.logger.info(`Trust proxy configured: ${String(trustValue)}`);
112
+ }
113
+ function startHttpServer(app, callback) {
114
+ const tlsOptions = loadTLSOptions();
115
+ if (tlsOptions) {
116
+ const httpsServer = https.createServer(tlsOptions, app);
117
+ httpsServer.listen(Number(config_1.PORT), config_1.HOST, callback);
118
+ }
119
+ else {
120
+ app.listen(Number(config_1.PORT), config_1.HOST, callback);
121
+ }
122
+ }
123
+ function getProtocol() {
124
+ return isTLSEnabled() ? "https" : "http";
125
+ }
25
126
  function determineTransportMode() {
26
127
  const args = process.argv.slice(2);
27
128
  logger_1.logger.info(`Transport mode detection: args=${JSON.stringify(args)}, PORT=${config_1.PORT}`);
@@ -37,6 +138,16 @@ function determineTransportMode() {
37
138
  return "stdio";
38
139
  }
39
140
  async function startServer() {
141
+ const oauthConfig = (0, index_1.loadOAuthConfig)();
142
+ if (oauthConfig) {
143
+ logger_1.logger.info("Starting in OAuth mode (per-user authentication)");
144
+ logger_1.logger.info(`OAuth client ID: ${oauthConfig.gitlabClientId}`);
145
+ }
146
+ else {
147
+ (0, index_1.validateStaticConfig)();
148
+ logger_1.logger.info("Starting in static token mode (shared GITLAB_TOKEN)");
149
+ }
150
+ logger_1.logger.info(`Authentication mode: ${(0, index_1.getAuthModeDescription)()}`);
40
151
  await (0, handlers_1.setupHandlers)(exports.server);
41
152
  const transportMode = determineTransportMode();
42
153
  switch (transportMode) {
@@ -50,6 +161,10 @@ async function startServer() {
50
161
  logger_1.logger.info("Setting up SSE mode with MCP SDK...");
51
162
  const app = (0, express_1.default)();
52
163
  app.use(express_1.default.json());
164
+ configureTrustProxy(app);
165
+ if ((0, index_1.isOAuthEnabled)()) {
166
+ registerOAuthEndpoints(app);
167
+ }
53
168
  const sseTransports = {};
54
169
  app.get("/sse", async (req, res) => {
55
170
  logger_1.logger.debug("SSE endpoint hit!");
@@ -74,9 +189,12 @@ async function startServer() {
74
189
  res.status(500).json({ error: "Internal server error" });
75
190
  }
76
191
  });
77
- app.listen(Number(config_1.PORT), config_1.HOST, () => {
78
- const url = `http://${config_1.HOST}:${config_1.PORT}`;
192
+ startHttpServer(app, () => {
193
+ const url = `${getProtocol()}://${config_1.HOST}:${config_1.PORT}`;
79
194
  logger_1.logger.info(`GitLab MCP Server SSE running on ${url}`);
195
+ if (isTLSEnabled()) {
196
+ logger_1.logger.info("TLS/HTTPS enabled");
197
+ }
80
198
  logger_1.logger.info("SSE server started successfully");
81
199
  });
82
200
  break;
@@ -84,6 +202,10 @@ async function startServer() {
84
202
  case "streamable-http": {
85
203
  const app = (0, express_1.default)();
86
204
  app.use(express_1.default.json());
205
+ configureTrustProxy(app);
206
+ if ((0, index_1.isOAuthEnabled)()) {
207
+ registerOAuthEndpoints(app);
208
+ }
87
209
  const streamableTransports = {};
88
210
  app.all("/mcp", async (req, res) => {
89
211
  const sessionId = req.headers["mcp-session-id"];
@@ -114,9 +236,12 @@ async function startServer() {
114
236
  res.status(500).json({ error: "Internal server error" });
115
237
  }
116
238
  });
117
- app.listen(Number(config_1.PORT), config_1.HOST, () => {
118
- const url = `http://${config_1.HOST}:${config_1.PORT}`;
239
+ startHttpServer(app, () => {
240
+ const url = `${getProtocol()}://${config_1.HOST}:${config_1.PORT}`;
119
241
  logger_1.logger.info(`GitLab MCP Server running on ${url}/mcp`);
242
+ if (isTLSEnabled()) {
243
+ logger_1.logger.info("TLS/HTTPS enabled");
244
+ }
120
245
  logger_1.logger.info("Supports both SSE (GET) and JSON-RPC (POST) on same endpoint");
121
246
  });
122
247
  break;
@@ -125,6 +250,10 @@ async function startServer() {
125
250
  logger_1.logger.info("Setting up dual transport mode (SSE + StreamableHTTP)...");
126
251
  const app = (0, express_1.default)();
127
252
  app.use(express_1.default.json());
253
+ configureTrustProxy(app);
254
+ if ((0, index_1.isOAuthEnabled)()) {
255
+ registerOAuthEndpoints(app);
256
+ }
128
257
  const sseTransports = {};
129
258
  const streamableTransports = {};
130
259
  app.get("/sse", async (req, res) => {
@@ -179,12 +308,21 @@ async function startServer() {
179
308
  res.status(500).json({ error: "Internal server error" });
180
309
  }
181
310
  });
182
- app.listen(Number(config_1.PORT), config_1.HOST, () => {
183
- const url = `http://${config_1.HOST}:${config_1.PORT}`;
311
+ startHttpServer(app, () => {
312
+ const url = `${getProtocol()}://${config_1.HOST}:${config_1.PORT}`;
184
313
  logger_1.logger.info(`GitLab MCP Server running on ${url}`);
185
- logger_1.logger.info("🔄 Dual Transport Mode Active:");
186
- logger_1.logger.info(` 📡 SSE endpoint: ${url}/sse (backwards compatibility)`);
187
- logger_1.logger.info(` 🚀 StreamableHTTP endpoint: ${url}/mcp (modern, supports SSE + JSON-RPC)`);
314
+ if (isTLSEnabled()) {
315
+ logger_1.logger.info("TLS/HTTPS enabled");
316
+ }
317
+ logger_1.logger.info("Dual Transport Mode Active:");
318
+ logger_1.logger.info(` SSE endpoint: ${url}/sse (backwards compatibility)`);
319
+ logger_1.logger.info(` StreamableHTTP endpoint: ${url}/mcp (modern, supports SSE + JSON-RPC)`);
320
+ if ((0, index_1.isOAuthEnabled)()) {
321
+ logger_1.logger.info("OAuth Mode Active:");
322
+ logger_1.logger.info(` OAuth metadata: ${url}/.well-known/oauth-authorization-server`);
323
+ logger_1.logger.info(` Authorization: ${url}/authorize`);
324
+ logger_1.logger.info(` Token exchange: ${url}/token`);
325
+ }
188
326
  logger_1.logger.info("Clients can use either transport as needed");
189
327
  });
190
328
  break;
@@ -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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"}