Skip to content

ci: publish server.json to the MCP Registry on release - #9

Merged
alamin-br merged 2 commits into
mainfrom
ci/release-registry
Oct 16, 2026
Merged

alamin-br merged 2 commits into
mainfrom
ci/release-registry

Conversation

@alamin-br

@alamin-br alamin-br commented Oct 15, 2026 •

Copy link
Copy Markdown
Collaborator

Publishing a GitHub release tagged v<version> runs the tests and checks from scripts/, confirms the tag matches server.json, skips if that version is already in the MCP Registry, and publishes with mcp-publisher (v1.8.1, checksum pinned). Same flow as supabase/mcp's release.yml. CHANGELOG.md starts at 0.1.1.

Setup before the first release

The registry lets us publish under io.baserow/* once we prove we control baserow.io with an Ed25519 key: the public key goes in a DNS TXT record, the private key in a repo secret.

  1. Generate the key. Needs OpenSSL 3; on macOS use Homebrew's (brew install openssl@3, then /opt/homebrew/opt/openssl@3/bin/openssl), since the system LibreSSL can't do Ed25519.
    openssl genpkey -algorithm Ed25519 -out mcp-registry-key.pem
  2. Print the TXT record value:
    echo "v=MCPv1; k=ed25519; p=$(openssl pkey -in mcp-registry-key.pem -pubout -outform DER | tail -c 32 | base64)"
  3. Add it as a TXT record on the apex baserow.io (not a subdomain like _mcp.baserow.io). Other TXT records on the apex can stay.
  4. Print the private key as hex (64 characters):
    openssl pkey -in mcp-registry-key.pem -noout -text | grep -A3 "priv:" | tail -n +2 | tr -d ' :\n'
  5. Save it as the repo secret MCP_REGISTRY_PRIVATE_KEY (Settings → Secrets and variables → Actions), or with gh secret set MCP_REGISTRY_PRIVATE_KEY -R baserow/baserow-mcp and paste it.
  6. Store mcp-registry-key.pem in the password manager and delete the local copy. Don't commit it.

To check the record before releasing: dig +short TXT baserow.io | grep MCPv1. To rotate the key, repeat the steps and remove the old TXT record; a stale one is tried first and can make login fail.

Releasing

  1. Update CHANGELOG.md and the version in every manifest (npm run check in scripts/ fails if they differ), and merge.
  2. Create a GitHub release with tag v0.1.1 on main. The workflow publishes server.json; check it at https://registry.modelcontextprotocol.io/v0/servers?search=io.baserow/baserow.

Ties the registry entry to a tagged release so it can't drift from the repo.
@alamin-br
alamin-br force-pushed the ci/release-registry branch from bfb3270 to 51d73aa Compare October 15, 2026 20:20
@bram2w
bram2w self-requested a review October 16, 2026 08:16

@bram2w bram2w left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All steps are done. You are welcome to merge the changes.

@alamin-br
alamin-br merged commit a7a4d3a into main Oct 16, 2026
1 check passed
@alamin-br
alamin-br deleted the ci/release-registry branch October 16, 2026 08:45
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.

2 participants