Skip to content

feat(release): publish @protonspy/csdd-mcp in lockstep with the CLI#5

Merged
protonspy merged 1 commit into
mainfrom
feat/release-publish-mcp
May 31, 2026
Merged

feat(release): publish @protonspy/csdd-mcp in lockstep with the CLI#5
protonspy merged 1 commit into
mainfrom
feat/release-publish-mcp

Conversation

@protonspy
Copy link
Copy Markdown
Owner

Summary

Closes the gap from #4: the release pipeline now builds and publishes the MCP server (@protonspy/csdd-mcp) alongside the CLI binary, as a 7th npm package at the same version — so a single make release VERSION=vX.Y.Z (tag → CI) ships everything.

Changes

  • npm/scripts/build-packages.mjs — stages @protonspy/csdd-mcp from mcp-server/dist: stamps the release version and pins its per-platform optionalDependencies to that exact version (lockstep with the binary), and drops scripts/devDependencies from the published manifest (prepublishOnly would otherwise re-run tsc against a src/ that isn't shipped).
  • .github/workflows/release.yml — builds the MCP server (npm ci + tsc) before assembling; the existing publish loop (npm/dist/csdd-*/) then picks up csdd-mcp with --provenance.
  • Makefile — adds mcp-dist; the require-version guard on dist/npm-build/release (fail fast instead of a cryptic tar error when VERSION is left at dev); manual flow now assembles/publishes 7 packages.
  • mcp-server/package.json — adds repository/homepage/bugs (npm --provenance requires repository).

How to cut a release

make release VERSION=v0.2.0   # tag + push → CI builds binaries + publishes all 7 packages

Manual fallback: make dist VERSION=… && make mcp-dist && make npm-build VERSION=… && make npm-publish.

Testing

  • make npm-build VERSION=v0.1.1 assembles @protonspy/csdd-mcp@0.1.1 with exact optionalDependencies and no scripts/devDependencies.
  • npm publish --dry-run on the staged csdd-mcp → OK (10 files, dist + README).
  • mcp-server npm test green (67 tests); make help lists the new targets.

Note

@protonspy/csdd-mcp is a new package — the NPM_TOKEN automation token must have rights to create packages in the @protonspy scope (publish uses --access public).

🤖 Generated with Claude Code

Build and publish the MCP server alongside the CLI binary as a 7th npm
package at the same version, so `make release VERSION=vX.Y.Z` ships everything.

- build-packages.mjs stages @protonspy/csdd-mcp from mcp-server/dist: stamps
  the release version and pins its per-platform optionalDependencies to that
  exact version (lockstep), dropping scripts/devDependencies from the published
  manifest (prepublishOnly would otherwise re-run tsc against a src/ we don't ship).
- release.yml builds the MCP server before assembling; the existing publish
  loop (csdd-*) then picks up csdd-mcp with --provenance.
- Makefile: add `mcp-dist`; require-version guard on dist/npm-build/release;
  the manual flow now assembles/publishes 7 packages.
- mcp-server/package.json: add repository/homepage/bugs (provenance needs repository).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@protonspy protonspy merged commit b3a09a0 into main May 31, 2026
2 checks passed
@protonspy protonspy deleted the feat/release-publish-mcp branch May 31, 2026 21:00
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