Skip to content

Releasing

Pavel Erokhin edited this page Oct 19, 2026 · 1 revision

Releasing

A release goes to three places: a GitHub release with the Claude Desktop bundle, npm as @mairwunnx/minecraft-mcp, and the MCP Registry as com.mairwunnx/minecraft-mcp.

Steps

  1. Add a ## X.Y.Z section to CHANGELOG.md. Patch for fixes, minor for features, major for breaking changes.

  2. Run the “Release” workflow:

    gh workflow run release.yml -R MairwunNx/minecraft-mcp -f version=X.Y.Z -f npm=true -f registry=true
  3. Watch it with gh run watch.

  4. Check every place: the GitHub release, npm view @mairwunnx/minecraft-mcp, and the registry search.

What the workflow does

  1. Refuses a version that's already tagged.
  2. Takes the release notes from the version's section in CHANGELOG.md, or from the changelog input.
  3. Runs lint, typecheck, and tests.
  4. Stamps the version into package.json, manifest.json, and server.json. The repository keeps 0.0.0-dev in all three.
  5. Packs minecraft-mcp-X.Y.Z.mcpb and publishes a GitHub release tagged vX.Y.Z with it, plus a version-less copy minecraft-mcp.mcpb. That copy keeps releases/latest/download/minecraft-mcp.mcpb pointing at the newest bundle.
  6. With npm, drops the “Try it live” section from the README and publishes to npm with provenance. The Moonlands invitation stays on GitHub.
  7. With registry, waits until npm serves the new version, then publishes server.json to the MCP Registry.

Secrets

  • NPM_TOKEN: a granular npm token that can bypass 2FA. npm's trusted publishing would replace it once set up on npmjs.com.
  • MCP_REGISTRY_KEY: the hex ed25519 key whose public half sits in a DNS TXT record on mairwunnx.com.

When the registry step fails

Publish by hand: stamp server.json with the version, then run mcp-publisher login dns --domain mairwunnx.com --private-key <hex> and mcp-publisher publish. Never delete or re-tag a published release; finish a half-failed one by hand.

Clone this wiki locally