Skip to content

[C# SDK Tier Audit] 2026-04-05 - Tier 1 #20

@github-actions

Description

@github-actions

Executive Summary

  • Tier 1 — all requirements met; the C# MCP SDK achieves the highest tier classification
  • Server conformance: 100% (30/30 scenarios passing across both 2025-06-18 and 2025-11-25 spec versions)
  • Client conformance: 100% of date-versioned scenarios (23/23); 3 extension-spec scenarios fail but are informational only (not counted toward tier)
  • Issue triage: 100% compliance rate across 113 issues, median triage time 0 hours
  • P0 status: 0 open P0 issues; no P0 SLA violations
  • Stable release: v1.2.0 (non-prerelease, >= 1.0.0)
  • Spec tracking: 0-day gap between latest spec release (2025-11-25) and SDK release
  • Documentation coverage: 48/48 non-experimental features documented with prose and code examples
  • No blockers for Tier 1; SDK is fully compliant on all 8 requirements

MCP SDK Tier Audit: modelcontextprotocol/csharp-sdk

Date: 2026-04-05
Branch: main
Auditor: mcp-sdk-tier-audit skill (automated + subagent evaluation)

Tier Assessment: Tier 1

All deterministic checks pass at Tier 1 thresholds, and the AI-assisted evaluation confirms comprehensive documentation (48/48 features with examples), a published dependency update policy, a published roadmap tracking spec implementation, and a detailed versioning/breaking-change policy.

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% (23/23 date-versioned) PASS PASS 3 extension-spec scenarios fail (not counted toward tier)
2 Issue Triage >= 90% within 2 biz days >= 80% within 1 month 100% (113/113) 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 P0s PASS PASS None
4 Stable Release Required + clear versioning At least one stable release 1.2.0 PASS PASS None
4b Spec Tracking Timeline agreed per release Within 6 months 0d gap (PASS) PASS PASS None
5 Documentation Comprehensive w/ examples Basic docs for core features 48/48 features PASS PASS None
6 Dependency Policy Published update policy Published update policy Found (.github/dependabot.yml) PASS PASS None
7 Roadmap Published roadmap Plan toward Tier 1 Found (docs/roadmap.md) PASS PASS None
8 Versioning Policy Documented breaking change policy N/A Found (docs/versioning.md) 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)

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

Client Conformance Details

Full suite pass rate: 88.5% (23/26 total); 100% for date-versioned scenarios (23/23)

Suite breakdown: Core: 4/4 (100%), Auth date-versioned: 19/19 (100%), Auth extension: 0/3 (0% — informational only, not counted toward tier scoring)
Baseline: 3 known failures in extension spec scenarios. These scenarios are not counted in the tier pass rate per SEP-1730 scoring rules.

Core Scenarios

Scenario Status Checks
tools_call PASS 1/1
sse-retry PASS 2/2
initialize PASS 1/1
elicitation-sep1034-client-defaults PASS 5/5

Auth Scenarios

Scenario Status Checks Notes
auth/token-endpoint-auth-post PASS 16/16
auth/token-endpoint-auth-none PASS 16/16
auth/token-endpoint-auth-basic PASS 16/16
auth/scope-step-up PASS 22/22
auth/scope-retry-limit PASS 10/10
auth/scope-omitted-when-undefined PASS 12/12
auth/scope-from-www-authenticate PASS 12/12
auth/scope-from-scopes-supported PASS 12/12
auth/resource-mismatch PASS 2/2 draft spec
auth/pre-registration PASS 11/11
auth/offline-access-scope PASS 10/10 draft spec
auth/offline-access-not-supported PASS 12/12 draft spec
auth/metadata-var3 PASS 11/11
auth/metadata-var2 PASS 11/11
auth/metadata-var1 PASS 11/11
auth/metadata-default PASS 11/11
auth/cross-app-access-complete-flow FAIL 8/10 extension spec — not counted toward tier
auth/client-credentials-jwt FAIL 8/10 extension spec — not counted toward tier
auth/client-credentials-basic FAIL 8/10 extension spec — not counted toward tier
auth/basic-cimd PASS 11/11
auth/2025-03-26-oauth-metadata-backcompat PASS 10/10
auth/2025-03-26-oauth-endpoint-fallback PASS 5/5

Issue Triage Details

Analysis period: 113 issues
Labels: All 12 required labels 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
Median triage time 0h -- -- Excellent

Documentation Coverage

Documentation Coverage Assessment

SDK path: /tmp/csharp-sdk
Documentation locations found:

  • README.md: Overview, quick-start, feature list
  • docs/concepts/tools/tools.md: Full tool documentation with examples
  • docs/concepts/resources/resources.md: Full resource documentation with examples
  • docs/concepts/prompts/prompts.md: Full prompt documentation with examples
  • docs/concepts/sampling/sampling.md: Sampling documentation with examples
  • docs/concepts/elicitation/elicitation.md: Elicitation documentation with examples
  • docs/concepts/roots/roots.md: Roots documentation with examples
  • docs/concepts/logging/logging.md: Logging documentation with examples
  • docs/concepts/completions/completions.md: Completions documentation with examples
  • docs/concepts/progress/progress.md: Progress documentation with examples
  • docs/concepts/cancellation/cancellation.md: Cancellation documentation with examples
  • docs/concepts/pagination/pagination.md: Pagination documentation with examples
  • docs/concepts/capabilities/capabilities.md: Capabilities and protocol version negotiation with examples
  • docs/concepts/ping/ping.md: Ping documentation with examples
  • docs/concepts/transports/transports.md: All transport types documented with examples
  • docs/concepts/getting-started.md: Getting started guide with code examples
  • samples/: Multiple sample projects demonstrating end-to-end usage
  • docs/concepts/elicitation/samples/: Runnable sample projects for elicitation

Feature Documentation Table

# Feature Documented? Where Has Examples? Verdict
1 Tools - listing Yes docs/concepts/tools/tools.md Yes (2+ examples) PASS
2 Tools - calling Yes docs/concepts/tools/tools.md Yes (2+ examples) PASS
3 Tools - text results Yes docs/concepts/tools/tools.md:Text content section Yes (2 examples) PASS
4 Tools - image results Yes docs/concepts/tools/tools.md:Image content section Yes (1 example) PASS
5 Tools - audio results Yes docs/concepts/tools/tools.md:Audio content section Yes (1 example) PASS
6 Tools - embedded resources Yes docs/concepts/tools/tools.md:Embedded resources section Yes (2 examples) PASS
7 Tools - error handling Yes docs/concepts/tools/tools.md:Error handling section Yes (3 examples) PASS
8 Tools - change notifications Yes docs/concepts/tools/tools.md:Tool list change notifications Yes (2 examples) PASS
9 Resources - listing Yes docs/concepts/resources/resources.md Yes (1 example) PASS
10 Resources - reading text Yes docs/concepts/resources/resources.md:Reading text resources Yes (1 example) PASS
11 Resources - reading binary Yes docs/concepts/resources/resources.md:Reading binary resources Yes (1 example) PASS
12 Resources - templates Yes docs/concepts/resources/resources.md:Template resources section Yes (1 example) PASS
13 Resources - template reading Yes docs/concepts/resources/resources.md:Reading a template resource Yes (1 example) PASS
14 Resources - subscribing Yes docs/concepts/resources/resources.md:Resource subscriptions Yes (2 examples) PASS
15 Resources - unsubscribing Yes docs/concepts/resources/resources.md:Resource subscriptions Yes (1 example) PASS
16 Resources - change notifications Yes docs/concepts/resources/resources.md:Resource list change notifications Yes (2 examples) PASS
17 Prompts - listing Yes docs/concepts/prompts/prompts.md:Listing prompts Yes (1 example) PASS
18 Prompts - getting simple Yes docs/concepts/prompts/prompts.md:Simple prompts Yes (1 example) PASS
19 Prompts - getting with arguments Yes docs/concepts/prompts/prompts.md:Prompts with arguments Yes (1 example) PASS
20 Prompts - embedded resources Yes docs/concepts/prompts/prompts.md:Embedded resources Yes (2 examples) PASS
21 Prompts - image content Yes docs/concepts/prompts/prompts.md:Image content Yes (1 example) PASS
22 Prompts - change notifications Yes docs/concepts/prompts/prompts.md:Prompt list change notifications Yes (2 examples) PASS
23 Sampling - creating messages Yes docs/concepts/sampling/sampling.md Yes (4 examples) PASS
24 Elicitation - form mode Yes docs/concepts/elicitation/elicitation.md:Form Mode Elicitation Yes (2+ examples) PASS
25 Elicitation - URL mode Yes docs/concepts/elicitation/elicitation.md:URL Mode Elicitation Yes (2 examples) PASS
26 Elicitation - schema validation Yes docs/concepts/elicitation/elicitation.md:Enum schema formats Yes (2 examples) PASS
27 Elicitation - default values Yes docs/concepts/elicitation/elicitation.md:Default values Yes (1 example) PASS
28 Elicitation - enum values Yes docs/concepts/elicitation/elicitation.md:Enum schema formats Yes (2 examples) PASS
29 Elicitation - complete notification Yes docs/concepts/elicitation/elicitation.md:Listening for Elicitation Completion Notifications Yes (1 example) PASS
30 Roots - listing Yes docs/concepts/roots/roots.md Yes (2 examples) PASS
31 Roots - change notifications Yes docs/concepts/roots/roots.md:Roots change notifications Yes (2 examples) PASS
32 Logging - sending log messages Yes docs/concepts/logging/logging.md Yes (code snippet via !code-csharp include) PASS
33 Logging - setting level Yes docs/concepts/logging/logging.md:Client support for logging Yes (code snippet via !code-csharp include) PASS
34 Completions - resource argument Yes docs/concepts/completions/completions.md Yes (1 example) PASS
35 Completions - prompt argument Yes docs/concepts/completions/completions.md Yes (1 example) PASS
36 Ping Yes docs/concepts/ping/ping.md Yes (1 example) PASS
37 Streamable HTTP transport (client) Yes docs/concepts/transports/transports.md:Streamable HTTP client Yes (3 examples) PASS
38 Streamable HTTP transport (server) Yes docs/concepts/transports/transports.md:Streamable HTTP server Yes (2 examples) PASS
39 SSE transport - legacy (client) Yes docs/concepts/transports/transports.md:SSE client Yes (1 example) PASS
40 SSE transport - legacy (server) Yes docs/concepts/transports/transports.md:SSE server Yes (1 example) PASS
41 stdio transport (client) Yes docs/concepts/transports/transports.md:stdio client Yes (1 example) PASS
42 stdio transport (server) Yes docs/concepts/transports/transports.md:stdio server Yes (1 example) PASS
43 Progress notifications Yes docs/concepts/progress/progress.md Yes (2 examples via !code-csharp include) PASS
44 Cancellation Yes docs/concepts/cancellation/cancellation.md Yes (2 examples) PASS
45 Pagination Yes docs/concepts/pagination/pagination.md Yes (2 examples) PASS
46 Capability negotiation Yes docs/concepts/capabilities/capabilities.md Yes (2 examples) PASS
47 Protocol version negotiation Yes docs/concepts/capabilities/capabilities.md:Protocol version negotiation section Yes (1 example) PASS
48 JSON Schema 2020-12 support Yes docs/concepts/tools/tools.md:JSON Schema generation section Yes (1 example + table) PASS
Tasks - get (experimental) Yes docs/concepts/tasks/tasks.md Yes INFO
Tasks - result (experimental) Yes docs/concepts/tasks/tasks.md Yes INFO
Tasks - cancel (experimental) Yes docs/concepts/tasks/tasks.md Yes INFO
Tasks - list (experimental) Yes docs/concepts/tasks/tasks.md Yes INFO
Tasks - status notifications (experimental) Yes docs/concepts/tasks/tasks.md Yes INFO

Summary

Total non-experimental features: 48
PASS (documented with examples): 48/48
PARTIAL (documented, no examples): 0/48
FAIL (not documented): 0/48

Core features documented: 36/36 (100%)
All features documented with examples: 48/48 (100%)

Tier Verdicts

Tier 1 (all non-experimental features documented with examples): PASS

Tier 2 (basic docs covering core features): PASS


Policy Evaluation

Policy Evaluation Assessment

SDK path: /tmp/csharp-sdk
Repository: modelcontextprotocol/csharp-sdk


1. Dependency Update Policy: PASS

File Exists (CLI) Content Verdict
DEPENDENCY_POLICY.md No N/A
docs/dependency-policy.md No N/A
.github/dependabot.yml Yes Configured (nuget + github-actions, weekly schedule, grouped PRs, explicit ignore rules)
.github/renovate.json No N/A

Verdict: PASS — A well-configured .github/dependabot.yml with weekly NuGet and GitHub Actions update schedules, PR grouping, and explicit dependency ignore rules constitutes a published dependency update policy.


2. Roadmap: PASS

File Exists (CLI) Content Verdict
ROADMAP.md No N/A
docs/roadmap.md Yes Substantive

Content summary: docs/roadmap.md includes:

  • "Spec Implementation Tracking" section with links to dedicated GitHub project boards per spec revision (e.g., the 2025-11-25 spec revision board), providing concrete spec component tracking
  • "Current Focus Areas" section covering next spec revision work and experimental Tasks support
  • "Milestones" section linking to GitHub milestones for upcoming version planning

Verdict:

  • Tier 1: PASS — Published roadmap with spec tracking via project boards; concrete work items tracked on per-revision GitHub project boards
  • Tier 2: PASS — Published plan toward Tier 1 with current focus areas and milestones

3. Versioning Policy: PASS

File Exists (CLI) Content Verdict
VERSIONING.md No N/A
docs/versioning.md Yes Substantive
BREAKING_CHANGES.md No N/A
CONTRIBUTING.md (versioning section) N/A Not checked (dedicated versioning.md found)

Content summary: docs/versioning.md includes:

  • Full SemVer 2.0.0 versioning policy (MAJOR/MINOR/PATCH rules)
  • "Supported versions" section with explicit support timelines
  • "Experimental APIs" section with [Experimental] attribute policy and MCP-prefixed diagnostic codes
  • "Breaking changes" section with what constitutes a breaking change, MAJOR version requirement, and communication policy
  • "Obsolete APIs" section with [Obsolete] attribute lifecycle for API deprecation
  • Spec schema change guidance with forward/backward compatibility prototypes

Verdict:

  • Tier 1: PASS — Comprehensive documented breaking change policy covering what constitutes a break, how breaking changes are communicated, the SemVer versioning scheme, and API deprecation lifecycle
  • Tier 2: N/A — Only requires stable release

Overall Policy Summary

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

Remediation Guide: modelcontextprotocol/csharp-sdk

Date: 2026-04-05
Current Tier: 1

Path to Tier 2

Not applicable — SDK is already at Tier 1.

Path to Tier 1

No blockers. The SDK meets all Tier 1 requirements:

# Requirement Status
1a Server Conformance 100% ✅ 30/30 (100%)
1b Client Conformance 100% (date-versioned) ✅ 23/23 (100%)
2 Issue Triage within 2 business days ✅ 100% compliance (113/113)
2b All 12 required labels present ✅ 12/12
3 No open P0s ✅ 0 open P0s
4 Stable release >= 1.0.0 with clear versioning ✅ 1.2.0
4b Spec tracking within agreed timeline ✅ 0-day gap
5 All 48 features documented with examples ✅ 48/48 (100%)
6 Dependency update policy published ✅ .github/dependabot.yml
7 Roadmap published with spec tracking ✅ docs/roadmap.md
8 Breaking change policy documented ✅ docs/versioning.md

Informational: Extension Spec Failures

Three client conformance scenarios targeting extension spec versions currently fail. These are not counted toward tier scoring (only date-versioned scenarios count) but are noted here as informational:

Scenario Checks Failed Spec
auth/cross-app-access-complete-flow 2/10 extension
auth/client-credentials-jwt 2/10 extension
auth/client-credentials-basic 2/10 extension

If the extension scenarios are promoted to dated spec versions in a future release, these would become tier-relevant. Addressing them proactively is recommended.

# Action Requirement Effort Where
1 Investigate and fix client-credentials (basic and JWT) and cross-app-access auth flows Client conformance for extension scenarios Medium tests/ModelContextProtocol.ConformanceClient; src/ModelContextProtocol.Core/Client/

Recommended Next Steps

  1. Monitor extension spec promotion — Track whether the three failing extension auth scenarios get promoted to dated spec versions in upcoming MCP spec releases; address them before they become tier-relevant.
  2. Continue spec tracking cadence — The current 0-day gap between spec release and SDK release is excellent; maintain this responsiveness for future spec revisions.
  3. Maintain documentation quality — All 48 features have prose documentation with examples; continue updating docs when new features are added or existing ones evolve.

Generated by SDK Tier Audit · ● 1.8M ·

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions