feat: Add MCPB bundle for Claude Desktop installation#1837
feat: Add MCPB bundle for Claude Desktop installation#1837bryankthompson wants to merge 1 commit intogithub:mainfrom
Conversation
Add Model Context Protocol Bundle (MCPB) support enabling single-click installation in Claude Desktop and other MCP hosts. Changes: - Add manifest.json with server configuration and user_config for all env vars - Add icon.png for display in Claude Desktop - Add .mcpbignore for build exclusions - Add pre-built github-mcp-server-0.28.1.mcpb bundle (31.4MB) Includes binaries for all 6 platform/architecture variants: - darwin-arm64, darwin-x64 - linux-arm64, linux-x64 - win32-arm64, win32-x64 User-configurable options exposed: - GitHub Personal Access Token (required) - Toolsets selection - GitHub Enterprise host - Read-only mode - Dynamic toolsets Addresses github#1470 🤖 Generated with [Claude Code](https://claude.com/claude-code)
There was a problem hiding this comment.
Pull request overview
This PR adds MCPB (Model Context Protocol Bundle) packaging to enable single-click installation of the GitHub MCP Server in Claude Desktop and other MCP hosts. The bundle format is similar to browser or VS Code extensions, packaging the server binaries and configuration into a single distributable file.
Changes:
- Added
manifest.jsonwith MCPB metadata, server configuration, and user-configurable options - Added
icon.pngfor visual display in Claude Desktop - Added
.mcpbignoreto exclude unnecessary files from the bundle - Added pre-built
github-mcp-server-0.28.1.mcpbbundle (31.4MB)
Reviewed changes
Copilot reviewed 2 out of 4 changed files in this pull request and generated 5 comments.
| File | Description |
|---|---|
| manifest.json | MCPB manifest defining server metadata, binary paths, platform support, environment variables, and user configuration schema |
| icon.png | PNG icon image for display in MCP host applications |
| .mcpbignore | Build exclusion rules specifying which files to omit from the bundle (source code, docs, CI configs, etc.) |
| "entry_point": "bin/darwin-x64/github-mcp-server", | ||
| "mcp_config": { | ||
| "command": "${__dirname}/bin/darwin-x64/github-mcp-server", | ||
| "args": ["stdio"], | ||
| "env": { | ||
| "GITHUB_PERSONAL_ACCESS_TOKEN": "${user_config.github_token}", | ||
| "GITHUB_TOOLSETS": "${user_config.github_toolsets}", | ||
| "GITHUB_HOST": "${user_config.github_host}", | ||
| "GITHUB_READ_ONLY": "${user_config.github_read_only}", | ||
| "GITHUB_DYNAMIC_TOOLSETS": "${user_config.github_dynamic_toolsets}" | ||
| }, | ||
| "platform_overrides": { | ||
| "win32": { | ||
| "command": "${__dirname}/bin/win32-x64/github-mcp-server.exe" | ||
| }, | ||
| "linux": { | ||
| "command": "${__dirname}/bin/linux-x64/github-mcp-server" | ||
| } | ||
| } |
There was a problem hiding this comment.
The platform_overrides configuration only handles x64 architectures but the PR description claims "All 6 variants included" (darwin-arm64, darwin-x64, linux-arm64, linux-x64, win32-arm64, win32-x64). The current configuration will fail on ARM64 systems because:
- The default entry_point (line 23) and command (line 25) point to darwin-x64
- platform_overrides only specify win32 and linux without architecture variants
- No overrides exist for ARM64 architectures on any platform
This means ARM64 users will either get an error or the wrong binary will be executed. You need to add architecture-specific overrides or use a more sophisticated platform detection mechanism that handles both OS and architecture combinations.
| { | ||
| "manifest_version": "0.3", | ||
| "name": "GitHub MCP Server", | ||
| "version": "0.28.1", |
There was a problem hiding this comment.
The version "0.28.1" appears to be hardcoded and may not match the actual release version. The project uses GoReleaser with version templating (see .goreleaser.yaml line 12 which sets version via ldflags), and server.json uses a VERSION template variable. Consider whether this version should be dynamically set during the build process to ensure consistency across all release artifacts, or document how this version should be maintained when new releases are created.
| "version": "0.28.1", | |
| "version": "VERSION", |
| "tools": [ | ||
| {"name": "get_me", "description": "Get current authenticated user"}, | ||
| {"name": "search_repositories", "description": "Search GitHub repositories"}, | ||
| {"name": "get_repository", "description": "Get repository details"}, | ||
| {"name": "list_issues", "description": "List issues in a repository"}, | ||
| {"name": "create_issue", "description": "Create a new issue"}, | ||
| {"name": "list_pull_requests", "description": "List pull requests"}, | ||
| {"name": "create_pull_request", "description": "Create a pull request"} | ||
| ] |
There was a problem hiding this comment.
The tools list only includes 7 sample tools, which is incomplete. According to the project documentation, the GitHub MCP Server provides many more tools across multiple toolsets (repos, issues, pull_requests, users, actions, code_security, etc.). While this might be intentional to show representative examples, it creates a discrepancy between what users see in the manifest and what's actually available. Consider either including all tools or clarifying in the description that this is a partial list.
| "github_host": { | ||
| "type": "string", | ||
| "title": "GitHub Host", | ||
| "description": "For GitHub Enterprise Server (e.g., github.mycompany.com). Leave empty for github.com", |
There was a problem hiding this comment.
The description for the GitHub Host configuration could be more specific. The format shown "github.mycompany.com" is missing the required "https://" prefix that the actual server code expects (as documented in the environment variables section). The description should specify the full format: "https://github.mycompany.com" to prevent user configuration errors.
| "description": "For GitHub Enterprise Server (e.g., github.mycompany.com). Leave empty for github.com", | |
| "description": "For GitHub Enterprise Server (must include \"https://\", e.g., https://github.mycompany.com). Leave empty for github.com", |
| "github_token": { | ||
| "type": "string", | ||
| "title": "GitHub Personal Access Token", | ||
| "description": "Create at github.com/settings/tokens with repo scope", |
There was a problem hiding this comment.
The GitHub Personal Access Token description "Create at github.com/settings/tokens with repo scope" is incomplete. It doesn't mention that different scopes may be required depending on which toolsets are enabled. For example, the actions toolset requires "actions" scope, code_security requires "security_events" scope, etc. Consider providing a link to comprehensive documentation or listing the common scopes needed.
| "description": "Create at github.com/settings/tokens with repo scope", | |
| "description": "Create at github.com/settings/tokens. At minimum use the repo scope; additional scopes may be required for some toolsets (e.g., actions, security_events). See the README for full scope requirements.", |
|
Until it works cross platform not certain we're going to run with it, but thank you for taking a look. |
|
Thanks for the feedback @SamMorrowDrums! I saw issue #63 and understand the interest in alternative approaches for binary distribution. The current MCPB spec uses How it handles architecture:
Testing:
Bundle size: ~31MB (includes all platform variants) Let me know if you'd like to move forward with this, or if you'd prefer to hold off. Happy to address the other review feedback either way. |
|
@triepod-ai thanks for breaking it down, I mean that's probably tolerable. I do want to see spec improvements, but we can reasonably consider adding this to release artefacts. I'll take a look during the week. |
Summary
Adds Model Context Protocol Bundle (MCPB) support enabling single-click installation in Claude Desktop and other MCP hosts.
Addresses #1470
Changes
manifest.jsonwith server configurationicon.pngfor display in Claude Desktop.mcpbignorefor build exclusionsgithub-mcp-server-0.28.1.mcpbbundle (31.4MB)What is MCPB?
MCPB (MCP Bundle) is a packaging format that enables easy distribution of MCP servers. Similar to browser extensions (.crx) or VS Code extensions (.vsix), users can install the server with a single click.
Bundle Details
Size: 31.4MB (compressed), 89.3MB (unpacked)
Platform support: All 6 variants included:
User-configurable options (via Claude Desktop installation dialog):
Testing
mcpb validate)mcpb pack)Installation
Download the
.mcpbfile and double-click to install in Claude Desktop.Building the Bundle
If you prefer to build from source:
npx @anthropic-ai/mcpb validate manifest.json npx @anthropic-ai/mcpb pack .🤖 Generated with Claude Code