mcp4openapi 0.3.1 → 0.3.4
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 +7 -0
- package/dist/src/auth/oauth-provider.d.ts +1 -0
- package/dist/src/auth/oauth-provider.d.ts.map +1 -1
- package/dist/src/auth/oauth-provider.js +17 -0
- package/dist/src/auth/oauth-provider.js.map +1 -1
- package/dist/src/core/cli-config.d.ts.map +1 -1
- package/dist/src/core/cli-config.js +2 -0
- package/dist/src/core/cli-config.js.map +1 -1
- package/dist/src/core/index.d.ts.map +1 -1
- package/dist/src/core/index.js +18 -3
- package/dist/src/core/index.js.map +1 -1
- package/dist/src/index.js +0 -0
- package/dist/src/profile/profile-allowlist.d.ts +18 -0
- package/dist/src/profile/profile-allowlist.d.ts.map +1 -0
- package/dist/src/profile/profile-allowlist.js +68 -0
- package/dist/src/profile/profile-allowlist.js.map +1 -0
- package/dist/src/profile/profile-registry.d.ts +5 -0
- package/dist/src/profile/profile-registry.d.ts.map +1 -1
- package/dist/src/profile/profile-registry.js +38 -14
- package/dist/src/profile/profile-registry.js.map +1 -1
- package/dist/src/security/ssrf-validator.d.ts +31 -0
- package/dist/src/security/ssrf-validator.d.ts.map +1 -0
- package/dist/src/security/ssrf-validator.js +190 -0
- package/dist/src/security/ssrf-validator.js.map +1 -0
- package/package.json +2 -2
- package/profiles/gitlab/developer-profile-oauth.json +445 -81
- package/profiles/gitlab/developer-profile-oauth.test.json +1037 -12
- package/profiles/gitlab/openapi.yaml +1420 -165
- package/profiles/gitlab/profile-optimized-oauth.json +928 -0
- package/profiles/gitlab/profile-optimized-oauth.test.json +1606 -0
- package/profiles/grafana/openapi.json +28078 -0
- package/profiles/grafana/profile.json +1083 -0
- package/profiles/grafana/profile.test.json +235 -0
- package/profiles/mattermost/openapi.yaml +27434 -0
- package/profiles/mattermost/profile.json +463 -0
- package/profiles/mattermost/profile.test.json +607 -0
- package/profiles/n8n/profile-optimized.json +1002 -364
- package/profiles/n8n/profile-optimized.test.json +43 -43
- package/dist/src/argument-normalizer.d.ts +0 -5
- package/dist/src/argument-normalizer.d.ts.map +0 -1
- package/dist/src/argument-normalizer.js +0 -61
- package/dist/src/argument-normalizer.js.map +0 -1
- package/dist/src/cli-config.d.ts +0 -9
- package/dist/src/cli-config.d.ts.map +0 -1
- package/dist/src/cli-config.js +0 -111
- package/dist/src/cli-config.js.map +0 -1
- package/dist/src/composite-executor.d.ts +0 -77
- package/dist/src/composite-executor.d.ts.map +0 -1
- package/dist/src/composite-executor.js +0 -193
- package/dist/src/composite-executor.js.map +0 -1
- package/dist/src/constants.d.ts +0 -85
- package/dist/src/constants.d.ts.map +0 -1
- package/dist/src/constants.js +0 -85
- package/dist/src/constants.js.map +0 -1
- package/dist/src/dag-executor.d.ts +0 -49
- package/dist/src/dag-executor.d.ts.map +0 -1
- package/dist/src/dag-executor.js +0 -138
- package/dist/src/dag-executor.js.map +0 -1
- package/dist/src/errors.d.ts +0 -59
- package/dist/src/errors.d.ts.map +0 -1
- package/dist/src/errors.js +0 -119
- package/dist/src/errors.js.map +0 -1
- package/dist/src/filtering.d.ts +0 -19
- package/dist/src/filtering.d.ts.map +0 -1
- package/dist/src/filtering.js +0 -292
- package/dist/src/filtering.js.map +0 -1
- package/dist/src/http-client-factory.d.ts +0 -62
- package/dist/src/http-client-factory.d.ts.map +0 -1
- package/dist/src/http-client-factory.js +0 -133
- package/dist/src/http-client-factory.js.map +0 -1
- package/dist/src/http-transport-config.d.ts +0 -6
- package/dist/src/http-transport-config.d.ts.map +0 -1
- package/dist/src/http-transport-config.js +0 -47
- package/dist/src/http-transport-config.js.map +0 -1
- package/dist/src/http-transport.d.ts +0 -316
- package/dist/src/http-transport.d.ts.map +0 -1
- package/dist/src/http-transport.js +0 -2412
- package/dist/src/http-transport.js.map +0 -1
- package/dist/src/interceptors.d.ts +0 -116
- package/dist/src/interceptors.d.ts.map +0 -1
- package/dist/src/interceptors.js +0 -392
- package/dist/src/interceptors.js.map +0 -1
- package/dist/src/jsonrpc-validator.d.ts +0 -27
- package/dist/src/jsonrpc-validator.d.ts.map +0 -1
- package/dist/src/jsonrpc-validator.js +0 -58
- package/dist/src/jsonrpc-validator.js.map +0 -1
- package/dist/src/logger.d.ts +0 -59
- package/dist/src/logger.d.ts.map +0 -1
- package/dist/src/logger.js +0 -177
- package/dist/src/logger.js.map +0 -1
- package/dist/src/mcp-server-manager.d.ts +0 -20
- package/dist/src/mcp-server-manager.d.ts.map +0 -1
- package/dist/src/mcp-server-manager.js +0 -38
- package/dist/src/mcp-server-manager.js.map +0 -1
- package/dist/src/mcp-server.d.ts +0 -203
- package/dist/src/mcp-server.d.ts.map +0 -1
- package/dist/src/mcp-server.js +0 -1369
- package/dist/src/mcp-server.js.map +0 -1
- package/dist/src/metrics.d.ts +0 -97
- package/dist/src/metrics.d.ts.map +0 -1
- package/dist/src/metrics.js +0 -273
- package/dist/src/metrics.js.map +0 -1
- package/dist/src/naming-warnings.d.ts +0 -23
- package/dist/src/naming-warnings.d.ts.map +0 -1
- package/dist/src/naming-warnings.js +0 -83
- package/dist/src/naming-warnings.js.map +0 -1
- package/dist/src/naming.d.ts +0 -58
- package/dist/src/naming.d.ts.map +0 -1
- package/dist/src/naming.js +0 -510
- package/dist/src/naming.js.map +0 -1
- package/dist/src/oauth-provider.d.ts +0 -131
- package/dist/src/oauth-provider.d.ts.map +0 -1
- package/dist/src/oauth-provider.js +0 -836
- package/dist/src/oauth-provider.js.map +0 -1
- package/dist/src/openapi-parser.d.ts +0 -70
- package/dist/src/openapi-parser.d.ts.map +0 -1
- package/dist/src/openapi-parser.js +0 -436
- package/dist/src/openapi-parser.js.map +0 -1
- package/dist/src/profile-loader.d.ts +0 -78
- package/dist/src/profile-loader.d.ts.map +0 -1
- package/dist/src/profile-loader.js +0 -483
- package/dist/src/profile-loader.js.map +0 -1
- package/dist/src/profile-registry.d.ts +0 -18
- package/dist/src/profile-registry.d.ts.map +0 -1
- package/dist/src/profile-registry.js +0 -26
- package/dist/src/profile-registry.js.map +0 -1
- package/dist/src/profile-resolver.d.ts +0 -19
- package/dist/src/profile-resolver.d.ts.map +0 -1
- package/dist/src/profile-resolver.js +0 -167
- package/dist/src/profile-resolver.js.map +0 -1
- package/dist/src/proxy-executor.d.ts +0 -86
- package/dist/src/proxy-executor.d.ts.map +0 -1
- package/dist/src/proxy-executor.js +0 -497
- package/dist/src/proxy-executor.js.map +0 -1
- package/dist/src/schema-validator.d.ts +0 -30
- package/dist/src/schema-validator.d.ts.map +0 -1
- package/dist/src/schema-validator.js +0 -128
- package/dist/src/schema-validator.js.map +0 -1
- package/dist/src/startup-profile.d.ts +0 -17
- package/dist/src/startup-profile.d.ts.map +0 -1
- package/dist/src/startup-profile.js +0 -30
- package/dist/src/startup-profile.js.map +0 -1
- package/dist/src/startup-validation.d.ts +0 -11
- package/dist/src/startup-validation.d.ts.map +0 -1
- package/dist/src/startup-validation.js +0 -21
- package/dist/src/startup-validation.js.map +0 -1
- package/dist/src/tool-filter.d.ts +0 -65
- package/dist/src/tool-filter.d.ts.map +0 -1
- package/dist/src/tool-filter.js +0 -471
- package/dist/src/tool-filter.js.map +0 -1
- package/dist/src/tool-generator.d.ts +0 -67
- package/dist/src/tool-generator.d.ts.map +0 -1
- package/dist/src/tool-generator.js +0 -182
- package/dist/src/tool-generator.js.map +0 -1
- package/dist/src/validation-utils.d.ts +0 -49
- package/dist/src/validation-utils.d.ts.map +0 -1
- package/dist/src/validation-utils.js +0 -138
- package/dist/src/validation-utils.js.map +0 -1
- package/profiles/gitlab/developer-profile.json +0 -1508
- package/profiles/gitlab/developer-profile.test.json +0 -3432
package/dist/src/tool-filter.js
DELETED
|
@@ -1,471 +0,0 @@
|
|
|
1
|
-
import { ConfigurationError, ValidationError } from './errors.js';
|
|
2
|
-
const MAX_REGEX_LENGTH = 100;
|
|
3
|
-
const MAX_HEADER_ENTRY_LENGTH = 255;
|
|
4
|
-
const DEFAULT_MAX_SESSION_ENTRIES = 100;
|
|
5
|
-
export function normalizeToolName(name) {
|
|
6
|
-
return name.normalize('NFC');
|
|
7
|
-
}
|
|
8
|
-
export function normalizeToolFilterHeaderValue(value) {
|
|
9
|
-
if (value === undefined || value === null) {
|
|
10
|
-
return undefined;
|
|
11
|
-
}
|
|
12
|
-
const trimmed = value.trim();
|
|
13
|
-
return trimmed.length > 0 ? trimmed : '';
|
|
14
|
-
}
|
|
15
|
-
export function parseToolFilterConfig(env) {
|
|
16
|
-
const allowListRaw = env.MCP4_TOOL_FILTER_ALLOW_NAMES;
|
|
17
|
-
const allowRegexRaw = env.MCP4_TOOL_FILTER_ALLOW_NAME_REGEX;
|
|
18
|
-
const denyListRaw = env.MCP4_TOOL_FILTER_DENY_NAMES;
|
|
19
|
-
const denyRegexRaw = env.MCP4_TOOL_FILTER_DENY_NAME_REGEX;
|
|
20
|
-
const allowCategoriesRaw = env.MCP4_TOOL_FILTER_ALLOW_CATEGORIES;
|
|
21
|
-
const hasAnyEnv = allowListRaw !== undefined ||
|
|
22
|
-
allowRegexRaw !== undefined ||
|
|
23
|
-
denyListRaw !== undefined ||
|
|
24
|
-
denyRegexRaw !== undefined ||
|
|
25
|
-
allowCategoriesRaw !== undefined;
|
|
26
|
-
if (!hasAnyEnv) {
|
|
27
|
-
return undefined;
|
|
28
|
-
}
|
|
29
|
-
const allowListEntries = parseCsvList(allowListRaw);
|
|
30
|
-
const denyListEntries = parseCsvList(denyListRaw);
|
|
31
|
-
const allowRegexEntries = parseCsvList(allowRegexRaw);
|
|
32
|
-
const denyRegexEntries = parseCsvList(denyRegexRaw);
|
|
33
|
-
const allowCategoryEntries = parseCsvList(allowCategoriesRaw);
|
|
34
|
-
const allowList = new Set(allowListEntries.map(normalizeToolName));
|
|
35
|
-
const denyList = new Set(denyListEntries.map(normalizeToolName));
|
|
36
|
-
const allowRegex = allowRegexEntries.map(pattern => compileRegex(pattern, 'MCP4_TOOL_FILTER_ALLOW_NAME_REGEX', ConfigurationError));
|
|
37
|
-
const denyRegex = denyRegexEntries.map(pattern => compileRegex(pattern, 'MCP4_TOOL_FILTER_DENY_NAME_REGEX', ConfigurationError));
|
|
38
|
-
const allowCategories = parseAllowCategoryEntries(allowCategoryEntries, 'MCP4_TOOL_FILTER_ALLOW_CATEGORIES', ConfigurationError);
|
|
39
|
-
return {
|
|
40
|
-
allowList,
|
|
41
|
-
denyList,
|
|
42
|
-
allowRegex,
|
|
43
|
-
denyRegex,
|
|
44
|
-
allowCategories,
|
|
45
|
-
hasAllowRules: allowListEntries.length > 0 ||
|
|
46
|
-
allowRegexEntries.length > 0 ||
|
|
47
|
-
allowCategories.size > 0,
|
|
48
|
-
sources: {
|
|
49
|
-
allowList: allowListEntries,
|
|
50
|
-
allowRegex: allowRegexEntries,
|
|
51
|
-
denyList: denyListEntries,
|
|
52
|
-
denyRegex: denyRegexEntries,
|
|
53
|
-
allowCategories: allowCategoryEntries,
|
|
54
|
-
},
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
export function parseSessionToolFilterHeader(headerValue, maxEntries = getSessionToolFilterMaxEntries()) {
|
|
58
|
-
const normalizedHeader = normalizeToolFilterHeaderValue(headerValue) ?? '';
|
|
59
|
-
if (!normalizedHeader) {
|
|
60
|
-
return {
|
|
61
|
-
exactNames: new Set(),
|
|
62
|
-
regexPatterns: [],
|
|
63
|
-
allowComposite: { allowList: false, allowRead: false },
|
|
64
|
-
normalizedHeader: '',
|
|
65
|
-
rawEntries: [],
|
|
66
|
-
hasRules: false,
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
const parts = normalizedHeader.split(',').map(part => part.trim()).filter(Boolean);
|
|
70
|
-
if (parts.length > maxEntries) {
|
|
71
|
-
throw new ValidationError(`X-Mcp4-Tools contains too many entries (${parts.length} > ${maxEntries}). Reduce to ${maxEntries} or configure MCP4_TOOL_FILTER_SESSION_MAX_TOOLS.`);
|
|
72
|
-
}
|
|
73
|
-
const exactNames = new Set();
|
|
74
|
-
const regexPatterns = [];
|
|
75
|
-
const rawEntries = [];
|
|
76
|
-
const allowCompositeEntries = [];
|
|
77
|
-
for (const entry of parts) {
|
|
78
|
-
if (entry.length > MAX_HEADER_ENTRY_LENGTH) {
|
|
79
|
-
throw new ValidationError(`X-Mcp4-Tools entry exceeds 255 chars: '${entry}' (${entry.length} chars).`);
|
|
80
|
-
}
|
|
81
|
-
rawEntries.push(entry);
|
|
82
|
-
if (entry === '_allow_list' || entry === '_allow_read') {
|
|
83
|
-
allowCompositeEntries.push(entry);
|
|
84
|
-
continue;
|
|
85
|
-
}
|
|
86
|
-
if (entry.startsWith('_allow_')) {
|
|
87
|
-
throw new ValidationError('X-Mcp4-Tools supports only _allow_list or _allow_read.');
|
|
88
|
-
}
|
|
89
|
-
if (entry.startsWith('regex:')) {
|
|
90
|
-
const rawPattern = entry.slice('regex:'.length).trim();
|
|
91
|
-
if (!rawPattern) {
|
|
92
|
-
throw new ValidationError('X-Mcp4-Tools regex entry is empty.');
|
|
93
|
-
}
|
|
94
|
-
regexPatterns.push(compileRegex(rawPattern, 'X-Mcp4-Tools', ValidationError));
|
|
95
|
-
continue;
|
|
96
|
-
}
|
|
97
|
-
exactNames.add(normalizeToolName(entry));
|
|
98
|
-
}
|
|
99
|
-
const allowComposite = parseAllowCompositeEntries(allowCompositeEntries, 'X-Mcp4-Tools', ValidationError);
|
|
100
|
-
const normalizedEntries = buildNormalizedSessionEntries({
|
|
101
|
-
exactNames,
|
|
102
|
-
regexPatterns,
|
|
103
|
-
allowComposite,
|
|
104
|
-
});
|
|
105
|
-
return {
|
|
106
|
-
exactNames,
|
|
107
|
-
regexPatterns,
|
|
108
|
-
allowComposite,
|
|
109
|
-
normalizedHeader: normalizedEntries.join(', '),
|
|
110
|
-
rawEntries,
|
|
111
|
-
hasRules: exactNames.size > 0 || regexPatterns.length > 0 || allowComposite.allowList || allowComposite.allowRead,
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
export function applyToolFilter(tools, config, resolver) {
|
|
115
|
-
const reasons = new Map();
|
|
116
|
-
const allowed = [];
|
|
117
|
-
const removed = [];
|
|
118
|
-
for (const tool of tools) {
|
|
119
|
-
const normalizedName = normalizeToolName(tool.name);
|
|
120
|
-
const denyReasons = [];
|
|
121
|
-
if (config.denyList.has(normalizedName)) {
|
|
122
|
-
denyReasons.push(`deny_list:${normalizedName}`);
|
|
123
|
-
}
|
|
124
|
-
for (const regex of config.denyRegex) {
|
|
125
|
-
if (regex.test(normalizedName)) {
|
|
126
|
-
denyReasons.push(`deny_regex:${regex.source}`);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
if (denyReasons.length > 0) {
|
|
130
|
-
reasons.set(tool.name, denyReasons);
|
|
131
|
-
removed.push(tool);
|
|
132
|
-
continue;
|
|
133
|
-
}
|
|
134
|
-
if (config.hasAllowRules) {
|
|
135
|
-
const allowReasons = getAllowMatchReasons(tool, normalizedName, config, resolver);
|
|
136
|
-
if (allowReasons.length === 0) {
|
|
137
|
-
reasons.set(tool.name, getAllowFailureReasons(config));
|
|
138
|
-
removed.push(tool);
|
|
139
|
-
continue;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
allowed.push(tool);
|
|
143
|
-
}
|
|
144
|
-
return { allowed, removed, reasons };
|
|
145
|
-
}
|
|
146
|
-
export function applySessionToolFilter(tools, request, resolver) {
|
|
147
|
-
const reasons = new Map();
|
|
148
|
-
const allowedToolNames = new Set();
|
|
149
|
-
for (const tool of tools) {
|
|
150
|
-
const normalizedName = normalizeToolName(tool.name);
|
|
151
|
-
const allowReasons = getSessionAllowReasons(tool, normalizedName, request, resolver);
|
|
152
|
-
if (!request.hasRules || allowReasons.length > 0) {
|
|
153
|
-
allowedToolNames.add(tool.name);
|
|
154
|
-
continue;
|
|
155
|
-
}
|
|
156
|
-
reasons.set(tool.name, [`session_allow_list:${request.normalizedHeader || 'none'}`]);
|
|
157
|
-
}
|
|
158
|
-
return {
|
|
159
|
-
allowedToolNames,
|
|
160
|
-
reasons,
|
|
161
|
-
patterns: { allow: request.regexPatterns },
|
|
162
|
-
allowComposite: request.allowComposite,
|
|
163
|
-
normalizedHeader: request.normalizedHeader,
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
export function detectListReadOperations(tool, resolver) {
|
|
167
|
-
let isList = false;
|
|
168
|
-
let isRead = false;
|
|
169
|
-
if (tool.composite && tool.steps && resolver?.getOperationForCall) {
|
|
170
|
-
// Strict classification for composite tools:
|
|
171
|
-
// - isList: every step is a list operation
|
|
172
|
-
// - isRead: every step is a read operation
|
|
173
|
-
// Mixed list+read composites are neither list nor read.
|
|
174
|
-
// Any non-GET step (modify) makes it neither list nor read.
|
|
175
|
-
let hasAny = false;
|
|
176
|
-
let allList = true;
|
|
177
|
-
let allRead = true;
|
|
178
|
-
for (const step of tool.steps) {
|
|
179
|
-
const operation = resolver.getOperationForCall(step.call);
|
|
180
|
-
if (!operation) {
|
|
181
|
-
allList = false;
|
|
182
|
-
allRead = false;
|
|
183
|
-
continue;
|
|
184
|
-
}
|
|
185
|
-
hasAny = true;
|
|
186
|
-
const category = resolveOperationCategory(operation);
|
|
187
|
-
if (category !== 'list') {
|
|
188
|
-
allList = false;
|
|
189
|
-
}
|
|
190
|
-
if (category !== 'read') {
|
|
191
|
-
allRead = false;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
isList = hasAny && allList;
|
|
195
|
-
isRead = hasAny && allRead;
|
|
196
|
-
}
|
|
197
|
-
else if (tool.operations) {
|
|
198
|
-
for (const [action, operationId] of Object.entries(tool.operations)) {
|
|
199
|
-
if (typeof operationId === 'string' && resolver?.getOperationById) {
|
|
200
|
-
const operation = resolver.getOperationById(operationId);
|
|
201
|
-
if (operation) {
|
|
202
|
-
const category = resolveOperationCategory(operation);
|
|
203
|
-
if (category === 'list') {
|
|
204
|
-
isList = true;
|
|
205
|
-
}
|
|
206
|
-
if (category === 'read') {
|
|
207
|
-
isRead = true;
|
|
208
|
-
}
|
|
209
|
-
continue;
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
const actionValue = action.toLowerCase();
|
|
213
|
-
if (actionValue === 'list' || actionValue === 'search') {
|
|
214
|
-
isList = true;
|
|
215
|
-
}
|
|
216
|
-
if (actionValue === 'get' || actionValue === 'read') {
|
|
217
|
-
isRead = true;
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
return { isList, isRead };
|
|
222
|
-
}
|
|
223
|
-
export function validateRegexPattern(pattern) {
|
|
224
|
-
if (pattern.length > MAX_REGEX_LENGTH) {
|
|
225
|
-
return {
|
|
226
|
-
valid: false,
|
|
227
|
-
error: `Regex pattern exceeds ${MAX_REGEX_LENGTH} characters.`,
|
|
228
|
-
};
|
|
229
|
-
}
|
|
230
|
-
if (hasNestedQuantifiers(pattern)) {
|
|
231
|
-
return {
|
|
232
|
-
valid: false,
|
|
233
|
-
error: 'Regex pattern contains nested quantifiers.',
|
|
234
|
-
};
|
|
235
|
-
}
|
|
236
|
-
if (hasAmbiguousAlternation(pattern)) {
|
|
237
|
-
return {
|
|
238
|
-
valid: false,
|
|
239
|
-
error: 'Regex pattern contains alternation with a quantifier.',
|
|
240
|
-
};
|
|
241
|
-
}
|
|
242
|
-
return { valid: true };
|
|
243
|
-
}
|
|
244
|
-
export function getSessionToolFilterMaxEntries() {
|
|
245
|
-
const raw = process.env.MCP4_TOOL_FILTER_SESSION_MAX_TOOLS;
|
|
246
|
-
if (raw === undefined) {
|
|
247
|
-
return DEFAULT_MAX_SESSION_ENTRIES;
|
|
248
|
-
}
|
|
249
|
-
const parsed = parseInt(raw, 10);
|
|
250
|
-
if (Number.isNaN(parsed) || parsed <= 0) {
|
|
251
|
-
throw new ConfigurationError(`Invalid MCP4_TOOL_FILTER_SESSION_MAX_TOOLS: expected positive integer, got '${raw}'.`);
|
|
252
|
-
}
|
|
253
|
-
return parsed;
|
|
254
|
-
}
|
|
255
|
-
function parseCsvList(value) {
|
|
256
|
-
if (!value) {
|
|
257
|
-
return [];
|
|
258
|
-
}
|
|
259
|
-
return value
|
|
260
|
-
.split(',')
|
|
261
|
-
.map(part => part.trim())
|
|
262
|
-
.filter(Boolean);
|
|
263
|
-
}
|
|
264
|
-
function compileRegex(pattern, context, ErrorType) {
|
|
265
|
-
const trimmed = pattern.trim();
|
|
266
|
-
const anchored = autoAnchorPattern(trimmed);
|
|
267
|
-
const validation = validateRegexPattern(anchored);
|
|
268
|
-
if (!validation.valid) {
|
|
269
|
-
throw new ErrorType(`${context} regex '${pattern}' is invalid: ${validation.error}`);
|
|
270
|
-
}
|
|
271
|
-
try {
|
|
272
|
-
return new RegExp(anchored);
|
|
273
|
-
}
|
|
274
|
-
catch (error) {
|
|
275
|
-
throw new ErrorType(`${context} regex '${pattern}' is invalid: ${error.message}`);
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
function autoAnchorPattern(pattern) {
|
|
279
|
-
const anchoredStart = pattern.startsWith('^') ? pattern : `^${pattern}`;
|
|
280
|
-
const anchoredEnd = anchoredStart.endsWith('$') ? anchoredStart : `${anchoredStart}$`;
|
|
281
|
-
return anchoredEnd;
|
|
282
|
-
}
|
|
283
|
-
function hasNestedQuantifiers(pattern) {
|
|
284
|
-
const nested = /\((?:[^\\]|\\.)*?[+*{](?:[^\\]|\\.)*?\)[+*{]/;
|
|
285
|
-
return nested.test(pattern);
|
|
286
|
-
}
|
|
287
|
-
function hasAmbiguousAlternation(pattern) {
|
|
288
|
-
const alternation = /\((?:[^\\]|\\.)*?\|(?:[^\\]|\\.)*?\)[+*{]/;
|
|
289
|
-
return alternation.test(pattern);
|
|
290
|
-
}
|
|
291
|
-
function parseAllowCompositeEntries(entries, context, ErrorType) {
|
|
292
|
-
let allowList = false;
|
|
293
|
-
let allowRead = false;
|
|
294
|
-
for (const entry of entries) {
|
|
295
|
-
if (entry === '_allow_list') {
|
|
296
|
-
allowList = true;
|
|
297
|
-
}
|
|
298
|
-
else if (entry === '_allow_read') {
|
|
299
|
-
allowRead = true;
|
|
300
|
-
}
|
|
301
|
-
else if (entry) {
|
|
302
|
-
throw new ErrorType(`${context} supports only _allow_list or _allow_read values.`);
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
return { allowList, allowRead };
|
|
306
|
-
}
|
|
307
|
-
function parseAllowCategoryEntries(entries, context, ErrorType) {
|
|
308
|
-
const categories = new Set();
|
|
309
|
-
for (const entry of entries) {
|
|
310
|
-
if (!entry) {
|
|
311
|
-
continue;
|
|
312
|
-
}
|
|
313
|
-
const normalized = entry.trim().toLowerCase();
|
|
314
|
-
if (normalized === 'list' || normalized === 'read') {
|
|
315
|
-
categories.add(normalized);
|
|
316
|
-
continue;
|
|
317
|
-
}
|
|
318
|
-
throw new ErrorType(`${context} supports only 'list' and/or 'read' values.`);
|
|
319
|
-
}
|
|
320
|
-
return categories;
|
|
321
|
-
}
|
|
322
|
-
function resolveOperationCategory(operation) {
|
|
323
|
-
const method = operation.method.toLowerCase();
|
|
324
|
-
if (method === 'get') {
|
|
325
|
-
const hasPathParams = operation.parameters.some(param => param.in === 'path');
|
|
326
|
-
return hasPathParams ? 'read' : 'list';
|
|
327
|
-
}
|
|
328
|
-
return 'modify';
|
|
329
|
-
}
|
|
330
|
-
function classifyToolOperations(tool, resolver) {
|
|
331
|
-
let hasList = false;
|
|
332
|
-
let hasRead = false;
|
|
333
|
-
let hasModify = false;
|
|
334
|
-
if (tool.composite && tool.steps && resolver?.getOperationForCall) {
|
|
335
|
-
for (const step of tool.steps) {
|
|
336
|
-
const operation = resolver.getOperationForCall(step.call);
|
|
337
|
-
if (!operation) {
|
|
338
|
-
hasModify = true;
|
|
339
|
-
continue;
|
|
340
|
-
}
|
|
341
|
-
const category = resolveOperationCategory(operation);
|
|
342
|
-
if (category === 'list') {
|
|
343
|
-
hasList = true;
|
|
344
|
-
}
|
|
345
|
-
else if (category === 'read') {
|
|
346
|
-
hasRead = true;
|
|
347
|
-
}
|
|
348
|
-
else {
|
|
349
|
-
hasModify = true;
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
return { hasList, hasRead, hasModify };
|
|
353
|
-
}
|
|
354
|
-
if (tool.operations) {
|
|
355
|
-
for (const [action, operationId] of Object.entries(tool.operations)) {
|
|
356
|
-
if (typeof operationId === 'string' && resolver?.getOperationById) {
|
|
357
|
-
const operation = resolver.getOperationById(operationId);
|
|
358
|
-
if (operation) {
|
|
359
|
-
const category = resolveOperationCategory(operation);
|
|
360
|
-
if (category === 'list') {
|
|
361
|
-
hasList = true;
|
|
362
|
-
}
|
|
363
|
-
else if (category === 'read') {
|
|
364
|
-
hasRead = true;
|
|
365
|
-
}
|
|
366
|
-
else {
|
|
367
|
-
hasModify = true;
|
|
368
|
-
}
|
|
369
|
-
continue;
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
const actionValue = action.toLowerCase();
|
|
373
|
-
if (actionValue === 'list' || actionValue === 'search') {
|
|
374
|
-
hasList = true;
|
|
375
|
-
}
|
|
376
|
-
else if (actionValue === 'get' || actionValue === 'read') {
|
|
377
|
-
hasRead = true;
|
|
378
|
-
}
|
|
379
|
-
else {
|
|
380
|
-
hasModify = true;
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
return { hasList, hasRead, hasModify };
|
|
384
|
-
}
|
|
385
|
-
// Unknown tool type (no operations and not a resolvable composite): treat as modify (unsafe)
|
|
386
|
-
return { hasList: false, hasRead: false, hasModify: true };
|
|
387
|
-
}
|
|
388
|
-
function getAllowMatchReasons(tool, normalizedName, config, resolver) {
|
|
389
|
-
const reasons = [];
|
|
390
|
-
if (config.allowList.has(normalizedName)) {
|
|
391
|
-
reasons.push(`allow_list:${normalizedName}`);
|
|
392
|
-
}
|
|
393
|
-
for (const regex of config.allowRegex) {
|
|
394
|
-
if (regex.test(normalizedName)) {
|
|
395
|
-
reasons.push(`allow_regex:${regex.source}`);
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
if (config.allowCategories.size > 0) {
|
|
399
|
-
const { hasList, hasRead, hasModify } = classifyToolOperations(tool, resolver);
|
|
400
|
-
const isListOnly = hasList && !hasRead && !hasModify;
|
|
401
|
-
const isReadOnly = hasRead && !hasList && !hasModify;
|
|
402
|
-
const isListReadOnly = (hasList || hasRead) && !hasModify;
|
|
403
|
-
if (config.allowCategories.has('list') && config.allowCategories.has('read')) {
|
|
404
|
-
if (isListReadOnly) {
|
|
405
|
-
reasons.push('allow_categories:list,read');
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
else if (config.allowCategories.has('list')) {
|
|
409
|
-
if (isListOnly) {
|
|
410
|
-
reasons.push('allow_categories:list');
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
else if (config.allowCategories.has('read')) {
|
|
414
|
-
if (isReadOnly) {
|
|
415
|
-
reasons.push('allow_categories:read');
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
}
|
|
419
|
-
return reasons;
|
|
420
|
-
}
|
|
421
|
-
function getSessionAllowReasons(tool, normalizedName, request, resolver) {
|
|
422
|
-
const reasons = [];
|
|
423
|
-
if (request.exactNames.has(normalizedName)) {
|
|
424
|
-
reasons.push(`header_exact:${normalizedName}`);
|
|
425
|
-
}
|
|
426
|
-
for (const regex of request.regexPatterns) {
|
|
427
|
-
if (regex.test(normalizedName)) {
|
|
428
|
-
reasons.push(`header_regex:${regex.source}`);
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
|
-
if (request.allowComposite.allowList || request.allowComposite.allowRead) {
|
|
432
|
-
const listRead = detectListReadOperations(tool, resolver);
|
|
433
|
-
if (request.allowComposite.allowList && listRead.isList) {
|
|
434
|
-
reasons.push('header_composite:_allow_list');
|
|
435
|
-
}
|
|
436
|
-
if (request.allowComposite.allowRead && listRead.isRead) {
|
|
437
|
-
reasons.push('header_composite:_allow_read');
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
return reasons;
|
|
441
|
-
}
|
|
442
|
-
function getAllowFailureReasons(config) {
|
|
443
|
-
const reasons = [];
|
|
444
|
-
if (config.sources.allowList.length > 0) {
|
|
445
|
-
reasons.push('allow_list');
|
|
446
|
-
}
|
|
447
|
-
if (config.sources.allowRegex.length > 0) {
|
|
448
|
-
reasons.push('allow_regex');
|
|
449
|
-
}
|
|
450
|
-
if (config.sources.allowCategories.length > 0) {
|
|
451
|
-
reasons.push('allow_categories');
|
|
452
|
-
}
|
|
453
|
-
return reasons.length > 0 ? reasons : ['allow'];
|
|
454
|
-
}
|
|
455
|
-
function buildNormalizedSessionEntries(params) {
|
|
456
|
-
const entries = [];
|
|
457
|
-
for (const name of params.exactNames) {
|
|
458
|
-
entries.push(name);
|
|
459
|
-
}
|
|
460
|
-
for (const regex of params.regexPatterns) {
|
|
461
|
-
entries.push(`regex:${regex.source}`);
|
|
462
|
-
}
|
|
463
|
-
if (params.allowComposite.allowList) {
|
|
464
|
-
entries.push('_allow_list');
|
|
465
|
-
}
|
|
466
|
-
if (params.allowComposite.allowRead) {
|
|
467
|
-
entries.push('_allow_read');
|
|
468
|
-
}
|
|
469
|
-
return entries;
|
|
470
|
-
}
|
|
471
|
-
//# sourceMappingURL=tool-filter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tool-filter.js","sourceRoot":"","sources":["../../src/tool-filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP tool generator from profile definitions
|
|
3
|
-
*
|
|
4
|
-
* Why: Translates profile config into MCP SDK tool definitions. Handles both
|
|
5
|
-
* simple (single operation) and composite (multi-step) tools.
|
|
6
|
-
*/
|
|
7
|
-
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
8
|
-
import type { ToolDefinition } from './types/profile.js';
|
|
9
|
-
import type { OpenAPIParser } from './openapi-parser.js';
|
|
10
|
-
export declare class ToolGenerator {
|
|
11
|
-
private parser;
|
|
12
|
-
constructor(parser: OpenAPIParser);
|
|
13
|
-
/**
|
|
14
|
-
* Generate MCP tool from profile definition
|
|
15
|
-
*/
|
|
16
|
-
generateTool(toolDef: ToolDefinition): Tool;
|
|
17
|
-
/**
|
|
18
|
-
* Generate JSON Schema for tool parameters
|
|
19
|
-
*
|
|
20
|
-
* Why JSON Schema: MCP SDK expects JSON Schema for parameter validation.
|
|
21
|
-
* LLM uses schema to understand what parameters are needed.
|
|
22
|
-
*/
|
|
23
|
-
private generateInputSchema;
|
|
24
|
-
/**
|
|
25
|
-
* Convert parameter definition to JSON Schema
|
|
26
|
-
*/
|
|
27
|
-
private parameterToJsonSchema;
|
|
28
|
-
private parameterTypeToSchema;
|
|
29
|
-
/**
|
|
30
|
-
* Validate tool arguments against parameter definitions
|
|
31
|
-
*
|
|
32
|
-
* Why manual validation: Checks conditional requirements (required_for)
|
|
33
|
-
* which JSON Schema can't express directly.
|
|
34
|
-
*/
|
|
35
|
-
validateArguments(toolDef: ToolDefinition, args: Record<string, unknown>): void;
|
|
36
|
-
/**
|
|
37
|
-
* Get operation definition (string or ProxyDownloadOperation) for action
|
|
38
|
-
*
|
|
39
|
-
* Why: Tools can have string operationIds OR proxy_download configs.
|
|
40
|
-
* This returns the raw definition before extracting operationId.
|
|
41
|
-
*/
|
|
42
|
-
getOperationDefinition(toolDef: ToolDefinition, args: Record<string, unknown>): import("./types/profile.js").OperationDefinition | undefined;
|
|
43
|
-
/**
|
|
44
|
-
* Map tool action to OpenAPI operation ID
|
|
45
|
-
*
|
|
46
|
-
* Why: Single tool with 'action' parameter maps to multiple operations.
|
|
47
|
-
* Example: manage_badges + action=create => postApiV4ProjectsIdBadges
|
|
48
|
-
*
|
|
49
|
-
* Note: Returns undefined for ProxyDownloadOperation (not a direct operationId)
|
|
50
|
-
*/
|
|
51
|
-
mapActionToOperation(toolDef: ToolDefinition, args: Record<string, unknown>): string | undefined;
|
|
52
|
-
/**
|
|
53
|
-
* Check if operation requires multipart/form-data
|
|
54
|
-
*
|
|
55
|
-
* Why: Some operations (file uploads) need FormData instead of JSON body.
|
|
56
|
-
* Detected from OpenAPI requestBody.content['multipart/form-data'].
|
|
57
|
-
*/
|
|
58
|
-
isMultipartOperation(operationId: string): boolean;
|
|
59
|
-
/**
|
|
60
|
-
* Build FormData body for file upload
|
|
61
|
-
*
|
|
62
|
-
* @param args Tool arguments including base64Content or filePath
|
|
63
|
-
* @param fileFieldName Field name in FormData (default: 'files[0]')
|
|
64
|
-
*/
|
|
65
|
-
buildFormDataBody(args: Record<string, unknown>, fileFieldName?: string): FormData;
|
|
66
|
-
}
|
|
67
|
-
//# sourceMappingURL=tool-generator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tool-generator.d.ts","sourceRoot":"","sources":["../../src/tool-generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAsC,MAAM,oBAAoB,CAAC;AAC7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,qBAAa,aAAa;IACZ,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAEzC;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAU3C;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IA2B3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,qBAAqB;IA0B7B;;;;;OAKG;IACH,iBAAiB,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IA4B/E;;;;;OAKG;IACH,sBAAsB,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAyB7E;;;;;;;OAOG;IACH,oBAAoB,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS;IAKhG;;;;;OAKG;IACH,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAMlD;;;;;OAKG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,SAAa,GAAG,QAAQ;CAoBvF"}
|