Summary
Based on my understanding of MCP as of today, we are not using a shared model (for example a Smithy, OpenAPI model) to define the types / API contracts of MCP. The lack of a standard model means that SDKs can diverge from one another (example of one such case: modelcontextprotocol/python-sdk#528). This means that a server and client implemented in different coding language might (in theory) not be compatible. As we move toward a world where MCP servers are increasingly remote this will create significant challenges for clients.
Suggestion
- Create a standard repository where we manage a shared API / type schema for MCP. Even if we just do this this will give a way to write tests against changes to the SDKs to ensure they conform to this schema.
- There is rich tooling to convert from bunch of the standard schemas directly into language-specific objects (like Smithy to Python server/client). We can explore whether type objects can be generating for many languages to reduce dev overhead.
Summary
Based on my understanding of MCP as of today, we are not using a shared model (for example a Smithy, OpenAPI model) to define the types / API contracts of MCP. The lack of a standard model means that SDKs can diverge from one another (example of one such case: modelcontextprotocol/python-sdk#528). This means that a server and client implemented in different coding language might (in theory) not be compatible. As we move toward a world where MCP servers are increasingly remote this will create significant challenges for clients.
Suggestion