@mcp-z/cli 1.0.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/LICENSE +21 -0
- package/README.md +166 -0
- package/bin/cli.js +5 -0
- package/dist/cjs/cli.d.cts +1 -0
- package/dist/cjs/cli.d.ts +1 -0
- package/dist/cjs/cli.js +576 -0
- package/dist/cjs/cli.js.map +1 -0
- package/dist/cjs/commands/call-tool.d.cts +26 -0
- package/dist/cjs/commands/call-tool.d.ts +26 -0
- package/dist/cjs/commands/call-tool.js +362 -0
- package/dist/cjs/commands/call-tool.js.map +1 -0
- package/dist/cjs/commands/get-prompt.d.cts +26 -0
- package/dist/cjs/commands/get-prompt.d.ts +26 -0
- package/dist/cjs/commands/get-prompt.js +335 -0
- package/dist/cjs/commands/get-prompt.js.map +1 -0
- package/dist/cjs/commands/inspect.d.cts +35 -0
- package/dist/cjs/commands/inspect.d.ts +35 -0
- package/dist/cjs/commands/inspect.js +896 -0
- package/dist/cjs/commands/inspect.js.map +1 -0
- package/dist/cjs/commands/manifest/env-prompting.d.cts +21 -0
- package/dist/cjs/commands/manifest/env-prompting.d.ts +21 -0
- package/dist/cjs/commands/manifest/env-prompting.js +657 -0
- package/dist/cjs/commands/manifest/env-prompting.js.map +1 -0
- package/dist/cjs/commands/manifest/generate.d.cts +124 -0
- package/dist/cjs/commands/manifest/generate.d.ts +124 -0
- package/dist/cjs/commands/manifest/generate.js +2541 -0
- package/dist/cjs/commands/manifest/generate.js.map +1 -0
- package/dist/cjs/commands/manifest/index.d.cts +2 -0
- package/dist/cjs/commands/manifest/index.d.ts +2 -0
- package/dist/cjs/commands/manifest/index.js +229 -0
- package/dist/cjs/commands/manifest/index.js.map +1 -0
- package/dist/cjs/commands/manifest/metadata-reader.d.cts +71 -0
- package/dist/cjs/commands/manifest/metadata-reader.d.ts +71 -0
- package/dist/cjs/commands/manifest/metadata-reader.js +441 -0
- package/dist/cjs/commands/manifest/metadata-reader.js.map +1 -0
- package/dist/cjs/commands/manifest/validate.d.cts +1 -0
- package/dist/cjs/commands/manifest/validate.d.ts +1 -0
- package/dist/cjs/commands/manifest/validate.js +525 -0
- package/dist/cjs/commands/manifest/validate.js.map +1 -0
- package/dist/cjs/commands/read-resource.d.cts +24 -0
- package/dist/cjs/commands/read-resource.d.ts +24 -0
- package/dist/cjs/commands/read-resource.js +311 -0
- package/dist/cjs/commands/read-resource.js.map +1 -0
- package/dist/cjs/commands/search.d.cts +31 -0
- package/dist/cjs/commands/search.d.ts +31 -0
- package/dist/cjs/commands/search.js +464 -0
- package/dist/cjs/commands/search.js.map +1 -0
- package/dist/cjs/commands/up.d.cts +49 -0
- package/dist/cjs/commands/up.d.ts +49 -0
- package/dist/cjs/commands/up.js +235 -0
- package/dist/cjs/commands/up.js.map +1 -0
- package/dist/cjs/index.d.cts +7 -0
- package/dist/cjs/index.d.ts +7 -0
- package/dist/cjs/index.js +85 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/lib/find-config.d.cts +14 -0
- package/dist/cjs/lib/find-config.d.ts +14 -0
- package/dist/cjs/lib/find-config.js +93 -0
- package/dist/cjs/lib/find-config.js.map +1 -0
- package/dist/cjs/lib/json-schema.d.cts +18 -0
- package/dist/cjs/lib/json-schema.d.ts +18 -0
- package/dist/cjs/lib/json-schema.js +306 -0
- package/dist/cjs/lib/json-schema.js.map +1 -0
- package/dist/cjs/lib/resolve-server-config.d.cts +50 -0
- package/dist/cjs/lib/resolve-server-config.d.ts +50 -0
- package/dist/cjs/lib/resolve-server-config.js +214 -0
- package/dist/cjs/lib/resolve-server-config.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/types.d.cts +21 -0
- package/dist/cjs/types.d.ts +21 -0
- package/dist/cjs/types.js +32 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/esm/cli.d.ts +1 -0
- package/dist/esm/cli.js +129 -0
- package/dist/esm/cli.js.map +1 -0
- package/dist/esm/commands/call-tool.d.ts +26 -0
- package/dist/esm/commands/call-tool.js +151 -0
- package/dist/esm/commands/call-tool.js.map +1 -0
- package/dist/esm/commands/get-prompt.d.ts +26 -0
- package/dist/esm/commands/get-prompt.js +118 -0
- package/dist/esm/commands/get-prompt.js.map +1 -0
- package/dist/esm/commands/inspect.d.ts +35 -0
- package/dist/esm/commands/inspect.js +438 -0
- package/dist/esm/commands/inspect.js.map +1 -0
- package/dist/esm/commands/manifest/env-prompting.d.ts +21 -0
- package/dist/esm/commands/manifest/env-prompting.js +213 -0
- package/dist/esm/commands/manifest/env-prompting.js.map +1 -0
- package/dist/esm/commands/manifest/generate.d.ts +124 -0
- package/dist/esm/commands/manifest/generate.js +1087 -0
- package/dist/esm/commands/manifest/generate.js.map +1 -0
- package/dist/esm/commands/manifest/index.d.ts +2 -0
- package/dist/esm/commands/manifest/index.js +23 -0
- package/dist/esm/commands/manifest/index.js.map +1 -0
- package/dist/esm/commands/manifest/metadata-reader.d.ts +71 -0
- package/dist/esm/commands/manifest/metadata-reader.js +143 -0
- package/dist/esm/commands/manifest/metadata-reader.js.map +1 -0
- package/dist/esm/commands/manifest/validate.d.ts +1 -0
- package/dist/esm/commands/manifest/validate.js +167 -0
- package/dist/esm/commands/manifest/validate.js.map +1 -0
- package/dist/esm/commands/read-resource.d.ts +24 -0
- package/dist/esm/commands/read-resource.js +95 -0
- package/dist/esm/commands/read-resource.js.map +1 -0
- package/dist/esm/commands/search.d.ts +31 -0
- package/dist/esm/commands/search.js +145 -0
- package/dist/esm/commands/search.js.map +1 -0
- package/dist/esm/commands/up.d.ts +49 -0
- package/dist/esm/commands/up.js +74 -0
- package/dist/esm/commands/up.js.map +1 -0
- package/dist/esm/index.d.ts +7 -0
- package/dist/esm/index.js +11 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/find-config.d.ts +14 -0
- package/dist/esm/lib/find-config.js +42 -0
- package/dist/esm/lib/find-config.js.map +1 -0
- package/dist/esm/lib/json-schema.d.ts +18 -0
- package/dist/esm/lib/json-schema.js +66 -0
- package/dist/esm/lib/json-schema.js.map +1 -0
- package/dist/esm/lib/resolve-server-config.d.ts +50 -0
- package/dist/esm/lib/resolve-server-config.js +154 -0
- package/dist/esm/lib/resolve-server-config.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/types.d.ts +21 -0
- package/dist/esm/types.js +11 -0
- package/dist/esm/types.js.map +1 -0
- package/package.json +99 -0
- package/schemas/server.schema.json +489 -0
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get-prompt.ts
|
|
3
|
+
*
|
|
4
|
+
* Get MCP prompts from the command line.
|
|
5
|
+
* Supports stdio (spawned) and http (remote) servers per MCP spec.
|
|
6
|
+
*/ "use strict";
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
Object.defineProperty(exports, "getPromptCommand", {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function() {
|
|
13
|
+
return getPromptCommand;
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
var _client = require("@mcp-z/client");
|
|
17
|
+
var _resolveserverconfigts = require("../lib/resolve-server-config.js");
|
|
18
|
+
var _typests = require("../types.js");
|
|
19
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
20
|
+
try {
|
|
21
|
+
var info = gen[key](arg);
|
|
22
|
+
var value = info.value;
|
|
23
|
+
} catch (error) {
|
|
24
|
+
reject(error);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (info.done) {
|
|
28
|
+
resolve(value);
|
|
29
|
+
} else {
|
|
30
|
+
Promise.resolve(value).then(_next, _throw);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function _async_to_generator(fn) {
|
|
34
|
+
return function() {
|
|
35
|
+
var self = this, args = arguments;
|
|
36
|
+
return new Promise(function(resolve, reject) {
|
|
37
|
+
var gen = fn.apply(self, args);
|
|
38
|
+
function _next(value) {
|
|
39
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
40
|
+
}
|
|
41
|
+
function _throw(err) {
|
|
42
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
43
|
+
}
|
|
44
|
+
_next(undefined);
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function _define_property(obj, key, value) {
|
|
49
|
+
if (key in obj) {
|
|
50
|
+
Object.defineProperty(obj, key, {
|
|
51
|
+
value: value,
|
|
52
|
+
enumerable: true,
|
|
53
|
+
configurable: true,
|
|
54
|
+
writable: true
|
|
55
|
+
});
|
|
56
|
+
} else {
|
|
57
|
+
obj[key] = value;
|
|
58
|
+
}
|
|
59
|
+
return obj;
|
|
60
|
+
}
|
|
61
|
+
function _instanceof(left, right) {
|
|
62
|
+
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
63
|
+
return !!right[Symbol.hasInstance](left);
|
|
64
|
+
} else {
|
|
65
|
+
return left instanceof right;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function _type_of(obj) {
|
|
69
|
+
"@swc/helpers - typeof";
|
|
70
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
71
|
+
}
|
|
72
|
+
function _ts_generator(thisArg, body) {
|
|
73
|
+
var f, y, t, _ = {
|
|
74
|
+
label: 0,
|
|
75
|
+
sent: function() {
|
|
76
|
+
if (t[0] & 1) throw t[1];
|
|
77
|
+
return t[1];
|
|
78
|
+
},
|
|
79
|
+
trys: [],
|
|
80
|
+
ops: []
|
|
81
|
+
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
|
|
82
|
+
return d(g, "next", {
|
|
83
|
+
value: verb(0)
|
|
84
|
+
}), d(g, "throw", {
|
|
85
|
+
value: verb(1)
|
|
86
|
+
}), d(g, "return", {
|
|
87
|
+
value: verb(2)
|
|
88
|
+
}), typeof Symbol === "function" && d(g, Symbol.iterator, {
|
|
89
|
+
value: function() {
|
|
90
|
+
return this;
|
|
91
|
+
}
|
|
92
|
+
}), g;
|
|
93
|
+
function verb(n) {
|
|
94
|
+
return function(v) {
|
|
95
|
+
return step([
|
|
96
|
+
n,
|
|
97
|
+
v
|
|
98
|
+
]);
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
function step(op) {
|
|
102
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
103
|
+
while(g && (g = 0, op[0] && (_ = 0)), _)try {
|
|
104
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
105
|
+
if (y = 0, t) op = [
|
|
106
|
+
op[0] & 2,
|
|
107
|
+
t.value
|
|
108
|
+
];
|
|
109
|
+
switch(op[0]){
|
|
110
|
+
case 0:
|
|
111
|
+
case 1:
|
|
112
|
+
t = op;
|
|
113
|
+
break;
|
|
114
|
+
case 4:
|
|
115
|
+
_.label++;
|
|
116
|
+
return {
|
|
117
|
+
value: op[1],
|
|
118
|
+
done: false
|
|
119
|
+
};
|
|
120
|
+
case 5:
|
|
121
|
+
_.label++;
|
|
122
|
+
y = op[1];
|
|
123
|
+
op = [
|
|
124
|
+
0
|
|
125
|
+
];
|
|
126
|
+
continue;
|
|
127
|
+
case 7:
|
|
128
|
+
op = _.ops.pop();
|
|
129
|
+
_.trys.pop();
|
|
130
|
+
continue;
|
|
131
|
+
default:
|
|
132
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
133
|
+
_ = 0;
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
137
|
+
_.label = op[1];
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
141
|
+
_.label = t[1];
|
|
142
|
+
t = op;
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
if (t && _.label < t[2]) {
|
|
146
|
+
_.label = t[2];
|
|
147
|
+
_.ops.push(op);
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
150
|
+
if (t[2]) _.ops.pop();
|
|
151
|
+
_.trys.pop();
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
op = body.call(thisArg, _);
|
|
155
|
+
} catch (e) {
|
|
156
|
+
op = [
|
|
157
|
+
6,
|
|
158
|
+
e
|
|
159
|
+
];
|
|
160
|
+
y = 0;
|
|
161
|
+
} finally{
|
|
162
|
+
f = t = 0;
|
|
163
|
+
}
|
|
164
|
+
if (op[0] & 5) throw op[1];
|
|
165
|
+
return {
|
|
166
|
+
value: op[0] ? op[1] : void 0,
|
|
167
|
+
done: true
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
function getPromptCommand(opts) {
|
|
172
|
+
return _async_to_generator(function() {
|
|
173
|
+
var registry, client, _resolveServerConfig, serverName, serverConfig, configDir, start, elapsed, promptArgs, parsed, promptResponse, prompt, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, message, error, _;
|
|
174
|
+
return _ts_generator(this, function(_state) {
|
|
175
|
+
switch(_state.label){
|
|
176
|
+
case 0:
|
|
177
|
+
_state.trys.push([
|
|
178
|
+
0,
|
|
179
|
+
3,
|
|
180
|
+
4,
|
|
181
|
+
9
|
|
182
|
+
]);
|
|
183
|
+
// 1. Resolve server configuration (from config file or inline options)
|
|
184
|
+
_resolveServerConfig = (0, _resolveserverconfigts.resolveServerConfig)(opts), serverName = _resolveServerConfig.serverName, serverConfig = _resolveServerConfig.serverConfig, configDir = _resolveServerConfig.configDir;
|
|
185
|
+
// 2. Create registry and connect
|
|
186
|
+
start = Date.now();
|
|
187
|
+
if ((0, _typests.isHttpServer)(serverConfig)) {
|
|
188
|
+
// HTTP server - no spawning needed
|
|
189
|
+
if (!opts.json) {
|
|
190
|
+
console.log("\uD83D\uDD17 Connecting to ".concat(serverName, "..."));
|
|
191
|
+
}
|
|
192
|
+
} else {
|
|
193
|
+
// Stdio server - will be spawned
|
|
194
|
+
if (!opts.json) {
|
|
195
|
+
console.log("\uD83D\uDE80 Spawning ".concat(serverName, " server..."));
|
|
196
|
+
}
|
|
197
|
+
if (!serverConfig.command) {
|
|
198
|
+
throw new Error("Stdio server ".concat(serverName, ' missing required "command" field'));
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
// Create registry (spawns stdio servers, registers HTTP servers)
|
|
202
|
+
registry = (0, _client.createServerRegistry)(_define_property({}, serverName, serverConfig), {
|
|
203
|
+
cwd: configDir
|
|
204
|
+
});
|
|
205
|
+
return [
|
|
206
|
+
4,
|
|
207
|
+
registry.connect(serverName)
|
|
208
|
+
];
|
|
209
|
+
case 1:
|
|
210
|
+
client = _state.sent();
|
|
211
|
+
if (!(0, _typests.isHttpServer)(serverConfig) && !opts.json) {
|
|
212
|
+
elapsed = ((Date.now() - start) / 1000).toFixed(1);
|
|
213
|
+
console.log("ā Server ready in ".concat(elapsed, "s\n"));
|
|
214
|
+
}
|
|
215
|
+
if (opts.args && opts.args !== '{}') {
|
|
216
|
+
try {
|
|
217
|
+
parsed = JSON.parse(opts.args);
|
|
218
|
+
if ((typeof parsed === "undefined" ? "undefined" : _type_of(parsed)) !== 'object' || parsed === null) {
|
|
219
|
+
throw new Error('Arguments must be a JSON object');
|
|
220
|
+
}
|
|
221
|
+
promptArgs = parsed;
|
|
222
|
+
} catch (error) {
|
|
223
|
+
throw new Error("Failed to parse prompt arguments as JSON: ".concat(_instanceof(error, Error) ? error.message : String(error), "\n\nProvided args: ").concat(opts.args));
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// 6. Get prompt
|
|
227
|
+
if (!opts.json) {
|
|
228
|
+
console.log("\uD83D\uDCAC Getting ".concat(opts.name, "..."));
|
|
229
|
+
}
|
|
230
|
+
return [
|
|
231
|
+
4,
|
|
232
|
+
client.getPrompt(opts.name, promptArgs)
|
|
233
|
+
];
|
|
234
|
+
case 2:
|
|
235
|
+
promptResponse = _state.sent();
|
|
236
|
+
prompt = promptResponse.raw();
|
|
237
|
+
// Success case
|
|
238
|
+
if (opts.json) {
|
|
239
|
+
// JSON output mode
|
|
240
|
+
console.log(JSON.stringify(prompt, null, 2));
|
|
241
|
+
} else {
|
|
242
|
+
// Human-readable output
|
|
243
|
+
console.log('ā
Get prompt succeeded\n');
|
|
244
|
+
// Display description if available
|
|
245
|
+
if (prompt.description) {
|
|
246
|
+
console.log("Description: ".concat(prompt.description, "\n"));
|
|
247
|
+
}
|
|
248
|
+
// Display messages
|
|
249
|
+
console.log('Messages:');
|
|
250
|
+
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
251
|
+
try {
|
|
252
|
+
for(_iterator = prompt.messages[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
253
|
+
message = _step.value;
|
|
254
|
+
console.log(" [".concat(message.role, "]:"));
|
|
255
|
+
if (typeof message.content === 'string') {
|
|
256
|
+
console.log(" ".concat(message.content));
|
|
257
|
+
} else if (message.content.type === 'text') {
|
|
258
|
+
console.log(" ".concat(message.content.text));
|
|
259
|
+
} else if (message.content.type === 'image') {
|
|
260
|
+
console.log(" [Image: ".concat(message.content.mimeType, "]"));
|
|
261
|
+
} else if (message.content.type === 'resource') {
|
|
262
|
+
console.log(" [Resource: ".concat(message.content.resource.uri, "]"));
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
} catch (err) {
|
|
266
|
+
_didIteratorError = true;
|
|
267
|
+
_iteratorError = err;
|
|
268
|
+
} finally{
|
|
269
|
+
try {
|
|
270
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
271
|
+
_iterator.return();
|
|
272
|
+
}
|
|
273
|
+
} finally{
|
|
274
|
+
if (_didIteratorError) {
|
|
275
|
+
throw _iteratorError;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
return [
|
|
281
|
+
3,
|
|
282
|
+
9
|
|
283
|
+
];
|
|
284
|
+
case 3:
|
|
285
|
+
error = _state.sent();
|
|
286
|
+
if (opts.json) {
|
|
287
|
+
console.log(JSON.stringify({
|
|
288
|
+
error: _instanceof(error, Error) ? error.message : String(error)
|
|
289
|
+
}, null, 2));
|
|
290
|
+
} else {
|
|
291
|
+
console.error("\nā ".concat(_instanceof(error, Error) ? error.message : String(error)));
|
|
292
|
+
}
|
|
293
|
+
throw error;
|
|
294
|
+
case 4:
|
|
295
|
+
if (!registry) return [
|
|
296
|
+
3,
|
|
297
|
+
8
|
|
298
|
+
];
|
|
299
|
+
_state.label = 5;
|
|
300
|
+
case 5:
|
|
301
|
+
_state.trys.push([
|
|
302
|
+
5,
|
|
303
|
+
7,
|
|
304
|
+
,
|
|
305
|
+
8
|
|
306
|
+
]);
|
|
307
|
+
return [
|
|
308
|
+
4,
|
|
309
|
+
registry.close()
|
|
310
|
+
];
|
|
311
|
+
case 6:
|
|
312
|
+
_state.sent();
|
|
313
|
+
return [
|
|
314
|
+
3,
|
|
315
|
+
8
|
|
316
|
+
];
|
|
317
|
+
case 7:
|
|
318
|
+
_ = _state.sent();
|
|
319
|
+
return [
|
|
320
|
+
3,
|
|
321
|
+
8
|
|
322
|
+
];
|
|
323
|
+
case 8:
|
|
324
|
+
return [
|
|
325
|
+
7
|
|
326
|
+
];
|
|
327
|
+
case 9:
|
|
328
|
+
return [
|
|
329
|
+
2
|
|
330
|
+
];
|
|
331
|
+
}
|
|
332
|
+
});
|
|
333
|
+
})();
|
|
334
|
+
}
|
|
335
|
+
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/Projects/ai/mcp-z/cli/src/commands/get-prompt.ts"],"sourcesContent":["/**\n * get-prompt.ts\n *\n * Get MCP prompts from the command line.\n * Supports stdio (spawned) and http (remote) servers per MCP spec.\n */\n\nimport { createServerRegistry, type ManagedClient, type PromptArguments, type ServerRegistry } from '@mcp-z/client';\nimport { type InlineConfigOptions, resolveServerConfig } from '../lib/resolve-server-config.ts';\nimport { isHttpServer } from '../types.ts';\n\nexport interface GetPromptOptions extends InlineConfigOptions {\n name: string; // Prompt name (positional)\n args: string; // JSON args (positional)\n json?: boolean; // --json\n}\n\n/**\n * Main get-prompt command implementation.\n *\n * @param opts - Get prompt options from CLI flags\n *\n * @example\n * // Get a prompt with JSON args\n * await getPromptCommand({\n * server: 'assistant',\n * name: 'compose-email',\n * args: '{\"tone\": \"formal\"}',\n * });\n */\nexport async function getPromptCommand(opts: GetPromptOptions): Promise<void> {\n let registry: ServerRegistry | undefined;\n let client: ManagedClient | undefined;\n\n try {\n // 1. Resolve server configuration (from config file or inline options)\n const { serverName, serverConfig, configDir } = resolveServerConfig(opts);\n\n // 2. Create registry and connect\n const start = Date.now();\n\n if (isHttpServer(serverConfig)) {\n // HTTP server - no spawning needed\n if (!opts.json) {\n console.log(`š Connecting to ${serverName}...`);\n }\n } else {\n // Stdio server - will be spawned\n if (!opts.json) {\n console.log(`š Spawning ${serverName} server...`);\n }\n\n if (!serverConfig.command) {\n throw new Error(`Stdio server ${serverName} missing required \"command\" field`);\n }\n }\n\n // Create registry (spawns stdio servers, registers HTTP servers)\n registry = createServerRegistry({ [serverName]: serverConfig }, { cwd: configDir });\n client = await registry.connect(serverName);\n\n if (!isHttpServer(serverConfig) && !opts.json) {\n const elapsed = ((Date.now() - start) / 1000).toFixed(1);\n console.log(`ā Server ready in ${elapsed}s\\n`);\n }\n\n // 5. Parse prompt arguments\n let promptArgs: PromptArguments | undefined;\n if (opts.args && opts.args !== '{}') {\n try {\n const parsed = JSON.parse(opts.args);\n if (typeof parsed !== 'object' || parsed === null) {\n throw new Error('Arguments must be a JSON object');\n }\n promptArgs = parsed;\n } catch (error) {\n throw new Error(`Failed to parse prompt arguments as JSON: ${error instanceof Error ? error.message : String(error)}\\n\\nProvided args: ${opts.args}`);\n }\n }\n\n // 6. Get prompt\n if (!opts.json) {\n console.log(`š¬ Getting ${opts.name}...`);\n }\n\n const promptResponse = await client.getPrompt(opts.name, promptArgs);\n const prompt = promptResponse.raw();\n\n // Success case\n if (opts.json) {\n // JSON output mode\n console.log(JSON.stringify(prompt, null, 2));\n } else {\n // Human-readable output\n console.log('ā
Get prompt succeeded\\n');\n\n // Display description if available\n if (prompt.description) {\n console.log(`Description: ${prompt.description}\\n`);\n }\n\n // Display messages\n console.log('Messages:');\n for (const message of prompt.messages) {\n console.log(` [${message.role}]:`);\n if (typeof message.content === 'string') {\n console.log(` ${message.content}`);\n } else if (message.content.type === 'text') {\n console.log(` ${message.content.text}`);\n } else if (message.content.type === 'image') {\n console.log(` [Image: ${message.content.mimeType}]`);\n } else if (message.content.type === 'resource') {\n console.log(` [Resource: ${message.content.resource.uri}]`);\n }\n }\n }\n } catch (error) {\n if (opts.json) {\n console.log(JSON.stringify({ error: error instanceof Error ? error.message : String(error) }, null, 2));\n } else {\n console.error(`\\nā ${error instanceof Error ? error.message : String(error)}`);\n }\n throw error;\n } finally {\n // 8. Cleanup - registry.close() handles both client and server close\n if (registry) {\n try {\n await registry.close();\n } catch (_) {\n // Ignore close errors\n }\n }\n }\n}\n"],"names":["getPromptCommand","opts","registry","client","resolveServerConfig","serverName","serverConfig","configDir","start","elapsed","promptArgs","parsed","promptResponse","prompt","message","error","_","Date","now","isHttpServer","json","console","log","command","Error","createServerRegistry","cwd","connect","toFixed","args","JSON","parse","String","name","getPrompt","raw","stringify","description","messages","role","content","type","text","mimeType","resource","uri","close"],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* inspect.ts
|
|
3
|
+
*
|
|
4
|
+
* Inspect MCP servers: explore tools, resources, prompts, and health status.
|
|
5
|
+
* Supports stdio (spawned) and http (remote) servers per MCP spec.
|
|
6
|
+
*/
|
|
7
|
+
export interface InspectOptions {
|
|
8
|
+
config?: string;
|
|
9
|
+
servers?: string;
|
|
10
|
+
tools?: boolean;
|
|
11
|
+
resources?: boolean;
|
|
12
|
+
prompts?: boolean;
|
|
13
|
+
health?: boolean;
|
|
14
|
+
json?: boolean;
|
|
15
|
+
verbose?: boolean;
|
|
16
|
+
attach?: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Main inspect command implementation.
|
|
20
|
+
*
|
|
21
|
+
* @param opts - Inspect options from CLI flags
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* // Show summary of .mcp.json servers (spawns servers)
|
|
25
|
+
* await inspectCommand({});
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* // Show all tools from echo server (spawns server)
|
|
29
|
+
* await inspectCommand({ servers: 'echo', tools: true });
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* // Connect to running servers (attach mode)
|
|
33
|
+
* await inspectCommand({ config: 'http-servers.json', attach: true, health: true });
|
|
34
|
+
*/
|
|
35
|
+
export declare function inspectCommand(opts?: InspectOptions): Promise<void>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* inspect.ts
|
|
3
|
+
*
|
|
4
|
+
* Inspect MCP servers: explore tools, resources, prompts, and health status.
|
|
5
|
+
* Supports stdio (spawned) and http (remote) servers per MCP spec.
|
|
6
|
+
*/
|
|
7
|
+
export interface InspectOptions {
|
|
8
|
+
config?: string;
|
|
9
|
+
servers?: string;
|
|
10
|
+
tools?: boolean;
|
|
11
|
+
resources?: boolean;
|
|
12
|
+
prompts?: boolean;
|
|
13
|
+
health?: boolean;
|
|
14
|
+
json?: boolean;
|
|
15
|
+
verbose?: boolean;
|
|
16
|
+
attach?: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Main inspect command implementation.
|
|
20
|
+
*
|
|
21
|
+
* @param opts - Inspect options from CLI flags
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* // Show summary of .mcp.json servers (spawns servers)
|
|
25
|
+
* await inspectCommand({});
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* // Show all tools from echo server (spawns server)
|
|
29
|
+
* await inspectCommand({ servers: 'echo', tools: true });
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* // Connect to running servers (attach mode)
|
|
33
|
+
* await inspectCommand({ config: 'http-servers.json', attach: true, health: true });
|
|
34
|
+
*/
|
|
35
|
+
export declare function inspectCommand(opts?: InspectOptions): Promise<void>;
|