The MCP Registry is currently in preview. Breaking changes or data resets may occur before general availability. If you encounter any issues, please report them on GitHub.
mcp-publisher CLI tool.
Prerequisites
- Node.js — This tutorial assumes the MCP server is written in TypeScript.
- npm account — The MCP Registry only hosts metadata, not artifacts. Before publishing to the MCP Registry, we will publish the MCP server’s package to npm, so you will need an npm account.
- GitHub account — The MCP Registry supports multiple authentication methods. For simplicity, this tutorial will use GitHub-based authentication, so you will need a GitHub account.
weather-server-typescript server from the modelcontextprotocol/quickstart-resources repository to follow along with this tutorial:
package.json to reflect your information:
package.json
package.json
Step 1: Add verification information to the package
The MCP Registry verifies that a server’s underlying package matches its metadata. For npm packages, this requires adding anmcpName property to package.json:
package.json
mcpName will be your server’s name in the MCP Registry.
Because we will be using GitHub-based authentication, mcpName must start with io.github.my-username/.
Step 2: Publish the package
The MCP Registry only hosts metadata, not artifacts, so we must publish the package to npm before publishing the server to the MCP Registry. Ensure the distribution files are built:Step 3: Install mcp-publisher
Install the mcp-publisher CLI tool using a pre-built binary or Homebrew:
mcp-publisher is correctly installed by running:
Output
Step 4: Create server.json
The mcp-publisher init command can generate a server.json template file with some information derived from your project.
In your server project directory, run mcp-publisher init:
server.json file, and you should see contents like:
server.json
server.json
name property in server.json must match the mcpName property in package.json.
Step 5: Authenticate with the MCP Registry
For this tutorial, we will authenticate with the MCP Registry using GitHub-based authentication. Run themcp-publisher login command to initiate authentication:
Output
ABCD-1234 in the above output). Once complete, go back to the terminal, and you should see output like:
Output
Step 6: Publish to the MCP Registry
Finally, publish your server to the MCP Registry using themcp-publisher publish command:
Output
Output
Troubleshooting
| Error Message | Action |
|---|---|
| ”Registry validation failed for package” | Ensure your package includes the required validation information (e.g, mcpName property in package.json). |
| ”Invalid or expired Registry JWT token” | Re-authenticate by running mcp-publisher login github. |
| ”You do not have permission to publish this server” | Your authentication method doesn’t match your server’s namespace format. With GitHub auth, your server name must start with io.github.your-username/. |
Next Steps
- Learn about support for other package types.
- Learn about support for remote servers.
- Learn how to use other authentication methods, such as DNS authentication which enables custom domains for server name prefixes.
- Learn how to automate publishing with GitHub Actions.