Repository navigation
Make the MCP registry publish workflow runnable - #255
Merged
Merged
Conversation
The workflow has never published. Every run on 2025-09-10 failed and the push trigger was commented out; the live entry was published out of band the day before, so each push-triggered run was also republishing version 1.0.0, which the registry rejects. - Skip when server.json's version is already live, so re-enabling the push trigger cannot fail a merge that did not touch the version. - Install the published mcp-publisher binary instead of cloning the registry and building it with Go. - Derive the Ed25519 seed from the DER tail rather than parsing `openssl -text` output, and check it against the key published in DNS before attempting login, so a key mismatch fails with a message instead of a 401. - Drop the unused Node setup and id-token permission. DNS auth signs in process; OIDC would only authenticate an io.github.* namespace. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
robertjamesprior
marked this pull request as ready for review
October 16, 2026 18:15
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 925df1c. Configure here.
masnwilliams
approved these changes
Oct 19, 2026
This branch was successfully deployed
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.

publish-mcp.ymlhas never successfully published. It ran ten times on 2025-09-10, failed every time, and its push trigger was commented out with the note "Paused before we have a remote mcp server and already published it". Both halves of that note are now false, and the live registry entry has been stale since 2025-09-09.Why every run failed
The live entry was published 2025-09-09 18:04, out of band. Every one of the ten runs the next day was triggered by a push to
mainwithserver.jsonstill at version 1.0.0, and the registry rejects that:So the publish step could not have succeeded regardless of what the login step did. Run logs are expired, so I cannot confirm whether login was also failing, which is why this change hardens both.
Changes
server.json. This is what makes re-enabling the push trigger safe: a merge that does not touchversionis a no-op rather than a red build. The trigger is also pathed toserver.json.v1.8.1) instead of cloning the registry and runningmake publisher. Removes the Go toolchain, a full clone, and an unpinned dependency on that repo'smain.openssl pkey -textoutput with awk. For Ed25519 the 48-byte PKCS#8 DER ends with the 32-byte seed, which is exactly the 64 hex characterslogin dnswants.v=MCPv1record at theonkernel.comapex. A mismatch now fails with a message naming both keys instead of an opaque 401.id-token: write. Neither is used. DNS auth signs in process, andgithub-oidcwould only authenticate anio.github.*namespace, notcom.onkernel/*.Testing
Requires
MCP_PRIVATE_KEY, so login and publish are unverified end to end. Everything either side of them is verified:openssl pkey -puboutbyte for byte.rmb4S9RJozgGFvf91MZakyUlRNTIKjzXB6c8tAOiI9M=.1.0.0 -> 1.1.0, so the next run will publish rather than skip.mcp-publisher_linux_amd64.tar.gzcontainsmcp-publisherat the archive root and--versionexits 0.whoever dispatches this first should confirm
MCP_PRIVATE_KEYstill holds the base64 body of the PKCS#8 key whose public half is in DNS. If it does, the DNS pre-check passes and publishing should work. If it does not, the pre-check will say so in one line.Note
Medium Risk
Touches external registry publishing and DNS-authenticated signing secrets in CI; misconfiguration could block publishes or expose key-handling issues, though duplicate publishes are guarded and keys are masked.
Overview
Re-enables automated MCP registry publishing when
server.jsonchanges onmain, after the workflow had been paused and was failing on duplicate-version publishes.The workflow now queries the live registry and skips install/login/publish when the version in
server.jsonalready matches what is published, so routine merges do not fail. It installs the pinnedmcp-publisherrelease (v1.8.1) instead of building from the registry repo, derives the Ed25519 DNS login seed from the PKCS#8 secret, and validates that secret against the apexv=MCPv1TXT record before login. Unused Node.js setup andid-tokenpermissions are removed.Reviewed by Cursor Bugbot for commit a8c2a20. Bugbot is set up for automated code reviews on this repo. Configure here.