RugSnare Tracks Silent Contract Drift Across MCP Servers
Summary
RugSnare reports a two-month audit of 24 popular and enterprise Model Context Protocol servers, covering a combined installation base of about 3.6 million installs per week. The tool pins each tool’s name, description, and input schema using a canonicalized SHA-256 digest at installation, then compares those contracts on upgrades and exits with status 1 when drift is detected. It classifies changes as breaking, loosened, expanded, notation-only, or cosmetic. The audit recorded 336 contract changes across observation windows ranging from several weeks to six months. MongoDB 3.0.0 regenerated all 20 schemas during a draft-07 to 2020-12 migration, with five constraint tightenings among 15 notation-level changes; its GitHub release notes were empty. Currents changed 45 schemas, including 32 constraint tightenings, while Shopify replaced two specific validators with a generic validator and HubSpot removed one tool while adding three others. Supabase changed its stdio entry point, breaking pinned launch configurations without changing tool contracts. Bybit enforced a remote version manifest at startup, although the authors say version enforcement and integrity checks are skipped when that service is unreachable. GitHub’s official MCP server changed 124 of 131 tool definitions in version 2.0.0, which its maintainer characterized as largely affecting output schemas. The article identifies notation changes, tool consolidation, and silent constraint loosening as recurring patterns. It says OWASP guidance and an MCP pin-at-approval RFC now incorporate contract pinning ideas, and presents RugSnare as an Apache-2.0, dependency-free, telemetry-free CLI with a public drift corpus and PIN-SPEC format.