Publishing Updates to Your MCP Tool on mcpm
Your tool is live. Now users depend on it. This guide covers updating responsibly.
Before You Publish an Update
1. Determine the Bump Type
| Change |
Version |
Command |
| Bug fix |
Patch (1.0.0 → 1.0.1) |
mcpm-dev publish |
| New feature |
Minor (1.0.0 → 1.1.0) |
mcpm-dev publish --minor |
| Breaking change |
Major (1.0.0 → 2.0.0) |
mcpm-dev publish --major |
2. Update package.json
{
"name": "weather-mcp",
"version": "1.1.0",
"description": "Get weather data — now with severe weather alerts"
}
3. Write a Changelog
Create CHANGELOG.md:
# Changelog
## 1.1.0 (2026-07-07)
### Added
- New `get_alerts` tool for severe weather alerts
- Support for airport weather codes (ICAO)
- Celsius/Fahrenheit conversion in all tools
### Fixed
- City names with special characters now work correctly
- Improved error messages for invalid API keys
### Changed
- Default forecast days reduced from 5 to 3 (less API usage)
4. Update README
Add new tools, update examples, refresh the description. mcpm reads your README on every publish.
Publishing
mcpm-dev publish
mcpm-dev publish --minor
mcpm-dev publish --major
What Happens on Publish
- CLI reads your
package.json and README.md
- New version is pushed to mcpm.dev
- Old versions remain available (users can pin to them)
- Users see update notifications:
mcpm-dev outdated
Communicating with Users
For Patch Updates
No communication needed. Users get the fix automatically on next update.
For Minor Updates
Update your README. Consider a short post on your tool's mcpm page.
For Major Updates
Warn users before breaking changes:
Add deprecation notices in the previous minor version
if (args.oldParam) {
console.error("⚠️ 'oldParam' is deprecated. Use 'newParam' instead.");
}
Write a migration guide
## Migrating from v1 to v2
### Parameter changes
- `oldParam` → renamed to `newParam`
- `city` is now `location` (supports city names AND coordinates)
### New required config
- `API_VERSION=2` must be set in env vars
Keep old versions available
Users can stay on v1: mcpm-dev add weather-mcp@1.9.0
Release Checklist
Before every publish:
Rollback Plan
If an update causes issues:
mcpm-dev publish --version 1.0.0
This republishes the old version as the latest. Users can then:
mcpm-dev update weather-mcp
Automating with GitHub Actions
name: Publish to mcpm
on:
push:
tags:
- 'v*'
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- run: npm ci
- run: npm test
- run: npx mcpm-dev publish
env:
MCPM_TOKEN: ${{ secrets.MCPM_TOKEN }}
Tag a release on GitHub, and it auto-publishes to mcpm.
Publishing is a conversation with your users. Be thoughtful, be transparent, and keep your changelog honest.
#MCP #Tutorial #Publishing #Versioning #mcpm
Publishing Updates to Your MCP Tool on mcpm
Your tool is live. Now users depend on it. This guide covers updating responsibly.
Before You Publish an Update
1. Determine the Bump Type
mcpm-dev publishmcpm-dev publish --minormcpm-dev publish --major2. Update package.json
{ "name": "weather-mcp", "version": "1.1.0", "description": "Get weather data — now with severe weather alerts" }3. Write a Changelog
Create
CHANGELOG.md:# Changelog ## 1.1.0 (2026-07-07) ### Added - New `get_alerts` tool for severe weather alerts - Support for airport weather codes (ICAO) - Celsius/Fahrenheit conversion in all tools ### Fixed - City names with special characters now work correctly - Improved error messages for invalid API keys ### Changed - Default forecast days reduced from 5 to 3 (less API usage)4. Update README
Add new tools, update examples, refresh the description. mcpm reads your README on every publish.
Publishing
# Patch (bug fix) mcpm-dev publish # → 1.0.0 → 1.0.1 # Minor (new feature) mcpm-dev publish --minor # → 1.0.0 → 1.1.0 # Major (breaking change) mcpm-dev publish --major # → 1.0.0 → 2.0.0What Happens on Publish
package.jsonandREADME.mdmcpm-dev outdatedCommunicating with Users
For Patch Updates
No communication needed. Users get the fix automatically on next update.
For Minor Updates
Update your README. Consider a short post on your tool's mcpm page.
For Major Updates
Warn users before breaking changes:
Add deprecation notices in the previous minor version
// In your tool handler if (args.oldParam) { console.error("⚠️ 'oldParam' is deprecated. Use 'newParam' instead."); }Write a migration guide
## Migrating from v1 to v2 ### Parameter changes - `oldParam` → renamed to `newParam` - `city` is now `location` (supports city names AND coordinates) ### New required config - `API_VERSION=2` must be set in env varsKeep old versions available
Users can stay on v1:
mcpm-dev add weather-mcp@1.9.0Release Checklist
Before every publish:
package.jsonversion updatedCHANGELOG.mdhas this version's entriesREADME.mdreflects current featuresnpm testRollback Plan
If an update causes issues:
# Revert to previous version mcpm-dev publish --version 1.0.0This republishes the old version as the latest. Users can then:
Automating with GitHub Actions
# .github/workflows/publish.yml name: Publish to mcpm on: push: tags: - 'v*' jobs: publish: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 - run: npm ci - run: npm test - run: npx mcpm-dev publish env: MCPM_TOKEN: ${{ secrets.MCPM_TOKEN }}Tag a release on GitHub, and it auto-publishes to mcpm.
Publishing is a conversation with your users. Be thoughtful, be transparent, and keep your changelog honest.
#MCP #Tutorial #Publishing #Versioning #mcpm