Skip to content

Rust SDK - Tier 1 Assessment #3179

Description

@alexhancock

MCP SDK Tier Audit: modelcontextprotocol/rust-sdk

Date: 2026-07-31
Branch: main (commit 1cf6deb)
Version: rmcp v3.0.1 · crates.io/crates/rmcp/3.0.1
Requested tier: Tier 1
Tool: @modelcontextprotocol/conformance tier-check

Tier Assessment: Tier 1

All Tier 1 requirements are met. Conformance is 100% across every tier-scored server and client scenario, all repository-health and governance requirements clear the Tier 1 bar, a stable 3.0.1 release is published with a documented breaking-change policy, and every implemented non-experimental feature is documented with runnable examples.

Requirements Summary

# Requirement Tier 1 Standard Tier 2 Standard Current Value T1? T2? Gap
1a Server Conformance 100% pass rate >= 80% pass rate 100% (30/30 scored) PASS PASS None
1b Client Conformance 100% pass rate >= 80% pass rate 100% (20/20 scored) PASS PASS None
2 Issue Triage >= 90% within 2 biz days >= 80% within 1 month 100% (18/18) PASS PASS None
2b Labels 12 required labels 12 required labels 12/12 PASS PASS None
3 Critical Bug Resolution All P0s within 7 days All P0s within 2 weeks 0 open (1 closed within 7d) PASS PASS None
4 Stable Release Required + clear versioning At least one stable release rmcp v3.0.1 PASS PASS None
4b Spec Tracking Timeline agreed per release Within 6 months 0-day gap PASS PASS None
5 Documentation Comprehensive w/ examples Basic docs for core features 46/46 implemented features PASS PASS None
6 Dependency Policy Published update policy Published update policy Found PASS PASS None
7 Roadmap Published roadmap Plan toward Tier 1 Found PASS PASS None
8 Versioning Policy Documented breaking change policy N/A Found PASS N/A None

Tier Determination

  • Tier 1: PASS — 8/8 requirements met
  • Tier 2: PASS — 7/7 requirements met
  • Final Tier: 1

Server Conformance Details

Pass rate: 100% (30/30). Tested against spec revisions 2025-06-18 and 2025-11-25 using the conformance test suite.

Scenario Status Checks Spec Versions
server-server-initialize PASS 2/2 2025-06-18, 2025-11-25
server-ping PASS 1/1 2025-06-18, 2025-11-25
server-logging-set-level PASS 1/1 2025-06-18, 2025-11-25
server-completion-complete PASS 1/1 2025-06-18, 2025-11-25, 2026-07-28
server-tools-list PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28
server-tools-call-simple-text PASS 1/1 2025-06-18, 2025-11-25, 2026-07-28
server-tools-call-image PASS 1/1 2025-06-18, 2025-11-25, 2026-07-28
server-tools-call-audio PASS 1/1 2025-06-18, 2025-11-25, 2026-07-28
server-tools-call-embedded-resource PASS 1/1 2025-06-18, 2025-11-25, 2026-07-28
server-tools-call-mixed-content PASS 1/1 2025-06-18, 2025-11-25, 2026-07-28
server-tools-call-with-logging PASS 1/1 2025-06-18, 2025-11-25
server-tools-call-error PASS 1/1 2025-06-18, 2025-11-25, 2026-07-28
server-tools-call-with-progress PASS 1/1 2025-06-18, 2025-11-25, 2026-07-28
server-tools-call-sampling PASS 1/1 2025-06-18, 2025-11-25
server-tools-call-elicitation PASS 1/1 2025-06-18, 2025-11-25
server-resources-list PASS 1/1 2025-06-18, 2025-11-25, 2026-07-28
server-resources-read-text PASS 1/1 2025-06-18, 2025-11-25, 2026-07-28
server-resources-read-binary PASS 1/1 2025-06-18, 2025-11-25, 2026-07-28
server-resources-templates-read PASS 1/1 2025-06-18, 2025-11-25, 2026-07-28
server-resources-subscribe PASS 1/1 2025-06-18, 2025-11-25
server-resources-unsubscribe PASS 1/1 2025-06-18, 2025-11-25
server-prompts-list PASS 1/1 2025-06-18, 2025-11-25, 2026-07-28
server-prompts-get-simple PASS 1/1 2025-06-18, 2025-11-25, 2026-07-28
server-prompts-get-with-args PASS 1/1 2025-06-18, 2025-11-25, 2026-07-28
server-prompts-get-with-image PASS 1/1 2025-06-18, 2025-11-25, 2026-07-28
server-prompts-get-embedded-resource PASS 1/1 2025-06-18, 2025-11-25, 2026-07-28
server-elicitation-sep1034-defaults PASS 5/5 2025-11-25
server-elicitation-sep1330-enums PASS 5/5 2025-11-25
server-server-sse-multiple-streams PASS 2/2 2025-11-25, 2026-07-28
server-dns-rebinding-protection PASS 2/2 2025-11-25, 2026-07-28

Client Conformance Details

Full-suite pass rate (tier-scored): 100% (20/20).

Suite breakdown: Core: 4/4 (100%), Auth: 16/16 (100%).
Tier scoring covers date-versioned spec revisions (2025-03-26, 2025-06-18, 2025-11-25). Draft (2026-07-28) and extension scenarios are informational and are not counted toward tier advancement, per the conformance testing rules.

Conformance Matrix

Suite 2025-03-26 2025-06-18 2025-11-25 All* T2 T1
Server 26/26 4/4 30/30 (100%) PASS PASS
Client: Core 2/2 2/2 4/4 (100%)
Client: Auth 2/2 3/3 11/11 16/16 (100%)
Client Total 20/20 (100%) PASS PASS

* Unique scenarios; a scenario may apply to multiple spec versions. Columns show scenarios by the revision that introduced them.

Informational (not scored for tier):

Suite draft (2026-07-28) extension
Client: Core 6/6
Client: Auth 11/12 2/3

The two informational failures — auth/wif-jwt-bearer (draft 2026-07-28) and auth/enterprise-managed-authorization (extension) — target the in-progress draft revision and an off-timeline protocol extension. Neither affects tier classification.

Core Scenarios (scored)

Scenario Status Checks Spec Versions
initialize PASS 1/1 2025-06-18, 2025-11-25
tools_call PASS 1/1 2025-06-18, 2025-11-25
sse-retry PASS 3/3 2025-11-25
elicitation-sep1034-client-defaults PASS 5/5 2025-11-25

Auth Scenarios (scored)

Scenario Status Checks Spec Versions Notes
auth/2025-03-26-oauth-metadata-backcompat PASS 9/9 2025-03-26
auth/2025-03-26-oauth-endpoint-fallback PASS 4/4 2025-03-26
auth/token-endpoint-auth-post PASS 15/15 2025-06-18, 2025-11-25, 2026-07-28
auth/token-endpoint-auth-none PASS 15/15 2025-06-18, 2025-11-25, 2026-07-28
auth/token-endpoint-auth-basic PASS 15/15 2025-06-18, 2025-11-25, 2026-07-28
auth/metadata-default PASS 10/10 2025-11-25, 2026-07-28
auth/metadata-var1 PASS 11/11 2025-11-25, 2026-07-28
auth/metadata-var2 PASS 11/11 2025-11-25, 2026-07-28
auth/metadata-var3 PASS 10/10 2025-11-25, 2026-07-28
auth/pre-registration PASS 13/13 2025-11-25, 2026-07-28
auth/basic-cimd PASS 10/10 2025-11-25, 2026-07-28
auth/scope-from-www-authenticate PASS 11/11 2025-11-25, 2026-07-28
auth/scope-from-scopes-supported PASS 11/11 2025-11-25, 2026-07-28
auth/scope-omitted-when-undefined PASS 11/11 2025-11-25, 2026-07-28
auth/scope-step-up PASS 25/25 2025-11-25, 2026-07-28
auth/scope-retry-limit PASS 11/11 2025-11-25, 2026-07-28
Informational client scenarios (draft 2026-07-28 / extension — not scored)

Passing (17): sep-2322-client-request-state, request-metadata, json-schema-ref-no-deref, http-standard-headers, http-invalid-tool-headers, http-custom-headers, auth/resource-mismatch, auth/offline-access-scope, auth/offline-access-not-supported, auth/metadata-issuer-mismatch, auth/iss-supported, auth/iss-supported-missing, auth/iss-not-advertised, auth/iss-normalized, auth/iss-unexpected, auth/iss-wrong-issuer, auth/authorization-server-migration, auth/client-credentials-basic, auth/client-credentials-jwt.

Failing (2, informational only): auth/wif-jwt-bearer (draft 2026-07-28), auth/enterprise-managed-authorization (extension).


Issue Triage Details

Analysis period: last 18 issues.
Labels: all 12 present — bug, enhancement, question, needs confirmation, needs repro, ready for work, good first issue, help wanted, P0, P1, P2, P3.

Metric Value T1 Req T2 Req Verdict
Compliance rate 100% >= 90% >= 80% PASS
Exceeding SLA 0
Open P0s 0 0 0 PASS

P0 resolution: 1 P0 closed within 7 days; 0 currently open.

Spec tracking: latest spec release 2026-07-28; latest SDK release 2026-07-28 (0-day gap).

Stable release: rmcp v3.0.1 — published 2026-07-29, not a pre-release, semantic version 3.0.1 (>= 1.0.0), with a documented breaking-change policy in VERSIONING.md.


Documentation Coverage

Documentation locations: root README.md (1832 lines, per-feature prose + rust snippets), crates/rmcp/README.md, crates/rmcp-macros/README.md, docs/OAUTH_SUPPORT.md, docs/DEVCONTAINER.md, and runnable examples/ (servers, clients, transport, wasi, simple-chat-client).

# Feature Documented? Where Has Examples? Verdict
1 Tools - listing Yes README.md:189-348; examples/servers/src/common/calculator.rs Yes PASS
2 Tools - calling Yes README.md:333-348; examples/servers/src/calculator_stdio.rs Yes PASS
3 Tools - text results Yes README.md:262-296 Yes PASS
4 Tools - image results Yes README.md:262-296 Yes PASS
5 Tools - audio results Yes README.md:262-296 Yes PASS
6 Tools - embedded resources Yes README.md:262-296 Yes PASS
7 Tools - error handling Yes README.md:297-332 Yes PASS
8 Tools - change notifications Yes README.md:1221-1233 Yes PASS
9 Resources - listing Yes README.md:349-473 Yes PASS
10 Resources - reading text Yes README.md:355-453 Yes PASS
11 Resources - reading binary Yes README.md:355-453 Yes PASS
12 Resources - templates Yes README.md:355-453 Yes PASS
13 Resources - template reading Yes README.md:355-473 Yes PASS
14 Resources - subscribing Yes README.md:1235-1322; examples/clients/src/subscriptions_streamhttp.rs Yes PASS
15 Resources - unsubscribing Yes README.md:1288-1322 Yes PASS
16 Resources - change notifications Yes README.md:475-513 Yes PASS
17 Prompts - listing Yes README.md:514-638; examples/servers/src/prompt_stdio.rs Yes PASS
18 Prompts - getting simple Yes README.md:520-595 Yes PASS
19 Prompts - getting with arguments Yes README.md:520-638 Yes PASS
20 Prompts - embedded resources Yes README.md:596-619 Yes PASS
21 Prompts - image content Yes README.md:596-619 Yes PASS
22 Prompts - change notifications Yes README.md:639-648 Yes PASS
23 Sampling - creating messages Yes README.md:650-721; examples/*/sampling_stdio.rs Yes PASS
24 Elicitation - form mode Yes README.md:730-772; examples/servers/src/elicitation_stdio.rs Yes PASS
25 Elicitation - URL mode Yes README.md:794-815 Yes PASS
26 Elicitation - schema validation Yes README.md:730-772 Yes PASS
27 Elicitation - default values Yes README.md:730-793 Yes PASS
28 Elicitation - enum values Yes README.md:773-793; examples/servers/src/elicitation_enum_inference.rs Yes PASS
29 Elicitation - complete notification Yes README.md:816-855 Yes PASS
30 Roots - listing Yes README.md:856-920 Yes PASS
31 Roots - change notifications Yes README.md:864-920 Yes PASS
32 Logging - sending log messages Yes README.md:921-970 Yes PASS
33 Logging - setting level Yes README.md:929-995 Yes PASS
34 Completions - resource argument Yes README.md:996-1099; examples/servers/src/completion_stdio.rs Yes PASS
35 Completions - prompt argument Yes README.md:996-1099 Yes PASS
36 Ping Yes README.md:1154-1202 Yes PASS
37 Streamable HTTP transport (client) Yes README.md:1566-1633; examples/clients/src/streamable_http.rs Yes PASS
38 Streamable HTTP transport (server) Yes README.md:1517-1633; examples/servers/src/counter_streamhttp.rs Yes PASS
39 SSE transport - legacy (client) N/A README.md:1642-1666 (deprecated 2024-11-05 transport; documented non-goal) N/A N/A
40 SSE transport - legacy (server) N/A README.md:1642-1666 (deprecated 2024-11-05 transport; documented non-goal) N/A N/A
41 stdio transport (client) Yes README.md:1600-1620; examples/clients/src/everything_stdio.rs Yes PASS
42 stdio transport (server) Yes README.md:1600-1620; examples/servers/src/counter_stdio.rs Yes PASS
43 Progress notifications Yes README.md:1106-1127; examples/servers/src/common/progress_demo.rs Yes PASS
44 Cancellation Yes README.md:1128-1153 Yes PASS
45 Pagination Yes README.md:1667-1707 Yes PASS
46 Capability negotiation Yes README.md:1708-1736 Yes PASS
47 Protocol version negotiation Yes README.md:1737-1758, 94-131 Yes PASS
48 JSON Schema 2020-12 support Yes README.md:1759-1783 Yes PASS

Summary: 46/46 implemented non-experimental features documented with examples (100%); core features 36/36 (100%).

#39 / #40 — Legacy HTTP+SSE transport (2024-11-05). The standalone two-endpoint HTTP+SSE transport from protocol revision 2024-11-05 was replaced by Streamable HTTP in the 2025-03-26 revision and is not represented in the tier-scored conformance suite. rmcp targets current spec revisions (2025-11-25, 2026-07-28) and deliberately does not ship the legacy transport; equivalent SSE streaming semantics are provided by the fully implemented and documented Streamable HTTP transport (#37/#38). The README (lines 1642-1666) explicitly documents this decision and directs users to Streamable HTTP. These items are scoped N/A — a deprecated, out-of-current-spec transport that is a documented non-goal — rather than a documentation gap.

Experimental features (informational only)
Feature Documented? Where Examples Verdict
Tasks - get Yes README.md:1399-1432; examples/*/task_stdio.rs Yes INFO
Tasks - result Yes README.md:1399-1432; examples/*/task_stdio.rs Yes INFO
Tasks - cancel Yes README.md:1399-1432 Yes INFO
Tasks - list Partial TaskManager in source only No INFO
Tasks - status notifications Partial README.md:1399-1432 (tasks/update) Partial INFO

Policy Evaluation

1. Dependency Update Policy — PASS

File Exists Content Verdict
DEPENDENCY_POLICY.md Yes Substantive — selection, automated updates, review/merge, security, MSRV
.github/dependabot.yml Yes Configured — Cargo (weekly) + GitHub Actions (daily), labeled, PR limits

Verdict: PASS — a substantive written policy and a working Dependabot configuration are present and consistent.

2. Roadmap — PASS

File Exists Content Verdict
ROADMAP.md Yes Substantive — published roadmap with spec-tied work items

Verdict (Tier 1): PASS — ROADMAP.md explicitly tracks the path to SEP-1730 Tier 1 with concrete work items mapped to named MCP spec components and issue references (e.g. SEP-2567 #870, SEP-2260 #873, SEP-2549 follow-up #974), per-suite conformance tables, a completed spec-implementation list (SEP-2322, SEP-2575, SEP-2164, SEP-2549, SEP-2243), and an ongoing-conformance tracking epic (#977).

3. Versioning Policy — PASS

File Exists Content Verdict
VERSIONING.md Yes Substantive — SemVer scheme, breaking-change definition, comms

Verdict (Tier 1): PASS — documents the versioning scheme (SemVer 2.0.0), a clear definition of what constitutes a breaking change (public API removal/rename, signature/trait changes, MSRV bumps), and how breaking changes are communicated (release-plz + Conventional Commits feat!:/fix!:/BREAKING CHANGE:, tagged GitHub Releases with generated notes, and migration guides).

Policy Area Tier 1 Tier 2
Dependency Update Policy PASS PASS
Roadmap PASS PASS
Versioning Policy PASS N/A

Reproduce This Assessment

# From the conformance repo, with the rmcp conformance server running on :8001
npm run --silent tier-check -- \
  --repo modelcontextprotocol/rust-sdk \
  --branch main \
  --conformance-server-url http://127.0.0.1:8001/mcp \
  --client-cmd '/path/to/rust-sdk/target/release/conformance-client' \
  --output json

# Verify the stable release metadata directly
gh release view rmcp-v3.0.1 --repo modelcontextprotocol/rust-sdk

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions