Skip to content

ci: publish to the MCP registry, not just npm - #27

Merged
conorbronsdon merged 1 commit into
mainfrom
ci/registry-publish
Aug 2, 2026
Merged

ci: publish to the MCP registry, not just npm#27
conorbronsdon merged 1 commit into
mainfrom
ci/registry-publish

Conversation

@conorbronsdon

Copy link
Copy Markdown
Owner

The MCP registry has been frozen at the June 2026 publish while npm moved 2-3 minor versions ahead. Root cause: publish.yml publishes to npm and cuts a GitHub release, but never calls mcp-publisher. Nothing has ever updated the registry.

That matters more than one stale listing — PulseMCP, Glama, and LobeHub all auto-ingest from the registry, so one fix corrects every downstream directory permanently.

Changes

  1. server.json synced to package.json, plus a step that derives version and every packages[].version from package.json at publish time so it cannot drift again.
  2. A registry publish step (mcp-publisher, login github-oidc) after npm publish, gated on its own registry-version check.

Why the registry step has its own gate

The existing changed gate compares package.json to npm, which today says changed=false in every one of these repos. Hanging the registry step off it would have made this fix inert — no workflow_dispatch could repair the frozen registry, and drift would persist until the next version bump. The new check queries the registry directly, so a manual dispatch now performs a registry-only catch-up.

Notes

  • mcp-publisher pinned to v1.8.0 rather than tracking latest; curl -f added so a bad URL fails instead of piping an HTML error page into tar.
  • Duplicate versions are skipped, not swallowed — check-then-skip matches what the GitHub release step already does. A real failure (auth, schema rejection) still fails loudly, which is the point given that silent non-publishing is the bug.
  • id-token: write was already present for npm provenance, confirmed per repo. No permissions changes.
  • Small race worth knowing: mcp-publisher validates that the npm package carries a matching mcpName, so on a run where npm publish just happened there may be brief propagation lag. Re-dispatching succeeds.

Verified: YAML parsed and schema-validated against the committed blobs, mcpName matches server.json name in-repo and via npm view.

🤖 Generated with Claude Code

publish.yml published to npm but never to the MCP registry, so the registry
(and everything that ingests it — PulseMCP, Glama, LobeHub) stayed frozen at
the 2026-06-12 publish while npm moved 2-3 minor versions ahead.

- Sync server.json version and packages[].version from package.json at publish
  time, so the two cannot drift again, and bring the checked-in file current.
- Add an mcp-publisher step using github-oidc auth (id-token: write was already
  granted for npm provenance), pinned to registry v1.8.0.
- Gate the registry publish on its own registry-version check rather than the
  npm gate, so a workflow_dispatch can push a registry-only catch-up without
  requiring a package version bump.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@conorbronsdon
conorbronsdon merged commit 7e6251c into main Aug 2, 2026
2 checks passed
@conorbronsdon
conorbronsdon deleted the ci/registry-publish branch August 2, 2026 01:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant