@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,311 @@
1
+ /**
2
+ * read-resource.ts
3
+ *
4
+ * Read MCP resources 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, "readResourceCommand", {
11
+ enumerable: true,
12
+ get: function() {
13
+ return readResourceCommand;
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 _ts_generator(thisArg, body) {
69
+ var f, y, t, _ = {
70
+ label: 0,
71
+ sent: function() {
72
+ if (t[0] & 1) throw t[1];
73
+ return t[1];
74
+ },
75
+ trys: [],
76
+ ops: []
77
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
78
+ return d(g, "next", {
79
+ value: verb(0)
80
+ }), d(g, "throw", {
81
+ value: verb(1)
82
+ }), d(g, "return", {
83
+ value: verb(2)
84
+ }), typeof Symbol === "function" && d(g, Symbol.iterator, {
85
+ value: function() {
86
+ return this;
87
+ }
88
+ }), g;
89
+ function verb(n) {
90
+ return function(v) {
91
+ return step([
92
+ n,
93
+ v
94
+ ]);
95
+ };
96
+ }
97
+ function step(op) {
98
+ if (f) throw new TypeError("Generator is already executing.");
99
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
100
+ 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;
101
+ if (y = 0, t) op = [
102
+ op[0] & 2,
103
+ t.value
104
+ ];
105
+ switch(op[0]){
106
+ case 0:
107
+ case 1:
108
+ t = op;
109
+ break;
110
+ case 4:
111
+ _.label++;
112
+ return {
113
+ value: op[1],
114
+ done: false
115
+ };
116
+ case 5:
117
+ _.label++;
118
+ y = op[1];
119
+ op = [
120
+ 0
121
+ ];
122
+ continue;
123
+ case 7:
124
+ op = _.ops.pop();
125
+ _.trys.pop();
126
+ continue;
127
+ default:
128
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
129
+ _ = 0;
130
+ continue;
131
+ }
132
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
133
+ _.label = op[1];
134
+ break;
135
+ }
136
+ if (op[0] === 6 && _.label < t[1]) {
137
+ _.label = t[1];
138
+ t = op;
139
+ break;
140
+ }
141
+ if (t && _.label < t[2]) {
142
+ _.label = t[2];
143
+ _.ops.push(op);
144
+ break;
145
+ }
146
+ if (t[2]) _.ops.pop();
147
+ _.trys.pop();
148
+ continue;
149
+ }
150
+ op = body.call(thisArg, _);
151
+ } catch (e) {
152
+ op = [
153
+ 6,
154
+ e
155
+ ];
156
+ y = 0;
157
+ } finally{
158
+ f = t = 0;
159
+ }
160
+ if (op[0] & 5) throw op[1];
161
+ return {
162
+ value: op[0] ? op[1] : void 0,
163
+ done: true
164
+ };
165
+ }
166
+ }
167
+ function readResourceCommand(opts) {
168
+ return _async_to_generator(function() {
169
+ var registry, client, _resolveServerConfig, serverName, serverConfig, configDir, start, elapsed, resourceResponse, resource, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, content, error, _;
170
+ return _ts_generator(this, function(_state) {
171
+ switch(_state.label){
172
+ case 0:
173
+ _state.trys.push([
174
+ 0,
175
+ 3,
176
+ 4,
177
+ 9
178
+ ]);
179
+ // 1. Resolve server configuration (from config file or inline options)
180
+ _resolveServerConfig = (0, _resolveserverconfigts.resolveServerConfig)(opts), serverName = _resolveServerConfig.serverName, serverConfig = _resolveServerConfig.serverConfig, configDir = _resolveServerConfig.configDir;
181
+ // 2. Create registry and connect
182
+ start = Date.now();
183
+ if ((0, _typests.isHttpServer)(serverConfig)) {
184
+ // HTTP server - no spawning needed
185
+ if (!opts.json) {
186
+ console.log("\uD83D\uDD17 Connecting to ".concat(serverName, "..."));
187
+ }
188
+ } else {
189
+ // Stdio server - will be spawned
190
+ if (!opts.json) {
191
+ console.log("\uD83D\uDE80 Spawning ".concat(serverName, " server..."));
192
+ }
193
+ if (!serverConfig.command) {
194
+ throw new Error("Stdio server ".concat(serverName, ' missing required "command" field'));
195
+ }
196
+ }
197
+ // Create registry (spawns stdio servers, registers HTTP servers)
198
+ registry = (0, _client.createServerRegistry)(_define_property({}, serverName, serverConfig), {
199
+ cwd: configDir
200
+ });
201
+ return [
202
+ 4,
203
+ registry.connect(serverName)
204
+ ];
205
+ case 1:
206
+ client = _state.sent();
207
+ if (!(0, _typests.isHttpServer)(serverConfig) && !opts.json) {
208
+ elapsed = ((Date.now() - start) / 1000).toFixed(1);
209
+ console.log("āœ“ Server ready in ".concat(elapsed, "s\n"));
210
+ }
211
+ // 5. Read resource
212
+ if (!opts.json) {
213
+ console.log("\uD83D\uDCD6 Reading ".concat(opts.uri, "..."));
214
+ }
215
+ return [
216
+ 4,
217
+ client.readResource(opts.uri)
218
+ ];
219
+ case 2:
220
+ resourceResponse = _state.sent();
221
+ resource = resourceResponse.raw();
222
+ // Success case
223
+ if (opts.json) {
224
+ // JSON output mode
225
+ console.log(JSON.stringify(resource, null, 2));
226
+ } else {
227
+ // Human-readable output
228
+ console.log('āœ… Read succeeded\n');
229
+ _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
230
+ try {
231
+ // Display contents
232
+ for(_iterator = resource.contents[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
233
+ content = _step.value;
234
+ if ('text' in content) {
235
+ console.log('Content:');
236
+ console.log(content.text);
237
+ } else if ('blob' in content) {
238
+ console.log("Blob content (".concat(content.mimeType || 'unknown type', "): ").concat(content.blob.length, " bytes"));
239
+ }
240
+ }
241
+ } catch (err) {
242
+ _didIteratorError = true;
243
+ _iteratorError = err;
244
+ } finally{
245
+ try {
246
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
247
+ _iterator.return();
248
+ }
249
+ } finally{
250
+ if (_didIteratorError) {
251
+ throw _iteratorError;
252
+ }
253
+ }
254
+ }
255
+ }
256
+ return [
257
+ 3,
258
+ 9
259
+ ];
260
+ case 3:
261
+ error = _state.sent();
262
+ if (opts.json) {
263
+ console.log(JSON.stringify({
264
+ error: _instanceof(error, Error) ? error.message : String(error)
265
+ }, null, 2));
266
+ } else {
267
+ console.error("\nāŒ ".concat(_instanceof(error, Error) ? error.message : String(error)));
268
+ }
269
+ throw error;
270
+ case 4:
271
+ if (!registry) return [
272
+ 3,
273
+ 8
274
+ ];
275
+ _state.label = 5;
276
+ case 5:
277
+ _state.trys.push([
278
+ 5,
279
+ 7,
280
+ ,
281
+ 8
282
+ ]);
283
+ return [
284
+ 4,
285
+ registry.close()
286
+ ];
287
+ case 6:
288
+ _state.sent();
289
+ return [
290
+ 3,
291
+ 8
292
+ ];
293
+ case 7:
294
+ _ = _state.sent();
295
+ return [
296
+ 3,
297
+ 8
298
+ ];
299
+ case 8:
300
+ return [
301
+ 7
302
+ ];
303
+ case 9:
304
+ return [
305
+ 2
306
+ ];
307
+ }
308
+ });
309
+ })();
310
+ }
311
+ /* 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/read-resource.ts"],"sourcesContent":["/**\n * read-resource.ts\n *\n * Read MCP resources from the command line.\n * Supports stdio (spawned) and http (remote) servers per MCP spec.\n */\n\nimport { createServerRegistry, type ManagedClient, type ServerRegistry } from '@mcp-z/client';\nimport { type InlineConfigOptions, resolveServerConfig } from '../lib/resolve-server-config.ts';\nimport { isHttpServer } from '../types.ts';\n\nexport interface ReadResourceOptions extends InlineConfigOptions {\n uri: string; // Resource URI (positional)\n json?: boolean; // --json\n}\n\n/**\n * Main read-resource command implementation.\n *\n * @param opts - Read resource options from CLI flags\n *\n * @example\n * // Read a resource by URI\n * await readResourceCommand({\n * server: 'gmail',\n * uri: 'gmail://messages/abc123',\n * });\n */\nexport async function readResourceCommand(opts: ReadResourceOptions): 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. Read resource\n if (!opts.json) {\n console.log(`šŸ“– Reading ${opts.uri}...`);\n }\n\n const resourceResponse = await client.readResource(opts.uri);\n const resource = resourceResponse.raw();\n\n // Success case\n if (opts.json) {\n // JSON output mode\n console.log(JSON.stringify(resource, null, 2));\n } else {\n // Human-readable output\n console.log('āœ… Read succeeded\\n');\n\n // Display contents\n for (const content of resource.contents) {\n if ('text' in content) {\n console.log('Content:');\n console.log(content.text);\n } else if ('blob' in content) {\n console.log(`Blob content (${content.mimeType || 'unknown type'}): ${content.blob.length} bytes`);\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 // 7. 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":["readResourceCommand","opts","registry","client","resolveServerConfig","serverName","serverConfig","configDir","start","elapsed","resourceResponse","resource","content","error","_","Date","now","isHttpServer","json","console","log","command","Error","createServerRegistry","cwd","connect","toFixed","uri","readResource","raw","JSON","stringify","contents","text","mimeType","blob","length","message","String","close"],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * search.ts
3
+ *
4
+ * Search MCP server capabilities (tools, prompts, resources) without loading full schemas.
5
+ * Designed for agent discovery workflows.
6
+ */
7
+ export interface SearchCommandOptions {
8
+ config?: string;
9
+ servers?: string;
10
+ types?: string;
11
+ fields?: string;
12
+ limit?: number;
13
+ threshold?: number;
14
+ json?: boolean;
15
+ attach?: boolean;
16
+ }
17
+ /**
18
+ * Main search command implementation.
19
+ *
20
+ * @param query - The search query string
21
+ * @param opts - Search options from CLI flags
22
+ *
23
+ * @example
24
+ * // Search for email-related capabilities
25
+ * await searchCommand('send email', {});
26
+ *
27
+ * @example
28
+ * // Search only tools in specific servers
29
+ * await searchCommand('spreadsheet', { types: 'tool', servers: 'sheets,drive' });
30
+ */
31
+ export declare function searchCommand(query: string, opts?: SearchCommandOptions): Promise<void>;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * search.ts
3
+ *
4
+ * Search MCP server capabilities (tools, prompts, resources) without loading full schemas.
5
+ * Designed for agent discovery workflows.
6
+ */
7
+ export interface SearchCommandOptions {
8
+ config?: string;
9
+ servers?: string;
10
+ types?: string;
11
+ fields?: string;
12
+ limit?: number;
13
+ threshold?: number;
14
+ json?: boolean;
15
+ attach?: boolean;
16
+ }
17
+ /**
18
+ * Main search command implementation.
19
+ *
20
+ * @param query - The search query string
21
+ * @param opts - Search options from CLI flags
22
+ *
23
+ * @example
24
+ * // Search for email-related capabilities
25
+ * await searchCommand('send email', {});
26
+ *
27
+ * @example
28
+ * // Search only tools in specific servers
29
+ * await searchCommand('spreadsheet', { types: 'tool', servers: 'sheets,drive' });
30
+ */
31
+ export declare function searchCommand(query: string, opts?: SearchCommandOptions): Promise<void>;