registry
registry copied to clipboard
Clarify approach to managing server.json schema versions
I think the state we want to be in is:
- Registry code (including API and CLI) uses exclusively finalized versions of server.json from https://github.com/modelcontextprotocol/static/tree/main/schemas
- This file is a
draftthat should not be used by any systems (neither registry code nor others) until it is finalized and in thestaticrepo - After a server.json version release to static, we should always cut a ticket to update the registry code (API and CLI) to use the new version
If agreed, we should:
- Change that server.schema.json $id field to point to
draft - Document the sequencing for handling server.schema.json changes in accordance with the above
Are there any dependencies between our code and that server.schema.json field right now? If so, I think we should sever them and have the API/CLI code reference the static versions.
See: https://discord.com/channels/1358869848138059966/1369487942862504016/1424904131331625031
Thanks for raising this! 🙏 I do agree we have to decide on a release/versioning strategy for this 👍
We touched this with @domdomegg and my reasoning based on what we have now is:
- I think we should keep releases (and versions in that sense) together for all assets maintained by the registry project, at least for now. This ensures we have the registry API server, the mcp-publisher, the server.json and the OpenAPI schema be in sync.
- Move away from date references in favour of semver. For example, cutting a
v1.2.3release should also produce a schema with $id ofv1.2.3(not the date ref). - Have automation that opens a PR against
modelcontextprotocol/staticwith the released schema
How it would look in practice:
- We rename the $id to
draftin the repo. Note that when a release is created the schemas are already part of the sources tar so that's good. - Upon publishing a release, i.e.
v1.2.3have an automated workflow that: a. Fetches the latest release (v1.2.3) b. Downloads the tar ball forv1.2.3c. Extracts the schema files out of it d. Updates their references to match the version of the release, i.e.s/draft/v1.2.3I guess we can change the ref before the release, but I don't think it's really necessary. e. Opens PRs againstmodelcontextprotocol/static.