- Go to GitHub: Navigate to https://github.com/modelcontextprotocol/registry/releases
- Click "Draft a new release"
- Choose a tag: Click "Choose a tag" and type a new semantic version that follows the last one available (e.g.,
v1.0.0) - Generate notes: Click "Generate release notes" to auto-populate the name and description
- Publish: Click "Publish release"
The release workflow will automatically:
- Build binaries for 6 platforms (Linux, macOS, Windows × amd64, arm64)
- Create and push Docker images with
:latestand:X.Y.Ztags (note: no 'v' prefix) - Attach all artifacts to the GitHub release
- Generate checksums and signatures
- Docker images will be available at:
ghcr.io/modelcontextprotocol/registry:latest- Latest stable releaseghcr.io/modelcontextprotocol/registry:X.Y.Z- Specific release version (note: no 'v' prefix)
- Binaries can be downloaded from the GitHub release page
Releases do not automatically deploy to production. To deploy a release:
- Update
mcp-registry:imageTagindeploy/Pulumi.gcpProd.yamlto the desired version (e.g.,1.2.3- note: no 'v' prefix) - Commit and push the change to the
mainbranch (either through a PR or by pushing directly to main) - The deploy-production.yml workflow will automatically trigger and deploy the specified version
See the deployment documentation for more details.
Staging auto-deploys from main via deploy-staging.yml. It always runs the latest main branch code.
To rollback production, update deploy/Pulumi.gcpProd.yaml to the previous version and push.
Note: Rollbacks may not work as expected if the release included database migrations, since migrations are not automatically reversed.
The registry publishes different Docker image tags for different use cases:
:latest- Latest stable release (updated only on releases):X.Y.Z- Specific release versions (e.g.,:1.0.0- note: no 'v' prefix):main- Rolling tag updated on every push to main branch (continuous deployment):main-YYYYMMDD-sha- Specific development builds from main branch
Note: Git release tags include the 'v' prefix (e.g., v1.0.0), but Docker image tags follow the standard Docker convention and do not include the 'v' prefix (e.g., 1.0.0).
We use semantic versioning (SemVer):
v1.0.0- Major release with breaking changesv1.1.0- Minor release with new featuresv1.0.1- Patch release with bug fixes