FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

TypeScript SDK — Tier 1 Assessment · Issue #3268 · modelcontextprotocol/modelcontextprotocol · GitHub

TypeScript SDK — Tier 1 Assessment #3268

Description

MCP SDK Tier Audit: modelcontextprotocol/typescript-sdk

Date: 2026-08-18
Branch: main (commit a81ef34ac)
Version: 2.0.0 — @modelcontextprotocol/client@2.0.0, @modelcontextprotocol/server@2.0.0, core, server-legacy, codemod, node, express, hono, fastify (all published 2026-07-27T23:55Z, npm latest); v1 maintenance line at 1.30.0
Requested tier: Tier 1
Requirements revisions scored: 2025-11-25 and 2026-07-28 — frozen requirement sets, each run at that revision's own wire version
Tool: @modelcontextprotocol/conformance tier-check 0.2.0-alpha.11 (+ #458; conformance main @ 74edef3), driven by the mcp-sdk-tier-audit skill
Previous assessment: #2271 (Tier 1, v1.27.0, 2026-02-18)

Tier Assessment: Tier 1

The TypeScript SDK meets all Tier 1 requirements: 100% scored conformance on both sides at both frozen revisions (server 30/30 @ 2025-11-25 and 37/37 @ 2026-07-28; client 18/18 and 32/32), 100% issue triage within SLA, no open P0s, stable releases on both the v2 (2.0.0) and v1.x (1.30.0) lines shipped the day before the 2026-07-28 spec, 48/48 documented features with examples, and published dependency, roadmap and versioning policies. The only failing scenarios are extension-tagged and unscored (SEP-2663 tasks on the server; SEP-1932 DPoP / SEP-1933 WIF on the client), all captured in the SDK's own expected-failures.yaml.

Requirements Summary

# Requirement Tier 1 Standard Tier 2 Standard Current Value T1? T2? Gap
1a Server Conformance 100% pass rate >= 80% pass rate 100% (67/67 scored: 30/30 @ 2025-11-25, 37/37 @ 2026-07-28; 47 unique scenarios) PASS PASS None. 10 unscored extension failures @ 2026-07-28 (all tasks-*, SEP-2663; 9 in test/conformance/expected-failures.yaml:50-58, 1 referee SKIP)
1b Client Conformance 100% pass rate >= 80% pass rate 100% (50/50 scored: 18/18 @ 2025-11-25 [Core 4/4, Auth 14/14], 32/32 @ 2026-07-28 [Core 7/7, Auth 25/25]; 35 unique scenarios) PASS PASS None. 3 unscored extension failures per revision (auth/dpop, auth/dpop-nonce, auth/wif-jwt-bearer; all in test/conformance/expected-failures.yaml:38-40)
2 Issue Triage >= 90% within 2 biz days >= 80% within 1 month 100% (289/289 within SLA; 0 exceeding; median 0h, p95 0h) PASS PASS None
2b Labels 12 required labels 12 required labels 12/12 (uses_issue_types: false) PASS PASS None
3 Critical Bug Resolution All P0s within 7 days All P0s within 2 weeks 0 open (2 closed, both within 7d and 14d) PASS PASS None
4 Stable Release Required + clear versioning At least one stable release 1.30.0 (latest @modelcontextprotocol/sdk v1.x, 2026-07-27T23:55:32Z, per CLI); v2 monorepo @modelcontextprotocol/{core,client,server,server-legacy,codemod,express,fastify}@2.0.0 released 2026-07-27 and latest on npm. Both lines >= 1.0.0, no pre-release suffix PASS PASS None
4b Spec Tracking Timeline agreed per release Within 6 months -1d gap (PASS): latest spec release 2026-07-28T16:47:49Z, latest SDK release 2026-07-27T23:55:32Z, within 30d PASS PASS None
5 Documentation Comprehensive w/ examples Basic docs for core features 48/48 features (36/36 core), all with examples PASS PASS None
6 Dependency Policy Published update policy Published update policy Found (DEPENDENCY_POLICY.md, .github/dependabot.yml) PASS PASS None
7 Roadmap Published roadmap Plan toward Tier 1 Found (ROADMAP.md) PASS PASS None
8 Versioning Policy Documented breaking change policy N/A Found (VERSIONING.md) PASS N/A None

Policy-signal files as detected by the CLI (checks.policy_signals, status partial because the optional alternates are absent): present — SECURITY.md, CONTRIBUTING.md, DEPENDENCY_POLICY.md, .github/dependabot.yml, ROADMAP.md, VERSIONING.md; absent — CHANGELOG.md (root; per-package changelogs exist), docs/dependency-policy.md, .github/renovate.json, renovate.json, docs/roadmap.md, docs/versioning.md, BREAKING_CHANGES.md. The partial status is informational; requirements 6-8 are judged on content in the Policy Evaluation section below.

Tier Determination

  • Tier 1: PASS -- 8/8 requirements met (failing: none)
  • Tier 2: PASS -- 7/7 requirements met (failing: none)
  • Final Tier: 1

Conformance

The SDK's own conformance workflow runs the same legs on every push to main (pinned referee 0.2.0-alpha.11, test/conformance/package.json). The server invocation comes from the typescript-sdk entry in src/sdk-runner/known-sdks.ts; one process serves both revisions.

Only scored rows with a date-versioned specVersions tag are counted. A scenario tagged with several spec versions counts in each of those columns; "All" is the number of unique scored rows for that run.

Run @ 2025-11-25 (frozen 2025-11-25 requirement set)

Suite 2025-06-18 2025-11-25 2026-07-28 All (scored)
Server 26/26 30/30 20/20 30/30 (100%)
Client: Core 2/2 4/4 1/1 4/4 (100%)
Client: Auth 3/3 14/14 14/14 14/14 (100%)

Run @ 2026-07-28 (frozen 2026-07-28 requirement set)

Suite 2025-06-18 2025-11-25 2026-07-28 All (scored)
Server 18/18 20/20 37/37 37/37 (100%)
Client: Core 1/1 1/1 7/7 7/7 (100%)
Client: Auth 3/3 14/14 25/25 25/25 (100%)

Informational, not scored: server extension 0/10 @ 2026-07-28 (all tasks-*); client extension 3/6 per revision (auth/dpop, auth/dpop-nonce, auth/wif-jwt-bearer fail; auth/enterprise-managed-authorization, auth/client-credentials-jwt, auth/client-credentials-basic pass); every added-after-release and pending row passes.

Server Conformance Details

Pass rate: 100% (67/67 scored rows across both revisions; 47 unique scored scenarios; 83 rows including not-scored)

Revision 2025-11-25 (wire 2025-11-25, frozen 2025-11-25 requirement set)

Scored scenarios @ 2025-11-25 (30/30) and not-scored runs

Scored: 30/30 (100%), 70/70 checks. Not scored: 3 rows (3 pass, 0 fail).

Scenario Status Checks Spec versions Scored? Notes
tools-list PASS 3/3 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
tools-call-with-progress PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
tools-call-with-logging PASS 2/2 2025-06-18, 2025-11-25 Yes Scored against the frozen 2025-11-25 set
tools-call-simple-text PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
tools-call-sampling PASS 2/2 2025-06-18, 2025-11-25 Yes Scored against the frozen 2025-11-25 set
tools-call-mixed-content PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
tools-call-image PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
tools-call-error PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
tools-call-embedded-resource PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
tools-call-elicitation PASS 2/2 2025-06-18, 2025-11-25 Yes Scored against the frozen 2025-11-25 set
tools-call-audio PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
server-sse-polling PASS 3/3 2025-11-25 No (pending) Informational: pending requirement, not in the frozen 2025-11-25 set; passes
server-sse-multiple-streams PASS 2/2 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
server-session-lifecycle PASS 3/3 2025-03-26, 2025-06-18, 2025-11-25 No (added-after-release) Informational: added after the 2025-11-25 release, not in the frozen set; passes; deliberately not baselined (test/conformance/expected-failures.yaml:9-14)
server-initialize PASS 3/3 2025-06-18, 2025-11-25 Yes Scored against the frozen 2025-11-25 set
resources-unsubscribe PASS 2/2 2025-06-18, 2025-11-25 Yes Scored against the frozen 2025-11-25 set
resources-templates-read PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
resources-subscribe PASS 2/2 2025-06-18, 2025-11-25 Yes Scored against the frozen 2025-11-25 set
resources-read-text PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
resources-read-binary PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
resources-list PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
prompts-list PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
prompts-get-with-image PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
prompts-get-with-args PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
prompts-get-simple PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
prompts-get-embedded-resource PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
ping PASS 2/2 2025-06-18, 2025-11-25 Yes Scored against the frozen 2025-11-25 set
logging-set-level PASS 2/2 2025-06-18, 2025-11-25 Yes Scored against the frozen 2025-11-25 set
json-schema-2020-12 PASS 8/8 2025-11-25, 2026-07-28 No (pending) Informational: pending requirement, not in the frozen 2025-11-25 set; passes
elicitation-sep1330-enums PASS 6/6 2025-11-25 Yes Scored against the frozen 2025-11-25 set
elicitation-sep1034-defaults PASS 6/6 2025-11-25 Yes Scored against the frozen 2025-11-25 set
dns-rebinding-protection PASS 2/2 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
completion-complete PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set

Revision 2026-07-28 (wire 2026-07-28, frozen 2026-07-28 requirement set)

Scored scenarios @ 2026-07-28 (37/37) and not-scored runs

Scored: 37/37 (100%), 119/119 checks. Not scored: 13 rows (3 pass, 10 fail).

Scenario Status Checks Spec versions Scored? Notes
tools-list PASS 3/3 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
tools-call-with-progress PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
tools-call-simple-text PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
tools-call-mixed-content PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
tools-call-image PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
tools-call-error PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
tools-call-embedded-resource PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
tools-call-audio PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
tasks-wire-fields FAIL 1/4 extension No (extension) Informational: extension (SEP-2663 tasks, not implemented by the server SDK); in baseline (test/conformance/expected-failures.yaml:52)
tasks-status-notifications FAIL 0/0 extension No (extension) Informational: extension (SEP-2663 tasks, not implemented by the server SDK); 0/0 checks, referee SKIP; intentionally not baselined (test/conformance/expected-failures.yaml:45-49)
tasks-required-task-error FAIL 1/2 extension No (extension) Informational: extension (SEP-2663 tasks, not implemented by the server SDK); in baseline (test/conformance/expected-failures.yaml:57)
tasks-request-state-removal FAIL 1/2 extension No (extension) Informational: extension (SEP-2663 tasks, not implemented by the server SDK); in baseline (test/conformance/expected-failures.yaml:53)
tasks-request-headers FAIL 2/5 extension No (extension) Informational: extension (SEP-2663 tasks, not implemented by the server SDK); in baseline (test/conformance/expected-failures.yaml:55)
tasks-mrtr-input FAIL 1/4 extension No (extension) Informational: extension (SEP-2663 tasks, not implemented by the server SDK); in baseline (test/conformance/expected-failures.yaml:54)
tasks-mrtr-composition FAIL 1/2 extension No (extension) Informational: extension (SEP-2663 tasks, not implemented by the server SDK); in baseline (test/conformance/expected-failures.yaml:58)
tasks-lifecycle FAIL 1/9 extension No (extension) Informational: extension (SEP-2663 tasks, not implemented by the server SDK); in baseline (test/conformance/expected-failures.yaml:50)
tasks-dispatch-and-envelope FAIL 3/9 extension No (extension) Informational: extension (SEP-2663 tasks, not implemented by the server SDK); in baseline (test/conformance/expected-failures.yaml:56)
tasks-capability-negotiation FAIL 1/5 extension No (extension) Informational: extension (SEP-2663 tasks, not implemented by the server SDK); in baseline (test/conformance/expected-failures.yaml:51)
server-stateless PASS 30/30 2026-07-28 Yes Scored against the frozen 2026-07-28 set
server-sse-multiple-streams PASS 1/1 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
sep-2164-resource-not-found PASS 4/4 2026-07-28 Yes Scored against the frozen 2026-07-28 set
resources-templates-read PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
resources-read-text PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
resources-read-binary PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
resources-list PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
prompts-list PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
prompts-get-with-image PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
prompts-get-with-args PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
prompts-get-simple PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
prompts-get-embedded-resource PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
json-schema-2020-12 PASS 8/8 2025-11-25, 2026-07-28 No (pending) Informational: pending requirement, not in the frozen 2026-07-28 set; passes
input-required-result-validate-input PASS 3/3 2026-07-28 Yes Scored against the frozen 2026-07-28 set
input-required-result-unsupported-methods PASS 2/2 2026-07-28 Yes Scored against the frozen 2026-07-28 set
input-required-result-tampered-state PASS 2/2 2026-07-28 Yes Scored against the frozen 2026-07-28 set
input-required-result-result-type PASS 2/2 2026-07-28 Yes Scored against the frozen 2026-07-28 set
input-required-result-request-state PASS 3/3 2026-07-28 Yes Scored against the frozen 2026-07-28 set
input-required-result-non-tool-request PASS 3/3 2026-07-28 Yes Scored against the frozen 2026-07-28 set
input-required-result-multiple-input-requests PASS 3/3 2026-07-28 Yes Scored against the frozen 2026-07-28 set
input-required-result-multi-round PASS 4/4 2026-07-28 Yes Scored against the frozen 2026-07-28 set
input-required-result-missing-input-response PASS 2/2 2026-07-28 Yes Scored against the frozen 2026-07-28 set
input-required-result-ignore-extra-params PASS 2/2 2026-07-28 Yes Scored against the frozen 2026-07-28 set
input-required-result-capability-check PASS 2/2 2026-07-28 Yes Scored against the frozen 2026-07-28 set
input-required-result-basic-sampling PASS 3/3 2026-07-28 Yes Scored against the frozen 2026-07-28 set
input-required-result-basic-list-roots PASS 3/3 2026-07-28 Yes Scored against the frozen 2026-07-28 set
input-required-result-basic-elicitation PASS 3/3 2026-07-28 Yes Scored against the frozen 2026-07-28 set
http-header-validation PASS 14/14 2026-07-28 No (pending) Informational: pending requirement, not in the frozen 2026-07-28 set; passes
http-custom-header-server-validation PASS 10/10 2026-07-28 No (pending) Informational: pending requirement, not in the frozen 2026-07-28 set; passes
dns-rebinding-protection PASS 2/2 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
completion-complete PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
caching PASS 8/8 2026-07-28 Yes Scored against the frozen 2026-07-28 set

Client Conformance Details

Full suite pass rate: 100% (50/50 scored rows across both revisions; 35 unique scored scenarios; 64 rows including not-scored)

Suite breakdown: @ 2025-11-25 — Core 4/4 (100%), Auth 14/14 (100%); @ 2026-07-28 — Core 7/7 (100%), Auth 25/25 (100%). Category rule: auth/ prefix = Auth, everything else = Core.
Baseline: 3 known expected failures documented in test/conformance/expected-failures.yaml:38-40 (auth/dpop, auth/dpop-nonce, auth/wif-jwt-bearer — extension-tagged SEP-1932 DPoP / SEP-1933 WIF scenarios); the 2026-07-28 leg baseline test/conformance/expected-failures.2026-07-28.yaml:35 (client: []) is empty. All 6 not-scored client failures below (3 per revision) are exactly these baseline entries; there are no unexpected failures.

Core Scenarios

Core scenarios (11/11 scored runs)

Revision 2025-11-25

Scored: 4/4 (100%), 11/11 checks. Not scored: 1 (1 pass, 0 fail).

Scenario Status Checks Spec versions Scored? Notes
tools_call PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
sse-retry PASS 3/3 2025-11-25 Yes Scored against the frozen 2025-11-25 set
json-schema-2020-12-preservation PASS 9/9 2025-11-25, 2026-07-28 No (added-after-release) Informational: added after the 2025-11-25 release, not in the frozen set; passes; deliberately not baselined (test/conformance/expected-failures.yaml:9-12, expected-failures.2026-07-28.yaml:19-24)
initialize PASS 1/1 2025-06-18, 2025-11-25 Yes Scored against the frozen 2025-11-25 set
elicitation-sep1034-client-defaults PASS 5/5 2025-11-25 Yes Scored against the frozen 2025-11-25 set

Revision 2026-07-28

Scored: 7/7 (100%), 54/54 checks. Not scored: 1 (1 pass, 0 fail).

Scenario Status Checks Spec versions Scored? Notes
tools_call PASS 2/2 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
sep-2322-client-request-state PASS 5/5 2026-07-28 Yes Scored against the frozen 2026-07-28 set
request-metadata PASS 8/8 2026-07-28 Yes Scored against the frozen 2026-07-28 set
json-schema-ref-no-deref PASS 1/1 2026-07-28 Yes Scored against the frozen 2026-07-28 set
json-schema-2020-12-preservation PASS 9/9 2025-11-25, 2026-07-28 No (added-after-release) Informational: added after the 2026-07-28 release, not in the frozen set; passes; deliberately not baselined (test/conformance/expected-failures.yaml:9-12, expected-failures.2026-07-28.yaml:19-24)
http-standard-headers PASS 9/9 2026-07-28 Yes Scored against the frozen 2026-07-28 set
http-invalid-tool-headers PASS 11/11 2026-07-28 Yes Scored against the frozen 2026-07-28 set
http-custom-headers PASS 18/18 2026-07-28 Yes Scored against the frozen 2026-07-28 set

Auth Scenarios

Auth scenarios (39/39 scored runs) and not-scored runs

Revision 2025-11-25

Scored: 14/14 (100%), 216/216 checks. Not scored: 6 (3 pass, 3 fail).

Scenario Status Checks Spec versions Scored? Notes
auth/wif-jwt-bearer FAIL 0/1 extension No (extension) Informational: extension (SEP-1933 WIF, not implemented by the OAuth client); in baseline (test/conformance/expected-failures.yaml:40)
auth/token-endpoint-auth-post PASS 19/19 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
auth/token-endpoint-auth-none PASS 19/19 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
auth/token-endpoint-auth-basic PASS 19/19 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
auth/scope-step-up PASS 21/21 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
auth/scope-retry-limit PASS 10/10 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
auth/scope-omitted-when-undefined PASS 15/15 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
auth/scope-from-www-authenticate PASS 15/15 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
auth/scope-from-scopes-supported PASS 15/15 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
auth/pre-registration PASS 13/13 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
auth/metadata-var3 PASS 14/14 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
auth/metadata-var2 PASS 14/14 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
auth/metadata-var1 PASS 14/14 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
auth/metadata-default PASS 14/14 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set
auth/enterprise-managed-authorization PASS 8/8 extension No (extension) Informational: extension scenario, not scored; passes (not in baseline, none needed)
auth/dpop-nonce FAIL 0/5 extension No (extension) Informational: extension (SEP-1932 DPoP, not implemented by the OAuth client); in baseline (test/conformance/expected-failures.yaml:39)
auth/dpop FAIL 0/3 extension No (extension) Informational: extension (SEP-1932 DPoP, not implemented by the OAuth client); in baseline (test/conformance/expected-failures.yaml:38)
auth/client-credentials-jwt PASS 7/7 extension No (extension) Informational: extension scenario, not scored; passes (not in baseline, none needed)
auth/client-credentials-basic PASS 7/7 extension No (extension) Informational: extension scenario, not scored; passes (not in baseline, none needed)
auth/basic-cimd PASS 14/14 2025-11-25, 2026-07-28 Yes Scored against the frozen 2025-11-25 set

Revision 2026-07-28

Scored: 25/25 (100%), 322/322 checks. Not scored: 6 (3 pass, 3 fail).

Scenario Status Checks Spec versions Scored? Notes
auth/wif-jwt-bearer FAIL 0/1 extension No (extension) Informational: extension (SEP-1933 WIF, not implemented by the OAuth client); in baseline (test/conformance/expected-failures.yaml:40)
auth/token-endpoint-auth-post PASS 18/18 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
auth/token-endpoint-auth-none PASS 18/18 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
auth/token-endpoint-auth-basic PASS 18/18 2025-06-18, 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
auth/scope-step-up PASS 23/23 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
auth/scope-retry-limit PASS 11/11 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
auth/scope-omitted-when-undefined PASS 14/14 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
auth/scope-from-www-authenticate PASS 14/14 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
auth/scope-from-scopes-supported PASS 14/14 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
auth/resource-mismatch PASS 3/3 2026-07-28 Yes Scored against the frozen 2026-07-28 set
auth/pre-registration PASS 10/10 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
auth/offline-access-scope PASS 11/11 2026-07-28 Yes Scored against the frozen 2026-07-28 set
auth/offline-access-not-supported PASS 14/14 2026-07-28 Yes Scored against the frozen 2026-07-28 set
auth/metadata-var3 PASS 13/13 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
auth/metadata-var2 PASS 13/13 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
auth/metadata-var1 PASS 13/13 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
auth/metadata-issuer-mismatch PASS 3/3 2026-07-28 Yes Scored against the frozen 2026-07-28 set
auth/metadata-default PASS 13/13 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
auth/iss-wrong-issuer PASS 8/8 2026-07-28 Yes Scored against the frozen 2026-07-28 set
auth/iss-unexpected PASS 8/8 2026-07-28 Yes Scored against the frozen 2026-07-28 set
auth/iss-supported-missing PASS 8/8 2026-07-28 Yes Scored against the frozen 2026-07-28 set
auth/iss-supported PASS 14/14 2026-07-28 Yes Scored against the frozen 2026-07-28 set
auth/iss-not-advertised PASS 14/14 2026-07-28 Yes Scored against the frozen 2026-07-28 set
auth/iss-normalized PASS 8/8 2026-07-28 Yes Scored against the frozen 2026-07-28 set
auth/enterprise-managed-authorization PASS 6/6 extension No (extension) Informational: extension scenario, not scored; passes (not in baseline, none needed)
auth/dpop-nonce FAIL 0/5 extension No (extension) Informational: extension (SEP-1932 DPoP, not implemented by the OAuth client); in baseline (test/conformance/expected-failures.yaml:39)
auth/dpop FAIL 0/3 extension No (extension) Informational: extension (SEP-1932 DPoP, not implemented by the OAuth client); in baseline (test/conformance/expected-failures.yaml:38)
auth/client-credentials-jwt PASS 5/5 extension No (extension) Informational: extension scenario, not scored; passes (not in baseline, none needed)
auth/client-credentials-basic PASS 5/5 extension No (extension) Informational: extension scenario, not scored; passes (not in baseline, none needed)
auth/basic-cimd PASS 12/12 2025-11-25, 2026-07-28 Yes Scored against the frozen 2026-07-28 set
auth/authorization-server-migration PASS 27/27 2026-07-28 Yes Scored against the frozen 2026-07-28 set


Issue Triage Details

Analysis period: Last 289 issues (checks.triage.total_issues)
Labels: 12/12 present — bug, enhancement, question, needs confirmation, needs repro, ready for work, good first issue, help wanted, P0, P1, P2, P3; missing: none (checks.labels.missing = [], uses_issue_types: false)

Metric Value T1 Req T2 Req Verdict
Compliance rate 100% (289/289) >= 90% >= 80% PASS
Exceeding SLA 0 -- -- --
Median time to triage 0h -- -- --
p95 time to triage 0h -- -- --
Open P0s 0 0 0 PASS
Closed P0s within 7d 2/2 all -- PASS
Closed P0s within 14d 2/2 -- all PASS

No open P0s (checks.p0_resolution.open_p0_details = []).


Documentation Coverage

48/48 non-experimental features documented with examples (36/36 core), on the v2 guide site ts.sdk.modelcontextprotocol.io/v2/ (source: docs/; every code fence is synced from an executed example under examples/guides/) plus examples/. Experimental Tasks (SEP-2663) are not implemented in v2 and are excluded.

Feature coverage table (48/48)
# Feature Documented? Where Has Examples? Verdict
1 Tools - listing Yes docs/servers/tools.md:10-53; docs/clients/calling.md:8-29; docs/advanced/low-level-server.md:9-43 Yes (4 examples) PASS
2 Tools - calling Yes docs/servers/tools.md:55-68; docs/clients/calling.md:8-29; docs/get-started/first-client.md:61-86 Yes (4 examples) PASS
3 Tools - text results Yes docs/servers/tools.md:14-68 (content: [{ type: 'text' }]), 216-223 recap Yes (3 examples) PASS
4 Tools - image results Yes docs/servers/tools.md:132-193 (image block, base64 + mimeType) Yes (1 example + quoted output) PASS
5 Tools - audio results Yes docs/servers/tools.md:132-193 (audio block) Yes (1 example + quoted output) PASS
6 Tools - embedded resources Yes docs/servers/tools.md:132-193 (resource block, "arrives without a resources/read round trip") Yes (1 example + quoted output) PASS
7 Tools - error handling Yes docs/servers/errors.md:6-209 (isError vs ProtocolError, typed subclasses, code table); docs/servers/tools.md:70-93 Yes (7 examples) PASS
8 Tools - change notifications Yes docs/servers/notifications.md:8-60 (sendToolListChanged, handle auto-notify), 62-70 (capability), 72-83 (handler.notify.toolsChanged) Yes (4 examples) PASS
9 Resources - listing Yes docs/servers/resources.md:127-170; docs/clients/calling.md:78-101 Yes (3 examples) PASS
10 Resources - reading text Yes docs/servers/resources.md:9-87; docs/clients/calling.md:78-101; docs/get-started/first-client.md:87-129 Yes (4 examples) PASS
11 Resources - reading binary Yes docs/servers/resources.md:38-87 (blob base64 item, mimeType per item) Yes (1 example + quoted output) PASS
12 Resources - templates Yes docs/servers/resources.md:89-170 (ResourceTemplate, list callback, resources/templates/list); docs/clients/calling.md:101 Yes (3 examples) PASS
13 Resources - template reading Yes docs/servers/resources.md:108-125 (matched variables as second arg), 172-203 (path sanitisation) Yes (3 examples) PASS
14 Resources - subscribing Yes docs/servers/resources.md:215-258 (capability, per-connection bookkeeping, sendResourceUpdated); docs/clients/subscriptions.md:113-129 Yes (2 examples) PASS
15 Resources - unsubscribing Yes docs/servers/resources.md:237-240 (resources/unsubscribe handler); docs/clients/subscriptions.md:117-125 (unsubscribeResource) Yes (2 examples) PASS
16 Resources - change notifications Yes docs/servers/resources.md:205-213; docs/servers/notifications.md:37, 60, 72-83 (notify.resourceUpdated/resourcesChanged) Yes (3 examples) PASS
17 Prompts - listing Yes docs/servers/prompts.md:38-42; docs/clients/calling.md:103-128 Yes (2 examples) PASS
18 Prompts - getting simple Yes docs/servers/prompts.md:48-64; docs/clients/calling.md:103-128 Yes (2 examples) PASS
19 Prompts - getting with arguments Yes docs/servers/prompts.md:8-89 (argsSchema, validation, -32602 on missing arg) Yes (3 examples) PASS
20 Prompts - embedded resources Yes docs/servers/prompts.md:160-211 (type: 'resource' message) Yes (1 example + quoted output) PASS
21 Prompts - image content Yes docs/servers/prompts.md:119-158 (image block; audio same shape) Yes (1 example + quoted output) PASS
22 Prompts - change notifications Yes docs/servers/notifications.md:37 (sendPromptListChanged), 43-60 (registration-handle auto-notify, registerPrompt named), 83 (notify.promptsChanged); docs/clients/subscriptions.md:32 (promptsListChanged filter) Yes (1 example: handle-mutation block at notifications.md:43-58 is the tools sibling; prompt method is inline) PASS
23 Sampling - creating messages Yes docs/servers/sampling.md:16-72 (requestSampling, result shape, capability gate); docs/clients/server-requests.md:192-219 Yes (2 examples + quoted output) PASS
24 Elicitation - form mode Yes docs/servers/elicitation.md:8-124; docs/clients/server-requests.md:167-190 Yes (5 examples) PASS
25 Elicitation - URL mode Yes docs/servers/elicitation.md:165-195 (mode: 'url', url, elicitationId, secrets stay in browser); docs/clients/server-requests.md:169-180 Yes (2 examples + quoted output) PASS
26 Elicitation - schema validation Yes docs/servers/elicitation.md:45 ("SDK validates accepted content against requestedSchema"), 120; docs/advanced/schema-libraries.md:126-156 (swap the elicitation validator) Yes (2 examples) PASS
27 Elicitation - default values Yes docs/servers/elicitation.md:126-163 (default, applyDefaults client flag) Yes (1 example + quoted output) PASS
28 Elicitation - enum values Yes docs/servers/elicitation.md:126-159 (enum: ['pdf','csv'] field, "submits the prefilled pdf or picks csv"); examples/elicitation/README.md:11-12 (enumNames) Yes (2 examples) PASS
29 Elicitation - complete notification Yes docs/servers/elicitation.md:197-288 ("Signal that the URL flow finished": createElicitationCompletionNotifier, relatedRequestId, timeout/signal, client setNotificationHandler('notifications/elicitation/complete'), era note); recap :317 Yes (3 synced examples: createElicitationCompletionNotifier_connectCalendar, setNotificationHandler_elicitationComplete, callTool_connectCalendar_timeout + quoted output) PASS
30 Roots - listing Yes docs/clients/roots.md:96-136 (capability, roots/list handler, advisory semantics) Yes (2 examples + quoted output) PASS
31 Roots - change notifications Yes docs/clients/roots.md:138-158 (sendRootsListChanged, requires listChanged: true) Yes (1 example + quoted output) PASS
32 Logging - sending log messages Yes docs/servers/logging-progress-cancellation.md:74-120 (capability, ctx.mcpReq.log, client handler) Yes (3 examples + quoted output) PASS
33 Logging - setting level Yes docs/servers/logging-progress-cancellation.md:122-142 ("Let the client set the level": logging/setLevel installed by capability, client.setLoggingLevel('warning'), filtered output, 2026 per-request era note); recap :225 Yes (1 synced example setLoggingLevel_warning + quoted output) PASS
34 Completions - resource argument Yes docs/servers/completion.md:357-380 (template complete map, ref/resource request shape) Yes (1 example) PASS
35 Completions - prompt argument Yes docs/servers/completion.md:254-355, 382-402; docs/servers/prompts.md:213-237; docs/clients/calling.md:130-146 Yes (5 examples + quoted output) PASS
36 Ping Yes docs/clients/calling.md:172-189 (client.ping, auto-answered both sides, timeout, era note) Yes (1 example + quoted output) PASS
37 Streamable HTTP transport (client) Yes docs/clients/connect.md:8-26, 101-110 (StreamableHTTPClientTransport, terminateSession); docs/get-started/first-client.md:9-40 Yes (3 examples) PASS
38 Streamable HTTP transport (server) Yes docs/serving/http.md:1-135 (createMcpHandler, factory, mount, Host/Origin, responseMode); docs/serving/{express,fastify,hono,web-standard}.md Yes (6+ examples) PASS
39 SSE transport - legacy (client) Yes docs/clients/connect.md:46-66 (SSEClientTransport fallback); docs/serving/legacy-clients.md:94; examples/README.md:177-180 Yes (1 synced example connect_sseFallback) PASS
40 SSE transport - legacy (server) Yes docs/serving/legacy-clients.md:90-127 ("Know where SSE went": SSEServerTransport from @modelcontextprotocol/server-legacy/sse on GET /sse + POST /messages); packages/server-legacy/README.md:1-39 Yes (1 synced example SSEServerTransport_express) PASS
41 stdio transport (client) Yes docs/clients/connect.md:28-44 (StdioClientTransport, close order); docs/testing.md:116-126 Yes (2 examples) PASS
42 stdio transport (server) Yes docs/serving/stdio.md:1-214 (serveStdio, stderr rule, Inspector, shutdown); docs/get-started/first-server.md:83-113; README.md:106-140 Yes (5 examples) PASS
43 Progress notifications Yes docs/servers/logging-progress-cancellation.md:8-72 (progressToken, notify, onprogress); docs/clients/calling.md:148-170 (resetTimeoutOnProgress, maxTotalTimeout) Yes (4 examples + quoted output) PASS
44 Cancellation Yes docs/servers/logging-progress-cancellation.md:144-218 (ctx.mcpReq.signal, AbortController on client, signal forwarding to fetch) Yes (3 examples + quoted output) PASS
45 Pagination Yes docs/clients/calling.md:31-53 (aggregate walk of nextCursor, explicit { cursor }, listMaxPages, LIST_PAGINATION_EXCEEDED); docs/migration/upgrade-to-v2.md:1603-1611 Yes (1 synced example listTools_onePage + quoted output; the backing calling.examples.ts:130-132 also shows the server returning nextCursor, outside a synced region) PASS
46 Capability negotiation Yes docs/clients/connect.md:68-99 (getServerCapabilities, "only ask for what the server advertised"); docs/clients/server-requests.md:6-30 (client capabilities, both-sides enforcement); docs/servers/notifications.md:62-70; docs/servers/sampling.md:56-72 (enforceStrictCapabilities); docs/advanced/low-level-server.md:9-43; docs/advanced/custom-methods.md:93-125 (capabilities.extensions) Yes (6 examples) PASS
47 Protocol version negotiation Yes docs/protocol-versions.md:1-193 (versionNegotiation auto/legacy/pin, probe, supportedProtocolVersions, era matrix); docs/serving/legacy-clients.md:8-84; docs/troubleshooting.md:68-149; examples/custom-version/README.md Yes (7 examples + quoted output) PASS
48 JSON Schema 2020-12 support Yes docs/migration/upgrade-to-v2.md:1454-1494 ("JSON Schema 2020-12 posture (SEP-1613, SEP-2106)": $schema-dispatched validator, Ajv2020 default, SEP-2106 non-object roots, mechanical-fix table), 695-711; docs/advanced/schema-libraries.md:65-156 (fromJsonSchema, validator swap); docs/serving/{express,fastify,hono,web-standard}.md quoted wire output with "$schema":"https://json-schema.org/draft/2020-12/schema" Yes (5 examples: fix-table snippets, registerTool_fromJsonSchema, jsonSchemaValidator_ajv, jsonSchemaValidator_cfWorker, wire transcripts; plus examples/schema-validators/) PASS

Policy Evaluation

Policy Area Tier 1 Tier 2 Evidence
Dependency Update Policy PASS PASS DEPENDENCY_POLICY.md — trigger-only updates (security, dependency bug, needed feature, Node support, spec revision), no scheduled npm bumps, caret ranges via pnpm catalogs, 7-day minimumReleaseAge; .github/dependabot.yml (weekly Actions updates) with repo-level GitHub security updates for npm
Roadmap PASS PASS ROADMAP.md — per-revision spec boards (2026-07-28, 2025-11-25), v2 hardening, next-revision commitment, issue-linked extension items, v1.x maintenance window
Versioning Policy PASS N/A VERSIONING.md — SemVer 2.0.0 per package, changesets fixed group, enumerated breaking / non-breaking changes, @deprecated for ≥1 minor before removal, migration guides + codemod, breaking change PR label

Changes Since the Tier 1 Assessment (#2271)

Area #2271 (2026-02-18, v1.27.0 on v1.x) This assessment
Release line @modelcontextprotocol/sdk 1.x v2 monorepo: @modelcontextprotocol/{core,client,server,server-legacy,node,express,hono,fastify,codemod} 2.0.0 (GA 2026-07-27); v1.x continues at 1.30.0 with bug/security fixes
Spec revisions 2025-06-18 + 2025-11-25 (moving suite) 2025-11-25 (stateful wire) + 2026-07-28 (stateless wire), frozen requirement sets, each at its own wire (0.2.0-alpha.11)
Conformance 30/30 server, 20/20 client 67/67 server, 50/50 client (both revisions)
2026-07-28 features SEP-2575 stateless lifecycle, input-required results (SEP-2322 request state), SEP-2243 header-mirrored params, SEP-2164, caching, subscriptions/listen, the 2026 auth bundle (issuer identification, offline access, AS migration, metadata issuer mismatch)
Spec tracking same-day (v1.23.0 for 2025-11-25) v2.0.0 published 2026-07-27T23:55Z, before the 2026-07-28 spec tag
Docs docs/*.md on v1.x, 48/48 VitePress site ts.sdk.modelcontextprotocol.io/v2/ with CI-executed examples, 48/48 (typescript-sdk#2679, #2686)
Governance docs root files on v1.x (#1547) same three files on main (typescript-sdk#2680)
Security 3 published GHSAs, all fixed before #2271 no new published advisories since #2271

cc @pcarleton @localden — since I lead the SDK WG, could one of you be the approving reviewer, as with #2271/#2307?


Reproduce This Assessment

# Conformance repo at 0.2.0-alpha.11 + #458
git clone https://github.com/modelcontextprotocol/conformance.git
cd conformance
git checkout 74edef3
npm install
npm run build

# GitHub API access for repo-health checks
gh auth login
export GITHUB_TOKEN=$(gh auth token)

# tier-check builds the SDK (pnpm install && pnpm run build:all) and starts the
# everything server per the typescript-sdk entry in src/sdk-runner/known-sdks.ts.
node dist/index.js tier-check \
  --sdk-path /path/to/typescript-sdk \
  --requirements 2025-11-25,2026-07-28 \
  --output markdown

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


    Back | FazBrowse Home | New Git URL