mcp-use- Main MCP integration library@mcp-use/cli- CLI tool for building MCP widgets@mcp-use/inspector- MCP Inspector UIcreate-mcp-use-app- Project scaffolding tool
# 1. Make your changes to the codebase
# ... edit files ...
# 2. Build to verify everything works
pnpm build
# 3. Create a changeset
pnpm changeset
# Follow prompts:
# - Select affected packages
# - Choose version bump (patch/minor/major)
# - Write a summary
# 4. Commit your changes + changeset
git add .
git commit -m "feat: your feature description"
# 5. Push and create PR
git push# After PRs with changesets are merged to main:
# 1. Check what will be released
pnpm version:check
# 2. Apply changesets (bump versions, update CHANGELOGs)
pnpm version
# 3. Review the changes
git diff
# 4. Commit version bumps
git add .
git commit -m "chore: version packages"
git push
# 5. Publish to npm (requires npm auth)
pnpm releasepnpm changeset---
"mcp-use": patch
---
Fixed memory leak in MCPSession cleanuppnpm changeset---
"mcp-use": minor
"@mcp-use/cli": minor
---
Added support for custom headers in HTTP connectionspnpm changeset---
"mcp-use": major
---
BREAKING: Renamed `createSession()` to `connect()` for consistency---
"mcp-use": minor
"@mcp-use/cli": patch
"@mcp-use/inspector": patch
"create-mcp-use-app": patch
---
- Added React hooks for MCP connections (mcp-use)
- Fixed build output paths (cli)
- Updated dependencies (inspector, create-mcp-use-app)For changes that don't need a release (docs, tests, internal):
pnpm changeset --empty# Check status of pending changesets
pnpm version:check
# Create a changeset interactively
pnpm changeset
# Create an empty changeset
pnpm changeset --empty
# Apply changesets (version bump)
pnpm version
# Build and publish
pnpm release
# Check what would be published
pnpm changeset status --verboseBefore submitting a PR:
- Code changes are complete
- Tests pass (
pnpm test) - Linting passes (
pnpm lint) - Build succeeds (
pnpm build) - Changeset created (
pnpm changeset) - if changes affect public API - Changeset committed with PR
Before releasing:
- All PRs with changesets are merged
- Check pending changesets (
pnpm version:check) - Apply versions (
pnpm version) - Review generated CHANGELOGs
- Commit version changes
- Push to main
- Publish packages (
pnpm release) - Verify packages on npm
- Create GitHub release (optional)
-
Create changesets with your PRs
- Always add a changeset for user-facing changes
- Skip changesets for internal-only changes (add
--emptyif needed)
-
Write clear summaries
- Focus on what changed from a user's perspective
- Include migration steps for breaking changes
- Link to relevant issues/PRs if applicable
-
Use appropriate version bumps
- Patch: Bug fixes, performance improvements, internal changes
- Minor: New features, new exports, enhancements
- Major: Breaking API changes, removed features
-
Review before publishing
- Always review the generated CHANGELOGs
- Verify version numbers make sense
- Test packages locally before publishing
The repository includes automated release workflows:
- Runs on push to
main - Creates a "Version Packages" PR automatically
- Publishes packages when the Version PR is merged
- Requires
NPM_TOKENsecret in GitHub
- Runs on all PRs
- Checks for lint errors
- Runs tests
- Verifies builds
- Reminds to add changesets
You need to create a changeset first:
pnpm changesetThe package name in ignore list doesn't match. Check:
- Package name in
package.json - Name in
.changeset/config.jsonignore list
Make sure packages have:
"private": false(or omit it)"publishConfig": { "access": "public" }- Not in the
ignorelist
To test versioning without actually changing files:
# Preview what changesets would do
pnpm changeset status --verbose --since=main