-
Notifications
You must be signed in to change notification settings - Fork 1.5k
SEP-1730: SDK tiers definition #1777
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
39 commits
Select commit
Hold shift + click to select a range
f90f282
add SDK tiers definition
ihrpr fdc8373
format
ihrpr cdfba19
Merge branch 'main' into ihrpr/sdk-tiers
cliffhall d6c3361
Merge branch 'main' into ihrpr/sdk-tiers
localden 1d91cad
Merge branch 'main' into ihrpr/sdk-tiers
localden 5876d2f
add labeling guidance
ihrpr 7c4bd99
address comments
ihrpr 554a37a
add a link for conformance testing
ihrpr 07c7618
Merge branch 'ihrpr/sdk-tiers' of https://github.com/modelcontextprot…
ihrpr f1dd4b7
add a note when it will take place
ihrpr 636fb38
fix ci
ihrpr 735007c
Merge branch 'main' into ihrpr/sdk-tiers
ihrpr 4db1955
add note on dates for Conformance testing and SDK tiering release
ihrpr e0a9fa6
format
ihrpr bad077c
Merge branch 'main' into ihrpr/sdk-tiers
cliffhall 2d3e6b5
compliance -> conformance
ihrpr 4d21b75
suggested fixes
ihrpr 427edf7
clarify dates
ihrpr 9316f02
clarify tiriage
ihrpr a8ef088
tier advancement clarificatoin
ihrpr df62857
format
ihrpr ce09185
Address review comments and shift dates by 1 week
felixweinberger 82f29eb
Format with prettier
felixweinberger f8c57c5
Merge branch 'main' into ihrpr/sdk-tiers
felixweinberger 585e9d7
fix: update tiering dates to Jan 23 / Feb 23
felixweinberger aac3aa4
Merge branch 'main' into ihrpr/sdk-tiers
felixweinberger 23722d7
Feedback updates
localden 0ccf6d4
Priority clarification.
localden 3be1640
Clarification.
localden aca7713
Add reference to GitHub's native issue types
localden c9999b5
Update CLAUDE.md with commit guidelines.
localden b7130d2
Update labeling note.
localden 5528b7d
Clarification on labels
localden 23ada50
Update w/ tiering feedback
localden 60be48f
Prettier fix.
localden 928230f
Update w/versioning requirements
localden 53b9f05
Merge branch 'main' into ihrpr/sdk-tiers
localden f01d26a
Update framing
localden bbad2ca
Clarification.
localden File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,141 @@ | ||
| --- | ||
| title: SDK Tiering System | ||
| description: Feature completeness, protocol support, and maintenance commitment levels for Model Context Protocol SDKs | ||
| --- | ||
|
|
||
| The MCP SDK Tiering System establishes clear expectations for feature completeness, protocol support, and maintenance commitments across official and community-driven SDKs. This helps developers choose the right SDK for their needs and provides SDK maintainers with a clear path to improving adoption expectations. | ||
|
|
||
| <Note> | ||
| **Key dates:** | ||
| - **January 23, 2026**: Conformance tests available | ||
| - **February 23, 2026**: Official SDK tiering published | ||
|
|
||
| Between January 23 and February 23, SDK maintainers can work with the | ||
| Conformance Testing working group to adopt the tests and set up GitHub issue | ||
| tracking with the standardized labels defined below. | ||
|
|
||
| </Note> | ||
|
|
||
| ## Overview | ||
|
|
||
| SDKs are classified into three tiers based on feature completeness, maintenance commitments, and documentation quality: | ||
|
|
||
| - **Tier 1**: Fully supported SDKs with complete protocol implementation, including all | ||
| non-experimental features and optional capabilities like sampling and elicitation | ||
| - **Tier 2**: Actively-maintained SDKs working toward full protocol specification support | ||
| - **Tier 3**: Experimental, partially implemented, or specialized SDKs | ||
|
|
||
| Experimental features (such as Tasks) and protocol extensions (such as MCP Apps) are not required | ||
| for any tier. | ||
|
|
||
| ## Tier Requirements | ||
|
|
||
| | Requirement | Tier 1: Fully Supported | Tier 2: Commitment to Full Support | Tier 3: Experimental | | ||
| | --------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------- | | ||
| | **Conformance Tests** | 100% pass rate | 80% pass rate | No minimum | | ||
|
localden marked this conversation as resolved.
|
||
| | **New Protocol Features** | Before new spec version release, timeline agreed per release based on feature complexity | Within 6 months | No timeline commitment | | ||
| | **Issue Triage** | Within 2 business days | Within a month | No requirement | | ||
| | **Critical Bug Resolution** | Within 7 days | Within two weeks | No requirement | | ||
| | **Stable Release** | Required with clear versioning | At least one stable release | Not required | | ||
|
localden marked this conversation as resolved.
|
||
| | **Documentation** | Comprehensive with examples for all features | Basic documentation covering core features | No minimum | | ||
| | **Dependency Policy** | Published update policy | Published update policy | Not required | | ||
| | **Roadmap** | Published roadmap | Published plan toward Tier 1 or explanation for remaining Tier 2 | Not required | | ||
|
localden marked this conversation as resolved.
|
||
|
|
||
| **Issue Triage** means labeling and determining whether an issue is valid, not resolving the issue. | ||
|
|
||
| **Critical Bug** refers to P0 issues (see [Priority labels](#priority-only-if-actionable) for | ||
| detailed criteria). | ||
|
|
||
| **Stable Release** is a published version explicitly marked as production-ready (e.g., version `1.0.0` | ||
| or higher without pre-release identifiers like `-alpha`, `-beta`, or `-rc`). | ||
|
|
||
| **Clear Versioning** means following idiomatic versioning patterns with documented | ||
| breaking change policies, so users can understand compatibility expectations when upgrading. | ||
|
|
||
| **Roadmap** outlines concrete steps and work items that track implementation of required MCP | ||
| specification components (non-experimental features and optional capabilities as described in | ||
| [Conformance Testing](#conformance-testing)), giving users visibility into upcoming feature support. | ||
|
|
||
| ## Conformance Testing | ||
|
|
||
| All SDKs are evaluated using [automated conformance tests](https://github.com/modelcontextprotocol/conformance) | ||
| that validate protocol support against the published specifications. SDKs receive a conformance score | ||
| based on test results: | ||
|
|
||
| - **Tier 1**: 100% conformance required | ||
| - **Tier 2**: 80% conformance required | ||
| - **Tier 3**: No minimum requirement | ||
|
|
||
| Conformance scores are calculated against **applicable required tests** only: | ||
|
|
||
| - Tests for the specification version the SDK targets | ||
| - Excluding tests marked as pending or skipped | ||
| - Excluding tests for experimental features | ||
| - Excluding legacy backward-compatibility tests (unless the SDK claims legacy support) | ||
|
localden marked this conversation as resolved.
|
||
|
|
||
| Conformance testing validates that SDKs correctly implement the protocol by running standardized test | ||
| scenarios and checking protocol message exchanges. See [Tier Relegation](#tier-relegation) for how | ||
| temporary test failures are handled. | ||
|
|
||
| ## Tier Advancement | ||
|
|
||
| SDK maintainers can request tier advancement by: | ||
|
|
||
| 1. Self-assessing against tier requirements | ||
| 2. Opening an issue in the [modelcontextprotocol/modelcontextprotocol](https://github.com/modelcontextprotocol/modelcontextprotocol) repository with supporting evidence | ||
| 3. Passing automated conformance testing | ||
| 4. Receiving approval from SDK Working Group maintainers | ||
|
|
||
| The SDK Working Group reviews advancement requests and makes final tier assignments. | ||
|
|
||
| ## Tier Relegation | ||
|
localden marked this conversation as resolved.
|
||
|
|
||
| An SDK may be moved to a lower tier if existing conformance tests on the latest stable release fail | ||
| continuously for 4 weeks: | ||
|
|
||
| - **Tier 1 → Tier 2**: Any conformance test fails | ||
| - **Tier 2 → Tier 3**: More than 20% of conformance tests fail | ||
|
|
||
| ## Issue Triage Labels | ||
|
|
||
| SDK repositories must use consistent labels to enable automated reporting on issue handling metrics. | ||
| Tier calculations use these metrics to measure triage response times (time from issue creation to | ||
| first label) and critical bug resolution times (time from P0 label to issue close). | ||
|
|
||
| ### Type (pick one) | ||
|
|
||
| | Label | Description | | ||
| | ------------- | ----------------------------- | | ||
| | `bug` | Something isn't working | | ||
| | `enhancement` | Request for new feature | | ||
| | `question` | Further information requested | | ||
|
localden marked this conversation as resolved.
|
||
|
|
||
| Repositories using [GitHub's native issue types](https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/managing-issue-types-in-an-organization) | ||
| satisfy this requirement without needing type labels. | ||
|
|
||
| ### Status (pick one) | ||
|
|
||
| Use these exact label names across all repositories to enable consistent reporting and analysis. | ||
|
|
||
| | Label | Description | | ||
| | -------------------- | ------------------------------------------------------- | | ||
| | `needs confirmation` | Unclear if still relevant | | ||
| | `needs repro` | Insufficient information to reproduce | | ||
| | `ready for work` | Has enough information to start | | ||
| | `good first issue` | Good for newcomers | | ||
| | `help wanted` | Contributions welcome from those familiar with codebase | | ||
|
localden marked this conversation as resolved.
|
||
|
|
||
| ### Priority (only if actionable) | ||
|
|
||
| | Label | Description | | ||
| | ----- | --------------------------------------------------------------- | | ||
| | `P0` | Critical: core functionality failures or high-severity security | | ||
| | `P1` | Significant bug affecting many users | | ||
| | `P2` | Moderate issues, valuable feature requests | | ||
| | `P3` | Nice to haves, rare edge cases | | ||
|
|
||
| **P0 (Critical)** issues are: | ||
|
|
||
| - **Security vulnerabilities** with CVSS score ≥ 7.0 (High or Critical severity) | ||
| - **Core functionality failures** that prevent basic MCP operations: connection establishment, | ||
| message exchange, or use of core primitives (tools, resources, prompts) | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.