@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
package/dist/types.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ declare const TransportModeObj: {
|
|
|
2
2
|
readonly STDIO: "stdio";
|
|
3
3
|
readonly SSE: "sse";
|
|
4
4
|
readonly STREAMABLE_HTTP: "streamable-http";
|
|
5
|
+
readonly DUAL: "dual";
|
|
5
6
|
};
|
|
6
7
|
export { TransportModeObj as TransportMode };
|
|
7
8
|
export type TransportMode = (typeof TransportModeObj)[keyof typeof TransportModeObj];
|
package/dist/types.js
CHANGED
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AACA,MAAM,gBAAgB,GAAG;IACvB,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IACV,eAAe,EAAE,iBAAiB;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AACA,MAAM,gBAAgB,GAAG;IACvB,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IACV,eAAe,EAAE,iBAAiB;IAClC,IAAI,EAAE,MAAM;CACJ,CAAC;AAEkB,yCAAa"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function isLikelyProjectPath(namespacePath: string): boolean;
|
|
2
|
+
export declare function detectNamespaceType(namespacePath: string): Promise<'project' | 'group'>;
|
|
3
|
+
export declare function resolveNamespaceForAPI(namespacePath: string): Promise<{
|
|
4
|
+
entityType: 'projects' | 'groups';
|
|
5
|
+
encodedPath: string;
|
|
6
|
+
}>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isLikelyProjectPath = isLikelyProjectPath;
|
|
4
|
+
exports.detectNamespaceType = detectNamespaceType;
|
|
5
|
+
exports.resolveNamespaceForAPI = resolveNamespaceForAPI;
|
|
6
|
+
const fetch_1 = require("./fetch");
|
|
7
|
+
function isLikelyProjectPath(namespacePath) {
|
|
8
|
+
return namespacePath.includes('/');
|
|
9
|
+
}
|
|
10
|
+
async function detectNamespaceType(namespacePath) {
|
|
11
|
+
if (isLikelyProjectPath(namespacePath)) {
|
|
12
|
+
const isProject = await verifyNamespaceType(namespacePath, 'project');
|
|
13
|
+
if (isProject)
|
|
14
|
+
return 'project';
|
|
15
|
+
const isGroup = await verifyNamespaceType(namespacePath, 'group');
|
|
16
|
+
if (isGroup)
|
|
17
|
+
return 'group';
|
|
18
|
+
return 'project';
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
const isGroup = await verifyNamespaceType(namespacePath, 'group');
|
|
22
|
+
if (isGroup)
|
|
23
|
+
return 'group';
|
|
24
|
+
const isProject = await verifyNamespaceType(namespacePath, 'project');
|
|
25
|
+
if (isProject)
|
|
26
|
+
return 'project';
|
|
27
|
+
return 'group';
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
async function verifyNamespaceType(namespacePath, type) {
|
|
31
|
+
try {
|
|
32
|
+
const entityType = type === 'project' ? 'projects' : 'groups';
|
|
33
|
+
const apiUrl = `${process.env.GITLAB_API_URL}/api/v4/${entityType}/${encodeURIComponent(namespacePath)}`;
|
|
34
|
+
const response = await (0, fetch_1.enhancedFetch)(apiUrl, {
|
|
35
|
+
headers: {
|
|
36
|
+
Authorization: `Bearer ${process.env.GITLAB_TOKEN}`,
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
return response.ok;
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async function resolveNamespaceForAPI(namespacePath) {
|
|
46
|
+
const namespaceType = await detectNamespaceType(namespacePath);
|
|
47
|
+
return {
|
|
48
|
+
entityType: namespaceType === 'project' ? 'projects' : 'groups',
|
|
49
|
+
encodedPath: encodeURIComponent(namespacePath),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=namespace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../src/utils/namespace.ts"],"names":[],"mappings":";;AAMA,kDAEC;AAMD,kDAuBC;AA8BD,wDASC;AA5ED,mCAAwC;AAMxC,SAAgB,mBAAmB,CAAC,aAAqB;IACvD,OAAO,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC;AAMM,KAAK,UAAU,mBAAmB,CAAC,aAAqB;IAE7D,IAAI,mBAAmB,CAAC,aAAa,CAAC,EAAE,CAAC;QAEvC,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QACtE,IAAI,SAAS;YAAE,OAAO,SAAS,CAAC;QAEhC,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAClE,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;QAG5B,OAAO,SAAS,CAAC;IACnB,CAAC;SAAM,CAAC;QAEN,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAClE,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;QAE5B,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QACtE,IAAI,SAAS;YAAE,OAAO,SAAS,CAAC;QAGhC,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAKD,KAAK,UAAU,mBAAmB,CAChC,aAAqB,EACrB,IAAyB;IAEzB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC9D,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,WAAW,UAAU,IAAI,kBAAkB,CAAC,aAAa,CAAC,EAAE,CAAC;QAEzG,MAAM,QAAQ,GAAG,MAAM,IAAA,qBAAa,EAAC,MAAM,EAAE;YAC3C,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE;aACpD;SACF,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QAEP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAMM,KAAK,UAAU,sBAAsB,CAAC,aAAqB;IAIhE,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAC/D,OAAO;QACL,UAAU,EAAE,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ;QAC/D,WAAW,EAAE,kBAAkB,CAAC,aAAa,CAAC;KAC/C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export type QueryType = 'email' | 'username' | 'name';
|
|
2
|
+
export interface QueryPattern {
|
|
3
|
+
type: QueryType;
|
|
4
|
+
hasTransliteration: boolean;
|
|
5
|
+
originalQuery: string;
|
|
6
|
+
transliteratedQuery?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface UserSearchParams {
|
|
9
|
+
username?: string;
|
|
10
|
+
public_email?: string;
|
|
11
|
+
search?: string;
|
|
12
|
+
active?: boolean;
|
|
13
|
+
humans?: boolean;
|
|
14
|
+
without_project_bots?: boolean;
|
|
15
|
+
[key: string]: unknown;
|
|
16
|
+
}
|
|
17
|
+
export interface SmartSearchResult {
|
|
18
|
+
users: unknown[];
|
|
19
|
+
searchMetadata: {
|
|
20
|
+
query: string;
|
|
21
|
+
pattern: QueryPattern;
|
|
22
|
+
searchPhases: Array<{
|
|
23
|
+
phase: string;
|
|
24
|
+
params: UserSearchParams;
|
|
25
|
+
resultCount: number;
|
|
26
|
+
}>;
|
|
27
|
+
totalApiCalls: number;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export declare function transliterateText(text: string): string;
|
|
31
|
+
export declare function hasNonLatin(text: string): boolean;
|
|
32
|
+
export declare function analyzeQuery(query: string): QueryPattern;
|
|
33
|
+
export declare function smartUserSearch(query: string, additionalParams?: Partial<UserSearchParams>): Promise<SmartSearchResult>;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.transliterateText = transliterateText;
|
|
4
|
+
exports.hasNonLatin = hasNonLatin;
|
|
5
|
+
exports.analyzeQuery = analyzeQuery;
|
|
6
|
+
exports.smartUserSearch = smartUserSearch;
|
|
7
|
+
const fetch_1 = require("./fetch");
|
|
8
|
+
const transliteration_1 = require("transliteration");
|
|
9
|
+
function transliterateText(text) {
|
|
10
|
+
return (0, transliteration_1.transliterate)(text);
|
|
11
|
+
}
|
|
12
|
+
function hasNonLatin(text) {
|
|
13
|
+
return /[^\u0000-\u007F\u0080-\u00FF]/.test(text);
|
|
14
|
+
}
|
|
15
|
+
function analyzeQuery(query) {
|
|
16
|
+
const trimmedQuery = query.trim();
|
|
17
|
+
if (/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(trimmedQuery)) {
|
|
18
|
+
return {
|
|
19
|
+
type: 'email',
|
|
20
|
+
hasTransliteration: false,
|
|
21
|
+
originalQuery: trimmedQuery,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
if (trimmedQuery.length >= 3 && trimmedQuery.length <= 30 && !/\s/.test(trimmedQuery)) {
|
|
25
|
+
const hasTransliterationNeeded = hasNonLatin(trimmedQuery);
|
|
26
|
+
return {
|
|
27
|
+
type: 'username',
|
|
28
|
+
hasTransliteration: hasTransliterationNeeded,
|
|
29
|
+
originalQuery: trimmedQuery,
|
|
30
|
+
transliteratedQuery: hasTransliterationNeeded ? transliterateText(trimmedQuery) : undefined,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const hasTransliterationNeeded = hasNonLatin(trimmedQuery);
|
|
34
|
+
return {
|
|
35
|
+
type: 'name',
|
|
36
|
+
hasTransliteration: hasTransliterationNeeded,
|
|
37
|
+
originalQuery: trimmedQuery,
|
|
38
|
+
transliteratedQuery: hasTransliterationNeeded ? transliterateText(trimmedQuery) : undefined,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
async function callUsersAPI(params) {
|
|
42
|
+
const queryParams = new URLSearchParams();
|
|
43
|
+
const defaultParams = {
|
|
44
|
+
active: true,
|
|
45
|
+
humans: true,
|
|
46
|
+
...params,
|
|
47
|
+
};
|
|
48
|
+
Object.entries(defaultParams).forEach(([key, value]) => {
|
|
49
|
+
if (value !== undefined) {
|
|
50
|
+
queryParams.set(key, String(value));
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
const apiUrl = `${process.env.GITLAB_API_URL}/api/v4/users?${queryParams}`;
|
|
54
|
+
const response = await (0, fetch_1.enhancedFetch)(apiUrl, {
|
|
55
|
+
headers: {
|
|
56
|
+
Authorization: `Bearer ${process.env.GITLAB_TOKEN}`,
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
if (!response.ok) {
|
|
60
|
+
throw new Error(`GitLab API error: ${response.status} ${response.statusText}`);
|
|
61
|
+
}
|
|
62
|
+
const users = (await response.json());
|
|
63
|
+
return Array.isArray(users) ? users : [];
|
|
64
|
+
}
|
|
65
|
+
async function smartUserSearch(query, additionalParams = {}) {
|
|
66
|
+
const pattern = analyzeQuery(query);
|
|
67
|
+
const searchPhases = [];
|
|
68
|
+
let users = [];
|
|
69
|
+
let totalApiCalls = 0;
|
|
70
|
+
let targetParams;
|
|
71
|
+
switch (pattern.type) {
|
|
72
|
+
case 'email':
|
|
73
|
+
targetParams = { public_email: pattern.originalQuery, ...additionalParams };
|
|
74
|
+
break;
|
|
75
|
+
case 'username':
|
|
76
|
+
targetParams = { username: pattern.originalQuery, ...additionalParams };
|
|
77
|
+
break;
|
|
78
|
+
case 'name':
|
|
79
|
+
targetParams = { search: pattern.originalQuery, ...additionalParams };
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
users = await callUsersAPI(targetParams);
|
|
84
|
+
totalApiCalls++;
|
|
85
|
+
searchPhases.push({
|
|
86
|
+
phase: `targeted-${pattern.type}`,
|
|
87
|
+
params: targetParams,
|
|
88
|
+
resultCount: users.length,
|
|
89
|
+
});
|
|
90
|
+
if (users.length > 0) {
|
|
91
|
+
return {
|
|
92
|
+
users,
|
|
93
|
+
searchMetadata: {
|
|
94
|
+
query,
|
|
95
|
+
pattern,
|
|
96
|
+
searchPhases,
|
|
97
|
+
totalApiCalls,
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
if (pattern.type !== 'name') {
|
|
102
|
+
const broadParams = { search: pattern.originalQuery, ...additionalParams };
|
|
103
|
+
users = await callUsersAPI(broadParams);
|
|
104
|
+
totalApiCalls++;
|
|
105
|
+
searchPhases.push({
|
|
106
|
+
phase: 'broad-search',
|
|
107
|
+
params: broadParams,
|
|
108
|
+
resultCount: users.length,
|
|
109
|
+
});
|
|
110
|
+
if (users.length > 0) {
|
|
111
|
+
return {
|
|
112
|
+
users,
|
|
113
|
+
searchMetadata: {
|
|
114
|
+
query,
|
|
115
|
+
pattern,
|
|
116
|
+
searchPhases,
|
|
117
|
+
totalApiCalls,
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
if (pattern.hasTransliteration && pattern.transliteratedQuery) {
|
|
123
|
+
const translitParams = { search: pattern.transliteratedQuery, ...additionalParams };
|
|
124
|
+
users = await callUsersAPI(translitParams);
|
|
125
|
+
totalApiCalls++;
|
|
126
|
+
searchPhases.push({
|
|
127
|
+
phase: 'transliteration',
|
|
128
|
+
params: translitParams,
|
|
129
|
+
resultCount: users.length,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
console.error('Smart user search error:', error);
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
users,
|
|
138
|
+
searchMetadata: {
|
|
139
|
+
query,
|
|
140
|
+
pattern,
|
|
141
|
+
searchPhases,
|
|
142
|
+
totalApiCalls,
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=smart-user-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smart-user-search.js","sourceRoot":"","sources":["../../src/utils/smart-user-search.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@structured-world/gitlab-mcp",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.2.0",
|
|
4
4
|
"description": "MCP server for using the GitLab API",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Dmitry Prudnikov <mail@polaz.com>",
|
|
@@ -62,6 +62,7 @@
|
|
|
62
62
|
"pino": "^9.9.5",
|
|
63
63
|
"pino-pretty": "^13.1.1",
|
|
64
64
|
"socks-proxy-agent": "^8.0.5",
|
|
65
|
+
"transliteration": "^2.3.5",
|
|
65
66
|
"zod": "^3.23.8",
|
|
66
67
|
"zod-to-json-schema": "^3.24.6"
|
|
67
68
|
},
|
|
Binary file
|