@k08200/mcp-probe 1.4.0 → 1.6.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/README.md CHANGED
@@ -38,7 +38,7 @@ jobs:
38
38
  timeout-minutes: 5
39
39
 
40
40
  steps:
41
- - uses: actions/checkout@v4
41
+ - uses: actions/checkout@v6
42
42
 
43
43
  - name: Validate MCP server
44
44
  run: |
@@ -131,6 +131,12 @@ mcp-probe init --target @modelcontextprotocol/server-memory --github-actions
131
131
  # Discover tool names first and scaffold sidecar entries automatically
132
132
  mcp-probe init --target @modelcontextprotocol/server-memory --discover --github-actions
133
133
 
134
+ # Check whether this project is ready to run mcp-probe in CI
135
+ mcp-probe doctor
136
+
137
+ # JSON output for scripting or internal CI preflight checks
138
+ mcp-probe doctor --config-file mcp-probe.config.json --output json
139
+
134
140
  # Scaffold a remote server config with auth from an env var
135
141
  mcp-probe init \
136
142
  --target https://mcp.example.com/mcp \
@@ -306,6 +312,29 @@ Config fields:
306
312
  | `servers[].probeTools` | Enables dry-run tool calls for that server. |
307
313
  | `servers[].toolsFile` | Sidecar input file for meaningful `tools/call` samples. Relative paths resolve from the config file directory. |
308
314
 
315
+ ## Project doctor
316
+
317
+ Use `mcp-probe doctor` before wiring mcp-probe into CI or after changing config files:
318
+
319
+ ```bash
320
+ mcp-probe doctor
321
+ ```
322
+
323
+ It checks:
324
+
325
+ | Check | Description |
326
+ |-------|-------------|
327
+ | **Node.js version** | Confirms the current runtime satisfies mcp-probe's required Node.js version. |
328
+ | **Config file** | Validates that `mcp-probe.config.json` exists and can be parsed. |
329
+ | **Sidecar files** | Validates each configured `toolsFile`, resolving relative paths from the config file directory. |
330
+ | **GitHub Actions workflow** | Warns when no workflow mentions `mcp-probe`, or when workflows miss `actions/checkout@v6`, `--config <file>`, or `--github-summary`. |
331
+
332
+ For automation, use JSON output:
333
+
334
+ ```bash
335
+ mcp-probe doctor --config-file ci/mcp-probe.config.json --output json
336
+ ```
337
+
309
338
  ## Stderr classification
310
339
 
311
340
  Many MCP servers write harmless warnings to stderr during startup: optional config notices, update checks, deprecation warnings, and similar noise. If the server later fails to initialize, raw stderr can make those warnings look like the root cause.
@@ -470,7 +499,7 @@ jobs:
470
499
  timeout-minutes: 5
471
500
 
472
501
  steps:
473
- - uses: actions/checkout@v4
502
+ - uses: actions/checkout@v6
474
503
 
475
504
  - name: Validate MCP server
476
505
  run: |
@@ -499,7 +528,7 @@ jobs:
499
528
  timeout-minutes: 10
500
529
 
501
530
  steps:
502
- - uses: actions/checkout@v4
531
+ - uses: actions/checkout@v6
503
532
 
504
533
  - name: Validate MCP fleet
505
534
  run: |
@@ -521,6 +550,8 @@ Copy-ready examples live in [`examples/github-actions`](examples/github-actions)
521
550
 
522
551
  mcp-probe also dogfoods itself in CI with [`examples/self-check.config.json`](examples/self-check.config.json), which validates batch mode, sidecar inputs, GitHub summaries, and badge output against a local fixture MCP server.
523
552
 
553
+ It also includes [`examples/contract-failure.tools.json`](examples/contract-failure.tools.json), an intentionally broken sidecar used by CI to prove contract failures surface as `CONTRACT_ASSERTION_FAILED`. That fixture checks the negative path: missing metadata, row-limit violations, and denied writes that must fail safely.
554
+
524
555
  ## Recipes
525
556
 
526
557
  Production MCP checks work best with sidecar inputs that exercise real call paths instead of generated empty values. Copy-ready starting points live in [`examples/recipes`](examples/recipes):
package/dist/cli.js CHANGED
@@ -8,6 +8,7 @@ import { renderJson } from './reporters/json-reporter.js';
8
8
  import { renderGithubActions } from './reporters/github.js';
9
9
  import { writeBadgeFile } from './reporters/badge.js';
10
10
  import { initProject } from './init.js';
11
+ import { runDoctor } from './doctor.js';
11
12
  const program = new Command();
12
13
  function collect(value, previous) {
13
14
  previous.push(value);
@@ -46,10 +47,23 @@ function parseTransport(value) {
46
47
  return value;
47
48
  throw new Error('Transport must be "stdio", "http", or "sse".');
48
49
  }
50
+ function argValue(long, short) {
51
+ const args = process.argv.slice(2);
52
+ for (let i = 0; i < args.length; i += 1) {
53
+ const arg = args[i];
54
+ if (arg === long || (short && arg === short)) {
55
+ return args[i + 1];
56
+ }
57
+ if (arg.startsWith(`${long}=`)) {
58
+ return arg.slice(long.length + 1);
59
+ }
60
+ }
61
+ return undefined;
62
+ }
49
63
  program
50
64
  .name('mcp-probe')
51
65
  .description('Quality checker for MCP servers')
52
- .version('1.4.0');
66
+ .version('1.6.0');
53
67
  program
54
68
  .command('init')
55
69
  .description('scaffold mcp-probe config, sidecar inputs, and optional GitHub Actions workflow')
@@ -104,6 +118,37 @@ program
104
118
  process.exit(1);
105
119
  }
106
120
  });
121
+ program
122
+ .command('doctor')
123
+ .description('check whether the current project is ready to use mcp-probe in CI')
124
+ .option('--config-file <path>', 'config file to inspect', 'mcp-probe.config.json')
125
+ .option('-o, --output <format>', 'output format: terminal | json', 'terminal')
126
+ .action((opts) => {
127
+ const configFile = opts.configFile ?? 'mcp-probe.config.json';
128
+ const output = argValue('--output', '-o') ?? opts.output ?? 'terminal';
129
+ if (!['terminal', 'json'].includes(output)) {
130
+ console.error('Output format must be "terminal" or "json".');
131
+ process.exit(1);
132
+ }
133
+ const report = runDoctor({ configFile });
134
+ if (output === 'json') {
135
+ process.stdout.write(`${JSON.stringify(report, null, 2)}\n`);
136
+ }
137
+ else {
138
+ console.log('');
139
+ console.log('mcp-probe doctor');
140
+ console.log('────────────────────────────────────────────────────');
141
+ for (const check of report.checks) {
142
+ const icon = check.status === 'pass' ? '✓' : check.status === 'warn' ? '⚠' : '✗';
143
+ console.log(` ${icon} ${check.name}`);
144
+ console.log(` ${check.message}`);
145
+ }
146
+ console.log('────────────────────────────────────────────────────');
147
+ console.log(` ${report.overallStatus.toUpperCase()}`);
148
+ console.log('');
149
+ }
150
+ process.exit(report.overallStatus === 'fail' ? 1 : 0);
151
+ });
107
152
  program
108
153
  .argument('[target]', 'npm package, local file path, or remote MCP URL')
109
154
  .argument('[server-args...]', 'extra arguments passed directly to the MCP server')
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { CheckStatus } from './types.js';
2
+ export type DoctorCheck = {
3
+ name: string;
4
+ status: CheckStatus;
5
+ message: string;
6
+ };
7
+ export type DoctorReport = {
8
+ overallStatus: CheckStatus;
9
+ checks: DoctorCheck[];
10
+ };
11
+ export type DoctorOptions = {
12
+ configFile: string;
13
+ };
14
+ export declare function runDoctor(options: DoctorOptions): DoctorReport;
15
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,YAAY,CAAC;AAE5D,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,aAAa,EAAE,WAAW,CAAC;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAkIF,wBAAgB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,YAAY,CA2C9D"}
package/dist/doctor.js ADDED
@@ -0,0 +1,166 @@
1
+ import { existsSync, readdirSync, readFileSync } from 'fs';
2
+ import { dirname, isAbsolute, join, resolve } from 'path';
3
+ import { loadConfig } from './config.js';
4
+ function deriveOverallStatus(checks) {
5
+ if (checks.some((check) => check.status === 'fail'))
6
+ return 'fail';
7
+ if (checks.some((check) => check.status === 'warn'))
8
+ return 'warn';
9
+ return 'pass';
10
+ }
11
+ function nodeVersionStatus() {
12
+ const [major = 0, minor = 0] = process.versions.node.split('.').map(Number);
13
+ const ok = major > 20 || (major === 20 && minor >= 19);
14
+ return {
15
+ name: 'Node.js version',
16
+ status: ok ? 'pass' : 'fail',
17
+ message: ok
18
+ ? `Node ${process.versions.node} satisfies >=20.19.0`
19
+ : `Node ${process.versions.node} is below required >=20.19.0`,
20
+ };
21
+ }
22
+ function validateSidecar(path) {
23
+ if (!existsSync(path)) {
24
+ return {
25
+ name: `Sidecar ${path}`,
26
+ status: 'fail',
27
+ message: 'File does not exist',
28
+ };
29
+ }
30
+ try {
31
+ const parsed = JSON.parse(readFileSync(path, 'utf8'));
32
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
33
+ throw new Error('root must be an object');
34
+ }
35
+ const tools = parsed.tools;
36
+ if (!tools || typeof tools !== 'object' || Array.isArray(tools)) {
37
+ throw new Error('tools must be an object');
38
+ }
39
+ const entries = Object.entries(tools);
40
+ if (entries.length === 0) {
41
+ return {
42
+ name: `Sidecar ${path}`,
43
+ status: 'warn',
44
+ message: 'No tool entries found',
45
+ };
46
+ }
47
+ for (const [toolName, entry] of entries) {
48
+ if (!entry || typeof entry !== 'object' || Array.isArray(entry)) {
49
+ throw new Error(`${toolName} entry must be an object`);
50
+ }
51
+ const input = entry.input;
52
+ if (!input || typeof input !== 'object' || Array.isArray(input)) {
53
+ throw new Error(`${toolName}.input must be an object`);
54
+ }
55
+ }
56
+ return {
57
+ name: `Sidecar ${path}`,
58
+ status: 'pass',
59
+ message: `Found ${entries.length} tool entr${entries.length === 1 ? 'y' : 'ies'}`,
60
+ };
61
+ }
62
+ catch (err) {
63
+ return {
64
+ name: `Sidecar ${path}`,
65
+ status: 'fail',
66
+ message: err instanceof Error ? err.message : String(err),
67
+ };
68
+ }
69
+ }
70
+ function workflowStatus(configFile) {
71
+ const dir = '.github/workflows';
72
+ if (!existsSync(dir)) {
73
+ return {
74
+ name: 'GitHub Actions workflow',
75
+ status: 'warn',
76
+ message: 'No .github/workflows directory found',
77
+ };
78
+ }
79
+ const workflowFiles = readdirSync(dir)
80
+ .filter((file) => file.endsWith('.yml') || file.endsWith('.yaml'))
81
+ .map((file) => join(dir, file));
82
+ const matching = workflowFiles
83
+ .map((file) => ({ file, content: readFileSync(file, 'utf8') }))
84
+ .filter(({ content }) => content.includes('mcp-probe'));
85
+ if (matching.length === 0) {
86
+ return {
87
+ name: 'GitHub Actions workflow',
88
+ status: 'warn',
89
+ message: 'No workflow file mentions mcp-probe',
90
+ };
91
+ }
92
+ const combined = matching.map(({ content }) => content).join('\n');
93
+ const missing = [];
94
+ const normalizedConfigFile = configFile.replaceAll('\\', '/');
95
+ if (!combined.includes('actions/checkout@v6')) {
96
+ missing.push('actions/checkout@v6');
97
+ }
98
+ if (!/--config(?:=|\s+)/.test(combined) || !combined.replaceAll('\\', '/').includes(normalizedConfigFile)) {
99
+ missing.push(`--config ${configFile}`);
100
+ }
101
+ if (!combined.includes('--github-summary')) {
102
+ missing.push('--github-summary');
103
+ }
104
+ return missing.length === 0
105
+ ? {
106
+ name: 'GitHub Actions workflow',
107
+ status: 'pass',
108
+ message: `Found ${matching.length} workflow file${matching.length === 1 ? '' : 's'} mentioning mcp-probe`,
109
+ }
110
+ : {
111
+ name: 'GitHub Actions workflow',
112
+ status: 'warn',
113
+ message: `Found ${matching.length} workflow file${matching.length === 1 ? '' : 's'} mentioning mcp-probe, but missing ${missing.join(', ')}`,
114
+ };
115
+ }
116
+ function uniqueToolsFiles(servers) {
117
+ return [...new Set(servers.map((server) => server.toolsFile).filter((value) => Boolean(value)))];
118
+ }
119
+ function resolveConfigPath(configFile, maybeRelative) {
120
+ if (isAbsolute(maybeRelative))
121
+ return maybeRelative;
122
+ return resolve(dirname(configFile), maybeRelative);
123
+ }
124
+ export function runDoctor(options) {
125
+ const checks = [nodeVersionStatus()];
126
+ if (!existsSync(options.configFile)) {
127
+ checks.push({
128
+ name: 'Config file',
129
+ status: 'warn',
130
+ message: `${options.configFile} not found. Run "mcp-probe init --target <server> --github-actions".`,
131
+ });
132
+ checks.push(workflowStatus(options.configFile));
133
+ return { overallStatus: deriveOverallStatus(checks), checks };
134
+ }
135
+ try {
136
+ const config = loadConfig(options.configFile);
137
+ checks.push({
138
+ name: 'Config file',
139
+ status: 'pass',
140
+ message: `${options.configFile} contains ${config.servers.length} server${config.servers.length === 1 ? '' : 's'}`,
141
+ });
142
+ const toolsFiles = uniqueToolsFiles(config.servers);
143
+ if (toolsFiles.length === 0) {
144
+ checks.push({
145
+ name: 'Sidecar files',
146
+ status: 'warn',
147
+ message: 'No toolsFile entries found; tool calls will use schema-minimum generated inputs',
148
+ });
149
+ }
150
+ else {
151
+ for (const toolsFile of toolsFiles) {
152
+ checks.push(validateSidecar(resolveConfigPath(options.configFile, toolsFile)));
153
+ }
154
+ }
155
+ }
156
+ catch (err) {
157
+ checks.push({
158
+ name: 'Config file',
159
+ status: 'fail',
160
+ message: err instanceof Error ? err.message : String(err),
161
+ });
162
+ }
163
+ checks.push(workflowStatus(options.configFile));
164
+ return { overallStatus: deriveOverallStatus(checks), checks };
165
+ }
166
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
package/dist/init.js CHANGED
@@ -119,7 +119,7 @@ jobs:
119
119
  timeout-minutes: 5
120
120
 
121
121
  steps:
122
- - uses: actions/checkout@v4
122
+ - uses: actions/checkout@v6
123
123
 
124
124
  - name: Validate MCP readiness
125
125
  run: |
@@ -5,7 +5,7 @@ import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';
5
5
  import { assertionFailureMessage, evaluateToolAssertions } from '../assertions.js';
6
6
  import { withIssue } from '../issues.js';
7
7
  import { redactText } from '../redact.js';
8
- const VERSION = '1.4.0';
8
+ const VERSION = '1.6.0';
9
9
  // Known startup warning patterns from official MCP servers — not fatal errors
10
10
  const STDERR_WARNING_PATTERNS = [
11
11
  /^warn(?:ing)?:/i,
@@ -0,0 +1,24 @@
1
+ {
2
+ "tools": {
3
+ "db_query": {
4
+ "input": {
5
+ "sql": "select 1 as ok"
6
+ },
7
+ "expect": {
8
+ "status": "pass",
9
+ "requiredFields": ["rowCount", "tenantId"],
10
+ "maxRows": 0
11
+ }
12
+ },
13
+ "db_write": {
14
+ "input": {
15
+ "sql": "delete from users where id = 1"
16
+ },
17
+ "expect": {
18
+ "status": "fail",
19
+ "errorCode": "WRITE_NOT_ALLOWED",
20
+ "notContains": ["DATABASE_URL", "password", "stack"]
21
+ }
22
+ }
23
+ }
24
+ }
@@ -13,7 +13,7 @@ jobs:
13
13
  timeout-minutes: 10
14
14
 
15
15
  steps:
16
- - uses: actions/checkout@v4
16
+ - uses: actions/checkout@v6
17
17
 
18
18
  - name: Validate MCP fleet
19
19
  env:
@@ -11,7 +11,7 @@ jobs:
11
11
  timeout-minutes: 5
12
12
 
13
13
  steps:
14
- - uses: actions/checkout@v4
14
+ - uses: actions/checkout@v6
15
15
 
16
16
  - name: Validate remote Streamable HTTP MCP server
17
17
  env:
@@ -11,7 +11,7 @@ jobs:
11
11
  timeout-minutes: 5
12
12
 
13
13
  steps:
14
- - uses: actions/checkout@v4
14
+ - uses: actions/checkout@v6
15
15
 
16
16
  - name: Validate MCP server
17
17
  run: |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@k08200/mcp-probe",
3
- "version": "1.4.0",
3
+ "version": "1.6.0",
4
4
  "description": "Quality checker for MCP servers — validates protocol handshake, discovery, tool-call dry-runs, and latency",
5
5
  "type": "module",
6
6
  "bin": {