How to Publish Your First MCP Tool on mcpm
You've built an MCP server. Now share it with the world. This guide walks you through publishing to mcpm — the central registry for MCP tools.
Prerequisites
- Node.js 18+
- An MCP server project (even a minimal one)
- A GitHub account
- mcpm-dev CLI installed:
npm i -g mcpm-dev
Step 1: Prepare Your Project
Your project needs at minimum:
my-mcp-server/
├── package.json
├── README.md
└── index.js (or src/index.ts)
Your package.json should have at least name, version, and description:
<span class="hljs-punctuation">{</span>
<span class="hljs-attr">"name"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"my-weather-mcp"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"version"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"1.0.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 for any city via MCP"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"main"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"index.js"</span>
<span class="hljs-punctuation">}</span>
Step 2: Write a Killer README
Your README is your storefront on mcpm.dev. Include:
- What the tool does (first paragraph — this becomes your description)
- Installation — how to install via mcpm
- Available tools — each MCP tool with parameters
- Examples — show real usage
<span class="hljs-section"># My Weather MCP</span>
Get real-time weather data for any city worldwide.
<span class="hljs-section">## Install</span>
\<span class="hljs-code">`\`</span>\`bash
mcpm-dev add my-weather-mcp
\<span class="hljs-code">`\`</span>\`
<span class="hljs-section">## Tools</span>
<span class="hljs-section">### get<span class="hljs-emphasis">_weather
| Parameter | Type | Description |
|-----------|------|-------------|
| city | string | City name |
| units | string | celsius or fahrenheit |
## Example
\`\`\`
> What's the weather in Tokyo?
Agent calls get_</span>weather({ city: "Tokyo", units: "celsius" })</span>
→ 22°C, partly cloudy
\<span class="hljs-code">`\`</span>\`
Step 3: Authenticate
mcpm-dev login
Follow the browser prompt to authorize with GitHub.
Step 4: Publish
<span class="hljs-built_in">cd</span> my-mcp-server
mcpm-dev publish
The CLI auto-detects your package.json, reads your README, and publishes to mcpm.dev. Your tool is now live at:
https://www.mcpm.dev/packages/my-weather-mcp
Step 5: Verify
mcpm-dev search <span class="hljs-string">"my weather"</span>
mcpm-dev info my-weather-mcp
Pro Tips
- Semantic versioning:
mcpm-dev publish bumps the patch version by default. Use --major or --minor for breaking changes.
- Verified badge: After 100 weekly downloads, apply for verification at mcpm.dev/settings.
- Update your README: The CLI reads your README on every publish. Keep it fresh.
Troubleshooting
| Problem |
Solution |
| "Package name taken" |
Choose a unique name or namespace it: @yourname/tool |
| "Not authenticated" |
Run mcpm-dev login |
| "Invalid package.json" |
Ensure name and version are set |
Congratulations — you're an MCP publisher! 🎉
#MCP #Tutorial #Publishing #mcpm #DevTools
How to Publish Your First MCP Tool on mcpm
You've built an MCP server. Now share it with the world. This guide walks you through publishing to mcpm — the central registry for MCP tools.
Prerequisites
npm i -g mcpm-devStep 1: Prepare Your Project
Your project needs at minimum:
Your
package.jsonshould have at leastname,version, anddescription:<span class="hljs-punctuation">{</span> <span class="hljs-attr">"name"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"my-weather-mcp"</span><span class="hljs-punctuation">,</span> <span class="hljs-attr">"version"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"1.0.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 for any city via MCP"</span><span class="hljs-punctuation">,</span> <span class="hljs-attr">"main"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"index.js"</span> <span class="hljs-punctuation">}</span>Step 2: Write a Killer README
Your README is your storefront on mcpm.dev. Include:
<span class="hljs-section"># My Weather MCP</span> Get real-time weather data for any city worldwide. <span class="hljs-section">## Install</span> \<span class="hljs-code">`\`</span>\`bash mcpm-dev add my-weather-mcp \<span class="hljs-code">`\`</span>\` <span class="hljs-section">## Tools</span> <span class="hljs-section">### get<span class="hljs-emphasis">_weather | Parameter | Type | Description | |-----------|------|-------------| | city | string | City name | | units | string | celsius or fahrenheit | ## Example \`\`\` > What's the weather in Tokyo? Agent calls get_</span>weather({ city: "Tokyo", units: "celsius" })</span> → 22°C, partly cloudy \<span class="hljs-code">`\`</span>\`Step 3: Authenticate
Follow the browser prompt to authorize with GitHub.
Step 4: Publish
<span class="hljs-built_in">cd</span> my-mcp-server mcpm-dev publishThe CLI auto-detects your
package.json, reads your README, and publishes to mcpm.dev. Your tool is now live at:Step 5: Verify
mcpm-dev search <span class="hljs-string">"my weather"</span> mcpm-dev info my-weather-mcpPro Tips
mcpm-dev publishbumps the patch version by default. Use--majoror--minorfor breaking changes.Troubleshooting
@yourname/toolmcpm-dev loginnameandversionare setCongratulations — you're an MCP publisher! 🎉
#MCP #Tutorial #Publishing #mcpm #DevTools