ci: add MCP Registry publish workflow (OIDC) to sync io.github.heznpc/airmcp#290
Merged
Conversation
…/airmcp The official MCP Registry (registry.modelcontextprotocol.io) had drifted: the only entry was the pre-rename `io.github.heznpc/iconnect@0.1.1`, and `io.github.heznpc/airmcp` was never published there because nothing automated it — someone hand-published iconnect once in the iConnect era and there was no follow-up. Downstream aggregators (Glama, mcp-scorecard, directories) scrape the registry, so the dead `iconnect` name kept propagating. server.json and package.json are already correct and matching (`io.github.heznpc/airmcp@2.12.0`, with the required `mcpName`); the only missing piece was a publisher. Add `.github/workflows/publish-registry.yml`: - Auth via GitHub OIDC (`id-token: write`) — proves this repo owns the io.github.heznpc/* namespace, no secret required. - Pinned to repo convention: actions/checkout by SHA, mcp-publisher v1.7.9 (not `latest`). - Only publishes the manifest; the npm package is still published by the existing release pipeline. The registry verifies the manifest against the already-published npm package. - Triggers: workflow_dispatch (run once now to unstick the drift and publish the current version) + release published (keep it in sync going forward; scripts/sync-version.mjs already keeps server.json's version current). Does NOT fire on PR merge, so merging this only adds the capability — the first publish is an explicit manual dispatch. Follow-up (operator-side, needs maintainer auth, not in this PR): deprecate the old npm zombies (`@heznpc/imcp`, `iconnect-mcp`) and the registry's stale `io.github.heznpc/iconnect` entry; consolidate the Glama listing off the `iconnect` slug.
heznpc
added a commit
that referenced
this pull request
Jun 10, 2026
…on) (#291) The Publish to MCP Registry workflow (#290) ran on dispatch and got past checkout + mcp-publisher install + GitHub OIDC auth, then failed at publish with a 422 from registry.modelcontextprotocol.io: validation failed — body.description "expected length <= 100" server.json's description was ~175 chars. Shortened to 96 chars, keeping the exact "272 tools across 29 modules" substring that scripts/count-stats.mjs syncs (stats:check still reports server.json ok). OIDC namespace auth already works, so the next dispatch on this commit should publish io.github.heznpc/airmcp.
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.
The official MCP Registry (registry.modelcontextprotocol.io) had drifted: the
only entry was the pre-rename
io.github.heznpc/iconnect@0.1.1, andio.github.heznpc/airmcpwas never published there because nothing automatedit — someone hand-published iconnect once in the iConnect era and there was no
follow-up. Downstream aggregators (Glama, mcp-scorecard, directories) scrape the
registry, so the dead
iconnectname kept propagating.server.json and package.json are already correct and matching
(
io.github.heznpc/airmcp@2.12.0, with the requiredmcpName); the only missingpiece was a publisher. Add
.github/workflows/publish-registry.yml:id-token: write) — proves this repo owns theio.github.heznpc/* namespace, no secret required.
(not
latest).existing release pipeline. The registry verifies the manifest against the
already-published npm package.
current version) + release published (keep it in sync going forward;
scripts/sync-version.mjs already keeps server.json's version current). Does NOT
fire on PR merge, so merging this only adds the capability — the first publish
is an explicit manual dispatch.
Follow-up (operator-side, needs maintainer auth, not in this PR): deprecate the
old npm zombies (
@heznpc/imcp,iconnect-mcp) and the registry's staleio.github.heznpc/iconnectentry; consolidate the Glama listing off theiconnectslug.