MCP Rigor logo MCP Rigor

Contract Drift Analysis

MCP Rigor explains how a live MCP surface changed instead of only reporting a different fingerprint.

Check a lock against a live server

mcprigor contract-check mcp.lock.yaml --target server.mcpr

This is read-only. It discovers the server, compares it with the lock, and exits with status 1 when breaking changes exist.

Markdown for a pull-request comment:

mcprigor contract-check mcp.lock.yaml --target server.mcpr --markdown --out contract-drift.md

Offline comparison

mcprigor contract-diff old.lock.yaml new.lock.yaml
mcprigor contract-diff old.lock.yaml new.lock.yaml --markdown

Explicit update

mcprigor contract-update mcp.lock.yaml --target server.mcpr

The diff is displayed before the newly discovered contract replaces the lock. Review breaking changes before committing it.

Classifications

Breaking: an operation or capability was removed; a required input was added; a known property was removed; a type changed; an enum option was removed; or a required prompt argument was added.

Potentially breaking: protocol version, description, or ambiguous output/schema behavior changed.

Non-breaking: an operation/capability was added; an optional input was added; a required input became optional; or an enum option was added.

Findings use stable MCP-DRIFT-* codes and deterministic ordering. Complex JSON Schema implication is classified conservatively rather than overstating compatibility. Contract drift is application compatibility evidence, not formal MCP certification.