Skip to content

Conversation

@triepod-ai
Copy link
Contributor

@triepod-ai triepod-ai commented Jan 19, 2026

Summary

Adds Model Context Protocol Bundle (MCPB) support enabling single-click installation in Claude Desktop and other MCP hosts.

Changes

  • Added manifest.json with uvx-based server configuration (downloads from PyPI)
  • Added icon.png (Coplay avatar)
  • Added .mcpbignore for build exclusions
  • Added pre-built unity-mcp.mcpb bundle for direct installation

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.

Testing

  • Bundle validates successfully (mcpb validate)
  • Bundle packs successfully (mcpb pack)
  • Tested installation in Claude Desktop
  • Server connects to Unity Editor
  • All 29 tools functional (tested: console, scene hierarchy, asset search, test runner)

Installation

Download the unity-mcp.mcpb file and double-click to install in Claude Desktop.

Note: Requires the Unity MCP plugin installed in Unity Editor (see README for setup).

Building the Bundle

If you prefer to build from source:

npx @anthropic-ai/mcpb pack .

🤖 Generated with Claude Code

Summary by Sourcery

Add MCP bundle metadata for the Unity MCP server to support installation via MCP hosts.

New Features:

  • Introduce an MCP manifest describing the Unity MCP server, its Python entrypoint, and its MCP tool capabilities for distribution as a bundle.

Enhancements:

  • Add MCP bundle ignore configuration to control which files are included when packaging the Unity MCP server.

Summary by CodeRabbit

  • New Features

    • Introduced MCP extension manifest defining the Unity project automation extension with 28 available tools.
  • Chores

    • Added packaging configuration file to optimize distribution artifacts.

✏️ Tip: You can customize this high-level summary in your review settings.

Add Model Context Protocol Bundle (MCPB) support enabling single-click
installation in Claude Desktop and other MCP hosts.

Changes:
- Add manifest.json with uvx-based server configuration
- Add icon.png for display in Claude Desktop
- Add .mcpbignore for build exclusions
- Add pre-built unity-mcp.mcpb bundle

🤖 Generated with [Claude Code](https://claude.com/claude-code)
@sourcery-ai
Copy link
Contributor

sourcery-ai bot commented Jan 19, 2026

Reviewer's Guide

Adds a Model Context Protocol Bundle (MCPB) manifest and related packaging files so the Unity MCP server can be installed as a one-click bundle in Claude Desktop and other MCP hosts, using an uvx-based Python server entrypoint and enumerating all available tools.

Sequence diagram for MCPB-based Unity MCP installation and launch

sequenceDiagram
  actor User
  participant ClaudeDesktop
  participant MCPBundle
  participant MCPServerPython
  participant PyPI
  participant UnityEditor

  User->>ClaudeDesktop: double_click unity_mcp_mcpb
  ClaudeDesktop->>MCPBundle: read manifest_json
  MCPBundle-->>ClaudeDesktop: server_config(type_python, entry_point, uvx_command)
  ClaudeDesktop->>ClaudeDesktop: register tools_from_manifest

  User->>ClaudeDesktop: select Unity_MCP_server
  ClaudeDesktop->>MCPServerPython: launch uvx --from mcpforunityserver mcp_for_unity
  MCPServerPython->>PyPI: download mcpforunityserver (if_needed)
  PyPI-->>MCPServerPython: package_files
  MCPServerPython->>UnityEditor: connect_via_Unity_MCP_plugin
  UnityEditor-->>MCPServerPython: connection_ready
  MCPServerPython-->>ClaudeDesktop: mcp_server_ready_with_29_tools

  User->>ClaudeDesktop: invoke_tool manage_gameobject
  ClaudeDesktop->>MCPServerPython: mcp_tool_request manage_gameobject
  MCPServerPython->>UnityEditor: apply_gameobject_operation
  UnityEditor-->>MCPServerPython: operation_result
  MCPServerPython-->>ClaudeDesktop: tool_response
  ClaudeDesktop-->>User: show_result
Loading

File-Level Changes

Change Details Files
Introduce MCPB manifest describing the Unity MCP server, its installation method, and exposed tools for Claude Desktop and other MCP hosts.
  • Define bundle metadata including name, version, description, author, repository, homepage, documentation, and support URLs.
  • Configure the server section to use a Python entry point with an uvx-based command that installs and runs the server from the mcpforunityserver PyPI package.
  • Declare icon path and enumerate all exposed MCP tools with stable names and descriptions for host-side discovery.
manifest.json
Add MCPB packaging ignore file to control what is included in the built bundle.
  • Create an .mcpbignore file (currently empty in the diff) as a placeholder for excluding build artifacts or unnecessary files from the MCP bundle.
.mcpbignore
Add bundle assets for direct installation and packaging (icon and prebuilt .mcpb).
  • Add an icon asset referenced by the manifest to brand the bundle in MCP hosts.
  • Include a prebuilt unity-mcp.mcpb bundle to allow direct double-click installation without requiring local build steps.
icon.png
unity-mcp.mcpb

Possibly linked issues

  • #MCP server running but tools not injected into conversations (Claude Desktop v1.0.2339): PR adds an MCPB bundle/manifest so Claude Desktop recognizes unityMCP as an installed extension and exposes tools.

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 19, 2026

📝 Walkthrough

Walkthrough

Two new configuration files are introduced at the project root: .mcpbignore defines packaging exclusions for server assets, tooling, and artifacts, while manifest.json specifies the Unity MCP extension metadata, server configuration, and available tools catalog without introducing functional code changes.

Changes

Cohort / File(s) Summary
Project Configuration
.mcpbignore
New ignore manifest with categorized patterns for excluding sources, documentation, tooling, Docker artifacts, Python caches, environment files, git metadata, and lock files from MCPB packaging
Extension Manifest
manifest.json
New manifest defining Unity MCP extension with metadata (name, version, author, repository), Python server configuration (entry point at Server/src/main.py), and catalog of 28 tools for Unity project automation

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~5 minutes

Poem

🐰 Configuration files, so neat and tidy,
I've added patterns and manifests, very nifty!
MCPBIgnore excludes the clutter away,
While manifest maps tools for a productive day.
Setup complete! Now let's hop and play! 🎉

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title 'feat: Add MCPB bundle for Claude Desktop installation' directly and clearly describes the main change—adding MCPB bundle support for Claude Desktop installation, which matches the primary objective of the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

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

Hey - I've found 1 issue, and left some high level feedback:

  • The server.entry_point is set to Server/src/main.py while the actual launch is handled via uvx in mcp_config; if the entry point is unused for this server type, consider either aligning it with the real module or omitting it to avoid confusion for future maintainers.
  • The .mcpbignore file is currently empty; consider explicitly ignoring the generated .mcpb bundle and any build or tooling artifacts (e.g., node_modules, .venv, caches) to keep bundles minimal and reproducible.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- The `server.entry_point` is set to `Server/src/main.py` while the actual launch is handled via `uvx` in `mcp_config`; if the entry point is unused for this server type, consider either aligning it with the real module or omitting it to avoid confusion for future maintainers.
- The `.mcpbignore` file is currently empty; consider explicitly ignoring the generated `.mcpb` bundle and any build or tooling artifacts (e.g., `node_modules`, `.venv`, caches) to keep bundles minimal and reproducible.

## Individual Comments

### Comment 1
<location> `manifest.json:20-23` </location>
<code_context>
+  "icon": "icon.png",
+  "server": {
+    "type": "python",
+    "entry_point": "Server/src/main.py",
+    "mcp_config": {
+      "command": "uvx",
+      "args": ["--from", "mcpforunityserver", "mcp-for-unity"],
+      "env": {}
+    }
</code_context>

<issue_to_address>
**issue (bug_risk):** Clarify whether the server should be launched via entry_point or mcp_config to avoid conflicting definitions.

The manifest defines both a Python `entry_point` and an `mcp_config` using `uvx`, which may cause different hosts to choose different startup paths. Decide which mechanism should be canonical and remove the other to avoid inconsistent behavior across MCP clients.
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Comment on lines +20 to +23
"entry_point": "Server/src/main.py",
"mcp_config": {
"command": "uvx",
"args": ["--from", "mcpforunityserver", "mcp-for-unity"],
Copy link
Contributor

Choose a reason for hiding this comment

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

issue (bug_risk): Clarify whether the server should be launched via entry_point or mcp_config to avoid conflicting definitions.

The manifest defines both a Python entry_point and an mcp_config using uvx, which may cause different hosts to choose different startup paths. Decide which mechanism should be canonical and remove the other to avoid inconsistent behavior across MCP clients.

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.

1 participant