Skip to content

Rust SDK - Tier 2 Assessment #2346

@alexhancock

Description

@alexhancock

Rust SDK — Tier 2 Assessment

SDK: modelcontextprotocol/rust-sdk
Version: rmcp v1.0.0 (branch: main) · crates.io/crates/rmcp/1.0.0
Assessed: 2026-03-04
Requested tier: Tier 2
Tool: @modelcontextprotocol/conformance tier-check

Result

All Tier 2 requirements are met.

# Requirement Tier 2 Standard Value Status
1 Server Conformance ≥ 80% pass rate 26/30 (86.7%)
2 Client Conformance ≥ 80% pass rate 17/20 (85.0%)
3 Issue Triage Within 1 month 100% (23/23)
4 P0 Resolution Within 2 weeks 0 open
5 Stable Release At least one ≥ 1.0.0 rmcp v1.0.0
6 Spec Tracking Within 6 months 6-day gap (evidence)
7 Documentation Basic docs for core features 26/48 features documented (evidence)
8 Dependency Policy Published update policy dependabot.yml
9 Roadmap Plan toward Tier 1 ROADMAP.md

Requirements Detail

1. Server Conformance — ✅ 26/30 (86.7%)

Tested against spec versions 2025-06-18 and 2025-11-25 using the conformance test suite. 4 scenarios fail — all tracked in ROADMAP.md.

Evidence: How to run it yourself

All 30 server scenarios (26 pass, 4 fail)
Scenario Status Checks Spec Versions
server-server-initialize PASS 1/1 2025-06-18, 2025-11-25
server-tools-list PASS 1/1 2025-06-18, 2025-11-25
server-tools-call-simple-text PASS 1/1 2025-06-18, 2025-11-25
server-tools-call-image PASS 1/1 2025-06-18, 2025-11-25
server-tools-call-audio PASS 1/1 2025-06-18, 2025-11-25
server-tools-call-embedded-resource PASS 1/1 2025-06-18, 2025-11-25
server-tools-call-mixed-content PASS 1/1 2025-06-18, 2025-11-25
server-tools-call-error PASS 1/1 2025-06-18, 2025-11-25
server-tools-call-with-logging PASS 1/1 2025-06-18, 2025-11-25
server-tools-call-with-progress PASS 1/1 2025-06-18, 2025-11-25
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-server-sse-multiple-streams PASS 2/2 2025-11-25
server-resources-list PASS 1/1 2025-06-18, 2025-11-25
server-resources-read-text PASS 1/1 2025-06-18, 2025-11-25
server-resources-read-binary PASS 1/1 2025-06-18, 2025-11-25
server-resources-templates-read PASS 1/1 2025-06-18, 2025-11-25
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
server-prompts-get-simple PASS 1/1 2025-06-18, 2025-11-25
server-prompts-get-with-args FAIL 0/1 2025-06-18, 2025-11-25
server-prompts-get-embedded-resource FAIL 0/1 2025-06-18, 2025-11-25
server-prompts-get-with-image PASS 1/1 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
server-elicitation-sep1034-defaults PASS 5/5 2025-11-25
server-elicitation-sep1330-enums FAIL 4/5 2025-11-25
server-dns-rebinding-protection FAIL 1/2 2025-11-25

2. Client Conformance — ✅ 17/20 (85.0%)

Core: 4/4 (100%), Auth: 13/16 (81%) scored. 4 informational scenarios (draft/extension) are not scored for tier per conformance testing rules. All 3 date-versioned failures are tracked in ROADMAP.md.

Evidence: How to run it yourself

All 24 client scenarios (17/20 scored pass + 4 informational)
Scenario Status Checks Spec Versions Notes
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/2025-03-26-oauth-metadata-backcompat PASS 12/12 2025-03-26
auth/2025-03-26-oauth-endpoint-fallback FAIL 0/3 2025-03-26 Legacy endpoint fallback
auth/basic-cimd PASS 14/14 2025-11-25
auth/pre-registration PASS 14/14 2025-11-25
auth/metadata-default PASS 14/14 2025-11-25
auth/metadata-var1 PASS 14/14 2025-11-25
auth/metadata-var2 PASS 14/14 2025-11-25
auth/metadata-var3 FAIL 0/4 2025-11-25 AS metadata discovery variant 3
auth/token-endpoint-auth-post PASS 19/19 2025-06-18, 2025-11-25
auth/token-endpoint-auth-basic PASS 19/19 2025-06-18, 2025-11-25
auth/token-endpoint-auth-none PASS 19/19 2025-06-18, 2025-11-25
auth/scope-from-scopes-supported PASS 15/15 2025-11-25
auth/scope-from-www-authenticate PASS 11/11 2025-11-25
auth/scope-omitted-when-undefined PASS 15/15 2025-11-25
auth/scope-step-up FAIL 13/14 2025-11-25 Scope upgrade handling
auth/scope-retry-limit PASS 11/11 2025-11-25
auth/resource-mismatch FAIL 14/15 draft Informational — not scored
auth/client-credentials-basic PASS 9/9 extension Informational
auth/client-credentials-jwt FAIL 4/5 extension Informational — not scored
auth/cross-app-access-complete-flow FAIL 10/12 extension Informational — not scored

3. Issue Triage — ✅ 100% (23/23)

All 23 issues triaged within 2 business days (exceeds Tier 2's 1-month requirement). All 12 required labels are present. Automated triage via triage workflow.

Evidence: Open issues without any triage label

4. P0 Resolution — ✅ 0 open

No open P0 issues.

Evidence: Open P0 issues (should show 0 results)

5. Stable Release — ✅ rmcp v1.0.0

Published on crates.io and GitHub Releases. Companion macro crate also at rmcp-macros v1.0.0. Migration guide published in discussions.

6. Spec Tracking — ✅ < 6-month gap

Accepted SEPS from 2025-11-25 are complete with the sole exception of SEP-1649. It is anticipated that this outstanding item will be resolved within the coming days, comfortably within the six-month compliance window.

7. Documentation — ✅ 26/48 features

All core MCP features (tools, resources, prompts, sampling, roots, logging, completions, transports) are documented with prose and code examples in the README.md. OAuth documented in docs/OAUTH_SUPPORT.md. This meets Tier 2's "basic documentation covering core features" requirement. The remaining 22 features (14 undocumented + 8 partial) are tracked in ROADMAP.md for Tier 1.

Feature coverage table (26/48 PASS, 8 PARTIAL, 14 FAIL)
# Feature Location Examples Verdict
1 Tools - listing README.md (collapsed) counter example PARTIAL
2 Tools - calling README.md (collapsed) counter example PARTIAL
3 Tools - text results README.md (collapsed) counter example PARTIAL
4 Tools - image results FAIL
5 Tools - audio results FAIL
6 Tools - embedded resources FAIL
7 Tools - error handling implicit PARTIAL
8 Tools - change notifications README.md:770 1 PASS
9 Resources - listing README.md:132-228 2 PASS
10 Resources - reading text README.md:179-196 2 PASS
11 Resources - reading binary README.md:134 PARTIAL
12 Resources - templates README.md:198-209 1 PASS
13 Resources - template reading README.md:227 1 PASS
14 Resources - subscribing README.md:779-856 2 PASS
15 Resources - unsubscribing README.md:779-856 2 PASS
16 Resources - change notifications README.md:230-263 2 PASS
17 Prompts - listing README.md:269-382 2 PASS
18 Prompts - getting simple README.md:311-313 1 PASS
19 Prompts - getting with arguments README.md:319-337 1 PASS
20 Prompts - embedded resources FAIL
21 Prompts - image content FAIL
22 Prompts - change notifications README.md:377-379 1 PASS
23 Sampling - creating messages README.md:386-455 2 PASS
24 Elicitation - form mode examples/servers/README.md elicitation_stdio.rs PARTIAL
25 Elicitation - URL mode FAIL
26 Elicitation - schema validation examples/servers/README.md elicitation_stdio.rs PARTIAL
27 Elicitation - default values FAIL
28 Elicitation - enum values examples/servers/README.md elicitation_enum_inference.rs PARTIAL
29 Elicitation - complete notification FAIL
30 Roots - listing README.md:459-524 2 PASS
31 Roots - change notifications README.md:485-523 2 PASS
32 Logging - sending log messages README.md:527-598 2 PASS
33 Logging - setting level README.md:550-597 2 PASS
34 Completions - resource argument README.md:602-690 2 PASS
35 Completions - prompt argument README.md:602-690 2 PASS
36 Ping FAIL
37 Streamable HTTP transport (client) crates/rmcp/README.md:48-56 streamable_http.rs PASS
38 Streamable HTTP transport (server) crates/rmcp/README.md:48-56 counter_streamhttp.rs PASS
39 SSE transport - legacy (client) FAIL
40 SSE transport - legacy (server) FAIL
41 stdio transport (client) README.md:56-73 everything_stdio.rs PASS
42 stdio transport (server) README.md:77-128 counter_stdio.rs PASS
43 Progress notifications README.md:702-720 progress_demo.rs PASS
44 Cancellation README.md:722-746 1 PASS
45 Pagination README.md:219 (mention) FAIL
46 Capability negotiation README.md (builder API) in every section PASS
47 Protocol version negotiation FAIL
48 JSON Schema 2020-12 support README.md:53-54 implicit (schemars) PARTIAL

8. Dependency Policy — ✅

.github/dependabot.yml — Weekly Cargo dependency updates and daily GitHub Actions updates. Pull request limits and commit message conventions configured.

9. Roadmap — ✅

ROADMAP.md — Tracks the path from Tier 2 to Tier 1 with concrete work items: 4 server conformance fixes, 3 client conformance fixes, VERSIONING.md creation, and 22 documentation gaps (14 FAIL + 8 PARTIAL features). Also tracks informational (non-scored) draft/extension scenario gaps.


Reproduce This Assessment

Step-by-step instructions

Prerequisites

  • Node.js >= 20
  • Rust toolchain (for building the SDK)
  • GitHub CLI (gh) authenticated (gh auth login)
  • Git

Quick check (repository health only, ~30 seconds)

git clone https://github.com/modelcontextprotocol/conformance.git
cd conformance
npm install
npm run build
npm run --silent tier-check -- --repo modelcontextprotocol/rust-sdk --skip-conformance

Full check (with conformance tests, ~5 minutes)

# Terminal 1: Clone and start the SDK's conformance server
git clone https://github.com/modelcontextprotocol/rust-sdk.git
cd rust-sdk
cargo build --release -p mcp-conformance
./target/release/conformance-server &
# Server starts on http://127.0.0.1:8001/mcp

# Terminal 2: Run the full tier-check
cd conformance
npm run --silent tier-check -- \
  --repo modelcontextprotocol/rust-sdk \
  --conformance-server-url http://127.0.0.1:8001/mcp \
  --client-cmd './target/release/conformance-client'

Output formats

# Terminal output (default)
npm run --silent tier-check -- --repo modelcontextprotocol/rust-sdk --skip-conformance

# Markdown report
npm run --silent tier-check -- --repo modelcontextprotocol/rust-sdk --skip-conformance --output markdown

# Machine-readable JSON
npm run --silent tier-check -- --repo modelcontextprotocol/rust-sdk --skip-conformance --output json

Metadata

Metadata

Assignees

No one assigned

    Labels

    sdkWork related to MCP SDKs.

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions