Skip to content

Commit 7e2cb55

Browse files
authored
ci: add MCP Registry publish workflow (OIDC) to sync io.github.heznpc/airmcp (#290)
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.
1 parent f6809eb commit 7e2cb55

1 file changed

Lines changed: 52 additions & 0 deletions

File tree

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: Publish to MCP Registry
2+
3+
# Syncs the server METADATA (server.json) to the official MCP Registry
4+
# (registry.modelcontextprotocol.io). The npm package `airmcp` itself is
5+
# published by the existing release pipeline; this workflow only publishes the
6+
# manifest, which the registry verifies against the already-published npm
7+
# package (package.json carries the matching `mcpName: io.github.heznpc/airmcp`).
8+
#
9+
# Why this exists: the official registry had drifted — the only entry was the
10+
# pre-rename `io.github.heznpc/iconnect@0.1.1`, with no automation to update it,
11+
# so `io.github.heznpc/airmcp` was never published there. Downstream aggregators
12+
# (Glama, scorecards, directories) scrape the registry, so the stale name
13+
# propagated. This keeps the airmcp entry in sync from now on.
14+
#
15+
# Auth: GitHub OIDC proves this repo owns the io.github.heznpc/* namespace — no
16+
# secret required (`id-token: write` is the only permission needed).
17+
#
18+
# Triggers:
19+
# - workflow_dispatch: run once now (Actions tab → Run workflow) to publish the
20+
# CURRENT server.json version and unstick the iconnect@0.1.1 drift.
21+
# - release published: keep the registry in sync on every future release.
22+
# server.json's version is kept current by scripts/sync-version.mjs, so the
23+
# released commit always carries the right version. If a release fires before
24+
# the matching npm version is live, mcp-publisher fails loudly and the run is
25+
# simply re-triggerable via workflow_dispatch — it never drifts silently.
26+
27+
on:
28+
workflow_dispatch:
29+
release:
30+
types: [published]
31+
32+
jobs:
33+
publish:
34+
runs-on: ubuntu-latest
35+
permissions:
36+
contents: read
37+
id-token: write # OIDC auth to the MCP Registry — no secret needed
38+
steps:
39+
- name: Checkout
40+
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
41+
42+
- name: Install mcp-publisher (pinned)
43+
env:
44+
MCP_PUBLISHER_VERSION: v1.7.9
45+
run: |
46+
curl -fsSL "https://github.com/modelcontextprotocol/registry/releases/download/${MCP_PUBLISHER_VERSION}/mcp-publisher_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher
47+
48+
- name: Authenticate to MCP Registry (GitHub OIDC)
49+
run: ./mcp-publisher login github-oidc
50+
51+
- name: Publish server.json
52+
run: ./mcp-publisher publish

0 commit comments

Comments
 (0)