Skip to content

Add MCP Registry support with MCPB packaging - #227

Merged
deverman merged 2 commits into
masterfrom
cursor/add-mcp-registry-support-6e51
Oct 28, 2026
Merged

deverman merged 2 commits into
masterfrom
cursor/add-mcp-registry-support-6e51

Conversation

@deverman

Copy link
Copy Markdown
Owner

Summary

This PR prepares FocusRelay for publication to the official MCP Registry at registry.modelcontextprotocol.io. FocusRelay will be distributed as an MCPB (MCP Bundle) package via GitHub Releases—the recommended approach for macOS-only Swift binaries.

Changes Made

1. Added MCPB Bundle Support

  • mcpb-manifest.json: Manifest template for the MCP Bundle format
    • Describes FocusRelay as a binary-type server
    • Includes metadata: name, description, author, repository, compatibility (macOS only)
    • Configured for stdio transport

2. Created Packaging Infrastructure

  • scripts/package-mcpb.sh: Automated MCPB bundle creation
    • Packages the focusrelay binary, FocusRelayBridge.omnijs plugin, and README.md
    • Generates manifest.json with the correct version
    • Creates a ZIP archive with .mcpb extension
    • Calculates SHA256 hash for integrity verification

3. Updated Release Workflow

  • .github/workflows/release.yml: Now builds and uploads MCPB bundles
    • Runs package-mcpb.sh alongside the existing tarball packaging
    • Uploads both .mcpb and .mcpb.sha256 files to GitHub releases
    • Existing Homebrew tarball packaging is unchanged

4. Added Registry Metadata

  • server.json: MCP Registry server definition
    • Namespace: io.github.deverman/focusrelay
    • Package type: mcpb (GitHub releases distribution)
    • Description: "Connect AI tools to OmniFocus on macOS to find, review, and safely update tasks and projects."
    • ⚠️ Note: fileSha256 is currently a placeholder (all zeros) and must be updated after creating a release

5. Added Documentation

  • docs/PUBLISHING_MCP_REGISTRY.md: Complete publishing guide
  • MCP_REGISTRY_SETUP.md: Quick-start checklist (this exact list below)

Why MCPB?

The MCP Registry supports several distribution methods (npm, PyPI, Docker/OCI, MCPB, etc.). MCPB is the right choice for FocusRelay because:

✅ Designed for prebuilt binaries distributed via GitHub Releases
✅ No need to publish to npm, PyPI, or other package registries
✅ Perfect for macOS-only native executables
✅ Already using GitHub Releases for Homebrew distribution
✅ Simple: just a ZIP containing the binary + manifest

The registry verifies the MCPB file exists and contains "mcp" in the URL (✓ FocusRelayMCP satisfies this).

Next Steps for Brent

🎯 Checklist

After this PR is merged, follow these steps to publish to the MCP Registry:

☐ 1. Create a New Release

Either push a version tag or use workflow dispatch:

git tag v0.13.0-beta
git push origin v0.13.0-beta

The workflow will automatically create the .mcpb file and upload it to the release.

☐ 2. Update server.json with the Real SHA256 Hash

After the release completes:

# Download the SHA256 checksum
curl -LO https://github.com/deverman/FocusRelayMCP/releases/download/v0.13.0-beta/focusrelay-0.13.0-beta.mcpb.sha256
cat focusrelay-0.13.0-beta.mcpb.sha256

Edit server.json:

  • Update version to "0.13.0-beta" (match the release)
  • Update packages[0].identifier URL to match the release version
  • Replace fileSha256 with the actual hash from the .sha256 file

Commit and push:

git add server.json
git commit -m "Update server.json for v0.13.0-beta release"
git push origin main

☐ 3. Install mcp-publisher CLI

# macOS/Linux
curl -L "https://github.com/modelcontextprotocol/registry/releases/latest/download/mcp-publisher_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher && sudo mv mcp-publisher /usr/local/bin/

# Or via Homebrew
brew install mcp-publisher

☐ 4. Authenticate with GitHub

mcp-publisher login github

Opens a browser for OAuth. This verifies you own the deverman namespace.

☐ 5. Validate server.json

mcp-publisher validate

Checks schema, version format, and package URL accessibility.

☐ 6. Publish to the Registry

mcp-publisher publish

This uploads the metadata to registry.modelcontextprotocol.io. The registry will:

  • Verify namespace ownership via GitHub
  • Verify the .mcpb file exists at the specified URL
  • Make FocusRelay discoverable in the official registry

For Future Releases

After the initial setup, publishing new versions is simple:

  1. Create a GitHub release (triggers .mcpb creation)
  2. Update server.json with the new version and SHA256
  3. Run mcp-publisher publish

Testing

You can test the MCPB packaging after merging:

  1. Create a release
  2. Download the .mcpb file
  3. Inspect its contents:
    unzip -l focusrelay-X.Y.Z.mcpb
  4. Should contain: manifest.json, focusrelay, FocusRelayBridge.omnijs/, README.md

References


Ready to merge! Everything is set up. After merging, just follow the checklist above to publish FocusRelay to the official MCP Registry.

Open in Web Open in Cursor 

cursoragent and others added 2 commits October 28, 2026 02:10
- Add server.json with MCPB package configuration for MCP Registry
- Create mcpb-manifest.json template for MCP Bundle format
- Add scripts/package-mcpb.sh to create MCPB bundles from releases
- Update release workflow to build and upload .mcpb files
- Add comprehensive publishing documentation

This prepares FocusRelay for publication to the official MCP Registry
at registry.modelcontextprotocol.io. The server will be distributed as
an MCPB bundle via GitHub Releases.

Note: server.json contains a placeholder SHA256 hash that must be
updated with the actual hash after creating a release. See
MCP_REGISTRY_SETUP.md for complete instructions.

Co-authored-by: Brent Deverman <brent@deverman.org>
Co-authored-by: Cursor <cursoragent@cursor.com>
@deverman
deverman merged commit 52a14f0 into master Oct 28, 2026
4 checks passed
@deverman
deverman deleted the cursor/add-mcp-registry-support-6e51 branch October 28, 2026 02:53
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