Back to .md Directory

Deployment Guide

Walks through publishing a server to the MCP Registry using the official mcp-publisher CLI tool.

May 2, 2026
0 downloads
2 views
ai mcp
View source

What this file does

Walks through publishing a server to the MCP Registry using the official mcp-publisher CLI tool.

When to use it

  • You need to publish a server to the MCP Registry for the first time
  • You are updating an existing MCP server version and re-publishing
  • You encounter permission or schema errors during MCP Registry publishing

Assumes this stack

MCP Registrymcp-publisherGitHubDockerOCI

Deployment Guide

This guide covers publishing CodeAlive MCP to the MCP Registry.

Prerequisites

Install mcp-publisher

Build from source (documented install methods like brew install and install.sh are not available):

git clone https://github.com/modelcontextprotocol/registry.git
cd registry
make publisher

The binary will be at ./bin/mcp-publisher.

GitHub org membership (for org repos)

Your organization membership must be public:

  1. Go to https://github.com/orgs/CodeAlive-AI/people
  2. Find your username and set visibility to "Public"

Publishing to MCP Registry

1. Login with GitHub

./bin/mcp-publisher login github

Follow the device authorization flow:

  1. Go to the URL shown (e.g., https://github.com/login/device)
  2. Enter the code displayed
  3. Authorize the application

2. Update server.json

Before publishing, update server.json:

  1. Bump the version field to match your release
  2. Use the latest schema (currently 2025-12-11)
  3. Update package identifier with new version tag

Example server.json structure:

{
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "name": "io.github.CodeAlive-AI/codealive-mcp",
  "version": "0.4.7",
  ...
  "packages": [
    {
      "registryType": "oci",
      "identifier": "ghcr.io/codealive-ai/codealive-mcp:0.4.7",
      "runtimeHint": "docker",
      ...
    }
  ]
}

Important notes:

  • OCI packages must NOT have a separate version field inside the package object - the version is embedded in the identifier tag
  • Schema version must be current (check changelog)

3. Publish

cd /path/to/codealive-mcp
/path/to/registry/bin/mcp-publisher publish

On success:

Publishing to https://registry.modelcontextprotocol.io...
✓ Successfully published
✓ Server io.github.CodeAlive-AI/codealive-mcp version 0.4.7

Troubleshooting

"not authenticated"

Re-run login:

./bin/mcp-publisher login github

"403: your GitHub account doesn't have permission"

Make your organization membership public:

  1. Go to https://github.com/orgs/CodeAlive-AI/people
  2. Find your username
  3. Change visibility to "Public"
  4. Re-login and try again

"deprecated schema detected"

Update $schema in server.json to the current version. Check the migration checklist.

"OCI packages must not have 'version' field"

Remove the version field from inside the packages array. The version should only appear in the identifier tag (e.g., ghcr.io/codealive-ai/codealive-mcp:0.4.7).

Version Guidelines

  • Patch (0.4.6 → 0.4.7): Bug fixes, minor improvements
  • Minor (0.4.0 → 0.5.0): New features, enhancements
  • Major (0.x.x → 1.0.0): Breaking changes, major releases

Related Resources

What's inside

5 sections: prerequisites, publishing steps, troubleshooting, version guidelines, related resources. 4 code blocks, 1 JSON example.

Change this for your project

  • Replace CodeAlive-AI with your GitHub org or username
  • Replace io.github.CodeAlive-AI/codealive-mcp with your server name
  • Replace ghcr.io/codealive-ai/codealive-mcp with your OCI package identifier
  • Replace 0.4.7 with your current version

Where it goes

Keep it in your repository where the agent or team that needs it will read it.

Worth borrowing

  • Using a dedicated publisher CLI for registry login and upload
  • Embedding version in the OCI identifier tag rather than a separate field
  • Providing a troubleshooting section with exact error messages and fixes

Related Documents