@slbdn/mcp-tester 1.2.0 → 1.4.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/dist/cli/index.js CHANGED
@@ -3,36 +3,114 @@
3
3
  import { Command } from 'commander';
4
4
  import { MCPClient } from '../client/MCPClient.js';
5
5
  import { MCPConnectionError, MCPTimeoutError, MCPServerError } from '../utils/errors.js';
6
+ import { generateTests } from '../generate-tests.js';
7
+ import { generateTypes } from '../generate-types.js';
8
+ import { readFileSync } from 'fs';
9
+ import { fileURLToPath } from 'url';
10
+ import { dirname, join } from 'path';
11
+ // Read version from package.json (works in both src and dist)
12
+ const __dirname = dirname(fileURLToPath(import.meta.url));
13
+ function getPackageVersion() {
14
+ try {
15
+ const pkg = JSON.parse(readFileSync(join(__dirname, '../../package.json'), 'utf-8'));
16
+ return pkg.version || '0.0.0';
17
+ }
18
+ catch {
19
+ return '0.0.0';
20
+ }
21
+ }
6
22
  const program = new Command();
7
23
  program
8
24
  .name('mcp-tester')
9
- .description('CLI tool for testing MCP servers')
10
- .version('1.0.0', '-V, --version');
11
- // Global options - use string type since commander passes strings
25
+ .description('CLI tool for testing MCP servers (stdio, HTTP, and SSE transports)')
26
+ .version(getPackageVersion(), '-V, --version');
27
+ // Global options (also added per-command via addTransportOptions below)
12
28
  program
13
29
  .option('-t, --timeout <ms>', 'Request timeout in milliseconds', '30000')
14
30
  .option('-v, --verbose', 'Enable verbose output')
15
31
  .option('-l, --log-level <level>', 'Log level (debug|info|warn|error)', 'info');
16
- // Test command - connects and verifies server is working
17
- program
18
- .command('test')
19
- .description('Test MCP server connection and list available capabilities')
20
- .argument('<command>', 'Command to run the MCP server (e.g., "node", "python")')
21
- .argument('[args...]', 'Arguments for the server command')
22
- .action(async (command, args, opts) => {
23
- const client = new MCPClient({
32
+ /**
33
+ * Add transport options to a command. Commander requires options to be defined
34
+ * on the command itself for them to be recognized during argument parsing.
35
+ */
36
+ function withTransport(cmd) {
37
+ return cmd
38
+ .option('-T, --transport <type>', 'Transport: stdio (default), http, or sse', undefined)
39
+ .option('--url <url>', 'Server URL for http/sse (e.g. http://localhost:3000/mcp)', undefined)
40
+ .option('--headers <json>', 'HTTP headers as JSON (e.g. \'{"Authorization":"Bearer x"}\')', undefined);
41
+ }
42
+ // ─── Helper: resolve server config from global opts + positional args ──────
43
+ /**
44
+ * Build a ServerConfig from the global options and positional command/args.
45
+ *
46
+ * - If `--url` is provided → use HTTP/SSE transport
47
+ * - If `--transport http|sse` without `--url` → treat first positional arg as URL
48
+ * - Otherwise → stdio with command + args
49
+ */
50
+ function resolveServerConfig(opts, command, args) {
51
+ const transport = String(opts['transport'] || '');
52
+ const url = opts['url'] ? String(opts['url']) : undefined;
53
+ const headersRaw = opts['headers'] ? String(opts['headers']) : undefined;
54
+ let headers;
55
+ if (headersRaw) {
56
+ try {
57
+ headers = JSON.parse(headersRaw);
58
+ }
59
+ catch {
60
+ console.error('❌ Invalid JSON for --headers');
61
+ process.exit(1);
62
+ }
63
+ }
64
+ // HTTP or SSE transport
65
+ if (transport === 'http' || transport === 'sse' || (url && transport)) {
66
+ const actualTransport = (transport || 'http');
67
+ const actualUrl = url || command;
68
+ if (!actualUrl) {
69
+ console.error(`❌ URL is required for ${actualTransport} transport. Use --url or pass as first argument.`);
70
+ process.exit(1);
71
+ }
72
+ return { transport: actualTransport, url: actualUrl, headers };
73
+ }
74
+ // Auto-detect: if command looks like a URL, use HTTP
75
+ if (command && (command.startsWith('http://') || command.startsWith('https://'))) {
76
+ return { transport: 'http', url: command, headers };
77
+ }
78
+ // Default: stdio
79
+ if (!command) {
80
+ console.error('❌ Command is required for stdio transport. Example: mcp-tester test node ./server.js');
81
+ process.exit(1);
82
+ }
83
+ return { command, args: args || [] };
84
+ }
85
+ /** Human-readable description of the connection target for logging. */
86
+ function describeTarget(config) {
87
+ if ('url' in config) {
88
+ return `${config.transport}: ${config.url}`;
89
+ }
90
+ return `stdio: ${config.command} ${(config.args || []).join(' ')}`;
91
+ }
92
+ /** Create a client with global options. */
93
+ function createClient(opts) {
94
+ return new MCPClient({
24
95
  name: 'mcp-tester-cli',
25
96
  version: '1.0.0',
26
97
  timeout: parseInt(String(opts['timeout'] || '30000')),
27
98
  logLevel: (opts['verbose'] ? 'debug' : String(opts['logLevel'] || 'info')),
28
99
  });
100
+ }
101
+ // ─── Commands ────────────────────────────────────────────────────────────
102
+ // Test command - connects and verifies server is working
103
+ withTransport(program
104
+ .command('test')
105
+ .description('Test MCP server connection and list available capabilities')
106
+ .argument('[command]', 'Command to run (stdio) or URL (http/sse)')
107
+ .argument('[args...]', 'Arguments for the server command')).action(async (command, args, opts) => {
108
+ const config = resolveServerConfig(opts, command, args);
109
+ const client = createClient(opts);
29
110
  try {
30
111
  console.log(`🔌 Connecting to MCP server...`);
31
- console.log(` Command: ${command} ${args.join(' ')}`);
32
- await client.start({
33
- command,
34
- args,
35
- });
112
+ console.log(` ${describeTarget(config)}`);
113
+ await client.start(config);
36
114
  console.log(`✅ Connected successfully\n`);
37
115
  // Test tools
38
116
  console.log(`🛠️ Tools:`);
@@ -76,7 +154,7 @@ program
76
154
  catch (error) {
77
155
  console.error(`❌ Error: ${error instanceof Error ? error.message : String(error)}`);
78
156
  if (error instanceof MCPConnectionError) {
79
- console.error(' → Server failed to start. Check command and server process.');
157
+ console.error(' → Connection failed. Check the URL or command.');
80
158
  }
81
159
  else if (error instanceof MCPTimeoutError) {
82
160
  console.error(` → Request timed out after ${opts['timeout']}ms`);
@@ -91,22 +169,18 @@ program
91
169
  }
92
170
  });
93
171
  // List tools command
94
- program
172
+ withTransport(program
95
173
  .command('list-tools')
96
174
  .alias('lt')
97
175
  .description('List all available tools from the MCP server')
98
- .argument('<command>', 'Command to run the MCP server')
99
- .argument('[args...]', 'Arguments for the server command')
176
+ .argument('[command]', 'Command to run (stdio) or URL (http/sse)')
177
+ .argument('[args...]', 'Arguments for the server command'))
100
178
  .option('--json', 'Output as JSON')
101
179
  .action(async (command, args, opts) => {
102
- const client = new MCPClient({
103
- name: 'mcp-tester-cli',
104
- version: '1.0.0',
105
- timeout: parseInt(String(opts['timeout'] || '30000')),
106
- logLevel: opts['verbose'] ? 'debug' : 'info',
107
- });
180
+ const config = resolveServerConfig(opts, command, args);
181
+ const client = createClient(opts);
108
182
  try {
109
- await client.start({ command, args });
183
+ await client.start(config);
110
184
  const tools = await client.listTools();
111
185
  if (opts['json']) {
112
186
  console.log(JSON.stringify({ tools }, null, 2));
@@ -133,22 +207,18 @@ program
133
207
  }
134
208
  });
135
209
  // Call tool command
136
- program
210
+ withTransport(program
137
211
  .command('call-tool')
138
212
  .alias('ct')
139
213
  .description('Call a tool on the MCP server')
140
214
  .argument('<tool-name>', 'Name of the tool to call')
141
- .argument('<command>', 'Command to run the MCP server')
142
- .argument('[args...]', 'Arguments for the server command')
215
+ .argument('[command]', 'Command to run (stdio) or URL (http/sse)')
216
+ .argument('[args...]', 'Arguments for the server command'))
143
217
  .option('--params <json>', 'Tool parameters as JSON string')
144
218
  .option('--json', 'Output as JSON')
145
219
  .action(async (toolName, command, serverArgs, opts) => {
146
- const client = new MCPClient({
147
- name: 'mcp-tester-cli',
148
- version: '1.0.0',
149
- timeout: parseInt(String(opts['timeout'] || '30000')),
150
- logLevel: opts['verbose'] ? 'debug' : 'info',
151
- });
220
+ const config = resolveServerConfig(opts, command, serverArgs);
221
+ const client = createClient(opts);
152
222
  let toolArgs = {};
153
223
  if (opts['params']) {
154
224
  try {
@@ -160,7 +230,7 @@ program
160
230
  }
161
231
  }
162
232
  try {
163
- await client.start({ command, args: serverArgs });
233
+ await client.start(config);
164
234
  if (!opts['json']) {
165
235
  console.log(`🔧 Calling tool: ${toolName}`);
166
236
  if (Object.keys(toolArgs).length > 0) {
@@ -195,23 +265,19 @@ program
195
265
  }
196
266
  });
197
267
  // Read resource command
198
- program
268
+ withTransport(program
199
269
  .command('read-resource')
200
270
  .alias('rr')
201
271
  .description('Read a resource from the MCP server')
202
272
  .argument('<uri>', 'URI of the resource to read')
203
- .argument('<command>', 'Command to run the MCP server')
204
- .argument('[args...]', 'Arguments for the server command')
273
+ .argument('[command]', 'Command to run (stdio) or URL (http/sse)')
274
+ .argument('[args...]', 'Arguments for the server command'))
205
275
  .option('--json', 'Output as JSON')
206
276
  .action(async (uri, command, serverArgs, opts) => {
207
- const client = new MCPClient({
208
- name: 'mcp-tester-cli',
209
- version: '1.0.0',
210
- timeout: parseInt(String(opts['timeout'] || '30000')),
211
- logLevel: opts['verbose'] ? 'debug' : 'info',
212
- });
277
+ const config = resolveServerConfig(opts, command, serverArgs);
278
+ const client = createClient(opts);
213
279
  try {
214
- await client.start({ command, args: serverArgs });
280
+ await client.start(config);
215
281
  if (!opts['json']) {
216
282
  console.log(`📖 Reading resource: ${uri}`);
217
283
  }
@@ -237,22 +303,18 @@ program
237
303
  }
238
304
  });
239
305
  // Get prompt command
240
- program
306
+ withTransport(program
241
307
  .command('get-prompt')
242
308
  .alias('gp')
243
309
  .description('Get a prompt from the MCP server')
244
310
  .argument('<name>', 'Name of the prompt')
245
- .argument('<command>', 'Command to run the MCP server')
246
- .argument('[args...]', 'Arguments for the server command')
311
+ .argument('[command]', 'Command to run (stdio) or URL (http/sse)')
312
+ .argument('[args...]', 'Arguments for the server command'))
247
313
  .option('--args <json>', 'Prompt arguments as JSON string')
248
314
  .option('--json', 'Output as JSON')
249
315
  .action(async (promptName, command, serverArgs, opts) => {
250
- const client = new MCPClient({
251
- name: 'mcp-tester-cli',
252
- version: '1.0.0',
253
- timeout: parseInt(String(opts['timeout'] || '30000')),
254
- logLevel: opts['verbose'] ? 'debug' : 'info',
255
- });
316
+ const config = resolveServerConfig(opts, command, serverArgs);
317
+ const client = createClient(opts);
256
318
  let promptArgs = {};
257
319
  if (opts['args']) {
258
320
  try {
@@ -264,7 +326,7 @@ program
264
326
  }
265
327
  }
266
328
  try {
267
- await client.start({ command, args: serverArgs });
329
+ await client.start(config);
268
330
  if (!opts['json']) {
269
331
  console.log(`💬 Getting prompt: ${promptName}`);
270
332
  }
@@ -290,16 +352,274 @@ program
290
352
  await client.stop();
291
353
  }
292
354
  });
293
- // Add custom help with examples using Commander's built-in help system
355
+ // Generate test file command
356
+ withTransport(program
357
+ .command('generate')
358
+ .alias('gen')
359
+ .description('Generate test file from MCP server inspection')
360
+ .argument('[command]', 'Command to run (stdio) or URL (http/sse)')
361
+ .argument('[args...]', 'Arguments for the server command'))
362
+ .option('-o, --output <file>', 'Output file path (prints to stdout if omitted)')
363
+ .option('--framework <fw>', 'Test framework: jest or vitest', 'jest')
364
+ .option('--description <desc>', 'Description for the test suite')
365
+ .option('--no-resources', 'Skip resource tests')
366
+ .option('--no-prompts', 'Skip prompt tests')
367
+ .option('--no-tools', 'Skip tool tests')
368
+ .option('--no-matchers', 'Skip custom matchers import')
369
+ .action(async (command, serverArgs, opts) => {
370
+ const framework = String(opts['framework'] || 'jest');
371
+ if (framework !== 'jest' && framework !== 'vitest') {
372
+ console.error('❌ Framework must be "jest" or "vitest"');
373
+ process.exit(1);
374
+ }
375
+ try {
376
+ console.error('🔍 Inspecting MCP server...');
377
+ // generateTests supports stdio only (connects and inspects)
378
+ const config = resolveServerConfig(opts, command, serverArgs);
379
+ const timeout = parseInt(String(opts['timeout'] || '30000'));
380
+ let code;
381
+ if ('command' in config) {
382
+ code = await generateTests({
383
+ command: config.command,
384
+ args: config.args || [],
385
+ framework: framework,
386
+ description: opts['description'],
387
+ includeResources: opts['resources'] !== false,
388
+ includePrompts: opts['prompts'] !== false,
389
+ includeTools: opts['tools'] !== false,
390
+ includeMatchers: opts['matchers'] !== false,
391
+ timeout,
392
+ });
393
+ }
394
+ else {
395
+ // HTTP/SSE — connect directly
396
+ const client = new MCPClient({ name: 'mcp-tester-gen', version: '1.0.0', timeout });
397
+ try {
398
+ await client.start(config);
399
+ // For HTTP/SSE, generate from connected client
400
+ code = await generateFromClient(client, {
401
+ framework: framework,
402
+ description: opts['description'],
403
+ includeResources: opts['resources'] !== false,
404
+ includePrompts: opts['prompts'] !== false,
405
+ includeTools: opts['tools'] !== false,
406
+ includeMatchers: opts['matchers'] !== false,
407
+ });
408
+ }
409
+ finally {
410
+ await client.stop();
411
+ }
412
+ }
413
+ if (opts['output']) {
414
+ const fs = await import('fs');
415
+ const path = await import('path');
416
+ const outputPath = String(opts['output']);
417
+ const dir = path.dirname(outputPath);
418
+ if (dir && dir !== '.') {
419
+ fs.mkdirSync(dir, { recursive: true });
420
+ }
421
+ fs.writeFileSync(outputPath, code, 'utf-8');
422
+ console.error(`✅ Generated test file: ${outputPath}`);
423
+ }
424
+ else {
425
+ process.stdout.write(code);
426
+ }
427
+ }
428
+ catch (error) {
429
+ console.error(`❌ Error: ${error instanceof Error ? error.message : String(error)}`);
430
+ process.exit(1);
431
+ }
432
+ });
433
+ // Generate TypeScript types command
434
+ withTransport(program
435
+ .command('generate-types')
436
+ .alias('gen-types')
437
+ .description('Generate TypeScript type declarations from MCP server tool schemas')
438
+ .argument('[command]', 'Command to run (stdio) or URL (http/sse)')
439
+ .argument('[args...]', 'Arguments for the server command'))
440
+ .option('-o, --output <file>', 'Output file path (prints to stdout if omitted)')
441
+ .option('--module-name <name>', 'Module name for import hints', '@slbdn/mcp-tester')
442
+ .option('--no-resources', 'Skip resource URI types')
443
+ .option('--no-prompts', 'Skip prompt argument types')
444
+ .action(async (command, serverArgs, opts) => {
445
+ try {
446
+ console.error('🔍 Inspecting MCP server for type generation...');
447
+ const config = resolveServerConfig(opts, command, serverArgs);
448
+ const timeout = parseInt(String(opts['timeout'] || '30000'));
449
+ let types;
450
+ if ('command' in config) {
451
+ types = await generateTypes({
452
+ command: config.command,
453
+ args: config.args || [],
454
+ moduleName: opts['moduleName'],
455
+ includeResources: opts['resources'] !== false,
456
+ includePrompts: opts['prompts'] !== false,
457
+ timeout,
458
+ });
459
+ }
460
+ else {
461
+ const client = new MCPClient({ name: 'mcp-tester-gen', version: '1.0.0', timeout });
462
+ try {
463
+ await client.start(config);
464
+ types = await generateTypesFromClient(client, {
465
+ moduleName: opts['moduleName'],
466
+ includeResources: opts['resources'] !== false,
467
+ includePrompts: opts['prompts'] !== false,
468
+ });
469
+ }
470
+ finally {
471
+ await client.stop();
472
+ }
473
+ }
474
+ if (opts['output']) {
475
+ const fs = await import('fs');
476
+ const path = await import('path');
477
+ const outputPath = String(opts['output']);
478
+ const dir = path.dirname(outputPath);
479
+ if (dir && dir !== '.') {
480
+ fs.mkdirSync(dir, { recursive: true });
481
+ }
482
+ fs.writeFileSync(outputPath, types, 'utf-8');
483
+ console.error(`✅ Generated type declarations: ${outputPath}`);
484
+ }
485
+ else {
486
+ process.stdout.write(types);
487
+ }
488
+ }
489
+ catch (error) {
490
+ console.error(`❌ Error: ${error instanceof Error ? error.message : String(error)}`);
491
+ process.exit(1);
492
+ }
493
+ });
494
+ // ─── Helpers for HTTP/SSE codegen (inline inspection) ─────────────────────
495
+ async function generateFromClient(client, opts) {
496
+ const tools = opts.includeTools ? await client.listTools() : [];
497
+ const resources = opts.includeResources ? await client.listResources() : [];
498
+ const prompts = opts.includePrompts ? await client.listPrompts() : [];
499
+ // Build the test code inline (simplified version for HTTP/SSE)
500
+ const importLine = opts.framework === 'vitest' ? 'vitest' : '@jest/globals';
501
+ const matchersImport = opts.includeMatchers
502
+ ? `import { setup${opts.framework === 'vitest' ? 'Vitest' : 'Jest'}Matchers } from '@slbdn/mcp-tester';\n`
503
+ : '';
504
+ let code = `import { describe, it, expect, beforeAll, afterAll } from '${importLine}';\n`;
505
+ code += `import { MCPClient } from '@slbdn/mcp-tester';\n`;
506
+ if (matchersImport)
507
+ code += matchersImport;
508
+ code += '\n';
509
+ const desc = opts.description || 'Generated MCP Server Tests';
510
+ code += `describe('${desc}', () => {\n`;
511
+ code += ` let client: MCPClient;\n\n`;
512
+ code += ` beforeAll(async () => {\n`;
513
+ if (matchersImport) {
514
+ code += ` setup${opts.framework === 'vitest' ? 'Vitest' : 'Jest'}Matchers();\n`;
515
+ }
516
+ code += ` client = new MCPClient({ timeout: 30000 });\n`;
517
+ code += ` // Update the URL/command for your server\n`;
518
+ code += ` await client.start({ command: 'node', args: ['./server.js'] });\n`;
519
+ code += ` });\n\n`;
520
+ code += ` afterAll(async () => {\n if (client.isConnected()) await client.stop();\n });\n\n`;
521
+ if (opts.includeTools) {
522
+ code += ` // ─── Tools (${tools.length}) ───\n`;
523
+ for (const tool of tools) {
524
+ code += ` it('should have tool: ${tool.name}', async () => {\n`;
525
+ code += ` const tools = await client.listTools();\n`;
526
+ code += ` expect(tools.map(t => t.name)).toContain('${tool.name}');\n`;
527
+ code += ` });\n\n`;
528
+ }
529
+ }
530
+ if (opts.includeResources) {
531
+ code += ` // ─── Resources (${resources.length}) ───\n`;
532
+ code += ` it('should list resources', async () => {\n`;
533
+ code += ` const resources = await client.listResources();\n`;
534
+ code += ` expect(resources.length).toBeGreaterThan(0);\n`;
535
+ code += ` });\n\n`;
536
+ }
537
+ if (opts.includePrompts) {
538
+ code += ` // ─── Prompts (${prompts.length}) ───\n`;
539
+ code += ` it('should list prompts', async () => {\n`;
540
+ code += ` const prompts = await client.listPrompts();\n`;
541
+ code += ` expect(prompts.length).toBeGreaterThan(0);\n`;
542
+ code += ` });\n\n`;
543
+ }
544
+ code += `});\n`;
545
+ return code;
546
+ }
547
+ async function generateTypesFromClient(client, opts) {
548
+ const tools = await client.listTools();
549
+ const resources = opts.includeResources ? await client.listResources() : [];
550
+ const prompts = opts.includePrompts ? await client.listPrompts() : [];
551
+ const moduleName = opts.moduleName || '@slbdn/mcp-tester';
552
+ let code = `// Generated by mcp-tester generate-types\n`;
553
+ code += `// Source: MCP server inspection\n\n`;
554
+ code += `// Tool argument types\n`;
555
+ for (const tool of tools) {
556
+ code += `export interface ${toPascalCase(tool.name)}Args {\n`;
557
+ const props = tool.inputSchema?.properties || {};
558
+ const required = tool.inputSchema?.required || [];
559
+ for (const [key, schema] of Object.entries(props)) {
560
+ const s = schema;
561
+ const tsType = jsonSchemaToTs(s);
562
+ const optional = !required.includes(key) ? '?' : '';
563
+ code += ` ${key}${optional}: ${tsType};\n`;
564
+ }
565
+ code += `}\n\n`;
566
+ }
567
+ code += `export type ToolName = ${tools.map((t) => `'${t.name}'`).join(' | ') || 'string'};\n\n`;
568
+ if (resources.length > 0) {
569
+ code += `export type ResourceUri = ${resources.map((r) => `'${r.uri}'`).join(' | ')};\n\n`;
570
+ }
571
+ if (prompts.length > 0) {
572
+ code += `export type PromptName = ${prompts.map((p) => `'${p.name}'`).join(' | ')};\n\n`;
573
+ }
574
+ code += `// Import the client\n`;
575
+ code += `import { MCPClient, type ToolCall } from '${moduleName}';\n`;
576
+ return code;
577
+ }
578
+ function toPascalCase(s) {
579
+ return s.replace(/(^|[-_])(.)/g, (_, __, c) => c.toUpperCase());
580
+ }
581
+ function jsonSchemaToTs(schema) {
582
+ const type = schema.type;
583
+ switch (type) {
584
+ case 'string':
585
+ return 'string';
586
+ case 'number':
587
+ case 'integer':
588
+ return 'number';
589
+ case 'boolean':
590
+ return 'boolean';
591
+ case 'array':
592
+ return 'unknown[]';
593
+ case 'object':
594
+ return 'Record<string, unknown>';
595
+ default:
596
+ return 'unknown';
597
+ }
598
+ }
599
+ // ─── Help ────────────────────────────────────────────────────────────────
294
600
  program.addHelpText('after', `
295
601
  Examples:
602
+ # Stdio transport (default)
296
603
  mcp-tester test node ./server.js
297
604
  mcp-tester list-tools node ./server.js --json
298
605
  mcp-tester call-tool echo node ./server.js --params '{"message":"Hello"}'
299
- mcp-tester read-resource text://example node ./server.js
300
- mcp-tester get-prompt greet node ./server.js --args '{"name":"World"}'
301
- mcp-tester lt node ./server.js # short alias for list-tools
302
- mcp-tester ct echo node ./server.js --params '{}' # short alias for call-tool
606
+
607
+ # HTTP transport
608
+ mcp-tester test --transport http --url http://localhost:3000/mcp
609
+ mcp-tester list-tools http://localhost:3000/mcp --json
610
+ mcp-tester call-tool echo http://localhost:3000/mcp --params '{"message":"Hi"}'
611
+
612
+ # SSE transport
613
+ mcp-tester test --transport sse --url http://localhost:3000/sse
614
+
615
+ # With custom headers
616
+ mcp-tester test --transport http --url https://api.example.com/mcp --headers '{"Authorization":"Bearer token"}'
617
+
618
+ # Generate tests and types (stdio)
619
+ mcp-tester generate node ./server.js -o server.test.ts
620
+ mcp-tester generate-types node ./server.js -o server.d.ts
621
+
622
+ Short aliases: lt (list-tools), ct (call-tool), rr (read-resource), gp (get-prompt), gen (generate)
303
623
  `);
304
624
  // Show help when invoked with no arguments
305
625
  const args = process.argv.slice(2);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}