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 optionscwd.
  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.

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.