Skip to content

fix: resolve MCP registry publish race condition#21

Merged
shenxianpeng merged 1 commit into
mainfrom
bugfix/fix-mcp-registry-publish-race-condition
Jul 6, 2026
Merged

fix: resolve MCP registry publish race condition#21
shenxianpeng merged 1 commit into
mainfrom
bugfix/fix-mcp-registry-publish-race-condition

Conversation

@shenxianpeng

Copy link
Copy Markdown
Member

Problem

When a release is published, two workflows run concurrently:

  1. publish.yml — builds and uploads the Python package to PyPI
  2. publish-mcp-registry.yml — publishes server.json to the MCP Registry

The MCP Registry validates that the PyPI package (commit-check-mcp) exists before accepting the server entry. Since both workflows run in parallel, the MCP registry validation frequently gets a 404 because the PyPI upload hasn't finished yet.

Error from failed run

Error: publish failed: server returned status 400: ...
PyPI package 'commit-check-mcp' not found (status: 404)

Fix

Merged the MCP registry publishing as a dependent job (publish-mcp-registry with needs: publish) inside publish.yml. This guarantees the PyPI upload completes before the MCP Registry validation runs.

Job dependency chain

build → publish (PyPI) → publish-mcp-registry (MCP Registry)

Changes

  • .github/workflows/publish.yml — Added publish-mcp-registry job that runs after the PyPI publish job
  • .github/workflows/publish-mcp-registry.yml — Removed (functionality merged into publish.yml to avoid duplicate triggers)

…ish workflow

The MCP registry publish workflow (publish-mcp-registry.yml) ran
concurrently with the PyPI publish workflow on release events. The
MCP Registry validates that the PyPI package exists before accepting
the server.json, but due to the race condition it got a 404.

Fix by merging the MCP registry publishing as a dependent job
(needs: publish) into publish.yml, ensuring PyPI upload completes
before the MCP Registry validation runs. Removed the standalone
publish-mcp-registry.yml to avoid duplicate triggers.
@github-actions github-actions Bot added the bug Something isn't working label Jul 6, 2026
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (af15fe3) to head (e6ddd44).

Additional details and impacted files
@@            Coverage Diff            @@
##              main       #21   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            2         2           
  Lines          209       209           
=========================================
  Hits           209       209           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

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

@shenxianpeng shenxianpeng merged commit 8840323 into main Jul 6, 2026
7 checks passed
@shenxianpeng shenxianpeng deleted the bugfix/fix-mcp-registry-publish-race-condition branch July 6, 2026 19:49
@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@shenxianpeng, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 7 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: f4bc5b21-c6db-47ee-bbae-87df65cbb6da

📥 Commits

Reviewing files that changed from the base of the PR and between af15fe3 and e6ddd44.

📒 Files selected for processing (2)
  • .github/workflows/publish-mcp-registry.yml
  • .github/workflows/publish.yml
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch bugfix/fix-mcp-registry-publish-race-condition

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants