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
<span class="hljs-punctuation">{</span>
<span class="hljs-attr">"name"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"weather-mcp"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"version"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"1.1.0"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"description"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"Get weather data — now with severe weather alerts"</span>
<span class="hljs-punctuation">}</span>
3. Write a Changelog
Create CHANGELOG.md:
<span class="hljs-section"># Changelog</span>
<span class="hljs-section">## 1.1.0 (2026-07-07)</span>
<span class="hljs-section">### Added</span>
<span class="hljs-bullet">-</span> New <span class="hljs-code">`get_alerts`</span> tool for severe weather alerts
<span class="hljs-bullet">-</span> Support for airport weather codes (ICAO)
<span class="hljs-bullet">-</span> Celsius/Fahrenheit conversion in all tools
<span class="hljs-section">### Fixed</span>
<span class="hljs-bullet">-</span> City names with special characters now work correctly
<span class="hljs-bullet">-</span> Improved error messages for invalid API keys
<span class="hljs-section">### Changed</span>
<span class="hljs-bullet">-</span> 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
<span class="hljs-comment"># Patch (bug fix)</span>
mcpm-dev publish
<span class="hljs-comment"># → 1.0.0 → 1.0.1</span>
<span class="hljs-comment"># Minor (new feature)</span>
mcpm-dev publish --minor
<span class="hljs-comment"># → 1.0.0 → 1.1.0</span>
<span class="hljs-comment"># Major (breaking change)</span>
mcpm-dev publish --major
<span class="hljs-comment"># → 1.0.0 → 2.0.0</span>
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
<span class="hljs-comment">
<span class="hljs-keyword">if</span> (args.<span class="hljs-property">oldParam</span>) {
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">error</span>(<span class="hljs-string">"⚠️ 'oldParam' is deprecated. Use 'newParam' instead."</span>);
}
Write a migration guide
<span class="hljs-section">## Migrating from v1 to v2</span>
<span class="hljs-section">### Parameter changes</span>
<span class="hljs-bullet">-</span> <span class="hljs-code">`oldParam`</span> → renamed to <span class="hljs-code">`newParam`</span>
<span class="hljs-bullet">-</span> <span class="hljs-code">`city`</span> is now <span class="hljs-code">`location`</span> (supports city names AND coordinates)
<span class="hljs-section">### New required config</span>
<span class="hljs-bullet">-</span> <span class="hljs-code">`API_VERSION=2`</span> 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:
<span class="hljs-comment"># Revert to previous version</span>
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
<span class="hljs-comment"># .github/workflows/publish.yml</span>
<span class="hljs-attr">name:</span> <span class="hljs-string">Publish</span> <span class="hljs-string">to</span> <span class="hljs-string">mcpm</span>
<span class="hljs-attr">on:</span>
<span class="hljs-attr">push:</span>
<span class="hljs-attr">tags:</span>
<span class="hljs-bullet">-</span> <span class="hljs-string">'v*'</span>
<span class="hljs-attr">jobs:</span>
<span class="hljs-attr">publish:</span>
<span class="hljs-attr">runs-on:</span> <span class="hljs-string">ubuntu-latest</span>
<span class="hljs-attr">steps:</span>
<span class="hljs-bullet">-</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/checkout@v4</span>
<span class="hljs-bullet">-</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/setup-node@v4</span>
<span class="hljs-bullet">-</span> <span class="hljs-attr">run:</span> <span class="hljs-string">npm</span> <span class="hljs-string">ci</span>
<span class="hljs-bullet">-</span> <span class="hljs-attr">run:</span> <span class="hljs-string">npm</span> <span class="hljs-string">test</span>
<span class="hljs-bullet">-</span> <span class="hljs-attr">run:</span> <span class="hljs-string">npx</span> <span class="hljs-string">mcpm-dev</span> <span class="hljs-string">publish</span>
<span class="hljs-attr">env:</span>
<span class="hljs-attr">MCPM_TOKEN:</span> <span class="hljs-string">${{</span> <span class="hljs-string">secrets.MCPM_TOKEN</span> <span class="hljs-string">}}</span>
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
<span class="hljs-punctuation">{</span> <span class="hljs-attr">"name"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"weather-mcp"</span><span class="hljs-punctuation">,</span> <span class="hljs-attr">"version"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"1.1.0"</span><span class="hljs-punctuation">,</span> <span class="hljs-attr">"description"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"Get weather data — now with severe weather alerts"</span> <span class="hljs-punctuation">}</span>3. Write a Changelog
Create
CHANGELOG.md:<span class="hljs-section"># Changelog</span> <span class="hljs-section">## 1.1.0 (2026-07-07)</span> <span class="hljs-section">### Added</span> <span class="hljs-bullet">-</span> New <span class="hljs-code">`get_alerts`</span> tool for severe weather alerts <span class="hljs-bullet">-</span> Support for airport weather codes (ICAO) <span class="hljs-bullet">-</span> Celsius/Fahrenheit conversion in all tools <span class="hljs-section">### Fixed</span> <span class="hljs-bullet">-</span> City names with special characters now work correctly <span class="hljs-bullet">-</span> Improved error messages for invalid API keys <span class="hljs-section">### Changed</span> <span class="hljs-bullet">-</span> 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
<span class="hljs-comment"># Patch (bug fix)</span> mcpm-dev publish <span class="hljs-comment"># → 1.0.0 → 1.0.1</span> <span class="hljs-comment"># Minor (new feature)</span> mcpm-dev publish --minor <span class="hljs-comment"># → 1.0.0 → 1.1.0</span> <span class="hljs-comment"># Major (breaking change)</span> mcpm-dev publish --major <span class="hljs-comment"># → 1.0.0 → 2.0.0</span>What 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
<span class="hljs-comment">// In your tool handler</span> <span class="hljs-keyword">if</span> (args.<span class="hljs-property">oldParam</span>) { <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">error</span>(<span class="hljs-string">"⚠️ 'oldParam' is deprecated. Use 'newParam' instead."</span>); }Write a migration guide
<span class="hljs-section">## Migrating from v1 to v2</span> <span class="hljs-section">### Parameter changes</span> <span class="hljs-bullet">-</span> <span class="hljs-code">`oldParam`</span> → renamed to <span class="hljs-code">`newParam`</span> <span class="hljs-bullet">-</span> <span class="hljs-code">`city`</span> is now <span class="hljs-code">`location`</span> (supports city names AND coordinates) <span class="hljs-section">### New required config</span> <span class="hljs-bullet">-</span> <span class="hljs-code">`API_VERSION=2`</span> 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:
<span class="hljs-comment"># Revert to previous version</span> mcpm-dev publish --version 1.0.0This republishes the old version as the latest. Users can then:
Automating with GitHub Actions
<span class="hljs-comment"># .github/workflows/publish.yml</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Publish</span> <span class="hljs-string">to</span> <span class="hljs-string">mcpm</span> <span class="hljs-attr">on:</span> <span class="hljs-attr">push:</span> <span class="hljs-attr">tags:</span> <span class="hljs-bullet">-</span> <span class="hljs-string">'v*'</span> <span class="hljs-attr">jobs:</span> <span class="hljs-attr">publish:</span> <span class="hljs-attr">runs-on:</span> <span class="hljs-string">ubuntu-latest</span> <span class="hljs-attr">steps:</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/checkout@v4</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/setup-node@v4</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">run:</span> <span class="hljs-string">npm</span> <span class="hljs-string">ci</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">run:</span> <span class="hljs-string">npm</span> <span class="hljs-string">test</span> <span class="hljs-bullet">-</span> <span class="hljs-attr">run:</span> <span class="hljs-string">npx</span> <span class="hljs-string">mcpm-dev</span> <span class="hljs-string">publish</span> <span class="hljs-attr">env:</span> <span class="hljs-attr">MCPM_TOKEN:</span> <span class="hljs-string">${{</span> <span class="hljs-string">secrets.MCPM_TOKEN</span> <span class="hljs-string">}}</span>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