mcprigor 1.1.0 → 1.2.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
@@ -9,11 +9,13 @@
9
9
 
10
10
  **Natural-language testing for Model Context Protocol servers.**
11
11
 
12
- ![MCP Rigor demo: a natural-language test file, then mcprigor check and mcprigor test with passing results](.github/assets/demo.gif)
12
+ [![MCP Rigor showcase: visual QA workspace, MCP server for AI agents, and CLI/CI](.github/assets/demo.gif)](https://mcprigor.com/assets/showcase-demo.mp4)
13
+
14
+ <sub>Visual QA workspace · MCP server for AI agents · CLI and CI — [watch the MP4](https://mcprigor.com/assets/showcase-demo.mp4)</sub>
13
15
 
14
16
  MCP Rigor lets QA teams test MCP tools, resources, prompts, contracts, and transports without writing test code. Tests are deterministic: no AI model interprets the wording.
15
17
 
16
- > Status: `1.1.0` stable. Node.js 20 or 22 is required.
18
+ > Status: `1.2.0` stable. Node.js 20 or 22 is required.
17
19
 
18
20
  ## Install
19
21
 
@@ -246,7 +248,6 @@ See the [complete CLI reference](docs/CLI-REFERENCE.md).
246
248
  - **Setting up targets and CI:** [Engineer setup](docs/ENGINEER-SETUP.md)
247
249
  - **Fixing failures:** [Troubleshooting](docs/TROUBLESHOOTING.md)
248
250
  - **All documentation:** [Documentation index](docs/README.md)
249
- - **Renaming old files:** [`.mcpr` extension and migration](docs/FILE-EXTENSION.md)
250
251
 
251
252
  ## Scope and safety
252
253
 
package/dist/cli.js CHANGED
@@ -7,7 +7,7 @@ import { checkContract, compareContracts, contractMarkdown, contractReport, read
7
7
  import { discoverTarget, generateSuite, writeGeneratedSuite, writeLock } from "./discovery.js";
8
8
  import { loadTestFile } from "./qa-loader.js";
9
9
  import { parityMarkdown, parityReport, runParity } from "./parity.js";
10
- import { terminalReport, writeHtmlReport, writeJsonReport, writeJunitReport } from "./reporters.js";
10
+ import { githubAnnotations, terminalReport, writeHtmlReport, writeJsonReport, writeJunitReport } from "./reporters.js";
11
11
  import { runSuite } from "./runner.js";
12
12
  import { replayReport, replayTrace } from "./replay.js";
13
13
  import { readState, writeState } from "./state.js";
@@ -153,7 +153,9 @@ async function main() {
153
153
  }
154
154
  if (command !== "run" && command !== "test")
155
155
  throw new UsageError(`Unknown command: ${command}. Try: mcprigor --help`);
156
+ assertKnownFlags(flags, ["--test", "--html", "--json", "--junit", "--evidence", "--snapshot", "--update-snapshots", "--state-in", "--state-out", "--allow-state-target-mismatch", "--allow-remote-data", "--allow-custom-code", "--max-rows", "--command", "--url", "--watch", "--github-annotations", "--no-github-annotations"]);
156
157
  const suite = await loadTestFile(resolve(file), compileOptions);
158
+ applyTargetOverride(suite, flag(flags, "--command"), flag(flags, "--url"));
157
159
  const filter = flag(flags, "--test");
158
160
  const stateIn = flag(flags, "--state-in");
159
161
  const loadedState = stateIn ? await readState(resolve(stateIn), suite.target, flags.includes("--allow-state-target-mismatch")) : undefined;
@@ -162,11 +164,19 @@ async function main() {
162
164
  const snapshotFile = flag(flags, "--snapshot");
163
165
  if (flags.includes("--update-snapshots") && !snapshotFile && !suite.snapshots?.file)
164
166
  throw new UsageError("--update-snapshots requires --snapshot FILE or suite snapshot configuration");
165
- const result = await runSuite(suite, { ...(filter ? { filter } : {}), allowCustomCode: compileOptions.allowCustomCode, cwd: process.cwd(), state: loadedState?.outputs, trace, snapshotFile, updateSnapshots: flags.includes("--update-snapshots") });
167
+ const runOnce = async (loadedSuite = suite) => runSuite(loadedSuite, { ...(filter ? { filter } : {}), allowCustomCode: compileOptions.allowCustomCode, cwd: process.cwd(), state: loadedState?.outputs, trace, snapshotFile, updateSnapshots: flags.includes("--update-snapshots") });
168
+ if (flags.includes("--watch")) {
169
+ if (flags.includes("--update-snapshots"))
170
+ throw new UsageError("--watch cannot be combined with --update-snapshots; update snapshots in a single explicit run");
171
+ return watchAndRun(resolve(file), suite, compileOptions, runOnce);
172
+ }
173
+ const result = await runOnce();
166
174
  console.log(terminalReport(result));
167
175
  const json = flag(flags, "--json");
168
176
  const junit = flag(flags, "--junit");
169
177
  const html = flag(flags, "--html");
178
+ if (flags.includes("--github-annotations") || (process.env.GITHUB_ACTIONS === "true" && !flags.includes("--no-github-annotations")))
179
+ console.log("\n" + githubAnnotations(result, file));
170
180
  if (json)
171
181
  await writeJsonReport(result, json);
172
182
  if (junit)
@@ -188,6 +198,100 @@ async function main() {
188
198
  console.log("\nState was not saved because the run did not pass.");
189
199
  process.exitCode = result.status === "passed" ? 0 : 1;
190
200
  }
201
+ const VALUE_FLAGS = new Set(["--test", "--html", "--json", "--junit", "--evidence", "--snapshot", "--state-in", "--state-out", "--max-rows", "--command", "--url", "--out", "--target", "--timeout", "--allow-tool", "--port"]);
202
+ function assertKnownFlags(args, known) {
203
+ const knownSet = new Set(known);
204
+ for (let index = 0; index < args.length; index++) {
205
+ const value = args[index];
206
+ if (!value.startsWith("--"))
207
+ continue;
208
+ if (!knownSet.has(value))
209
+ throw new UsageError(`Unknown option for this command: ${value}. Run mcprigor --help to see supported options.`);
210
+ if (VALUE_FLAGS.has(value))
211
+ index++;
212
+ }
213
+ }
214
+ function applyTargetOverride(suite, command, url) {
215
+ if (command && url)
216
+ throw new UsageError("Use either --command or --url, not both");
217
+ if (command) {
218
+ const [head, ...rest] = command.split(/\s+/).filter(Boolean);
219
+ if (!head)
220
+ throw new UsageError("--command requires a non-empty server command");
221
+ suite.target = { transport: "stdio", command: head, args: rest };
222
+ console.log(`Target override: running against command "${command}" instead of the suite's declared target.\n`);
223
+ }
224
+ else if (url) {
225
+ suite.target = { transport: "streamable-http", url };
226
+ console.log(`Target override: running against ${url} instead of the suite's declared target.\n`);
227
+ }
228
+ }
229
+ async function watchAndRun(file, initialSuite, compileOptions, runOnce) {
230
+ const { watch } = await import("node:fs");
231
+ const { dirname } = await import("node:path");
232
+ const clear = () => process.stdout.write("\x1Bc");
233
+ let running = false;
234
+ let queued = false;
235
+ const cycle = async () => {
236
+ if (running) {
237
+ queued = true;
238
+ return;
239
+ }
240
+ running = true;
241
+ try {
242
+ clear();
243
+ console.log(`MCP Rigor watch — ${new Date().toLocaleTimeString()}\nRunning ${file}\n`);
244
+ let suite;
245
+ try {
246
+ suite = await loadTestFile(file, compileOptions);
247
+ }
248
+ catch (error) {
249
+ console.log(formatFailure(error));
250
+ console.log("\nWaiting for changes…");
251
+ return;
252
+ }
253
+ const result = await runOnce(suite);
254
+ console.log(terminalReport(result));
255
+ const failed = result.tests.filter((test) => test.status === "failed").length;
256
+ console.log(failed ? `\n${failed} failing — waiting for changes…` : "\nAll green — waiting for changes…");
257
+ }
258
+ finally {
259
+ running = false;
260
+ if (queued) {
261
+ queued = false;
262
+ void cycle();
263
+ }
264
+ }
265
+ };
266
+ const watchDirs = new Set([dirname(file)]);
267
+ const target = initialSuite.target;
268
+ if (target.transport === "stdio" && target.cwd)
269
+ watchDirs.add(resolve(target.cwd));
270
+ watchDirs.add(process.cwd());
271
+ let timer;
272
+ const trigger = (_event, name) => {
273
+ const changed = String(name ?? "");
274
+ if (/^\.|node_modules|\.git|\.mcprigor|report\.html|\.log$/.test(changed))
275
+ return;
276
+ if (timer)
277
+ clearTimeout(timer);
278
+ timer = setTimeout(() => void cycle(), 250);
279
+ };
280
+ for (const dir of watchDirs) {
281
+ try {
282
+ watch(dir, { recursive: true }, trigger);
283
+ }
284
+ catch { /* fall back to non-recursive below */
285
+ try {
286
+ watch(dir, trigger);
287
+ }
288
+ catch { /* ignore unwatchable dirs */ }
289
+ }
290
+ }
291
+ console.log(`Watching ${[...watchDirs].join(", ")} for changes. Press Ctrl+C to stop.`);
292
+ await cycle();
293
+ return new Promise(() => { });
294
+ }
191
295
  function flag(args, name) {
192
296
  const index = args.indexOf(name);
193
297
  return index >= 0 ? args[index + 1] : undefined;
@@ -220,6 +324,11 @@ Start here:
220
324
  mcprigor check my-tests.mcpr Check the wording before running
221
325
  mcprigor test my-tests.mcpr Run the tests
222
326
  mcprigor test my-tests.mcpr --html report.html
327
+ mcprigor test my-tests.mcpr --command "node dist/server.js"
328
+ Override the suite's declared target
329
+ mcprigor test my-tests.mcpr --url https://qa.example.com/mcp
330
+ mcprigor test my-tests.mcpr --watch
331
+ Rerun on test or server file changes
223
332
  mcprigor author server.mcpr --out new-test.mcpr
224
333
  Guided no-code test creation
225
334
 
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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AAuIA,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,cAAc,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuGjF"}
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AAuJA,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,cAAc,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmHjF"}
@@ -3,6 +3,7 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
3
3
  import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
4
4
  import { realpath, stat } from "node:fs/promises";
5
5
  import { join, relative, resolve } from "node:path";
6
+ import { checkContract, contractReport } from "./contract.js";
6
7
  import { loadTestFile } from "./qa-loader.js";
7
8
  import { runParity, parityReport } from "./parity.js";
8
9
  import { runSuite } from "./runner.js";
@@ -73,6 +74,7 @@ const TOOLS = [
73
74
  maxItems: MAX_BATCH,
74
75
  description: "Relative paths of test files to run",
75
76
  },
77
+ filter: { type: "string", description: "Only run tests whose name matches this substring/pattern (same as CLI --test)" },
76
78
  },
77
79
  required: ["paths"],
78
80
  additionalProperties: false,
@@ -88,6 +90,19 @@ const TOOLS = [
88
90
  additionalProperties: false,
89
91
  },
90
92
  },
93
+ {
94
+ name: "get_contract_drift",
95
+ description: "Compare a saved contract lock file against the live server a suite declares. Read-only: reports added, removed, and changed tools/resources/prompts classified as breaking or non-breaking. Never updates the lock file — updating baselines is an explicit human CLI action (mcprigor contract-update).",
96
+ inputSchema: {
97
+ type: "object",
98
+ properties: {
99
+ lock: { type: "string", description: "Relative path of the contract lock file (e.g. mcp.lock.yaml)" },
100
+ suite: { type: "string", description: "Relative path of a suite whose declared server to compare against" },
101
+ },
102
+ required: ["lock", "suite"],
103
+ additionalProperties: false,
104
+ },
105
+ },
91
106
  {
92
107
  name: "get_history",
93
108
  description: "Read recorded run history for this workspace: per-run suite status, duration, and per-test outcomes. Useful for spotting regressions and flaky tests. Optional filters by suite path and test name.",
@@ -168,7 +183,8 @@ export async function startMcpServer(options = {}) {
168
183
  const startedAt = Date.now();
169
184
  try {
170
185
  const suite = await loadTestFile(path);
171
- const result = await runSuite(suite, { cwd: root });
186
+ const filter = typeof args?.filter === "string" && args.filter.length ? args.filter : undefined;
187
+ const result = await runSuite(suite, { cwd: root, ...(filter ? { filter } : {}) });
172
188
  const tests = result.tests.map((entry) => ({ name: entry.name, status: entry.status, durationMs: entry.durationMs, ...(entry.error ? { error: entry.error } : {}) }));
173
189
  await appendHistory(historyFile, { at: new Date().toISOString(), mode: "test", suite: relative(root, path), status: result.status, durationMs: Date.now() - startedAt, tests });
174
190
  items.push({ suite: relative(root, path), status: result.status, durationMs: Date.now() - startedAt, tests });
@@ -194,6 +210,17 @@ export async function startMcpServer(options = {}) {
194
210
  response.isError = true;
195
211
  return response;
196
212
  }
213
+ case "get_contract_drift": {
214
+ const lockPath = safePath(root, argument(args, "lock"));
215
+ const suitePath = safePath(root, argument(args, "suite"));
216
+ const suite = await loadTestFile(suitePath);
217
+ const driftTarget = suite.target.transport === "stdio" && !suite.target.cwd ? { ...suite.target, cwd: root } : suite.target;
218
+ const checked = await checkContract(lockPath, driftTarget);
219
+ const response = text({ lock: relative(root, lockPath), breaking: Boolean(checked.diff.breaking), report: contractReport(checked.diff) });
220
+ if (checked.diff.breaking)
221
+ response.isError = true;
222
+ return response;
223
+ }
197
224
  case "get_history": {
198
225
  const limitRaw = typeof args?.limit === "number" ? args.limit : 50;
199
226
  const limit = Math.max(1, Math.min(200, Math.floor(limitRaw)));
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
@@ -3,4 +3,6 @@ export declare function terminalReport(result: RunResult): string;
3
3
  export declare function writeJsonReport(result: RunResult, file: string): Promise<void>;
4
4
  export declare function writeHtmlReport(result: RunResult, file: string): Promise<void>;
5
5
  export declare function writeJunitReport(result: RunResult, file: string): Promise<void>;
6
+ /** GitHub Actions workflow commands: one error annotation per failed test, one notice for the summary. */
7
+ export declare function githubAnnotations(result: RunResult, file?: string): string;
6
8
  //# sourceMappingURL=reporters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reporters.d.ts","sourceRoot":"","sources":["../src/reporters.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAgBxD;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpF;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpF;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAarF"}
1
+ {"version":3,"file":"reporters.d.ts","sourceRoot":"","sources":["../src/reporters.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAgBxD;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpF;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpF;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAarF;AAaD,0GAA0G;AAC1G,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAY1E"}
package/dist/reporters.js CHANGED
@@ -49,4 +49,19 @@ function friendly(value) {
49
49
  function xml(value) {
50
50
  return value.replaceAll("&", "&amp;").replaceAll('"', "&quot;").replaceAll("<", "&lt;").replaceAll(">", "&gt;");
51
51
  }
52
+ /** GitHub Actions workflow commands: one error annotation per failed test, one notice for the summary. */
53
+ export function githubAnnotations(result, file) {
54
+ const esc = (value) => value.replace(/%/g, "%25").replace(/\r/g, "%0D").replace(/\n/g, "%0A");
55
+ const lines = [];
56
+ for (const test of result.tests) {
57
+ if (test.status !== "failed")
58
+ continue;
59
+ const location = file ? `file=${esc(file)},` : "";
60
+ lines.push(`::error ${location}title=${esc(`MCP Rigor: ${test.name}`)}::${esc(test.error ?? "Test failed")}`);
61
+ }
62
+ const passed = result.tests.filter((t) => t.status === "passed").length;
63
+ const failed = result.tests.filter((t) => t.status === "failed").length;
64
+ lines.push(`::notice title=MCP Rigor::${passed} passed, ${failed} failed (${result.tests.length} total)`);
65
+ return lines.join("\n");
66
+ }
52
67
  //# sourceMappingURL=reporters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reporters.js","sourceRoot":"","sources":["../src/reporters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reporters.js","sourceRoot":"","sources":["../src/reporters.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  /** Single source of truth for the framework version; keep in sync with package.json. */
2
- export declare const FRAMEWORK_VERSION = "1.1.0";
2
+ export declare const FRAMEWORK_VERSION = "1.2.0";
3
3
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  /** Single source of truth for the framework version; keep in sync with package.json. */
2
- export const FRAMEWORK_VERSION = "1.1.0";
2
+ export const FRAMEWORK_VERSION = "1.2.0";
3
3
  //# sourceMappingURL=version.js.map
@@ -43,6 +43,13 @@ Common options:
43
43
 
44
44
  ```text
45
45
  --test "pattern*" Run matching tests
46
+ --command "node server.js" Override the suite's declared server target
47
+ --url https://qa.example.com/mcp
48
+ Override with a Streamable HTTP endpoint
49
+ --watch Rerun automatically when files change
50
+ --github-annotations Emit ::error/::notice workflow commands
51
+ (automatic when GITHUB_ACTIONS=true;
52
+ disable with --no-github-annotations)
46
53
  --html report.html Write a readable HTML report
47
54
  --json result.json Write structured JSON
48
55
  --junit result.xml Write JUnit XML
@@ -13,7 +13,7 @@ npm install --save-dev mcprigor
13
13
  For reproducible CI runs, pin an exact version in `package.json` and update it deliberately:
14
14
 
15
15
  ```json
16
- { "devDependencies": { "mcprigor": "1.1.0" } }
16
+ { "devDependencies": { "mcprigor": "1.2.0" } }
17
17
  ```
18
18
 
19
19
  Release notes and tarball checksums for each version are on the [GitHub releases page](https://github.com/FusionOnePlatform/mcprigor/releases).
@@ -37,7 +37,8 @@ The server speaks MCP over stdio. Typical client configuration:
37
37
  | `read_suite` | Read one test file. |
38
38
  | `write_suite` | Create or overwrite one `.mcpr` file (omit `text` for a starter template). |
39
39
  | `validate_suite` | Compile without running; returns test names or a diagnostic with line/column and a fix hint. |
40
- | `run_tests` | Run 1–20 suites; returns per-test status, duration, and failure messages. Failing runs set `isError`. |
40
+ | `run_tests` | Run 1–20 suites, optionally with `filter` to run matching test names only; returns per-test status, duration, and failure messages. Failing runs set `isError`. |
41
+ | `get_contract_drift` | Compare a contract lock file against the live server a suite declares. Read-only: classifies added/removed/changed surfaces as breaking or non-breaking, and never updates the lock. |
41
42
  | `run_parity` | Run a suite's declared parity targets and compare transports. |
42
43
  | `get_history` | Read recorded run history, filterable by suite or test name. |
43
44
 
@@ -64,4 +65,4 @@ Additional guards:
64
65
 
65
66
  ## Limits
66
67
 
67
- The MCP server exposes the create/validate/run loop. Renaming files, deleting files, snapshot acceptance, contract updates, and evidence comparison remain CLI (or workspace) operations by design — an agent should not silently rewrite baselines that exist to catch its own regressions.
68
+ The MCP server exposes the create/validate/run loop. Renaming files, deleting files, snapshot acceptance, contract updates (`get_contract_drift` is read-only), and evidence comparison remain CLI (or workspace) operations by design — an agent should not silently rewrite baselines that exist to catch its own regressions.
package/docs/README.md CHANGED
@@ -15,7 +15,6 @@ Choose the path that matches your role.
15
15
  - [Engineer setup](ENGINEER-SETUP.md) — targets, credentials, project layout, and CI.
16
16
  - [CLI reference](CLI-REFERENCE.md) — commands, options, outputs, and exit codes.
17
17
  - [Language reference](LANGUAGE-SPEC.md) — complete deterministic `.mcpr` syntax.
18
- - [File extension and migration](FILE-EXTENSION.md) — why MCP Rigor uses `.mcpr`.
19
18
  - [State and dependencies](STATE-AND-DEPENDENCIES.md) — share outputs across tests and runs.
20
19
  - [Data engineering](DATA-ENGINEERING.md) — types, filters, joins, samples, and caches.
21
20
  - [Transport parity](TRANSPORT-PARITY.md) — compare stdio and Streamable HTTP.
@@ -38,8 +37,6 @@ Choose the path that matches your role.
38
37
 
39
38
  These documents explain product design and research rather than everyday usage:
40
39
 
41
- - [Specification](SPECIFICATION.md)
42
- - [Competitive landscape](LANDSCAPE.md)
43
40
 
44
41
  ## Fastest adoption path
45
42
 
@@ -53,3 +50,4 @@ npx mcprigor init tests/acceptance.mcpr
53
50
  npx mcprigor check tests/acceptance.mcpr
54
51
  npx mcprigor test tests/acceptance.mcpr --html report.html
55
52
  ```
53
+ - [MCP server for AI agents](MCP-SERVER.md) — let coding agents write, validate, and run tests over MCP.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcprigor",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Plain-language MCP testing with isolated extensions and a local QA workspace",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,52 +0,0 @@
1
- # MCP Rigor file extension
2
-
3
- MCP Rigor plain-language tests use:
4
-
5
- ```text
6
- .mcpr
7
- ```
8
-
9
- Examples:
10
-
11
- ```text
12
- smoke.mcpr
13
- customer-regression.mcpr
14
- transport-parity.mcpr
15
- ```
16
-
17
- ## Why not `.mcp`?
18
-
19
- The `.mcp` suffix predates Model Context Protocol and is already associated with other software, including Metrowerks CodeWarrior project files. Reusing it would create ambiguous editor, operating-system, MIME, and tooling associations.
20
-
21
- MCP Rigor therefore uses the product-specific `.mcpr` suffix: **MCP Rigor**.
22
-
23
- References checked during the decision:
24
-
25
- - [FileInfo: MCP file extension](https://fileinfo.com/extension/mcp)
26
- - [ReviverSoft file-extension registry](https://www.reviversoft.com/file-extensions/mcp)
27
-
28
- File-extension registries are not global standards authorities, but existing use is sufficient reason to avoid the collision.
29
-
30
- ## Migration
31
-
32
- Rename files without changing their contents:
33
-
34
- ```bash
35
- mv tests/smoke.mcp tests/smoke.mcpr
36
- mv tests/shared-flows.mcp tests/shared-flows.mcpr
37
- ```
38
-
39
- Update flow imports:
40
-
41
- ```text
42
- Import flows from "./shared-flows.mcpr"
43
- ```
44
-
45
- Update scripts and CI:
46
-
47
- ```bash
48
- mcprigor check tests/smoke.mcpr
49
- mcprigor test tests/smoke.mcpr
50
- ```
51
-
52
- MCP Rigor now rejects `.mcp` files with an actionable rename message. YAML and JSON suite support is unchanged.
package/docs/LANDSCAPE.md DELETED
@@ -1,81 +0,0 @@
1
- # Background: MCP testing landscape
2
-
3
- > Non-normative research. This page explains product positioning; it is not needed to use MCP Rigor.
4
-
5
- ## Executive summary
6
-
7
- MCP testing tools currently fall into five categories: interactive inspectors, scriptable probes, official protocol conformance, SDK/framework-local tests, and semantic or security evaluators. The strongest opening for MCP Rigor is a transport-neutral, deterministic, black-box application test runner: **“Playwright for MCP.”**
8
-
9
- MCP Rigor should complement the Inspector and official Conformance project rather than suggest it replaces either.
10
-
11
- ## Landscape
12
-
13
- | Tool | Primary role | What it does well | Gap relative to MCP Rigor |
14
- |---|---|---|---|
15
- | [MCP Inspector](https://github.com/modelcontextprotocol/inspector) | Official interactive debugger | Explore connections, capabilities, tools, resources, prompts, notifications, and logs | Primarily manual exploration rather than a scenario/assertion/reporting framework |
16
- | [MCP Inspector CLI](https://github.com/modelcontextprotocol/inspector#cli-mode) | Scriptable probe | Programmatic one-shot MCP interactions | Tests, fixtures, captures, deterministic assertion semantics, and CI reports remain limited or external |
17
- | [Official MCP Conformance](https://github.com/modelcontextprotocol/conformance) | Protocol compliance/interoperability | Repeatable client/server protocol checks | Evolving protocol suite rather than application-domain regression testing |
18
- | [MCP TypeScript SDK](https://github.com/modelcontextprotocol/typescript-sdk) | SDK and in-memory testing | Typed clients and in-process transport testing | Language/repository coupled; in-memory tests do not cover deployed transport boundaries |
19
- | [MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk) | SDK and in-memory testing | Python integration tests and memory helpers | Language/repository coupled rather than a universal black-box suite |
20
- | [FastMCP testing](https://gofastmcp.com/patterns/testing) | Python framework testing | Convenient deterministic pytest/in-process testing | Framework-specific and can bypass subprocess, HTTP, auth, proxy, and deployment behavior |
21
- | [mcptools](https://github.com/f/mcptools) | CLI probing | Shell-friendly list/call/read operations | Assertion model, scenarios, reports, fixtures, and coverage are external |
22
- | [Promptfoo MCP provider](https://www.promptfoo.dev/docs/providers/mcp/) | Behavioral/agentic evaluation | Tool selection and response-quality evaluation with reports | LLM/model behavior can be probabilistic; not wire or deterministic application testing |
23
- | [mcp-vibetest](https://github.com/ComposioHQ/mcp-vibetest) | Agentic semantic evaluation | Realistic task-completion checks | Probabilistic and complementary to hard deterministic gates |
24
- | [mcp-scan](https://github.com/invariantlabs-ai/mcp-scan) | Security scanning | Tool-poisoning and prompt/config risk detection | Specialized security gate, not functional regression testing |
25
- | [Cisco MCP Scanner](https://github.com/cisco-ai-defense/mcp-scanner) | Security scanning | MCP-focused security analysis | Specialized scanner rather than behavior/protocol test runner |
26
- | [MCPJam Inspector](https://github.com/MCPJam/inspector) | Interactive workbench | Friendly exploratory MCP development | Primarily interactive; deterministic CI should not be assumed without specific current support |
27
-
28
- Project details and release status change quickly. Pin versions and verify current primary documentation before making compatibility claims.
29
-
30
- ## Positioning
31
-
32
- ### Category
33
-
34
- **Deterministic MCP application testing.**
35
-
36
- ### One-line message
37
-
38
- > MCP Rigor is the open-source test runner for repeatable MCP server behavior across stdio and Streamable HTTP.
39
-
40
- ### Memorable message
41
-
42
- > Playwright for MCP: author once, run the same scenarios locally and in CI.
43
-
44
- ### Naming rationale
45
-
46
- “MCP Rigor” uses established developer-tool terminology, clearly describes the project’s scope, and remains independent from any specific MCP server or vendor brand. Registry and trademark availability should still be verified before publication.
47
-
48
- ## Durable differentiation
49
-
50
- 1. **Application workflows, not only probes:** multi-step scenarios, captures, fixtures, setup/teardown, and side-effect verification.
51
- 2. **Real boundaries:** subprocess lifecycle, stdio framing, Streamable HTTP, auth, TLS/proxy, reconnect, and cleanup.
52
- 3. **Stable CI contract:** deterministic exit codes, JSON/JUnit/SARIF, traces, artifacts, filtering, and policy-controlled retries.
53
- 4. **MCP-aware assertions:** tools/resources/prompts, errors, notifications, progress, pagination, cancellation, capability/version matrices, and subscriptions.
54
- 5. **Declarative and programmable:** safe YAML/JSON for most cases plus a typed API and explicit plugin model for advanced projects.
55
- 6. **Layered oracles:** deterministic assertions as hard gates; optional semantic/LLM evaluation as a clearly labeled soft layer.
56
- 7. **Record to regression:** capture an exploratory interaction, sanitize secrets/dynamic values, and generate a checked-in test.
57
- 8. **Evidence, not certification:** run or aggregate exact official conformance profiles without making blanket compliance claims.
58
-
59
- ## What not to become
60
-
61
- - another generic MCP chat client
62
- - another Inspector UI as the first product
63
- - an unofficial certification authority
64
- - a Python- or TypeScript-framework-specific helper
65
- - an LLM evaluation platform whose core results are nondeterministic
66
- - a broad security scanner that dilutes functional testing
67
-
68
- ## Launch wedge
69
-
70
- Target teams that have one or more MCP servers in CI and currently use shell scripts, Inspector screenshots, ad hoc SDK tests, or manual checks. The first compelling demo should:
71
-
72
- 1. run the same calculator test against stdio and HTTP targets;
73
- 2. show a clear structural diff for a broken tool response;
74
- 3. capture a value and reuse it in a later step;
75
- 4. verify a protocol error and timeout;
76
- 5. export JUnit in GitHub Actions;
77
- 6. prove the child process is cleaned up after failure.
78
-
79
- ## Suggested public narrative
80
-
81
- “The MCP ecosystem already has excellent tools to inspect a server and increasingly strong official protocol conformance checks. MCP Rigor addresses a different question: does your server still perform the domain behaviors your users depend on? It turns those behaviors into deterministic scenarios that run over real transports on every pull request.”
@@ -1,178 +0,0 @@
1
- # MCP Rigor runtime and product specification
2
-
3
- > Normative runtime behavior and product requirements. For `.mcpr` syntax, use the [language reference](LANGUAGE-SPEC.md). Everyday users should start with [Getting started](GETTING-STARTED.md).
4
-
5
- ## 1. Product definition
6
-
7
- MCP Rigor is an open-source, deterministic, black-box application test framework for Model Context Protocol servers. Its core promise is:
8
-
9
- > Author a behavioral MCP scenario once, then run it repeatably against local subprocesses and deployed HTTP servers in CI.
10
-
11
- MCP Rigor complements interactive debuggers and protocol conformance tooling. It does not claim MCP certification.
12
-
13
- ## 2. Users and jobs
14
-
15
- - **MCP server authors:** prevent regressions in tools, resources, prompts, errors, and side effects.
16
- - **Platform teams:** validate third-party servers before promotion or deployment.
17
- - **SDK maintainers:** run common behavioral scenarios across transports and versions.
18
- - **Security and QA teams:** build deterministic negative, authorization, and abuse cases.
19
-
20
- Primary job: turn manually verified MCP interactions into reviewable, version-controlled tests with reliable CI outcomes.
21
-
22
- ## 3. Principles
23
-
24
- 1. Deterministic checks are hard gates; probabilistic evaluation is optional and separate.
25
- 2. Real transport boundaries matter.
26
- 3. Test files contain data, not arbitrary executable code.
27
- 4. Every wait has a deadline; notification tests use events rather than sleeps.
28
- 5. Reports identify protocol version, transport, capability, skips, and evidence.
29
- 6. Secrets are redacted before any result reaches a reporter.
30
- 7. “Conformance” always names an exact versioned profile and never implies certification.
31
-
32
- ## 4. MVP scope
33
-
34
- ### Included
35
-
36
- - Node.js 20+, TypeScript, ESM
37
- - YAML and JSON suites
38
- - stdio subprocess and Streamable HTTP targets
39
- - one isolated MCP session per test
40
- - generic MCP requests
41
- - captures and variable substitution
42
- - exact, negative, existence, type, subset, length, and regex assertions
43
- - expected MCP errors
44
- - per-step deadlines
45
- - terminal, JSON, and JUnit output
46
- - CLI filtering and deterministic exit codes
47
- - TypeScript library API
48
-
49
- ### Deferred
50
-
51
- - notification queues and progress assertions
52
- - JSON Schema output matcher
53
- - snapshots and record/replay
54
- - setup/teardown fixtures and shared sessions
55
- - official-conformance adapter and versioned packs
56
- - OAuth browser flows
57
- - plugin API, custom reporters, and custom transports
58
- - fuzzing and security packs
59
- - retries, parallel/distributed execution, GUI, and LLM judges
60
-
61
- ## 5. Suite model
62
-
63
- A suite has `version`, optional `name`, one target, defaults, and tests. A test contains sequential steps. Each step sends one request, applies assertions, then captures response leaves.
64
-
65
- Variables:
66
-
67
- - `${captureName}` references a test-local captured value.
68
- - `${env.NAME}` references an environment value.
69
- - An exact placeholder preserves its JSON type; interpolation into a larger string converts to text.
70
- - Variables are resolved only in request parameters in the MVP. Target interpolation and centralized secret redaction are required next.
71
-
72
- Session isolation is the default because order-independent tests are easier to reproduce. Shared sessions may be added only as an explicit opt-in.
73
-
74
- ## 6. Architecture
75
-
76
- ```text
77
- CLI
78
- ├─ suite loader and validator
79
- ├─ protocol-neutral runner
80
- │ ├─ variable resolver
81
- │ ├─ matcher engine
82
- │ └─ normalized result model
83
- ├─ MCP SDK session
84
- │ ├─ stdio adapter
85
- │ └─ Streamable HTTP adapter
86
- └─ reporters
87
- ├─ terminal
88
- ├─ JSON
89
- └─ JUnit XML
90
- ```
91
-
92
- The runner depends on a small `TestSession` interface so fixture sessions and future raw-wire transports can be substituted. The official TypeScript SDK currently performs initialization, protocol validation, framing, and transport lifecycle management.
93
-
94
- A future monorepo can split stable boundaries into `core`, `cli`, `transport-stdio`, `transport-http`, `conformance`, `reporters`, and `plugin-api` packages. Keeping one package until those boundaries stabilize reduces premature API commitments.
95
-
96
- ## 7. Result and failure semantics
97
-
98
- Each run records suite status, UTC start time, duration, observed protocol versions, tests, steps, and summary counts. Failures stop the current test after the first failed step but do not stop later tests.
99
-
100
- Exit codes:
101
-
102
- - `0`: all selected tests passed
103
- - `1`: one or more behavioral assertions failed
104
- - `2`: usage, parsing, or configuration invalid
105
- - `3`: unexpected infrastructure failure
106
-
107
- A later version should explicitly distinguish test failure, transport failure, cleanup failure, skipped capability, not applicable, and inconclusive.
108
-
109
- ## 8. Conformance roadmap
110
-
111
- Versioned profiles should be independently released, for example:
112
-
113
- ```text
114
- profiles/2025-03-26/lifecycle
115
- profiles/2025-03-26/tools
116
- profiles/2025-03-26/resources
117
- profiles/2025-03-26/prompts
118
- profiles/2025-03-26/streamable-http
119
- ```
120
-
121
- Checks should include initialization/version negotiation, declared capability behavior, required response/error shapes, ping, cancellation, pagination, progress, logging, subscriptions, unknown methods, invalid parameters, HTTP session IDs, media types, reconnect, and termination.
122
-
123
- Report statuses must include pass, fail, capability-skipped, not-applicable, and inconclusive. Integrate official MCP Conformance as a separately pinned run and merge evidence rather than duplicating or rebranding it.
124
-
125
- ## 9. Security requirements
126
-
127
- Before a public beta:
128
-
129
- - interpolate target environment and headers without writing secrets into results
130
- - centralize recursive key/value redaction before reporters
131
- - cap response, stderr, and report sizes
132
- - guard regex complexity or document trust assumptions
133
- - avoid shell command strings; continue using command plus argument arrays
134
- - ensure bounded graceful subprocess shutdown with force-kill fallback
135
- - sanitize JUnit and terminal control characters
136
- - provide opt-in environment inheritance and document its threat model
137
-
138
- Security scanners should be integrations. MCP Rigor’s core identity remains functional and protocol-aware testing.
139
-
140
- ## 10. Release roadmap
141
-
142
- ### 0.1 — executable MVP
143
-
144
- Core runner, YAML/JSON suites, stdio/HTTP through official SDK, deterministic matchers, captures, CLI, JSON/JUnit, tests, and docs.
145
-
146
- ### 0.2 — CI reliability
147
-
148
- Published JSON Schema, complete config validation with Ajv, secret redaction, richer diffs, target interpolation, robust transport classification, GitHub Action, Windows/macOS/Linux CI, and deterministic fixture servers.
149
-
150
- ### 0.3 — MCP-native behavior
151
-
152
- Notification/event queues, progress and cancellation, pagination helpers, capability requirements, resource subscriptions, logging assertions, JSON Schema matcher, traces, snapshots, and record/sanitize/replay.
153
-
154
- ### 0.4 — ecosystem
155
-
156
- Versioned conformance profiles, official conformance aggregation, plugin API, reusable fixture packs, security/fuzz hooks, and adapters for common MCP frameworks.
157
-
158
- ### 1.0 criteria
159
-
160
- Stable suite schema and TypeScript API, two supported protocol revisions, robust process cleanup on three operating systems, transport/auth documentation, migration policy, plugin compatibility policy, reproducible fixture matrix, and no high-severity secret leakage paths.
161
-
162
- ## 11. Open-source operating model
163
-
164
- - Apache-2.0 for broad individual and enterprise use.
165
- - Public RFCs for schema or plugin-breaking changes.
166
- - Conventional changesets and a compatibility table per release.
167
- - `good first issue` fixtures and matcher additions.
168
- - Governance should clearly document project ownership, maintainership, and vendor neutrality.
169
- - Reserve project, npm, GitHub organization, and domain names only after registry and trademark checks.
170
-
171
- ## 12. Success metrics
172
-
173
- - time from install to first passing stdio test under ten minutes
174
- - less than 1% flaky failures in deterministic project fixtures
175
- - clean teardown across Linux, macOS, and Windows
176
- - projects running MCP Rigor in CI weekly
177
- - community-contributed reusable suites and transport fixtures
178
- - issue resolution time and repeat contributor rate