Skip to content

ci: publish to the MCP Registry after PyPI on each release - #104

Merged
JeanExtreme002 merged 1 commit into
mainfrom
ci/mcp-registry-publish
Oct 2, 2026
Merged

JeanExtreme002 merged 1 commit into
mainfrom
ci/mcp-registry-publish

Conversation

@JeanExtreme002

Copy link
Copy Markdown
Owner

Publishing to the MCP Registry used to be a manual mcp-publisher login github + publish after every PyPI release (3.0.2 was published that way). This adds it to publish.yml, so a GitHub release now ships to both.

The new mcp-registry job

It runs with needs: publish, because the registry validates the listing against PyPI: the README's mcp-name marker and the version that server.json pins.

  1. Check the release against server.json. It fails if the tag isn't v + server.json's version, so a mismatched listing is never published. tests/mcp_server/test_registry.py already keeps server.json equal to __version__.
  2. Wait for PyPI. PyPI's JSON API can lag the upload, so the job polls it (up to 10 minutes) until that version's description carries the marker.
  3. Install mcp-publisher v1.8.1. It's pinned instead of latest, so a new CLI release can't change publishing unnoticed.
  4. mcp-publisher login github-oidc + publish. The workflow's OIDC token proves the repo belongs to JeanExtreme002, which owns the io.github.JeanExtreme002/* namespace. No secret is stored. The job has id-token: write and contents: read only.

The workflow's display name is now Publish to PyPI and the MCP Registry. PyPI trusted publishing matches the file (publish.yml) and the pypi environment, neither of which changed.

Checked locally

  • actionlint passes, shellcheck included.
  • The tag check passes on v3.0.2 and fails on v3.0.3.
  • The PyPI wait condition is true for 3.0.2 and false for 3.0.1, which has no marker.
  • The v1.8.1 linux_amd64 asset downloads and lists github-oidc among its login methods.

The OIDC login itself can only run on a real release; 3.0.2 is already in the registry, so the next release is the first run.

@codecov

codecov Bot commented Oct 2, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 89.89%. Comparing base (31d31f1) to head (54fc973).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##             main     #104   +/-   ##
=======================================
  Coverage   89.89%   89.89%           
=======================================
  Files          41       41           
  Lines        3682     3682           
=======================================
  Hits         3310     3310           
  Misses        372      372           
Flag Coverage Δ
Linux-py3.10 64.94% <ø> (ø)
Linux-py3.11 64.94% <ø> (ø)
Linux-py3.12 64.94% <ø> (ø)
Linux-py3.13 64.94% <ø> (ø)
Windows-py3.10 66.51% <ø> (ø)
Windows-py3.11 66.51% <ø> (ø)
Windows-py3.12 66.51% <ø> (ø)
Windows-py3.13 66.51% <ø> (ø)
macOS-py3.12 87.22% <ø> (ø)
mcp-Linux-py3.12 91.15% <ø> (ø)
mcp-Windows-py3.12 91.35% <ø> (ø)
mcp-macOS-py3.12 91.45% <ø> (ø)
speed-Linux-py3.12 66.54% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@JeanExtreme002
JeanExtreme002 merged commit 1e1999d into main Oct 2, 2026
19 checks passed
@github-actions
github-actions Bot deleted the ci/mcp-registry-publish branch October 2, 2026 02:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant