MCP Rigor logo MCP Rigor

Troubleshooting

Start with:

mcprigor check your-tests.mcpr

This catches wording and configuration problems without starting the MCP server.

The server does not start

Typical category:

MCP-SPAWN-* [server-spawn]

Check:

  1. Run the Server: command directly in the same terminal.
  2. Confirm the executable is installed and on PATH.
  3. Check Server options → cwd.
  4. Build the server before running tests.
  5. Confirm required environment variables exist.

Initialization times out

Typical categories:

MCP-INIT-* [initialization]
MCP-TIMEOUT-* [timeout]

Check that the stdio server:

For HTTP, verify the URL, authentication, and server logs.

For token-protected endpoints:

A field was not found

Example:

MCP-ASSERT-001 [assertion] $.structuredContent.id expected to exist

Actions:

Expected number, received text

Equality is type-sensitive:

Expect "structuredContent.total" equals 2

is different from:

Expect "structuredContent.total" equals "2"

Match the server's actual JSON type.

The test was skipped

Require gates a test on server capability or protocol revision:

Require: tools
Require protocol: "2025-06-18"

A skip means the server did not advertise the requirement. It is not a test failure.

The test was blocked

A dependent test is blocked when its producer did not pass:

Depends on: create-customer

Fix the producer first. MCP Rigor does not open a server session for a blocked consumer.

Data loading failed

Typical category:

MCP-DATA-* [data-loading]

Check:

Remote data requires:

mcprigor test FILE --allow-remote-data

Private and local network destinations are rejected.

An extension failed

Typical category:

MCP-EXT-* [extension]

Check:

Snapshot changed

Review the path-level diff. If the change is expected:

mcprigor test FILE --snapshot snapshots.json --update-snapshots

Never update snapshots automatically in CI. Commit and review changed expectations.

Transport parity differs

A parity failure can mean:

Compare the path-level difference and verify both environments use equivalent test data.

Cleanup failed

Typical category:

MCP-CLEANUP-* [cleanup]

Make cleanup operations idempotent. A delete should safely handle an item that is already absent. Check that server child processes stop when stdin closes and do not leave descendants running.

Ctrl+C does not return immediately

MCP Rigor first closes active MCP clients and transports. The pinned SDK gives stdio servers a graceful shutdown window before escalation. If a server creates child processes, the server must also shut them down.

Collect useful evidence

mcprigor test FILE --evidence .mcprigor/debug-run --json result.json
mcprigor evidence-show .mcprigor/debug-run

Before sharing evidence, review it for sensitive business data. Secret redaction does not remove all possible customer content.

Reporting a framework bug

Include:

Do not include credentials or regulated data.

MCP-AUTH-002 Token from command failed

The Token from: command exited non-zero, timed out (15 s cap), printed nothing, or printed more than a single token. Run the command by hand and confirm it prints exactly one token on stdout with no extra logging. Send diagnostics to stderr instead — Rigor only reads stdout.