@structured-world/gitlab-mcp 4.1.0 → 4.2.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 +44 -28
- package/dist/config.d.ts +0 -2
- package/dist/config.js +1 -3
- package/dist/config.js.map +1 -1
- package/dist/entities/core/registry.js +96 -24
- package/dist/entities/core/registry.js.map +1 -1
- package/dist/entities/core/schema-readonly.d.ts +3 -0
- package/dist/entities/core/schema-readonly.js +3 -0
- package/dist/entities/core/schema-readonly.js.map +1 -1
- package/dist/entities/core/schema.d.ts +3 -6
- package/dist/entities/core/schema.js +2 -6
- package/dist/entities/core/schema.js.map +1 -1
- package/dist/entities/labels/registry.js +18 -29
- package/dist/entities/labels/registry.js.map +1 -1
- package/dist/entities/labels/schema-readonly.d.ts +8 -36
- package/dist/entities/labels/schema-readonly.js +5 -15
- package/dist/entities/labels/schema-readonly.js.map +1 -1
- package/dist/entities/labels/schema.d.ts +12 -59
- package/dist/entities/labels/schema.js +8 -23
- package/dist/entities/labels/schema.js.map +1 -1
- package/dist/entities/milestones/registry.js +35 -52
- package/dist/entities/milestones/registry.js.map +1 -1
- package/dist/entities/milestones/schema-readonly.d.ts +20 -99
- package/dist/entities/milestones/schema-readonly.js +6 -17
- package/dist/entities/milestones/schema-readonly.js.map +1 -1
- package/dist/entities/milestones/schema.d.ts +16 -76
- package/dist/entities/milestones/schema.js +8 -28
- package/dist/entities/milestones/schema.js.map +1 -1
- package/dist/entities/pipelines/schema-readonly.d.ts +4 -4
- package/dist/entities/variables/registry.js +18 -28
- package/dist/entities/variables/registry.js.map +1 -1
- package/dist/entities/variables/schema-readonly.d.ts +8 -38
- package/dist/entities/variables/schema-readonly.js +4 -13
- package/dist/entities/variables/schema-readonly.js.map +1 -1
- package/dist/entities/variables/schema.d.ts +12 -85
- package/dist/entities/variables/schema.js +6 -21
- package/dist/entities/variables/schema.js.map +1 -1
- package/dist/entities/wiki/registry.js +20 -37
- package/dist/entities/wiki/registry.js.map +1 -1
- package/dist/entities/wiki/schema-readonly.d.ts +8 -34
- package/dist/entities/wiki/schema-readonly.js +4 -13
- package/dist/entities/wiki/schema-readonly.js.map +1 -1
- package/dist/entities/wiki/schema.d.ts +12 -55
- package/dist/entities/wiki/schema.js +6 -21
- package/dist/entities/wiki/schema.js.map +1 -1
- package/dist/entities/workitems/registry.js +87 -20
- package/dist/entities/workitems/registry.js.map +1 -1
- package/dist/entities/workitems/schema-readonly.d.ts +7 -19
- package/dist/entities/workitems/schema-readonly.js +8 -12
- package/dist/entities/workitems/schema-readonly.js.map +1 -1
- package/dist/graphql/workItems.d.ts +23 -2
- package/dist/graphql/workItems.js +36 -36
- package/dist/graphql/workItems.js.map +1 -1
- package/dist/server.js +86 -13
- package/dist/server.js.map +1 -1
- package/dist/structured-world-gitlab-mcp-4.2.0.tgz +0 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/namespace.d.ts +6 -0
- package/dist/utils/namespace.js +52 -0
- package/dist/utils/namespace.js.map +1 -0
- package/dist/utils/smart-user-search.d.ts +33 -0
- package/dist/utils/smart-user-search.js +146 -0
- package/dist/utils/smart-user-search.js.map +1 -0
- package/package.json +2 -1
- package/dist/structured-world-gitlab-mcp-4.1.0.tgz +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GET_WORK_ITEM_TYPES = exports.DELETE_WORK_ITEM = exports.UPDATE_WORK_ITEM = exports.CREATE_WORK_ITEM_WITH_DESCRIPTION = exports.CREATE_WORK_ITEM = exports.GET_WORK_ITEM = exports.GET_PROJECT_WORK_ITEMS = exports.GET_WORK_ITEMS = exports.WorkItemWidgetTypes = void 0;
|
|
3
|
+
exports.GET_WORK_ITEM_TYPES = exports.DELETE_WORK_ITEM = exports.UPDATE_WORK_ITEM = exports.CREATE_WORK_ITEM_WITH_DESCRIPTION = exports.CREATE_WORK_ITEM = exports.GET_WORK_ITEM = exports.GET_PROJECT_WORK_ITEMS = exports.GET_WORK_ITEMS = exports.GET_NAMESPACE_TYPE = exports.GET_GROUP_PROJECTS = exports.WorkItemWidgetTypes = void 0;
|
|
4
4
|
const graphql_tag_1 = require("graphql-tag");
|
|
5
5
|
exports.WorkItemWidgetTypes = {
|
|
6
6
|
ASSIGNEES: 'ASSIGNEES',
|
|
@@ -33,6 +33,26 @@ exports.WorkItemWidgetTypes = {
|
|
|
33
33
|
LINKED_RESOURCES: 'LINKED_RESOURCES',
|
|
34
34
|
VULNERABILITIES: 'VULNERABILITIES',
|
|
35
35
|
};
|
|
36
|
+
exports.GET_GROUP_PROJECTS = (0, graphql_tag_1.gql) `
|
|
37
|
+
query GetGroupProjects($groupPath: ID!, $includeSubgroups: Boolean) {
|
|
38
|
+
group(fullPath: $groupPath) {
|
|
39
|
+
projects(includeSubgroups: $includeSubgroups) {
|
|
40
|
+
nodes {
|
|
41
|
+
id
|
|
42
|
+
fullPath
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
`;
|
|
48
|
+
exports.GET_NAMESPACE_TYPE = (0, graphql_tag_1.gql) `
|
|
49
|
+
query GetNamespaceType($namespacePath: ID!) {
|
|
50
|
+
namespace(fullPath: $namespacePath) {
|
|
51
|
+
__typename
|
|
52
|
+
fullPath
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
`;
|
|
36
56
|
exports.GET_WORK_ITEMS = (0, graphql_tag_1.gql) `
|
|
37
57
|
query GetWorkItems($groupPath: ID!, $types: [IssueType!], $first: Int, $after: String) {
|
|
38
58
|
group(fullPath: $groupPath) {
|
|
@@ -239,7 +259,6 @@ exports.GET_WORK_ITEMS = (0, graphql_tag_1.gql) `
|
|
|
239
259
|
... on WorkItemWidgetLinkedItems {
|
|
240
260
|
linkedItems {
|
|
241
261
|
nodes {
|
|
242
|
-
linkId
|
|
243
262
|
linkType
|
|
244
263
|
workItem {
|
|
245
264
|
id
|
|
@@ -467,12 +486,9 @@ exports.GET_PROJECT_WORK_ITEMS = (0, graphql_tag_1.gql) `
|
|
|
467
486
|
startDate
|
|
468
487
|
dueDate
|
|
469
488
|
isFixed
|
|
470
|
-
fixed
|
|
471
|
-
inherited
|
|
472
489
|
}
|
|
473
490
|
... on WorkItemWidgetHealthStatus {
|
|
474
491
|
healthStatus
|
|
475
|
-
allowsScopedLabels
|
|
476
492
|
}
|
|
477
493
|
... on WorkItemWidgetWeight {
|
|
478
494
|
weight
|
|
@@ -547,10 +563,7 @@ exports.GET_PROJECT_WORK_ITEMS = (0, graphql_tag_1.gql) `
|
|
|
547
563
|
... on WorkItemWidgetLinkedItems {
|
|
548
564
|
linkedItems {
|
|
549
565
|
nodes {
|
|
550
|
-
id
|
|
551
566
|
linkType
|
|
552
|
-
linkCreatedAt
|
|
553
|
-
linkUpdatedAt
|
|
554
567
|
workItem {
|
|
555
568
|
id
|
|
556
569
|
iid
|
|
@@ -595,17 +608,19 @@ exports.GET_PROJECT_WORK_ITEMS = (0, graphql_tag_1.gql) `
|
|
|
595
608
|
nodes {
|
|
596
609
|
id
|
|
597
610
|
name
|
|
598
|
-
description
|
|
599
611
|
active
|
|
600
612
|
}
|
|
601
613
|
}
|
|
602
|
-
|
|
614
|
+
closingMergeRequests {
|
|
603
615
|
nodes {
|
|
604
616
|
id
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
617
|
+
mergeRequest {
|
|
618
|
+
id
|
|
619
|
+
iid
|
|
620
|
+
title
|
|
621
|
+
state
|
|
622
|
+
webUrl
|
|
623
|
+
}
|
|
609
624
|
}
|
|
610
625
|
}
|
|
611
626
|
}
|
|
@@ -630,7 +645,9 @@ exports.GET_PROJECT_WORK_ITEMS = (0, graphql_tag_1.gql) `
|
|
|
630
645
|
nodes {
|
|
631
646
|
id
|
|
632
647
|
timeSpent
|
|
633
|
-
note
|
|
648
|
+
note {
|
|
649
|
+
body
|
|
650
|
+
}
|
|
634
651
|
spentAt
|
|
635
652
|
user {
|
|
636
653
|
id
|
|
@@ -647,33 +664,16 @@ exports.GET_PROJECT_WORK_ITEMS = (0, graphql_tag_1.gql) `
|
|
|
647
664
|
}
|
|
648
665
|
}
|
|
649
666
|
... on WorkItemWidgetCustomFields {
|
|
650
|
-
|
|
651
|
-
nodes {
|
|
652
|
-
id
|
|
653
|
-
name
|
|
654
|
-
value
|
|
655
|
-
fieldType
|
|
656
|
-
}
|
|
657
|
-
}
|
|
667
|
+
type
|
|
658
668
|
}
|
|
659
669
|
... on WorkItemWidgetErrorTracking {
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
nodes {
|
|
663
|
-
id
|
|
664
|
-
status
|
|
665
|
-
title
|
|
666
|
-
firstSeen
|
|
667
|
-
lastSeen
|
|
668
|
-
}
|
|
669
|
-
}
|
|
670
|
+
identifier
|
|
671
|
+
status
|
|
670
672
|
}
|
|
671
673
|
... on WorkItemWidgetLinkedResources {
|
|
672
674
|
linkedResources {
|
|
673
675
|
nodes {
|
|
674
|
-
|
|
675
|
-
type
|
|
676
|
-
title
|
|
676
|
+
url
|
|
677
677
|
}
|
|
678
678
|
}
|
|
679
679
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workItems.js","sourceRoot":"","sources":["../../src/graphql/workItems.ts"],"names":[],"mappings":";;;AAAA,6CAAkC;AAuDrB,QAAA,mBAAmB,GAAG;IACjC,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,aAAa;IAC1B,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,OAAO;IACd,kBAAkB,EAAE,oBAAoB;IACxC,aAAa,EAAE,eAAe;IAC9B,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,kBAAkB,EAAE,oBAAoB;IACxC,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,kBAAkB,EAAE,oBAAoB;IACxC,WAAW,EAAE,aAAa;IAC1B,YAAY,EAAE,cAAc;IAC5B,KAAK,EAAE,OAAO;IAEd,YAAY,EAAE,cAAc;IAC5B,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,aAAa;IAC1B,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,kBAAkB,EAAE,oBAAoB;IACxC,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,gBAAgB;IAChC,gBAAgB,EAAE,kBAAkB;IACpC,eAAe,EAAE,iBAAiB;CAC1B,CAAC;AAgWE,QAAA,cAAc,GAGvB,IAAA,iBAAG,EAAA
|
|
1
|
+
{"version":3,"file":"workItems.js","sourceRoot":"","sources":["../../src/graphql/workItems.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
|
@@ -24,16 +24,16 @@ exports.server = new index_js_1.Server({
|
|
|
24
24
|
});
|
|
25
25
|
function determineTransportMode() {
|
|
26
26
|
const args = process.argv.slice(2);
|
|
27
|
-
logger_1.logger.info(`Transport mode detection: args=${JSON.stringify(args)},
|
|
28
|
-
if (args.includes('
|
|
29
|
-
logger_1.logger.info('Selected
|
|
30
|
-
return '
|
|
27
|
+
logger_1.logger.info(`Transport mode detection: args=${JSON.stringify(args)}, PORT=${config_1.PORT}`);
|
|
28
|
+
if (args.includes('stdio')) {
|
|
29
|
+
logger_1.logger.info('Selected stdio mode (explicit argument)');
|
|
30
|
+
return 'stdio';
|
|
31
31
|
}
|
|
32
|
-
if (
|
|
33
|
-
logger_1.logger.info('Selected
|
|
34
|
-
return '
|
|
32
|
+
if (process.env.PORT) {
|
|
33
|
+
logger_1.logger.info('Selected dual transport mode (SSE + StreamableHTTP) - PORT environment variable detected');
|
|
34
|
+
return 'dual';
|
|
35
35
|
}
|
|
36
|
-
logger_1.logger.info('
|
|
36
|
+
logger_1.logger.info('Selected stdio mode (no PORT environment variable)');
|
|
37
37
|
return 'stdio';
|
|
38
38
|
}
|
|
39
39
|
async function startServer() {
|
|
@@ -85,11 +85,11 @@ async function startServer() {
|
|
|
85
85
|
const app = (0, express_1.default)();
|
|
86
86
|
app.use(express_1.default.json());
|
|
87
87
|
const streamableTransports = {};
|
|
88
|
-
app.
|
|
88
|
+
app.all('/mcp', async (req, res) => {
|
|
89
89
|
const sessionId = req.headers['mcp-session-id'];
|
|
90
90
|
try {
|
|
91
91
|
let transport;
|
|
92
|
-
if (sessionId in streamableTransports) {
|
|
92
|
+
if (sessionId && sessionId in streamableTransports) {
|
|
93
93
|
transport = streamableTransports[sessionId];
|
|
94
94
|
await transport.handleRequest(req, res, req.body);
|
|
95
95
|
}
|
|
@@ -98,7 +98,76 @@ async function startServer() {
|
|
|
98
98
|
sessionIdGenerator: () => Math.random().toString(36).substring(7),
|
|
99
99
|
onsessioninitialized: (newSessionId) => {
|
|
100
100
|
streamableTransports[newSessionId] = transport;
|
|
101
|
-
logger_1.logger.info(`
|
|
101
|
+
logger_1.logger.info(`MCP session initialized: ${newSessionId} (method: ${req.method})`);
|
|
102
|
+
},
|
|
103
|
+
onsessionclosed: (closedSessionId) => {
|
|
104
|
+
delete streamableTransports[closedSessionId];
|
|
105
|
+
logger_1.logger.info(`MCP session closed: ${closedSessionId}`);
|
|
106
|
+
},
|
|
107
|
+
});
|
|
108
|
+
await exports.server.connect(transport);
|
|
109
|
+
await transport.handleRequest(req, res, req.body);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
logger_1.logger.error({ err: error }, 'Error in StreamableHTTP transport');
|
|
114
|
+
res.status(500).json({ error: 'Internal server error' });
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
app.listen(Number(config_1.PORT), config_1.HOST, () => {
|
|
118
|
+
const url = `http://${config_1.HOST}:${config_1.PORT}`;
|
|
119
|
+
logger_1.logger.info(`GitLab MCP Server running on ${url}/mcp`);
|
|
120
|
+
logger_1.logger.info('Supports both SSE (GET) and JSON-RPC (POST) on same endpoint');
|
|
121
|
+
});
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
case 'dual': {
|
|
125
|
+
logger_1.logger.info('Setting up dual transport mode (SSE + StreamableHTTP)...');
|
|
126
|
+
const app = (0, express_1.default)();
|
|
127
|
+
app.use(express_1.default.json());
|
|
128
|
+
const sseTransports = {};
|
|
129
|
+
const streamableTransports = {};
|
|
130
|
+
app.get('/sse', async (req, res) => {
|
|
131
|
+
logger_1.logger.debug('SSE endpoint hit!');
|
|
132
|
+
const transport = new sse_js_1.SSEServerTransport('/messages', res);
|
|
133
|
+
await exports.server.connect(transport);
|
|
134
|
+
const sessionId = transport.sessionId;
|
|
135
|
+
sseTransports[sessionId] = transport;
|
|
136
|
+
logger_1.logger.debug(`SSE transport created with session: ${sessionId}`);
|
|
137
|
+
});
|
|
138
|
+
app.post('/messages', async (req, res) => {
|
|
139
|
+
logger_1.logger.debug('SSE messages endpoint hit!');
|
|
140
|
+
const sessionId = req.query.sessionId;
|
|
141
|
+
if (!sessionId || !sseTransports[sessionId]) {
|
|
142
|
+
return res.status(404).json({ error: 'Session not found' });
|
|
143
|
+
}
|
|
144
|
+
try {
|
|
145
|
+
const transport = sseTransports[sessionId];
|
|
146
|
+
await transport.handlePostMessage(req, res, req.body);
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
logger_1.logger.error({ err: error }, 'Error handling SSE message');
|
|
150
|
+
res.status(500).json({ error: 'Internal server error' });
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
app.all('/mcp', async (req, res) => {
|
|
154
|
+
const sessionId = req.headers['mcp-session-id'];
|
|
155
|
+
try {
|
|
156
|
+
let transport;
|
|
157
|
+
if (sessionId && sessionId in streamableTransports) {
|
|
158
|
+
transport = streamableTransports[sessionId];
|
|
159
|
+
await transport.handleRequest(req, res, req.body);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
transport = new streamableHttp_js_1.StreamableHTTPServerTransport({
|
|
163
|
+
sessionIdGenerator: () => Math.random().toString(36).substring(7),
|
|
164
|
+
onsessioninitialized: (newSessionId) => {
|
|
165
|
+
streamableTransports[newSessionId] = transport;
|
|
166
|
+
logger_1.logger.info(`MCP session initialized: ${newSessionId} (method: ${req.method})`);
|
|
167
|
+
},
|
|
168
|
+
onsessionclosed: (closedSessionId) => {
|
|
169
|
+
delete streamableTransports[closedSessionId];
|
|
170
|
+
logger_1.logger.info(`MCP session closed: ${closedSessionId}`);
|
|
102
171
|
},
|
|
103
172
|
});
|
|
104
173
|
await exports.server.connect(transport);
|
|
@@ -106,13 +175,17 @@ async function startServer() {
|
|
|
106
175
|
}
|
|
107
176
|
}
|
|
108
177
|
catch (error) {
|
|
109
|
-
logger_1.logger.error({ err: error }, 'Error in
|
|
178
|
+
logger_1.logger.error({ err: error }, 'Error in StreamableHTTP transport');
|
|
110
179
|
res.status(500).json({ error: 'Internal server error' });
|
|
111
180
|
}
|
|
112
181
|
});
|
|
113
182
|
app.listen(Number(config_1.PORT), config_1.HOST, () => {
|
|
114
183
|
const url = `http://${config_1.HOST}:${config_1.PORT}`;
|
|
115
|
-
logger_1.logger.info(`GitLab MCP Server
|
|
184
|
+
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)`);
|
|
188
|
+
logger_1.logger.info('Clients can use either transport as needed');
|
|
116
189
|
});
|
|
117
190
|
break;
|
|
118
191
|
}
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|