← Back to Blog
tutorialpublishingbeginner

How to Publish Your First MCP Tool on mcpm

Step-by-step: create an MCP server, write a README, and publish it to the mcpm registry in one command.

·2 min read·xapable

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">&quot;name&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-string">&quot;my-weather-mcp&quot;</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">&quot;version&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-string">&quot;1.0.0&quot;</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">&quot;description&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-string">&quot;Get weather data for any city via MCP&quot;</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">&quot;main&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-string">&quot;index.js&quot;</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

\`\`\`
&gt; What&#x27;s the weather in Tokyo?
Agent calls get_</span>weather({ city: &quot;Tokyo&quot;, units: &quot;celsius&quot; })</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">&quot;my weather&quot;</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