This document describes how the mcpbridge-wrapper package is published to the MCP Registry.
The project uses an automated CI/CD approach via GitHub Actions to publish to the MCP Registry. This is the recommended approach over manual publishing.
Git Tag Push (v*)
│
▼
┌─────────────────────┐
│ GitHub Actions │
│ Workflow Starts │
└─────────────────────┘
│
├──► Build Python Package
│
├──► Publish to PyPI (via OIDC)
│
├──► Install mcp-publisher CLI
│
├──► Authenticate with MCP Registry (GitHub OIDC)
│
├──► Validate server.json
│
└──► Publish to MCP Registry
The MCP server manifest file that describes the package to the registry:
- Name:
io.github.SoundBlaster/xcode-mcpbridge-wrapper - Package Type: PyPI
- Runtime: Uses
uvxfor execution - Schema: Validated against official MCP server schema v2025-12-11
GitHub Actions workflow that automates publishing:
- Triggers on git tags starting with
v(e.g.,v1.0.0) - Also supports manual triggering via
workflow_dispatch - Uses GitHub OIDC for authentication (no secrets needed)
- Publishes to both PyPI and MCP Registry
Added the required mcp-name comment for PyPI package verification:
<!-- mcp-name: io.github.soundblaster/mcpbridge-wrapper -->The repository must be configured with:
- Trusted Publisher setup in PyPI (recommended over API tokens)
- Go to https://pypi.org/manage/account/publishing/ and add a new publisher:
- PyPI Project Name:
mcpbridge-wrapper - Owner:
SoundBlaster - Repository:
XcodeMCPWrapper - Workflow:
publish-mcp.yml
- PyPI Project Name:
No additional secrets needed! The workflow uses GitHub OIDC for authentication.
Use the helper to update all required version fields together:
# Preview changes only
python scripts/publish_helper.py 0.4.0 --dry-run
# Apply changes
python scripts/publish_helper.py 0.4.0Or via Makefile:
make bump-version VERSION=0.4.0 DRY_RUN=1
make bump-version VERSION=0.4.0The helper updates:
pyproject.toml→[project].versionserver.json→ top-levelversionserver.json→packages[*].version
It also prints the next release commands (git add, git commit, git tag, git push) aligned with this guide.
-
Update version (recommended: helper script):
python scripts/publish_helper.py 0.4.0
-
Commit and push:
git add pyproject.toml server.json git commit -m "Bump version to 0.4.0" git push -
Create and push a tag:
git tag v0.4.0 git push origin v0.4.0
-
Watch the workflow run:
- Go to GitHub Actions tab
- The workflow will automatically publish to PyPI and MCP Registry
If you need to publish manually:
-
Install
mcp-publisher:brew install mcp-publisher # or 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
-
Authenticate:
mcp-publisher login github
-
Validate:
mcp-publisher validate server.json
-
Publish:
mcp-publisher publish
The server.json file has been validated against the official MCP schema:
# Using check-jsonschema (installed during setup)
curl -sL "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json" -o /tmp/server.schema.json
check-jsonschema --schemafile /tmp/server.schema.json server.jsonResult: ✅ Validation passed
The MCP Registry verifies PyPI package ownership by checking for the mcp-name comment in the README. This has been added to the README.md file.