Skip to content

Conversation

olaservo
Copy link
Member

@olaservo olaservo commented Apr 30, 2025

Adds a simplified example of a MCP spec compliance schema for SDKs.

Motivation and Context

Taken from @localden 's original document:

Today, developers can use any of the available Model Context Protocol (MCP) SDKs, that include Python, TypeScript, Java, Kotlin, or C#. These SDKs have varied levels of support for the capabilities outlined in the MCP specification.

As MCP evolves, new versions of the protocol specification are released – we started with 2024-11-05, and are now on 2025-03-26. SDKs, in their current implementation, carry no distinguishing information or markers that communicate to developers the fact that the SDK supports the full set or a subset of specific specification versions.

This proposal intends to establish a shared standard for how MCP SDKs declare their support for MCP capabilities outlined in the protocol specification documents.

How Has This Been Tested?

Has not yet been tested with an actual SDK, this is just to align on the structure and format.

Breaking Changes

N/A

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Checklist

  • I have read the MCP Documentation
  • My code follows the repository's style guidelines
  • New and existing tests pass locally
  • I have added appropriate error handling
  • I have added or updated documentation as needed

Additional context

Note that there is already a GitHub Project meant for tracking progress towards SDK compliance, but this PR proposes a structure for populating this information as a JSON file alongside each language SDK.

Copy link
Member

@cliffhall cliffhall left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does the schema itself need a version What if we add new features?

Copy link
Member

@cliffhall cliffhall left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestions for adding a schema version.

olaservo and others added 3 commits May 1, 2025 08:59
"schemaVersion": {
"type": "string",
"description": "The version of the schema this manifest complies with",
"pattern": "^[0-9]+(\\.[0-9]+)*(-[a-zA-Z0-9]+)?(\\+[a-zA-Z0-9]+)?$"
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding a more visible note here from the resolved conversation above:

The MCP Spec schema itself uses calendar versioning, however my assumption is that this compliance schema would evolve independently from the spec itself (so it needs its own versions that tooling could reference).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What do you think about adding a schemaLocation to point to the actual schema as opposed to (or in addition to) schemaVersion?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do mean something like: "schema_location": "https://modelcontextprotocol.io/schemas/sdk-compliance/v1.0.0/schema.json)<https://modelcontextprotocol.io/schemas/sdk-compliance/v1.0.0/schema.json"?

Copy link
Contributor

@ihrpr ihrpr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we have a plan how we can use this manifests? Is there going to be a place where we can automatically pull them in one page?

}
}
},
"last_updated": "2025-04-30"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the last update for the spec compliance file?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, that's what I was thinking.

| "python"
| "typescript"
| "java"
| "csharp";
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should those be added as well?

  • kotlin
  • go
  • ruby
  • rust
  • swift

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, added

"$schema": "http://json-schema.org/draft-07/schema#",
"title": "MCP SDK Support Manifest",
{
"schemaVersion": {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"schemaVersion": {
"schema_version": {

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated to snake case.

@olaservo
Copy link
Member Author

Do we have a plan how we can use this manifests? Is there going to be a place where we can automatically pull them in one page?

@ihrpr I think that part is still up for discussion, we were originally talking about starting a support matrix for each sdk manually that references the structure defined here, then moving on to automating it. Lets chat more in the spec-compliance channel.

@dsp-ant
Copy link
Member

dsp-ant commented May 12, 2025

Are the SDK authors fine with maintaining such a spec?

@dsp-ant dsp-ant moved this to Draft in Standards Track Jun 6, 2025
@tzolov
Copy link
Contributor

tzolov commented Jul 1, 2025

@olaservo, would it make sense to have separate client and server transport feature fields for better coverage description?

...
clientTransport?: TransportFeatures;
serverTransport?: TransportFeatures;


export interface ClientFeatures {
roots?: boolean;
sampling?: boolean;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add elicitation

@olaservo
Copy link
Member Author

Hi, going to close this for now since there are a few other efforts going on in this area.

@olaservo olaservo closed this Jul 29, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
No open projects
Status: Draft
Development

Successfully merging this pull request may close these issues.

5 participants