This guide covers the manual publishing workflow for releasing updates to the npm registry.
@dongduong2001).npm login
# Verify authentication
npm whoami
Once RELEASE_CHECKLIST.md is complete and all tests pass:
Ensure the latest build is compiled and verified:
# Compile TS in MCP server and test
npm run mcp:test
# Verify root CLI logic
npm test
Before publishing, check where the package is going.
In packages/pudo-mcp-server/package.json:
"publishConfig": { "access": "public" } allows public scoping.Run npm version in the root directory (and workspace package directory if applicable):
# Choose patch, minor, or major
npm version <patch|minor|major> --no-git-tag-version
# Sync with the MCP package
cd packages/pudo-mcp-server
npm version <patch|minor|major> --no-git-tag-version
cd ../..
Dry run compiles the tarball and lists what will be published:
# Root package
npm publish --dry-run
# MCP Server package
npm publish --dry-run --prefix packages/pudo-mcp-server
Verify that no sensitive files (like local env keys, temporary scripts) are in the files list.
Execute the publish command. Do NOT use automation scripts; this remains a manual step requiring developer approval.
# To publish the CLI / Root package
npm publish --access public
# To publish the MCP Server package
npm publish --access public --prefix packages/pudo-mcp-server
Once the publish is successful, commit version bumps and push tags:
git add package.json package-lock.json packages/pudo-mcp-server/package.json packages/pudo-mcp-server/package-lock.json CHANGELOG.md
git commit -m "chore(release): release v<VERSION>"
git tag -a v<VERSION> -m "Release v<VERSION>"
git push origin <feature-branch>
git push origin --tags