2.6 KiB
MCP for Unity - Developer Guide
| English | 简体中文 |
|---|
Contributing
Branch off beta to create PRs. The main branch is reserved for stable releases.
Before proposing major new features, please reach out to discuss - someone may already be working on it or it may have been considered previously. Open an issue or discussion to coordinate.
Local Development Setup
1. Point Unity to Your Local Server
For the fastest iteration when working on the Python server:
- Open Unity and go to Window > MCP for Unity
- Open Settings > Advanced Settings
- Set Server Source Override to your local
Server/directory path - Enable Dev Mode (Force fresh server install) - this adds
--refreshto uvx commands so your changes are picked up on every server start
2. Switch Package Sources
You may want to use the mcp_source.py script to quickly switch your Unity project between different MCP package sources [allows you to quickly point your personal project to your local or remote unity-mcp repo, or the live upstream (Coplay) versions of the unity-mcp package]:
python mcp_source.py
Options:
- Upstream main - stable release (CoplayDev/unity-mcp)
- Upstream beta - development branch (CoplayDev/unity-mcp#beta)
- Remote branch - your fork's current branch
- Local workspace - file: URL to your local MCPForUnity folder
After switching, open Package Manager in Unity and Refresh to re-resolve packages.
Running Tests
All major new features (and some minor ones) must include test coverage. It's so easy to get LLMs to write tests, ya gotta do it!
Python Tests
Located in Server/tests/:
cd Server
uv run pytest tests/ -v
Unity C# Tests
Located in TestProjects/UnityMCPTests/Assets/Tests/.
Using the CLI (requires Unity running with MCP bridge connected):
cd Server
# Run EditMode tests (default)
uv run python -m cli.main editor tests
# Run PlayMode tests
uv run python -m cli.main editor tests --mode PlayMode
# Run async and poll for results (useful for long test runs)
uv run python -m cli.main editor tests --async
uv run python -m cli.main editor poll-test <job_id> --wait 60
# Show only failed tests
uv run python -m cli.main editor tests --failed-only
Using MCP tools directly (from any MCP client):
run_tests(mode="EditMode")
get_test_job(job_id="<id>", wait_timeout=60)
Code Coverage
cd Server
uv run pytest tests/ --cov --cov-report=html
open htmlcov/index.html