@apify/mcpc 0.3.0-beta.1 → 0.3.1-beta.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 (106) hide show
  1. package/CHANGELOG.md +28 -2
  2. package/README.md +141 -66
  3. package/dist/bridge/index.js +32 -40
  4. package/dist/bridge/index.js.map +1 -1
  5. package/dist/cli/commands/clean.d.ts.map +1 -1
  6. package/dist/cli/commands/clean.js +3 -2
  7. package/dist/cli/commands/clean.js.map +1 -1
  8. package/dist/cli/commands/logs.d.ts +8 -0
  9. package/dist/cli/commands/logs.d.ts.map +1 -0
  10. package/dist/cli/commands/logs.js +143 -0
  11. package/dist/cli/commands/logs.js.map +1 -0
  12. package/dist/cli/commands/sessions.d.ts +6 -4
  13. package/dist/cli/commands/sessions.d.ts.map +1 -1
  14. package/dist/cli/commands/sessions.js +141 -85
  15. package/dist/cli/commands/sessions.js.map +1 -1
  16. package/dist/cli/commands/skills.d.ts +20 -0
  17. package/dist/cli/commands/skills.d.ts.map +1 -0
  18. package/dist/cli/commands/skills.js +160 -0
  19. package/dist/cli/commands/skills.js.map +1 -0
  20. package/dist/cli/commands/x402.d.ts.map +1 -1
  21. package/dist/cli/commands/x402.js +14 -4
  22. package/dist/cli/commands/x402.js.map +1 -1
  23. package/dist/cli/index.js +113 -24
  24. package/dist/cli/index.js.map +1 -1
  25. package/dist/cli/output.d.ts +13 -0
  26. package/dist/cli/output.d.ts.map +1 -1
  27. package/dist/cli/output.js +114 -20
  28. package/dist/cli/output.js.map +1 -1
  29. package/dist/cli/parser.d.ts +1 -1
  30. package/dist/cli/parser.d.ts.map +1 -1
  31. package/dist/cli/parser.js +25 -2
  32. package/dist/cli/parser.js.map +1 -1
  33. package/dist/cli/shell.js.map +1 -1
  34. package/dist/core/capabilities.d.ts +3 -0
  35. package/dist/core/capabilities.d.ts.map +1 -0
  36. package/dist/core/capabilities.js +14 -0
  37. package/dist/core/capabilities.js.map +1 -0
  38. package/dist/core/index.d.ts +1 -0
  39. package/dist/core/index.d.ts.map +1 -1
  40. package/dist/core/index.js +1 -0
  41. package/dist/core/index.js.map +1 -1
  42. package/dist/core/mcp-client.d.ts +4 -0
  43. package/dist/core/mcp-client.d.ts.map +1 -1
  44. package/dist/core/mcp-client.js +34 -12
  45. package/dist/core/mcp-client.js.map +1 -1
  46. package/dist/lib/bridge-client.d.ts +4 -1
  47. package/dist/lib/bridge-client.d.ts.map +1 -1
  48. package/dist/lib/bridge-client.js +29 -3
  49. package/dist/lib/bridge-client.js.map +1 -1
  50. package/dist/lib/bridge-manager.d.ts +2 -2
  51. package/dist/lib/bridge-manager.d.ts.map +1 -1
  52. package/dist/lib/bridge-manager.js +31 -15
  53. package/dist/lib/bridge-manager.js.map +1 -1
  54. package/dist/lib/cleanup.d.ts.map +1 -1
  55. package/dist/lib/cleanup.js +20 -19
  56. package/dist/lib/cleanup.js.map +1 -1
  57. package/dist/lib/config.d.ts +14 -0
  58. package/dist/lib/config.d.ts.map +1 -1
  59. package/dist/lib/config.js +41 -27
  60. package/dist/lib/config.js.map +1 -1
  61. package/dist/lib/errors.d.ts +0 -1
  62. package/dist/lib/errors.d.ts.map +1 -1
  63. package/dist/lib/errors.js +2 -4
  64. package/dist/lib/errors.js.map +1 -1
  65. package/dist/lib/index.d.ts +1 -0
  66. package/dist/lib/index.d.ts.map +1 -1
  67. package/dist/lib/index.js +1 -0
  68. package/dist/lib/index.js.map +1 -1
  69. package/dist/lib/log-reader.d.ts +28 -0
  70. package/dist/lib/log-reader.d.ts.map +1 -0
  71. package/dist/lib/log-reader.js +278 -0
  72. package/dist/lib/log-reader.js.map +1 -0
  73. package/dist/lib/session-client.d.ts.map +1 -1
  74. package/dist/lib/session-client.js +3 -5
  75. package/dist/lib/session-client.js.map +1 -1
  76. package/dist/lib/stderr-tail.d.ts +10 -0
  77. package/dist/lib/stderr-tail.d.ts.map +1 -0
  78. package/dist/lib/stderr-tail.js +28 -0
  79. package/dist/lib/stderr-tail.js.map +1 -0
  80. package/dist/lib/types.d.ts +6 -1
  81. package/dist/lib/types.d.ts.map +1 -1
  82. package/dist/lib/types.js +1 -0
  83. package/dist/lib/types.js.map +1 -1
  84. package/dist/lib/utils.d.ts +1 -0
  85. package/dist/lib/utils.d.ts.map +1 -1
  86. package/dist/lib/utils.js +12 -2
  87. package/dist/lib/utils.js.map +1 -1
  88. package/dist/lib/x402/fetch-middleware.d.ts +3 -2
  89. package/dist/lib/x402/fetch-middleware.d.ts.map +1 -1
  90. package/dist/lib/x402/fetch-middleware.js +37 -24
  91. package/dist/lib/x402/fetch-middleware.js.map +1 -1
  92. package/dist/lib/x402/signer.d.ts +7 -1
  93. package/dist/lib/x402/signer.d.ts.map +1 -1
  94. package/dist/lib/x402/signer.js +249 -5
  95. package/dist/lib/x402/signer.js.map +1 -1
  96. package/docs/README.md +1 -0
  97. package/docs/claude-skill/SKILL.md +151 -117
  98. package/docs/examples/company-lookup.sh +6 -6
  99. package/docs/vhs/README.md +79 -0
  100. package/docs/vhs/grep.tape +56 -0
  101. package/docs/vhs/mcpc-demo.tape +179 -0
  102. package/docs/vhs/proxy.tape +69 -0
  103. package/docs/vhs/quickstart.tape +59 -0
  104. package/docs/vhs/scripting.tape +69 -0
  105. package/docs/vhs/tools.tape +66 -0
  106. package/package.json +20 -20
@@ -0,0 +1,160 @@
1
+ import { ServerError, ClientError } from '../../lib/errors.js';
2
+ import { withMcpClient } from '../helpers.js';
3
+ import { formatOutput, formatSkills, formatSkillDetail } from '../output.js';
4
+ export const SKILLS_INDEX_URI = 'skill://index.json';
5
+ export const SKILLS_EXTENSION_KEY = 'io.modelcontextprotocol/skills';
6
+ export function extractTextContent(result) {
7
+ for (const item of result.contents) {
8
+ if ('text' in item && typeof item.text === 'string') {
9
+ return item.text;
10
+ }
11
+ }
12
+ return undefined;
13
+ }
14
+ export function parseIndex(text) {
15
+ let parsed;
16
+ try {
17
+ parsed = JSON.parse(text);
18
+ }
19
+ catch (err) {
20
+ throw new ServerError(`Skills index at ${SKILLS_INDEX_URI} is not valid JSON: ${err.message}`);
21
+ }
22
+ if (!parsed || typeof parsed !== 'object') {
23
+ throw new ServerError(`Skills index at ${SKILLS_INDEX_URI} is not a JSON object (got ${typeof parsed})`);
24
+ }
25
+ const raw = parsed.skills;
26
+ if (!Array.isArray(raw)) {
27
+ return [];
28
+ }
29
+ const skills = [];
30
+ for (const entry of raw) {
31
+ if (!entry || typeof entry !== 'object')
32
+ continue;
33
+ const e = entry;
34
+ if (typeof e.url !== 'string')
35
+ continue;
36
+ const type = typeof e.type === 'string' ? e.type : 'skill-md';
37
+ if (type !== 'skill-md' && type !== 'archive' && type !== 'mcp-resource-template') {
38
+ continue;
39
+ }
40
+ const isTemplate = type === 'mcp-resource-template';
41
+ let name;
42
+ if (typeof e.name === 'string' && e.name.length > 0) {
43
+ name = e.name;
44
+ }
45
+ else if (isTemplate) {
46
+ name = displayNameFromUrl(e.url);
47
+ }
48
+ else {
49
+ continue;
50
+ }
51
+ skills.push({
52
+ name,
53
+ description: typeof e.description === 'string' ? e.description : '',
54
+ ...(type !== undefined && { type }),
55
+ url: e.url,
56
+ });
57
+ }
58
+ return skills;
59
+ }
60
+ function displayNameFromUrl(url) {
61
+ const schemeEnd = url.indexOf('://');
62
+ const path = schemeEnd >= 0 ? url.slice(schemeEnd + 3) : url;
63
+ const parts = path.split('/').filter(Boolean);
64
+ if (parts.length === 0)
65
+ return url;
66
+ if (parts[parts.length - 1] === 'SKILL.md' && parts.length >= 2) {
67
+ return parts[parts.length - 2];
68
+ }
69
+ return parts[parts.length - 1];
70
+ }
71
+ export function skillsFromResources(resources) {
72
+ const pattern = /^skill:\/\/((?:[^/]+\/)*[^/]+)\/SKILL\.md$/;
73
+ const skills = [];
74
+ for (const resource of resources) {
75
+ const m = pattern.exec(resource.uri);
76
+ if (!m || !m[1])
77
+ continue;
78
+ const path = m[1];
79
+ const lastSlash = path.lastIndexOf('/');
80
+ const name = lastSlash >= 0 ? path.slice(lastSlash + 1) : path;
81
+ skills.push({
82
+ name: resource.name || name,
83
+ description: resource.description || '',
84
+ type: 'skill-md',
85
+ url: resource.uri,
86
+ });
87
+ }
88
+ return skills;
89
+ }
90
+ export async function discoverSkills(client) {
91
+ try {
92
+ const indexResult = await client.readResource(SKILLS_INDEX_URI);
93
+ const text = extractTextContent(indexResult);
94
+ if (text !== undefined) {
95
+ return parseIndex(text);
96
+ }
97
+ }
98
+ catch {
99
+ }
100
+ const all = [];
101
+ let cursor;
102
+ do {
103
+ const page = await client.listResources(cursor);
104
+ all.push(...page.resources);
105
+ cursor = page.nextCursor;
106
+ } while (cursor);
107
+ return skillsFromResources(all);
108
+ }
109
+ export function resolveSkillUri(input) {
110
+ const trimmed = input.trim();
111
+ if (!trimmed) {
112
+ throw new ClientError('Skill name is required');
113
+ }
114
+ if (trimmed.startsWith('skill://')) {
115
+ const rest = trimmed.slice('skill://'.length);
116
+ const lastSegment = rest.slice(rest.lastIndexOf('/') + 1);
117
+ if (lastSegment.includes('.')) {
118
+ return trimmed;
119
+ }
120
+ return trimmed.endsWith('/') ? `${trimmed}SKILL.md` : `${trimmed}/SKILL.md`;
121
+ }
122
+ const path = trimmed.replace(/^\/+/, '').replace(/\/+$/, '');
123
+ if (!path) {
124
+ throw new ClientError(`Invalid skill name: ${input}`);
125
+ }
126
+ return `skill://${path}/SKILL.md`;
127
+ }
128
+ export async function listSkills(target, options) {
129
+ await withMcpClient(target, options, async (client) => {
130
+ const skills = await discoverSkills(client);
131
+ if (options.outputMode === 'json') {
132
+ console.log(formatOutput(skills, 'json'));
133
+ return;
134
+ }
135
+ console.log(formatSkills(skills, target, {
136
+ ...(options.maxChars && { maxChars: options.maxChars }),
137
+ }));
138
+ });
139
+ }
140
+ export async function getSkill(target, name, options) {
141
+ const uri = resolveSkillUri(name);
142
+ await withMcpClient(target, options, async (client) => {
143
+ const result = await client.readResource(uri);
144
+ if (options.outputMode === 'json') {
145
+ console.log(formatOutput(result, 'json'));
146
+ return;
147
+ }
148
+ if (options.raw) {
149
+ const text = extractTextContent(result);
150
+ if (text !== undefined) {
151
+ console.log(text);
152
+ return;
153
+ }
154
+ }
155
+ console.log(formatSkillDetail(uri, result, {
156
+ ...(options.maxChars && { maxChars: options.maxChars }),
157
+ }));
158
+ });
159
+ }
160
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/cli/commands/skills.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"x402.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/x402.ts"],"names":[],"mappings":"AAuUA,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwFrE"}
1
+ {"version":3,"file":"x402.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/x402.ts"],"names":[],"mappings":"AAgVA,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2GrE"}
@@ -157,7 +157,10 @@ async function signPaymentCommand(options) {
157
157
  if (!wallet) {
158
158
  throw new ClientError('No wallet configured. Create one with: mcpc x402 init');
159
159
  }
160
- const { header, accept } = parsePaymentRequired(options.paymentRequired);
160
+ const schemePreference = options.scheme === 'upto' || options.scheme === 'exact' || options.scheme === 'auto'
161
+ ? options.scheme
162
+ : 'auto';
163
+ const { header, accept } = parsePaymentRequired(options.paymentRequired, schemePreference);
161
164
  let amountOverride;
162
165
  if (options.amount) {
163
166
  const amountUsd = parseFloat(options.amount);
@@ -172,6 +175,7 @@ async function signPaymentCommand(options) {
172
175
  resource: header.resource,
173
176
  ...(amountOverride !== undefined && { amountOverride }),
174
177
  ...(expiryOverride !== undefined && { expiryOverride }),
178
+ ...(options.noApprove === true && { skipPermit2Approval: true }),
175
179
  });
176
180
  if (options.outputMode === 'json') {
177
181
  console.log(formatJson({
@@ -227,8 +231,10 @@ export async function handleX402Command(args) {
227
231
  .helpCommand('help [command]', 'Display help for command')
228
232
  .addHelpText('after', `
229
233
  ${chalk.bold('sign options:')}
230
- --amount <usd> Override amount in USD
231
- --expiry <seconds> Override expiry in seconds`);
234
+ --amount <usd> Override amount in USD (for upto: max authorization cap)
235
+ --expiry <seconds> Override expiry in seconds
236
+ --scheme <preference> Payment scheme: auto (default), upto, or exact
237
+ --no-approve Skip the upto Permit2 allowance check & auto-approval`);
232
238
  const resolveOutputMode = (cmd) => {
233
239
  const opts = cmd.optsWithGlobals();
234
240
  return opts.json ? 'json' : 'human';
@@ -261,13 +267,17 @@ ${chalk.bold('sign options:')}
261
267
  .command('sign <payment-required>')
262
268
  .description('Sign a payment using the wallet')
263
269
  .helpOption('-h, --help', 'Display help')
264
- .option('--amount <usd>', 'Override amount in USD')
270
+ .option('--amount <usd>', 'Override amount in USD (for upto this sets the max authorization cap)')
265
271
  .option('--expiry <seconds>', 'Override expiry in seconds')
272
+ .option('--scheme <auto|upto|exact>', 'Payment scheme preference (default: auto)', 'auto')
273
+ .option('--no-approve', 'For the upto scheme: skip the on-chain Permit2 allowance check & auto-approval')
266
274
  .action(async (paymentRequired, opts, cmd) => {
267
275
  await signPaymentCommand({
268
276
  paymentRequired,
269
277
  amount: opts.amount,
270
278
  expiry: opts.expiry,
279
+ scheme: opts.scheme,
280
+ noApprove: opts.approve === false,
271
281
  outputMode: resolveOutputMode(cmd),
272
282
  });
273
283
  });
@@ -1 +1 @@
1
- {"version":3,"file":"x402.js","sourceRoot":"","sources":["../../../src/cli/commands/x402.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"x402.js","sourceRoot":"","sources":["../../../src/cli/commands/x402.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -7,16 +7,19 @@ import chalk from 'chalk';
7
7
  import { formatJson, formatJsonError, rainbow, theme } from './output.js';
8
8
  import * as tools from './commands/tools.js';
9
9
  import * as resources from './commands/resources.js';
10
+ import * as skills from './commands/skills.js';
10
11
  import * as prompts from './commands/prompts.js';
11
12
  import * as sessions from './commands/sessions.js';
12
13
  import * as logging from './commands/logging.js';
13
14
  import * as utilities from './commands/utilities.js';
15
+ import * as logs from './commands/logs.js';
14
16
  import * as auth from './commands/auth.js';
15
17
  import * as tasks from './commands/tasks.js';
16
18
  import * as grepCmd from './commands/grep.js';
17
19
  import { handleX402Command } from './commands/x402.js';
18
20
  import { clean } from './commands/clean.js';
19
- import { extractOptions, getVerboseFromEnv, getJsonFromEnv, validateOptions, validateArgValues, parseServerArg, hasSubcommand, optionTakesValue, suggestCommand, KNOWN_COMMANDS, KNOWN_SESSION_COMMANDS, } from './parser.js';
21
+ import { X402_SCHEME_PREFERENCES } from '../lib/index.js';
22
+ import { extractOptions, preProcessX402Argv, getVerboseFromEnv, getJsonFromEnv, validateOptions, validateArgValues, parseServerArg, hasSubcommand, optionTakesValue, suggestCommand, KNOWN_COMMANDS, KNOWN_SESSION_COMMANDS, } from './parser.js';
20
23
  import { createRequire } from 'module';
21
24
  const { version: mcpcVersion } = createRequire(import.meta.url)('../../package.json');
22
25
  {
@@ -32,12 +35,12 @@ function getOptionsFromCommand(command) {
32
35
  if (json)
33
36
  setJsonMode(true);
34
37
  const options = {
35
- outputMode: (json ? 'json' : 'human'),
38
+ outputMode: json ? 'json' : 'human',
36
39
  };
37
40
  if (opts.timeout) {
38
41
  const timeout = parseInt(opts.timeout, 10);
39
42
  if (isNaN(timeout) || timeout <= 0) {
40
- throw new Error(`Invalid --timeout value: "${opts.timeout}". Must be a positive number (seconds).`);
43
+ throw new ClientError(`Invalid --timeout value: "${opts.timeout}". Must be a positive number (seconds).`);
41
44
  }
42
45
  options.timeout = timeout;
43
46
  }
@@ -49,8 +52,15 @@ function getOptionsFromCommand(command) {
49
52
  }
50
53
  if (verbose)
51
54
  options.verbose = verbose;
52
- if (opts.x402)
53
- options.x402 = true;
55
+ if (opts.x402 === true) {
56
+ options.x402 = 'auto';
57
+ }
58
+ else if (typeof opts.x402 === 'string') {
59
+ if (!X402_SCHEME_PREFERENCES.includes(opts.x402)) {
60
+ throw new ClientError(`Invalid --x402 value: "${opts.x402}". Expected one of ${X402_SCHEME_PREFERENCES.join(', ')}, or pass --x402 with no value for the default.`);
61
+ }
62
+ options.x402 = opts.x402;
63
+ }
54
64
  if (opts.insecure)
55
65
  options.insecure = true;
56
66
  if (opts.schema)
@@ -58,7 +68,7 @@ function getOptionsFromCommand(command) {
58
68
  if (opts.schemaMode) {
59
69
  const mode = opts.schemaMode;
60
70
  if (mode !== 'strict' && mode !== 'compatible' && mode !== 'ignore') {
61
- throw new Error(`Invalid --schema-mode value: "${mode}". Valid modes are: strict, compatible, ignore`);
71
+ throw new ClientError(`Invalid --schema-mode value: "${mode}". Valid modes are: strict, compatible, ignore`);
62
72
  }
63
73
  options.schemaMode = mode;
64
74
  }
@@ -67,7 +77,7 @@ function getOptionsFromCommand(command) {
67
77
  if (opts.maxChars) {
68
78
  const maxChars = parseInt(opts.maxChars, 10);
69
79
  if (isNaN(maxChars) || maxChars <= 0) {
70
- throw new Error(`Invalid --max-chars value: "${opts.maxChars}". Must be a positive number (characters).`);
80
+ throw new ClientError(`Invalid --max-chars value: "${opts.maxChars}". Must be a positive number (characters).`);
71
81
  }
72
82
  options.maxChars = maxChars;
73
83
  }
@@ -80,6 +90,7 @@ function jsonHelp(description, shape, schemaUrl) {
80
90
  }
81
91
  const SCHEMA_BASE = 'https://modelcontextprotocol.io/specification/2025-11-25/schema';
82
92
  async function main() {
93
+ process.argv = preProcessX402Argv(process.argv);
83
94
  const args = process.argv.slice(2);
84
95
  const handleExit = () => {
85
96
  void closeFileLogger().then(() => {
@@ -152,9 +163,16 @@ async function main() {
152
163
  const { json } = extractOptions(args);
153
164
  if (json)
154
165
  setJsonMode(true);
155
- await sessions.listSessionsAndAuthProfiles({ outputMode: json ? 'json' : 'human' });
166
+ const { hasSessions } = await sessions.listSessionsAndAuthProfiles({
167
+ outputMode: json ? 'json' : 'human',
168
+ });
156
169
  if (!json) {
157
- console.log('\nRun "mcpc --help" for usage information.\n');
170
+ console.log('');
171
+ if (hasSessions) {
172
+ console.log('To view server capabilities and tools, run: mcpc @session');
173
+ }
174
+ console.log('For usage information, run: mcpc --help');
175
+ console.log('');
158
176
  }
159
177
  await closeFileLogger();
160
178
  return;
@@ -307,12 +325,15 @@ ${chalk.bold('MCP session commands (after connecting):')}
307
325
  <@session> ${theme.cyan('resources-subscribe')} <uri>
308
326
  <@session> ${theme.cyan('resources-unsubscribe')} <uri>
309
327
  <@session> ${theme.cyan('resources-templates-list')}
328
+ <@session> ${theme.cyan('skills-list')}
329
+ <@session> ${theme.cyan('skills-get')} <name> [--raw]
310
330
  <@session> ${theme.cyan('tasks-list')}
311
331
  <@session> ${theme.cyan('tasks-get')} <taskId>
312
332
  <@session> ${theme.cyan('tasks-result')} <taskId>
313
333
  <@session> ${theme.cyan('tasks-cancel')} <taskId>
314
334
  <@session> ${theme.cyan('logging-set-level')} <level>
315
335
  <@session> ${theme.cyan('ping')}
336
+ <@session> ${theme.cyan('logs')} [-n N] [--follow] [--since 1h]
316
337
 
317
338
  Run "mcpc" without arguments to show active sessions and OAuth profiles.
318
339
  Run "mcpc --json" to get the same data as \`{ sessions: [...], profiles: [...] }\`.
@@ -320,7 +341,7 @@ Run "mcpc --json" to get the same data as \`{ sessions: [...], profiles: [...] }
320
341
  Full docs: ${docsUrl}`);
321
342
  program
322
343
  .command('connect [server] [@session]')
323
- .usage('<server> [@session]')
344
+ .usage('[<server>] [@session]')
324
345
  .description('Connect to an MCP server and start a new named @session')
325
346
  .option('-H, --header <header>', 'HTTP header (can be repeated)')
326
347
  .option('--profile <name>', 'OAuth profile to use ("default" if skipped)')
@@ -328,19 +349,21 @@ Full docs: ${docsUrl}`);
328
349
  .option('--proxy <[host:]port>', 'Start proxy MCP server for session')
329
350
  .option('--proxy-bearer-token <token>', 'Require authentication for access to proxy server')
330
351
  .option('--stdio', 'Launch all local stdio servers from selected config files')
331
- .option('--x402', 'Enable x402 auto-payment using the configured wallet')
352
+ .option('--x402 [scheme]', 'Enable x402 auto-payment using the configured wallet; optional scheme: auto (default, prefer upto), upto, or exact.')
332
353
  .addHelpText('after', `
333
354
  ${chalk.bold('Server formats:')}
334
355
  mcp.apify.com Remote HTTP server (https:// auto-added)
335
356
  ~/.vscode/mcp.json:puppeteer Config file entry (file:entry)
336
357
  ~/.vscode/mcp.json Config file — connect every entry
337
- ${chalk.dim('(no server)')} Auto-discover configs and connect everything
358
+ ${chalk.dim('(no server)'.padEnd(28))} Auto-discover configs and connect everything
338
359
 
339
360
  ${chalk.bold('Auto-discovery (no server arg):')}
340
361
  Scans ./ and ~ for .mcp.json, mcp.json, mcp_config.json, .cursor/mcp.json,
341
362
  .vscode/mcp.json, .kiro/settings/mcp.json, ~/.claude.json,
342
363
  ~/.codeium/windsurf/mcp_config.json, plus VS Code & Claude Desktop configs.
343
364
  Set APIFY_API_TOKEN to auto-connect mcp.apify.com as @apify.
365
+ Without --json, returns right away without waiting for connections to
366
+ finish; --json waits and reports each server's details.
344
367
 
345
368
  ${chalk.bold('Session name:')}
346
369
  Omit @session to auto-generate from the server (mcp.apify.com → @apify)
@@ -349,8 +372,8 @@ ${chalk.bold('Session name:')}
349
372
 
350
373
  ${chalk.bold('Stdio servers (command-based, run locally):')}
351
374
  Config entries spawn the command on connect, even if the handshake
352
- later fails — only connect to configs you trust. Stderr is logged to
353
- ~/.mcpc/logs/bridge-<session>.log. Bulk connects skip stdio by default;
375
+ later fails — only connect to configs you trust. View the bridge log
376
+ with: mcpc <@session> logs. Bulk connects skip stdio by default;
354
377
  pass --stdio to include them.
355
378
  ${jsonHelp('Array of `InitializeResult` objects (one per session), extended with `toolNames` and `_mcpc` metadata', '`[{ protocolVersion?, capabilities?, serverInfo?, instructions?, toolNames?, _mcpc: { sessionName, server?, ... }]`', `${SCHEMA_BASE}#initializeresult`)}`)
356
379
  .action(async (server, sessionName, opts, command) => {
@@ -371,9 +394,11 @@ ${jsonHelp('Array of `InitializeResult` objects (one per session), extended with
371
394
  ...(opts.proxy && { proxy: opts.proxy }),
372
395
  ...(opts.proxyBearerToken && { proxyBearerToken: opts.proxyBearerToken }),
373
396
  ...(opts.stdio && { stdio: true }),
374
- ...(opts.x402 && { x402: opts.x402 }),
397
+ ...(globalOpts.x402 && { x402: globalOpts.x402 }),
375
398
  ...(globalOpts.insecure && { insecure: true }),
376
399
  });
400
+ if (globalOpts.outputMode === 'human')
401
+ console.log('');
377
402
  return;
378
403
  }
379
404
  const parsed = parseServerArg(server);
@@ -392,7 +417,7 @@ ${jsonHelp('Array of `InitializeResult` objects (one per session), extended with
392
417
  ...(opts.proxy && { proxy: opts.proxy }),
393
418
  ...(opts.proxyBearerToken && { proxyBearerToken: opts.proxyBearerToken }),
394
419
  ...(opts.stdio && { stdio: true }),
395
- ...(opts.x402 && { x402: opts.x402 }),
420
+ ...(globalOpts.x402 && { x402: globalOpts.x402 }),
396
421
  ...(globalOpts.insecure && { insecure: true }),
397
422
  });
398
423
  return;
@@ -412,7 +437,7 @@ ${jsonHelp('Array of `InitializeResult` objects (one per session), extended with
412
437
  config: parsed.file,
413
438
  proxy: opts.proxy,
414
439
  proxyBearerToken: opts.proxyBearerToken,
415
- x402: opts.x402,
440
+ ...(globalOpts.x402 && { x402: globalOpts.x402 }),
416
441
  ...(globalOpts.insecure && { insecure: true }),
417
442
  });
418
443
  }
@@ -422,7 +447,7 @@ ${jsonHelp('Array of `InitializeResult` objects (one per session), extended with
422
447
  ...(headers && { headers }),
423
448
  proxy: opts.proxy,
424
449
  proxyBearerToken: opts.proxyBearerToken,
425
- x402: opts.x402,
450
+ ...(globalOpts.x402 && { x402: globalOpts.x402 }),
426
451
  ...(globalOpts.insecure && { insecure: true }),
427
452
  });
428
453
  }
@@ -449,9 +474,9 @@ ${jsonHelp('Array of `InitializeResult` objects (one per session), extended with
449
474
  await sessions.restartSession(sessionName, getOptionsFromCommand(command));
450
475
  });
451
476
  program
452
- .command('shell [@session]')
477
+ .command('shell [@session]', { hidden: true })
453
478
  .usage('<@session>')
454
- .description('Open interactive shell for a session')
479
+ .description('Open interactive shell for a session (deprecated)')
455
480
  .action(async (sessionName) => {
456
481
  if (!sessionName) {
457
482
  throw new ClientError('Missing required argument: @session\n\nExample: mcpc shell @myapp');
@@ -632,9 +657,16 @@ ${jsonHelp('`[{ sessionName, tools?: Tool[], resources?: Resource[], prompts?: P
632
657
  const json = opts.json || getJsonFromEnv();
633
658
  if (json)
634
659
  setJsonMode(true);
635
- await sessions.listSessionsAndAuthProfiles({ outputMode: json ? 'json' : 'human' });
660
+ const { hasSessions } = await sessions.listSessionsAndAuthProfiles({
661
+ outputMode: json ? 'json' : 'human',
662
+ });
636
663
  if (!json) {
637
- console.log('\nRun "mcpc --help" for usage information.\n');
664
+ console.log('');
665
+ if (hasSessions) {
666
+ console.log('To view server capabilities and tools, run: mcpc @session');
667
+ }
668
+ console.log('For usage information, run: mcpc --help');
669
+ console.log('');
638
670
  }
639
671
  });
640
672
  return program;
@@ -670,8 +702,8 @@ function registerSessionCommands(program, session) {
670
702
  command.parent.outputHelp();
671
703
  });
672
704
  program
673
- .command('shell')
674
- .description('Launch interactive MCP shell.')
705
+ .command('shell', { hidden: true })
706
+ .description('Launch interactive MCP shell (deprecated).')
675
707
  .action(async () => {
676
708
  await sessions.openShell(session);
677
709
  });
@@ -867,6 +899,32 @@ ${toolsCallCombinedJsonHelp}`)
867
899
  .action(async (_options, command) => {
868
900
  await resources.listResourceTemplates(session, getOptionsFromCommand(command));
869
901
  });
902
+ program
903
+ .command('skills-list')
904
+ .description('[EXPERIMENTAL] List agent skills from the server (SEP-2640).')
905
+ .addHelpText('after', `
906
+ ${chalk.bold('Discovery:')}
907
+ Tries \`skill://index.json\`, else scans \`skill://*/SKILL.md\`. Types:
908
+ \`skill-md\`, \`mcp-resource-template\`, \`archive\` (use \`resources-read <url>\`).
909
+ ${jsonHelp('`[{ name, description, type, url }, ...]`', undefined, 'https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2640')}`)
910
+ .action(async (_options, command) => {
911
+ await skills.listSkills(session, getOptionsFromCommand(command));
912
+ });
913
+ program
914
+ .command('skills-get <name>')
915
+ .description("[EXPERIMENTAL] Read a skill's SKILL.md by name (SEP-2640).")
916
+ .option('--raw', 'Print only the SKILL.md text (Markdown), suitable for piping')
917
+ .addHelpText('after', `
918
+ ${chalk.bold('Names:')}
919
+ \`name\`, \`nested/path\`, or \`skill://...\` URI. For \`archive\` skills, use
920
+ \`resources-read <url>\`. With --json, --raw is ignored.
921
+ ${jsonHelp('`ReadResourceResult`: `{ contents: [{ uri, mimeType?, text? | blob? }] }`', undefined, `${SCHEMA_BASE}#readresourceresult`)}`)
922
+ .action(async (name, options, command) => {
923
+ await skills.getSkill(session, name, {
924
+ ...(options.raw && { raw: true }),
925
+ ...getOptionsFromCommand(command),
926
+ });
927
+ });
870
928
  program
871
929
  .command('prompts-list')
872
930
  .description('List all MCP prompts.')
@@ -906,6 +964,37 @@ ${jsonHelp('`GetPromptResult` object', '`{ description?, messages: [{ role, cont
906
964
  .action(async (_options, command) => {
907
965
  await utilities.ping(session, getOptionsFromCommand(command));
908
966
  });
967
+ program
968
+ .command('logs')
969
+ .description('Show or follow the bridge log file for this session.')
970
+ .option('-n, --tail <n>', 'Number of recent lines to show (default: 50)')
971
+ .option('--follow', 'Stream new log lines as they are written')
972
+ .option('--since <value>', 'Only show entries newer than a duration (30s, 5m, 2h, 1d) or ISO timestamp')
973
+ .addHelpText('after', `
974
+ ${chalk.bold('Examples:')}
975
+ mcpc ${session} logs Last 50 lines
976
+ mcpc ${session} logs -n 200 Last 200 lines
977
+ mcpc ${session} logs --follow Stream new lines (ESC/Ctrl+C/q to stop)
978
+ mcpc ${session} logs --since 1h Lines from the last hour
979
+ mcpc ${session} logs --since 30m -n 50
980
+
981
+ ${chalk.bold('Notes:')}
982
+ Reads ~/.mcpc/logs/bridge-${session}.log and transparently spans
983
+ rotated files (.log.1 … .log.5) when -n or --since needs older lines.
984
+ Continuation lines (e.g. stack traces) fold into the preceding entry's msg.
985
+ ${jsonHelp('Array of log records (JSONL when streaming with --follow)', '`[{ time, level, context?, msg } | { raw }, ...]`')}`)
986
+ .action(async (opts, command) => {
987
+ const tail = opts.tail !== undefined ? parseInt(opts.tail, 10) : undefined;
988
+ if (tail !== undefined && (isNaN(tail) || tail < 0)) {
989
+ throw new ClientError(`Invalid --tail value: "${opts.tail}". Must be a non-negative integer.`);
990
+ }
991
+ await logs.showLogs(session, {
992
+ ...getOptionsFromCommand(command),
993
+ ...(tail !== undefined && { tail }),
994
+ ...(opts.follow && { follow: true }),
995
+ ...(opts.since && { since: opts.since }),
996
+ });
997
+ });
909
998
  }
910
999
  function createSessionProgram() {
911
1000
  const program = new Command();