feat: publish to the MCP Registry on version tags#6
Merged
Conversation
Add a server.json (official 2025-12-11 schema, validated) describing the server under io.github.mashware/domain-memory, and an mcpName field in the server package so the registry can verify npm package ownership. Extend the existing tag-triggered release workflow to publish the metadata to registry.modelcontextprotocol.io after the npm publish: it syncs server.json's version to the tag, installs mcp-publisher, authenticates via GitHub OIDC (no secret, the io.github.mashware/* namespace is proven by the OIDC token) and publishes. The registry only stores metadata pointing at the npm package. The registry is in preview, so this flow may need updates.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Set up publishing to the official MCP Registry (
registry.modelcontextprotocol.io, currently in preview) so the server shows up in MCP client discovery, automated on version tags.server.json(repo root) — official2025-12-11schema,io.github.mashware/domain-memory, monoreposubfolder: packages/server, npm package with stdio transport. Validated against the official$schema(ajv) → valid.mcpNameinpackages/server/package.json— the npm package-ownership marker the registry checks; it must equalserver.json'sname, and does.release.yml(not a separate workflow): after the npm publish, it syncsserver.json's version to the tag, installsmcp-publisher, authenticates via GitHub OIDC, and publishes. Reuses theid-token: writepermission already present.Notes / decisions
mcpNameinpackage.json; themcp-name:README line is the PyPI/NuGet mechanism, so adding it here would be a non-load-bearing, confusing marker. A "available on the MCP Registry" mention makes sense after the first publish.github.com/mashware, sologin github-oidcauthorizes theio.github.mashware/*namespace from the OIDC token.Manual steps remaining (owner)
mcp-publisherand runmcp-publisher publish --dry-runfrom the repo root.package.json+server.jsonto the next version and push tagvX.Y.Z. That tag publishes npm and the registry in one run.Verification
server.jsonvalidates against the official schema;release.ymlis valid YAML; workspace typecheck clean; all tests green (CLI/server/web).