Skip to content

Spec refresh process

A new MCP spec revision becomes a row in the matrix through a sequence of mechanical steps. The goal is to keep the human review focused on the new things the revision introduces or removes, and to let the rest be exercised by the conformance suite and the interop tests.

1. Vendor the schema

crates/protocol-droid-schema/spec/<version>/ is the authoritative source. The vendored files are the schema.json and schema.ts from the official MCP repo, unchanged. The schema crates’ codegen reads from this directory and is the only consumer; nothing hand-writes wire types that the codegen produces.

2. Run the schema codegen

cargo build -p protocol-droid-schema regenerates the per-revision Rust types from the vendored schema. The diff the PR shows is the Rust delta for the new revision; a human review of the schema delta is the right place to catch a codegen bug.

3. Update the feature matrix

crates/protocol-droid/src/domain/feature.rs is the matrix. The new revision’s CapabilitySet is added to the all_for match, and any new features gain a row in the matrix with a citation to the spec changelog section that introduced or removed them.

4. Re-record the snapshot

cargo insta test rewrites crates/protocol-droid/tests/snapshots/feature_matrix_golden__matrix_<version>.snap with the new row. The diff is the matrix update as a reviewer reads it: every revision, every transport, every feature, in one file.

5. Run the conformance suite

cargo run -p protocol-droid-cli -- conformance server --url http://127.0.0.1:8080/mcp exercises the suite against the new revision’s reference server. A green run is the matrix’s external proof; a red row is the matrix’s gap.

6. Add the new version to the negotiate test

crates/protocol-droid/tests/negotiation.rs has a row per version. A new row that picks the new revision on both sides and asserts the resulting FeatureProfile is the matrix’s runtime proof.

What this is not

This is not a “minimum surface” change. A new revision adds features and may remove others; the matrix must reflect both. The snapshot is the diff, the conformance run is the proof, and the negotiation test is the gate.