chore(release): publish the MCP Registry listing with every release - #68
Merged
Merged
Conversation
server.json pins an exact xbrlkit version, and clients that install from the Official MCP Registry run that version. It was published by hand and had fallen behind PyPI (0.16.4 listed, 0.16.5 released), so registry installs missed the latest fixes and tool changes. - create-release.yml bumps server.json's version fields in the same commit as pyproject.toml. - publish.yml checks that server.json names the release, validates it against the registry, and, after the PyPI upload and once PyPI serves the version, logs in by DNS and publishes the listing. It skips a version that is already listed. The key comes from a production environment secret, MCP_REGISTRY_PRIVATE_KEY. - mcp-publisher is pinned to v1.8.1 by sha256 and installed outside the checkout. - tests/test_server_json.py keeps server.json and pyproject.toml on one version, checks the README ownership token and description length, and pins the description's tool count to the server's real tool list. - server.json moves to 0.16.5, the current release.
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
server.jsonpins an exact xbrlkit version, and clients that install from the Official MCP Registry run exactly that version. The listing was published by hand and had fallen behind: the registry lists 0.16.4 while 0.16.5 is on PyPI. Registry installs were therefore missing the latest fixes, tool changes and the/viewlink.The listing now moves with the package. Cutting a release bumps
server.jsonalongsidepyproject.toml. The gated publish job validates the listing before the PyPI upload and lists it on the registry right after.Changes
create-release.yml: the version-bump step rewrites the two version fields inserver.jsonand commits it withpyproject.toml. The rewrite is byte-for-byte apart from those two fields.publish.yml, inside the existingproduction-gated job:server.jsonnames this release and that the README carries themcp-nameownership token.mcp-publisher validate, which needs no login, so a listing the registry would reject stops the job before a PyPI version number is used up.ai.robosystemsnamespace, and publishes.mcp-publisher: pinned to v1.8.1 by the sha256 in that release's checksum file, and installed under$RUNNER_TEMPso the build can't sweep the binary into the sdist.tests/test_server_json.py:server.jsonandpyproject.tomlmust name the same version.server.json: bumped to 0.16.5, the current release.Output Impact
INTERNAL. No package code or serialization changes. The published listing changes version on every release from now on.
Testing
just test-allpasses: ruff, format, basedpyright, and pytest with 534 passed and 2 skipped.server.json's package version back to 0.16.4 and the description to "19 tools" fails exactly the version and tool-count tests.create-release.ymland run on a copy ofserver.json, changed only the two version lines.mcp-publisher validate server.jsonpasses against the live registry with an empty home directory, so it needs no saved login.actionlintreports the same notes on both workflows as onmain, so there are none new.Not exercised: the real login and publish in Actions. That first runs on the next release.
Before the next release
The publish job needs the registry key as a
productionenvironment secret namedMCP_REGISTRY_PRIVATE_KEY, holding the hex Ed25519 seed for therobosystems.aiDNS record. Without it, the release still publishes to PyPI and the job then fails at the registry step with that error.🤖 Generated with Claude Code