Skip to content

Ruby SDK — Tier 2 Assessment #3127

Description

@koic

MCP SDK Tier Audit: modelcontextprotocol/ruby-sdk

SDK: modelcontextprotocol/ruby-sdk
Date: 2026-07-25
Branch: main (v1.0.0)
Requested tier: Tier 2
Auditor: mcp-sdk-tier-audit skill (automated + subagent evaluation)
Previous assessment: Tier 3 (#2340, 2026-03-03)

Tier Assessment: Tier 2

The Ruby SDK meets every Tier 2 requirement. Since the Tier 3 assessment (#2340), server conformance moved from 83.3% to 100%, a conformance client was implemented and now passes 100% of client scenarios (including draft and extension scenarios), the first stable release v1.0.0 shipped on 2026-07-24, and ROADMAP.md and VERSIONING.md were published. The expected-failures baseline is empty: no known conformance failures remain.

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) PASS PASS None
1b Client Conformance 100% pass rate >= 80% pass rate 100% (24/24, incl. draft/extension) PASS PASS None
2 Issue Triage >= 90% within 2 biz days >= 80% within 1 month 100% 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 PASS PASS None
4 Stable Release Required + clear versioning At least one stable release v1.0.0 (2026-07-24) PASS PASS None
4b Spec Tracking Timeline agreed per release Within 6 months 2025-11-25 revision implemented 46 days after spec release FAIL PASS No per-release timeline agreed yet
5 Documentation Comprehensive w/ examples Basic docs for core features 34/48 PASS, 5 PARTIAL, 9 FAIL FAIL PASS 14 features lack full prose + examples; core features covered
6 Dependency Policy Published update policy Published update policy .github/dependabot.yml PASS PASS None
7 Roadmap Published roadmap Plan toward Tier 1 ROADMAP.md PASS PASS None
8 Versioning Policy Documented breaking change policy N/A VERSIONING.md PASS N/A None

Tier Determination

  • Tier 1: FAIL — 8/10 requirements met (failing: spec tracking timeline, documentation)
  • Tier 2: PASS — 9/9 requirements met
  • Final Tier: 2

Server Conformance Details

Pass rate: 100% (30/30)

By Spec Version

Spec Version Passed Failed Total Rate
2025-06-18 26 0 26 100%
2025-11-25 30 0 30 100%

Scenario Results

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

The 5 failures reported in #2340 (progress, sampling, elicitation x3) are all resolved: the SDK now extracts _meta.progressToken and delivers notifications/progress, and server-to-client requests (sampling, elicitation) are implemented. conformance/expected_failures.yml is empty (server: []).


Client Conformance Details

Pass rate: 100% (24/24)

Client conformance was skipped in #2340 because no conformance client existed. The SDK now ships a conformance client (conformance/client.rb) exercising MCP::Client with the HTTP transport and OAuth provider. conformance/expected_failures.yml is empty (client: []).

By Spec Version

Spec Version Passed Failed Total Rate
2025-03-26 2 0 2 100%
2025-06-18 5 0 5 100%
2025-11-25 17 0 17 100%
draft (informational) 1 0 1 100%
extension (informational) 3 0 3 100%

Scenario Results

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/metadata-default PASS 12/12 2025-11-25
auth/metadata-var1 PASS 12/12 2025-11-25
auth/metadata-var2 PASS 12/12 2025-11-25
auth/metadata-var3 PASS 12/12 2025-11-25
auth/pre-registration PASS 12/12 2025-11-25
auth/basic-cimd PASS 12/12 2025-11-25
auth/token-endpoint-auth-basic PASS 17/17 2025-06-18, 2025-11-25
auth/token-endpoint-auth-post PASS 17/17 2025-06-18, 2025-11-25
auth/token-endpoint-auth-none PASS 17/17 2025-06-18, 2025-11-25
auth/scope-step-up PASS 22/22 2025-11-25
auth/scope-retry-limit PASS 18/18 2025-11-25
auth/scope-omitted-when-undefined PASS 13/13 2025-11-25
auth/scope-from-www-authenticate PASS 13/13 2025-11-25
auth/scope-from-scopes-supported PASS 13/13 2025-11-25
auth/2025-03-26-oauth-metadata-backcompat PASS 11/11 2025-03-26
auth/2025-03-26-oauth-endpoint-fallback PASS 6/6 2025-03-26
auth/resource-mismatch PASS 2/2 draft
auth/cross-app-access-complete-flow PASS 8/8 extension
auth/client-credentials-jwt PASS 7/7 extension
auth/client-credentials-basic PASS 7/7 extension

Draft and extension scenarios are informational and not scored for tiering; they are included to show current coverage.


Issue Triage Details

Labels present: bug, enhancement, question, needs confirmation, needs repro, ready for work, good first issue, help wanted, P0, P1, P2, P3 (12/12)

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

Documentation Coverage

Documentation locations: README.md (~2,600 lines, primary), docs/building-servers.md, docs/building-clients.md, docs/installation.md, examples/ (runnable stdio/HTTP server and client examples, Rails integration example)

Feature Documentation Table

# Feature Documented? Where Has Examples? Verdict
1 Tools - listing Yes README.md, docs/building-servers.md Yes PASS
2 Tools - calling Yes README.md, examples/rails Yes PASS
3 Tools - text results Yes README.md (Tool::Response) Yes PASS
4 Tools - image results No Implemented (MCP::Content::Image), not documented No FAIL
5 Tools - audio results No Implemented (MCP::Content::Audio), not documented No FAIL
6 Tools - embedded resources No Implemented (MCP::Content::EmbeddedResource), not documented No FAIL
7 Tools - error handling Yes README.md (error: true, exception handling) Yes PASS
8 Tools - change notifications Yes README.md (notify_tools_list_changed) Yes PASS
9 Resources - listing Yes README.md, examples/rails Yes PASS
10 Resources - reading text Yes README.md (TextContents, resources_read_handler) Yes PASS
11 Resources - reading binary Partial README.md mentions BlobContents in prose; no code example No PARTIAL
12 Resources - templates Yes README.md Yes PASS
13 Resources - template reading Yes README.md (template read example) Yes PASS
14 Resources - subscribing Yes README.md (resources_subscribe_handler) Yes PASS
15 Resources - unsubscribing Yes README.md Yes PASS
16 Resources - change notifications Partial README.md prose; no notify_resources_list_changed example No PARTIAL
17 Prompts - listing Yes README.md Yes PASS
18 Prompts - getting simple Yes README.md, docs/building-servers.md Yes PASS
19 Prompts - getting with arguments Yes README.md (Prompt::Argument) Yes PASS
20 Prompts - embedded resources No Only Content::Text documented for prompt messages No FAIL
21 Prompts - image content No No FAIL
22 Prompts - change notifications Partial README.md prose; no code example No PARTIAL
23 Sampling - creating messages Yes README.md (server side + client on_sampling) Yes PASS
24 Elicitation - form mode Yes README.md Yes PASS
25 Elicitation - URL mode Yes README.md (create_url_elicitation, URLElicitationRequiredError) Yes PASS
26 Elicitation - schema validation No requested_schema shown, validation behavior not explained No FAIL
27 Elicitation - default values Partial Client Elicitation.apply_defaults example; no prose Yes PARTIAL
28 Elicitation - enum values No Not documented in elicitation context No FAIL
29 Elicitation - complete notification Partial Appears in URL mode example; no prose Yes PARTIAL
30 Roots - listing Yes README.md (list_roots) Yes PASS
31 Roots - change notifications Yes README.md (roots_list_changed_handler) Yes PASS
32 Logging - sending log messages Yes README.md (notify_log_message) Yes PASS
33 Logging - setting level Yes README.md (logging/setLevel) Yes PASS
34 Completions - resource argument Yes README.md (ref/resource) Yes PASS
35 Completions - prompt argument Yes README.md (ref/prompt) Yes PASS
36 Ping Yes README.md (server and client) Yes PASS
37 Streamable HTTP transport (client) Yes README.md, docs/building-clients.md, examples/ Yes PASS
38 Streamable HTTP transport (server) Yes README.md, docs/building-servers.md, examples/ Yes PASS
39 SSE transport - legacy (client) No Not implemented; intentionally out of scope per ROADMAP.md No FAIL
40 SSE transport - legacy (server) No Not implemented; intentionally out of scope per ROADMAP.md No FAIL
41 stdio transport (client) Yes README.md, docs/building-clients.md, examples/ Yes PASS
42 stdio transport (server) Yes README.md, docs/building-servers.md, examples/ Yes PASS
43 Progress notifications Yes README.md (server side + client progress_token) Yes PASS
44 Cancellation Yes README.md (server, client, custom transports) Yes PASS
45 Pagination Yes README.md (page_size, nextCursor) Yes PASS
46 Capability negotiation Yes README.md (Capabilities builder, connect(capabilities:)) Yes PASS
47 Protocol version negotiation Yes README.md (protocol_version) Yes PASS
48 JSON Schema 2020-12 support Yes README.md (SEP-2106, oneOf/$defs examples) Yes PASS

Summary

  • Total non-experimental features: 48
  • PASS (documented with examples): 34/48
  • PARTIAL: 5/48
  • FAIL (not documented): 9/48

Tier 1 (all non-experimental features documented with examples): FAIL — 14 features are not fully documented. The gaps cluster in non-text content types (image/audio/embedded resources for tools and prompts, binary resources), notification code examples, and elicitation sub-options. Legacy SSE transport (#39, #40) is intentionally not implemented; TypeScript SDK v2 likewise no longer serves the legacy HTTP+SSE transport.
Tier 2 (basic docs covering core features): PASS — every core capability area (tools, resources, prompts, sampling, elicitation, roots, logging, completions, ping, both transports, progress, cancellation, pagination, capability and version negotiation) has prose documentation with code examples.


Policy Evaluation

1. Dependency Update Policy: PASS

File Exists Content Verdict
.github/dependabot.yml Yes Configured

Verdict: PASS

2. Roadmap: PASS

File Exists Content Verdict
ROADMAP.md Yes (merged in #465) Substantive

ROADMAP.md states the goal of a 100% conformance pass rate and SEP-1730 Tier 1, records the remaining work, declares legacy SSE transport intentionally out of scope, and describes how new spec revisions are tracked.

Verdict:

  • Tier 1: PASS — Published roadmap tracking spec components
  • Tier 2: PASS — Published plan toward Tier 1

3. Versioning Policy: PASS (Tier 1) / N/A (Tier 2)

File Exists Content Verdict
VERSIONING.md Yes (merged in #466) Substantive

VERSIONING.md documents the Semantic Versioning scheme, what constitutes a breaking change, the post-1.0.0 guarantee that breaking changes ship only in major releases, the narrow exceptions (MCP spec-conformance fixes and security fixes), and how breaking changes are communicated (CHANGELOG.md in Keep a Changelog format, GitHub Releases, deprecation warnings where practical).

Verdict:

  • Tier 1: PASS
  • Tier 2: N/A

Overall Policy Summary

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

Changes Since the Tier 3 Assessment (#2340)

Area Tier 3 assessment (2026-03-03) This assessment (2026-07-25)
Server conformance 83.3% (25/30), 5 baselined failures 100% (30/30), empty baseline
Client conformance Skipped (no conformance client) 100% (24/24), incl. draft/extension
Stable release 0.8.0 v1.0.0 (2026-07-24)
Roadmap None ROADMAP.md
Versioning policy None VERSIONING.md
Documentation 22/48 PASS 34/48 PASS
Sampling / elicitation / progress Unimplemented Implemented (server and client)
OAuth client None Full flow incl. DCR, PKCE, scope handling, 2025-03-26 backcompat

Remaining Gaps Toward Tier 1

  1. Documentation: 14 features lack full prose + examples (non-text content types, notification examples, elicitation sub-options)
  2. Spec tracking: agree an implementation timeline per spec release with the spec maintainers
  3. Legacy SSE transport is intentionally out of scope (declared in ROADMAP.md); guidance from the working group on how this affects the Tier 1 documentation requirement is welcome

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