mcp-proof 0.3.10 → 0.3.11

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/README.md CHANGED
@@ -29,7 +29,7 @@ npx mcp-proof --config ~/.config/Claude/claude_desktop_config.json
29
29
  npx mcp-proof --skill ~/.claude/skills/example/SKILL.md
30
30
 
31
31
  # Inspect an exact tools/call payload before execution
32
- cat call.json | npx mcp-proof --execute --json
32
+ cat call.json | npx mcp-proof --inspect-call --json
33
33
 
34
34
  # Create a shareable Trust Card for a PR or README
35
35
  npx mcp-proof tools.json --markdown > MCP_TRUST.md
@@ -134,7 +134,8 @@ Options:
134
134
  --stdio <cmd> launch a real stdio MCP server, call tools/list, scan returned tools
135
135
  --config <path> scan every stdio server in an MCP client config with mcpServers
136
136
  --skill <path> scan a Claude SKILL.md (educational/warning context aware)
137
- --execute [<path>] inspect a tools/call payload before execution
137
+ --inspect-call [<path>] inspect a tools/call payload before execution
138
+ --execute [<path>] deprecated alias for --inspect-call
138
139
  --markdown emit a shareable Markdown Trust Card
139
140
  --trust-card alias for --markdown
140
141
  --sarif emit SARIF 2.1.0 for GitHub code scanning
@@ -226,7 +227,7 @@ The npm CLI is local-first: MCP manifests, tool descriptions, tool arguments, cl
226
227
  - **Publisher verification is lexical only by default.** npm scope match + Levenshtein typosquat. Pass `--live` to confirm npm packages against `registry.npmjs.org` with one network call. *No GitHub-API lookup, no signature verification.*
227
228
  - **No source-tree scan.** The full VyriAI gateway also runs a static scanner over the package source for `child_process`, postinstall scripts, obfuscation. That step needs the source unpacked locally and isn't shipped in this CLI.
228
229
  - **No dependency CVE check.** The full gateway wraps `npm audit`; this CLI doesn't shell out.
229
- - **Limited runtime-payload inspection.** `--execute` scans a supplied `tools/call` name and arguments before execution; it does not execute the call, enforce an authorization policy, verify identity, or observe server runtime behavior.
230
+ - **Limited runtime-payload inspection.** `--inspect-call` scans a supplied `tools/call` name and arguments before execution (`--execute` remains a deprecated alias); it does not execute the call, enforce an authorization policy, verify identity, or observe server runtime behavior.
230
231
  - **Stdio discovery only.** `--stdio` / `--config` launches local stdio MCP servers and calls `tools/list`. It does not yet connect to HTTP/SSE MCP servers.
231
232
  - **Skill context is keyword-based.** The skill detector looks for warning/example/demonstration framing around sensitive signals. A well-disguised attack without that framing may not downgrade.
232
233
  - **Local payload cap.** The CLI refuses inputs over 5 MB by default to avoid accidental memory blowups in CI. Override with `MCP_SCAN_MAX_BYTES=20mb` if you have an unusually large tools manifest.
package/bin/mcp-proof.js CHANGED
@@ -43,15 +43,16 @@ Usage:
43
43
  mcp-proof --stdio "<command to launch MCP server>"
44
44
  mcp-proof --config <claude-or-cursor-config.json>
45
45
  mcp-proof --skill <SKILL.md>
46
- mcp-proof --execute [<call.json>] runtime authorization of a tools/call payload
46
+ mcp-proof --inspect-call [<call.json>] inspect a tools/call payload before execution
47
47
 
48
- If <file.json> is omitted and --stdio/--config/--skill/--execute are not used, JSON is read from stdin.
48
+ If <file.json> is omitted and --stdio/--config/--skill/--inspect-call are not used, JSON is read from stdin.
49
49
 
50
50
  Options:
51
51
  --stdio <cmd> launch a real stdio MCP server, call tools/list, scan returned tools
52
52
  --config <path> scan every stdio server in an MCP client config with mcpServers
53
53
  --skill <path> scan a Claude SKILL.md (educational/warning context aware)
54
- --execute [<path>] inspect a tools/call payload before execution (reads stdin if path omitted)
54
+ --inspect-call [<path>] inspect a tools/call payload before execution (reads stdin if path omitted)
55
+ --execute [<path>] deprecated alias for --inspect-call
55
56
  --markdown emit a shareable Markdown Trust Card
56
57
  --trust-card alias for --markdown
57
58
  --sarif emit SARIF 2.1.0 for GitHub code scanning
@@ -94,9 +95,12 @@ async function main() {
94
95
  if (args.selfTest) {
95
96
  return runSelfTest(args);
96
97
  }
97
- const exclusiveModes = [args.stdio, args.config, args.skill, args.execute].filter(Boolean).length;
98
+ if (args.deprecatedExecute) {
99
+ process.stderr.write('mcp-proof: --execute is deprecated; use --inspect-call instead.\n');
100
+ }
101
+ const exclusiveModes = [args.stdio, args.config, args.skill, args.inspectCall].filter(Boolean).length;
98
102
  if (exclusiveModes > 1) {
99
- process.stderr.write('mcp-proof: use one of --stdio, --config, --skill, --execute at a time.\n');
103
+ process.stderr.write('mcp-proof: use one of --stdio, --config, --skill, --inspect-call at a time.\n');
100
104
  process.exit(64);
101
105
  }
102
106
 
@@ -144,7 +148,7 @@ async function main() {
144
148
  process.exit(exitCodeForDecision(result.decision));
145
149
  }
146
150
 
147
- if (args.execute) {
151
+ if (args.inspectCall) {
148
152
  let result;
149
153
  try {
150
154
  result = runExecute(args);
@@ -207,7 +211,7 @@ function parseArgs(argv) {
207
211
  const out = {
208
212
  source: '', transport: '', bind: '', json: false, selfTest: false,
209
213
  help: false, version: false, file: '', stdio: '', config: '', skill: '',
210
- execute: false, format: 'human', live: false, timeoutMs: DEFAULT_TIMEOUT_MS,
214
+ inspectCall: false, deprecatedExecute: false, format: 'human', live: false, timeoutMs: DEFAULT_TIMEOUT_MS,
211
215
  };
212
216
  for (let i = 0; i < argv.length; i++) {
213
217
  const a = argv[i];
@@ -224,8 +228,13 @@ function parseArgs(argv) {
224
228
  case '--stdio': out.stdio = argv[++i] || ''; break;
225
229
  case '--config': out.config = expandHome(argv[++i] || ''); break;
226
230
  case '--skill': out.skill = expandHome(argv[++i] || ''); break;
231
+ case '--inspect-call':
232
+ out.inspectCall = true;
233
+ if (argv[i + 1] && !argv[i + 1].startsWith('-')) out.file = argv[++i];
234
+ break;
227
235
  case '--execute':
228
- out.execute = true;
236
+ out.inspectCall = true;
237
+ out.deprecatedExecute = true;
229
238
  if (argv[i + 1] && !argv[i + 1].startsWith('-')) out.file = argv[++i];
230
239
  break;
231
240
  case '--live': out.live = true; break;
@@ -643,7 +652,7 @@ function runExecute(args) {
643
652
  throw e;
644
653
  }
645
654
  const result = evaluateCall(parsed);
646
- result.mode = 'execute';
655
+ result.mode = 'inspect-call';
647
656
  result.name = args.file || 'stdin';
648
657
  return result;
649
658
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-proof",
3
- "version": "0.3.10",
3
+ "version": "0.3.11",
4
4
  "description": "Auditable, privacy-preserving MCP (Model Context Protocol) server verifier with local Trust Cards and SARIF output — test servers before connecting them to an AI system.",
5
5
  "main": "engine.js",
6
6
  "bin": {