@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.
Files changed (126) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +166 -0
  3. package/bin/cli.js +5 -0
  4. package/dist/cjs/cli.d.cts +1 -0
  5. package/dist/cjs/cli.d.ts +1 -0
  6. package/dist/cjs/cli.js +576 -0
  7. package/dist/cjs/cli.js.map +1 -0
  8. package/dist/cjs/commands/call-tool.d.cts +26 -0
  9. package/dist/cjs/commands/call-tool.d.ts +26 -0
  10. package/dist/cjs/commands/call-tool.js +362 -0
  11. package/dist/cjs/commands/call-tool.js.map +1 -0
  12. package/dist/cjs/commands/get-prompt.d.cts +26 -0
  13. package/dist/cjs/commands/get-prompt.d.ts +26 -0
  14. package/dist/cjs/commands/get-prompt.js +335 -0
  15. package/dist/cjs/commands/get-prompt.js.map +1 -0
  16. package/dist/cjs/commands/inspect.d.cts +35 -0
  17. package/dist/cjs/commands/inspect.d.ts +35 -0
  18. package/dist/cjs/commands/inspect.js +896 -0
  19. package/dist/cjs/commands/inspect.js.map +1 -0
  20. package/dist/cjs/commands/manifest/env-prompting.d.cts +21 -0
  21. package/dist/cjs/commands/manifest/env-prompting.d.ts +21 -0
  22. package/dist/cjs/commands/manifest/env-prompting.js +657 -0
  23. package/dist/cjs/commands/manifest/env-prompting.js.map +1 -0
  24. package/dist/cjs/commands/manifest/generate.d.cts +124 -0
  25. package/dist/cjs/commands/manifest/generate.d.ts +124 -0
  26. package/dist/cjs/commands/manifest/generate.js +2541 -0
  27. package/dist/cjs/commands/manifest/generate.js.map +1 -0
  28. package/dist/cjs/commands/manifest/index.d.cts +2 -0
  29. package/dist/cjs/commands/manifest/index.d.ts +2 -0
  30. package/dist/cjs/commands/manifest/index.js +229 -0
  31. package/dist/cjs/commands/manifest/index.js.map +1 -0
  32. package/dist/cjs/commands/manifest/metadata-reader.d.cts +71 -0
  33. package/dist/cjs/commands/manifest/metadata-reader.d.ts +71 -0
  34. package/dist/cjs/commands/manifest/metadata-reader.js +441 -0
  35. package/dist/cjs/commands/manifest/metadata-reader.js.map +1 -0
  36. package/dist/cjs/commands/manifest/validate.d.cts +1 -0
  37. package/dist/cjs/commands/manifest/validate.d.ts +1 -0
  38. package/dist/cjs/commands/manifest/validate.js +525 -0
  39. package/dist/cjs/commands/manifest/validate.js.map +1 -0
  40. package/dist/cjs/commands/read-resource.d.cts +24 -0
  41. package/dist/cjs/commands/read-resource.d.ts +24 -0
  42. package/dist/cjs/commands/read-resource.js +311 -0
  43. package/dist/cjs/commands/read-resource.js.map +1 -0
  44. package/dist/cjs/commands/search.d.cts +31 -0
  45. package/dist/cjs/commands/search.d.ts +31 -0
  46. package/dist/cjs/commands/search.js +464 -0
  47. package/dist/cjs/commands/search.js.map +1 -0
  48. package/dist/cjs/commands/up.d.cts +49 -0
  49. package/dist/cjs/commands/up.d.ts +49 -0
  50. package/dist/cjs/commands/up.js +235 -0
  51. package/dist/cjs/commands/up.js.map +1 -0
  52. package/dist/cjs/index.d.cts +7 -0
  53. package/dist/cjs/index.d.ts +7 -0
  54. package/dist/cjs/index.js +85 -0
  55. package/dist/cjs/index.js.map +1 -0
  56. package/dist/cjs/lib/find-config.d.cts +14 -0
  57. package/dist/cjs/lib/find-config.d.ts +14 -0
  58. package/dist/cjs/lib/find-config.js +93 -0
  59. package/dist/cjs/lib/find-config.js.map +1 -0
  60. package/dist/cjs/lib/json-schema.d.cts +18 -0
  61. package/dist/cjs/lib/json-schema.d.ts +18 -0
  62. package/dist/cjs/lib/json-schema.js +306 -0
  63. package/dist/cjs/lib/json-schema.js.map +1 -0
  64. package/dist/cjs/lib/resolve-server-config.d.cts +50 -0
  65. package/dist/cjs/lib/resolve-server-config.d.ts +50 -0
  66. package/dist/cjs/lib/resolve-server-config.js +214 -0
  67. package/dist/cjs/lib/resolve-server-config.js.map +1 -0
  68. package/dist/cjs/package.json +1 -0
  69. package/dist/cjs/types.d.cts +21 -0
  70. package/dist/cjs/types.d.ts +21 -0
  71. package/dist/cjs/types.js +32 -0
  72. package/dist/cjs/types.js.map +1 -0
  73. package/dist/esm/cli.d.ts +1 -0
  74. package/dist/esm/cli.js +129 -0
  75. package/dist/esm/cli.js.map +1 -0
  76. package/dist/esm/commands/call-tool.d.ts +26 -0
  77. package/dist/esm/commands/call-tool.js +151 -0
  78. package/dist/esm/commands/call-tool.js.map +1 -0
  79. package/dist/esm/commands/get-prompt.d.ts +26 -0
  80. package/dist/esm/commands/get-prompt.js +118 -0
  81. package/dist/esm/commands/get-prompt.js.map +1 -0
  82. package/dist/esm/commands/inspect.d.ts +35 -0
  83. package/dist/esm/commands/inspect.js +438 -0
  84. package/dist/esm/commands/inspect.js.map +1 -0
  85. package/dist/esm/commands/manifest/env-prompting.d.ts +21 -0
  86. package/dist/esm/commands/manifest/env-prompting.js +213 -0
  87. package/dist/esm/commands/manifest/env-prompting.js.map +1 -0
  88. package/dist/esm/commands/manifest/generate.d.ts +124 -0
  89. package/dist/esm/commands/manifest/generate.js +1087 -0
  90. package/dist/esm/commands/manifest/generate.js.map +1 -0
  91. package/dist/esm/commands/manifest/index.d.ts +2 -0
  92. package/dist/esm/commands/manifest/index.js +23 -0
  93. package/dist/esm/commands/manifest/index.js.map +1 -0
  94. package/dist/esm/commands/manifest/metadata-reader.d.ts +71 -0
  95. package/dist/esm/commands/manifest/metadata-reader.js +143 -0
  96. package/dist/esm/commands/manifest/metadata-reader.js.map +1 -0
  97. package/dist/esm/commands/manifest/validate.d.ts +1 -0
  98. package/dist/esm/commands/manifest/validate.js +167 -0
  99. package/dist/esm/commands/manifest/validate.js.map +1 -0
  100. package/dist/esm/commands/read-resource.d.ts +24 -0
  101. package/dist/esm/commands/read-resource.js +95 -0
  102. package/dist/esm/commands/read-resource.js.map +1 -0
  103. package/dist/esm/commands/search.d.ts +31 -0
  104. package/dist/esm/commands/search.js +145 -0
  105. package/dist/esm/commands/search.js.map +1 -0
  106. package/dist/esm/commands/up.d.ts +49 -0
  107. package/dist/esm/commands/up.js +74 -0
  108. package/dist/esm/commands/up.js.map +1 -0
  109. package/dist/esm/index.d.ts +7 -0
  110. package/dist/esm/index.js +11 -0
  111. package/dist/esm/index.js.map +1 -0
  112. package/dist/esm/lib/find-config.d.ts +14 -0
  113. package/dist/esm/lib/find-config.js +42 -0
  114. package/dist/esm/lib/find-config.js.map +1 -0
  115. package/dist/esm/lib/json-schema.d.ts +18 -0
  116. package/dist/esm/lib/json-schema.js +66 -0
  117. package/dist/esm/lib/json-schema.js.map +1 -0
  118. package/dist/esm/lib/resolve-server-config.d.ts +50 -0
  119. package/dist/esm/lib/resolve-server-config.js +154 -0
  120. package/dist/esm/lib/resolve-server-config.js.map +1 -0
  121. package/dist/esm/package.json +1 -0
  122. package/dist/esm/types.d.ts +21 -0
  123. package/dist/esm/types.js +11 -0
  124. package/dist/esm/types.js.map +1 -0
  125. package/package.json +99 -0
  126. 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>;