@justanothermldude/mcp-exec 1.7.0 → 1.7.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.
package/dist/index.js
CHANGED
|
@@ -206,10 +206,67 @@ import { join, dirname } from "path";
|
|
|
206
206
|
import { homedir } from "os";
|
|
207
207
|
import { listServers as listServers2 } from "@justanothermldude/meta-mcp-core";
|
|
208
208
|
var CATALOG_PATH = join(homedir(), ".meta-mcp", "tool-catalog.json");
|
|
209
|
+
function compactTypeHint(propSchema) {
|
|
210
|
+
if (Array.isArray(propSchema.enum)) {
|
|
211
|
+
const vals = propSchema.enum;
|
|
212
|
+
if (vals.length <= 6) {
|
|
213
|
+
return vals.map((v) => typeof v === "string" ? `'${v}'` : String(v)).join("|");
|
|
214
|
+
}
|
|
215
|
+
return "enum";
|
|
216
|
+
}
|
|
217
|
+
const variants = propSchema.anyOf ?? propSchema.oneOf;
|
|
218
|
+
if (variants) {
|
|
219
|
+
const nonNull = variants.filter((v) => v.type !== "null");
|
|
220
|
+
if (nonNull.length === 1)
|
|
221
|
+
return compactTypeHint(nonNull[0]);
|
|
222
|
+
}
|
|
223
|
+
const type = propSchema.type;
|
|
224
|
+
if (type === "string" || type === "number" || type === "integer" || type === "boolean") {
|
|
225
|
+
return null;
|
|
226
|
+
}
|
|
227
|
+
if (type === "object" && propSchema.properties) {
|
|
228
|
+
const props = propSchema.properties;
|
|
229
|
+
const required = propSchema.required || [];
|
|
230
|
+
const keys = Object.keys(props);
|
|
231
|
+
if (keys.length === 0)
|
|
232
|
+
return "object";
|
|
233
|
+
const parts = keys.map((k) => required.includes(k) ? k : k + "?");
|
|
234
|
+
return `{${parts.join(", ")}}`;
|
|
235
|
+
}
|
|
236
|
+
if (type === "object") {
|
|
237
|
+
return "object";
|
|
238
|
+
}
|
|
239
|
+
if (type === "array" && propSchema.items) {
|
|
240
|
+
const items = propSchema.items;
|
|
241
|
+
if (items.type === "object" && items.properties) {
|
|
242
|
+
const props = items.properties;
|
|
243
|
+
const required = items.required || [];
|
|
244
|
+
const keys = Object.keys(props);
|
|
245
|
+
const parts = keys.map((k) => required.includes(k) ? k : k + "?");
|
|
246
|
+
return `[{${parts.join(", ")}}]`;
|
|
247
|
+
}
|
|
248
|
+
return null;
|
|
249
|
+
}
|
|
250
|
+
return null;
|
|
251
|
+
}
|
|
252
|
+
__name(compactTypeHint, "compactTypeHint");
|
|
209
253
|
function formatToolSignature(t) {
|
|
210
254
|
const allProps = Object.keys(t.inputSchema?.properties ?? {});
|
|
211
255
|
const req = t.inputSchema?.required ?? [];
|
|
212
|
-
const
|
|
256
|
+
const props = t.inputSchema?.properties;
|
|
257
|
+
const formatParam = /* @__PURE__ */ __name((name, optional) => {
|
|
258
|
+
const suffix = optional ? "?" : "";
|
|
259
|
+
if (props?.[name]) {
|
|
260
|
+
const hint = compactTypeHint(props[name]);
|
|
261
|
+
if (hint)
|
|
262
|
+
return `${name}${suffix}:${hint}`;
|
|
263
|
+
}
|
|
264
|
+
return `${name}${suffix}`;
|
|
265
|
+
}, "formatParam");
|
|
266
|
+
const params = [
|
|
267
|
+
...req.map((k) => formatParam(k, false)),
|
|
268
|
+
...allProps.filter((k) => !req.includes(k)).map((k) => formatParam(k, true))
|
|
269
|
+
];
|
|
213
270
|
return `${t.name}(${params.length > 0 ? "{" + params.join(", ") + "}" : ""})`;
|
|
214
271
|
}
|
|
215
272
|
__name(formatToolSignature, "formatToolSignature");
|
|
@@ -235,10 +292,20 @@ function updateCatalogForServer(serverName, tools) {
|
|
|
235
292
|
catalog.servers[serverName] = tools.map((t) => {
|
|
236
293
|
const allProps = Object.keys(t.inputSchema?.properties ?? {});
|
|
237
294
|
const req = t.inputSchema?.required ?? [];
|
|
295
|
+
const types = {};
|
|
296
|
+
if (t.inputSchema?.properties) {
|
|
297
|
+
const props = t.inputSchema.properties;
|
|
298
|
+
for (const [key, schema] of Object.entries(props)) {
|
|
299
|
+
const hint = compactTypeHint(schema);
|
|
300
|
+
if (hint)
|
|
301
|
+
types[key] = hint;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
238
304
|
return {
|
|
239
305
|
name: t.name,
|
|
240
306
|
required: req,
|
|
241
307
|
optional: allProps.filter((k) => !req.includes(k)),
|
|
308
|
+
...Object.keys(types).length > 0 ? { types } : {},
|
|
242
309
|
description: t.description || void 0
|
|
243
310
|
};
|
|
244
311
|
});
|
|
@@ -273,7 +340,17 @@ function buildCatalogString() {
|
|
|
273
340
|
];
|
|
274
341
|
for (const [server, tools] of servers) {
|
|
275
342
|
const toolStrs = tools.map((t) => {
|
|
276
|
-
const
|
|
343
|
+
const formatParam = /* @__PURE__ */ __name((name, optional) => {
|
|
344
|
+
const suffix = optional ? "?" : "";
|
|
345
|
+
const hint = t.types?.[name];
|
|
346
|
+
if (hint)
|
|
347
|
+
return `${name}${suffix}:${hint}`;
|
|
348
|
+
return `${name}${suffix}`;
|
|
349
|
+
}, "formatParam");
|
|
350
|
+
const params = [
|
|
351
|
+
...t.required.map((k) => formatParam(k, false)),
|
|
352
|
+
...t.optional.map((k) => formatParam(k, true))
|
|
353
|
+
];
|
|
277
354
|
return `${t.name}(${params.length > 0 ? "{" + params.join(", ") + "}" : ""})`;
|
|
278
355
|
});
|
|
279
356
|
lines.push(` ${server}: ${toolStrs.join(", ")}`);
|
|
@@ -1904,7 +1981,7 @@ __name(createMcpExecServer, "createMcpExecServer");
|
|
|
1904
1981
|
// dist/index.js
|
|
1905
1982
|
import { ServerPool, createConnection, getServerConfig as getServerConfig2, loadServerManifest as loadServerManifest2, cleanupOrphanedProcesses } from "@justanothermldude/meta-mcp-core";
|
|
1906
1983
|
var APP_NAME = "mcp-exec";
|
|
1907
|
-
var VERSION2 = "1.7.
|
|
1984
|
+
var VERSION2 = "1.7.1";
|
|
1908
1985
|
var defaultExecutor = null;
|
|
1909
1986
|
function getDefaultExecutor() {
|
|
1910
1987
|
if (!defaultExecutor) {
|
|
@@ -9,6 +9,7 @@ export interface ToolLike {
|
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
11
11
|
* Format a single tool as a compact signature: toolName({required, optional?})
|
|
12
|
+
* Inlines type hints for non-primitive params: comment:{body, visibility?}
|
|
12
13
|
* Single source of truth — used by catalog, FuzzyProxy help, and wrapper-generator.
|
|
13
14
|
*/
|
|
14
15
|
export declare function formatToolSignature(t: ToolLike): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-catalog.d.ts","sourceRoot":"","sources":["../../src/tools/tool-catalog.ts"],"names":[],"mappings":"AAaA,uDAAuD;AACvD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CAC7E;
|
|
1
|
+
{"version":3,"file":"tool-catalog.d.ts","sourceRoot":"","sources":["../../src/tools/tool-catalog.ts"],"names":[],"mappings":"AAaA,uDAAuD;AACvD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CAC7E;AA8ED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAmBvD;AA0BD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CA0BlF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAiD3C"}
|
|
@@ -11,14 +11,83 @@ import { join, dirname } from 'path';
|
|
|
11
11
|
import { homedir } from 'os';
|
|
12
12
|
import { listServers } from '@justanothermldude/meta-mcp-core';
|
|
13
13
|
const CATALOG_PATH = join(homedir(), '.meta-mcp', 'tool-catalog.json');
|
|
14
|
+
/**
|
|
15
|
+
* Generate a compact type hint for a single JSON Schema property.
|
|
16
|
+
* Returns null for primitives (string, number, boolean) since AI guesses those correctly.
|
|
17
|
+
* Returns compact notation for objects, typed arrays, and enums.
|
|
18
|
+
*/
|
|
19
|
+
function compactTypeHint(propSchema) {
|
|
20
|
+
// Handle enum values
|
|
21
|
+
if (Array.isArray(propSchema.enum)) {
|
|
22
|
+
const vals = propSchema.enum;
|
|
23
|
+
if (vals.length <= 6) {
|
|
24
|
+
return vals.map(v => typeof v === 'string' ? `'${v}'` : String(v)).join('|');
|
|
25
|
+
}
|
|
26
|
+
return 'enum';
|
|
27
|
+
}
|
|
28
|
+
// Handle anyOf/oneOf (common for nullable types like string | null)
|
|
29
|
+
const variants = (propSchema.anyOf ?? propSchema.oneOf);
|
|
30
|
+
if (variants) {
|
|
31
|
+
const nonNull = variants.filter(v => v.type !== 'null');
|
|
32
|
+
if (nonNull.length === 1)
|
|
33
|
+
return compactTypeHint(nonNull[0]);
|
|
34
|
+
}
|
|
35
|
+
const type = propSchema.type;
|
|
36
|
+
// Primitives — AI defaults correctly, no hint needed
|
|
37
|
+
if (type === 'string' || type === 'number' || type === 'integer' || type === 'boolean') {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
// Object with defined properties — show required/optional sub-keys one level deep
|
|
41
|
+
if (type === 'object' && propSchema.properties) {
|
|
42
|
+
const props = propSchema.properties;
|
|
43
|
+
const required = propSchema.required || [];
|
|
44
|
+
const keys = Object.keys(props);
|
|
45
|
+
if (keys.length === 0)
|
|
46
|
+
return 'object';
|
|
47
|
+
const parts = keys.map(k => required.includes(k) ? k : k + '?');
|
|
48
|
+
return `{${parts.join(', ')}}`;
|
|
49
|
+
}
|
|
50
|
+
// Freeform object — AI must call get_mcp_tool_schema before using
|
|
51
|
+
if (type === 'object') {
|
|
52
|
+
return 'object';
|
|
53
|
+
}
|
|
54
|
+
// Array with typed items
|
|
55
|
+
if (type === 'array' && propSchema.items) {
|
|
56
|
+
const items = propSchema.items;
|
|
57
|
+
if (items.type === 'object' && items.properties) {
|
|
58
|
+
const props = items.properties;
|
|
59
|
+
const required = items.required || [];
|
|
60
|
+
const keys = Object.keys(props);
|
|
61
|
+
const parts = keys.map(k => required.includes(k) ? k : k + '?');
|
|
62
|
+
return `[{${parts.join(', ')}}]`;
|
|
63
|
+
}
|
|
64
|
+
// Simple typed arrays (string[], number[]) — usually obvious
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
14
69
|
/**
|
|
15
70
|
* Format a single tool as a compact signature: toolName({required, optional?})
|
|
71
|
+
* Inlines type hints for non-primitive params: comment:{body, visibility?}
|
|
16
72
|
* Single source of truth — used by catalog, FuzzyProxy help, and wrapper-generator.
|
|
17
73
|
*/
|
|
18
74
|
export function formatToolSignature(t) {
|
|
19
75
|
const allProps = Object.keys(t.inputSchema?.properties ?? {});
|
|
20
76
|
const req = t.inputSchema?.required ?? [];
|
|
21
|
-
const
|
|
77
|
+
const props = t.inputSchema?.properties;
|
|
78
|
+
const formatParam = (name, optional) => {
|
|
79
|
+
const suffix = optional ? '?' : '';
|
|
80
|
+
if (props?.[name]) {
|
|
81
|
+
const hint = compactTypeHint(props[name]);
|
|
82
|
+
if (hint)
|
|
83
|
+
return `${name}${suffix}:${hint}`;
|
|
84
|
+
}
|
|
85
|
+
return `${name}${suffix}`;
|
|
86
|
+
};
|
|
87
|
+
const params = [
|
|
88
|
+
...req.map(k => formatParam(k, false)),
|
|
89
|
+
...allProps.filter(k => !req.includes(k)).map(k => formatParam(k, true)),
|
|
90
|
+
];
|
|
22
91
|
return `${t.name}(${params.length > 0 ? '{' + params.join(', ') + '}' : ''})`;
|
|
23
92
|
}
|
|
24
93
|
/**
|
|
@@ -54,10 +123,21 @@ export function updateCatalogForServer(serverName, tools) {
|
|
|
54
123
|
catalog.servers[serverName] = tools.map(t => {
|
|
55
124
|
const allProps = Object.keys(t.inputSchema?.properties ?? {});
|
|
56
125
|
const req = t.inputSchema?.required ?? [];
|
|
126
|
+
// Extract type hints for non-primitive parameters
|
|
127
|
+
const types = {};
|
|
128
|
+
if (t.inputSchema?.properties) {
|
|
129
|
+
const props = t.inputSchema.properties;
|
|
130
|
+
for (const [key, schema] of Object.entries(props)) {
|
|
131
|
+
const hint = compactTypeHint(schema);
|
|
132
|
+
if (hint)
|
|
133
|
+
types[key] = hint;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
57
136
|
return {
|
|
58
137
|
name: t.name,
|
|
59
138
|
required: req,
|
|
60
139
|
optional: allProps.filter(k => !req.includes(k)),
|
|
140
|
+
...(Object.keys(types).length > 0 ? { types } : {}),
|
|
61
141
|
description: t.description || undefined,
|
|
62
142
|
};
|
|
63
143
|
});
|
|
@@ -98,7 +178,17 @@ export function buildCatalogString() {
|
|
|
98
178
|
];
|
|
99
179
|
for (const [server, tools] of servers) {
|
|
100
180
|
const toolStrs = tools.map(t => {
|
|
101
|
-
const
|
|
181
|
+
const formatParam = (name, optional) => {
|
|
182
|
+
const suffix = optional ? '?' : '';
|
|
183
|
+
const hint = t.types?.[name];
|
|
184
|
+
if (hint)
|
|
185
|
+
return `${name}${suffix}:${hint}`;
|
|
186
|
+
return `${name}${suffix}`;
|
|
187
|
+
};
|
|
188
|
+
const params = [
|
|
189
|
+
...t.required.map(k => formatParam(k, false)),
|
|
190
|
+
...t.optional.map(k => formatParam(k, true)),
|
|
191
|
+
];
|
|
102
192
|
return `${t.name}(${params.length > 0 ? '{' + params.join(', ') + '}' : ''})`;
|
|
103
193
|
});
|
|
104
194
|
lines.push(` ${server}: ${toolStrs.join(', ')}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-catalog.js","sourceRoot":"","sources":["../../src/tools/tool-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-catalog.js","sourceRoot":"","sources":["../../src/tools/tool-catalog.ts"],"names":[],"mappings":"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"}
|