Two levels of pure taxonomy carrying no information, and a 2-directory
cap leaves no room for them. Categories now sit directly under
linux_configuration/: features, fixes, utils, misc, fresh-install,
installers, diagnostics, gaming, boot_recovery, periodic_background, lib,
meta, tests. A script's own lib/ and tests/ are exempt from the cap, so
those stay put.
Depth violations 248 -> 139; roughly 40 of the remainder are inside
digital_wellbeing and hosts, deferred until the guard-lib repoint.
The moves are the easy half. What breaks is every path that counted
levels, and three classes of it had to be found by resolving paths rather
than reading diffs:
- 52 relative `source` lines for lib/common.sh and lib/android.sh. The
correct prefix differs per file: 40 were ../../ and 12 were ../../../,
so a blanket replace would have fixed one set and broken the other.
- REPO_ROOT in 7 fixes/lib/tests harnesses and setup_syncyomi_guard.sh,
each walking up four levels from a directory now two levels shallower.
This caused a real regression -- the fixes suite went red with
"log_warn: command not found" -- caught by running it and comparing
against the pre-move baseline worktree.
- conftest.py's sys.path entries, which took the pytest gate down with
14 collection errors, and the `# shellcheck source=` directives, which
took shellcheck down with SC1091.
16 symlinks in $HOME broke, including the entire i3blocks bar. All
repointed, and cpu_monitor/memory/disk/time/volume were run to confirm
they emit real output rather than merely resolving.
Verified: 1798 tests pass at 100% coverage, 8 of 9 lib/tests suites pass
(the ninth needs the coverage jail, identically at baseline), pre-commit
is clean, and the two untracked secret configs are still ignored after
their gitignore paths changed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PJrqKERAo5QUeEHWS5Asgp
8.0 KiB
How It Works
MCP for Unity connects your tools using two components:
- MCP for Unity Bridge: A Unity package running inside the Editor. (Installed via Package Manager).
- MCP for Unity Server: A Python server that runs locally, communicating between the Unity Bridge and your MCP Client. (Installed automatically by the package on first run or via Auto-Setup; manual setup is available as a fallback).
Installation ⚙️
Prerequisites
-
Python: Version 3.12 or newer. Download Python
-
Unity Hub & Editor: Version 2021.3 LTS or newer. Download Unity
-
uv (Python toolchain manager):
# macOS / Linux curl -LsSf https://astral.sh/uv/install.sh | sh # Windows (PowerShell) winget install --id=astral-sh.uv -e # Docs: https://docs.astral.sh/uv/getting-started/installation/ -
An MCP Client: : Claude Desktop | Claude Code | Cursor | Visual Studio Code Copilot | Windsurf | Others work with manual config
-
[Optional] Roslyn for Advanced Script Validation
For Strict validation level that catches undefined namespaces, types, and methods:
Method 1: NuGet for Unity (Recommended)
- Install NuGetForUnity
- Go to
Window > NuGet Package Manager - Search for
Microsoft.CodeAnalysis, select version 4.14.0, and install the package - Also install package
SQLitePCLRaw.coreandSQLitePCLRaw.bundle_e_sqlite3. - Go to
Player Settings > Scripting Define Symbols - Add
USE_ROSLYN - Restart Unity
Method 2: Manual DLL Installation
- Download Microsoft.CodeAnalysis.CSharp.dll and dependencies from NuGet
- Place DLLs in
Assets/Plugins/folder - Ensure .NET compatibility settings are correct
- Add
USE_ROSLYNto Scripting Define Symbols - Restart Unity
Note: Without Roslyn, script validation falls back to basic structural checks. Roslyn enables full C# compiler diagnostics with precise error reporting.
🚀 Arch Linux Quick Setup Script
If you're on Arch Linux and use Visual Studio Code as your MCP client, run the helper script in Bash/install_unity_mcp.sh to install the MCP server dependencies, clone the latest unity-mcp repository, and configure ~/.config/Code/User/mcp.json automatically:
chmod +x Bash/install_unity_mcp.sh
./Bash/install_unity_mcp.sh
The script requires sudo access for pacman and optionally uses yay or flatpak to install Unity Hub. After it finishes, continue with the Unity-side steps below to import the MCP for Unity Bridge package inside your project.
🌟 Step 1: Install the Unity Package
To install via Git URL
- Open your Unity project.
- Go to
Window > Package Manager. - Click
+->Add package from git URL.... - Enter:
https://github.com/CoplayDev/unity-mcp.git?path=/UnityMcpBridge - Click
Add. - The MCP server is installed automatically by the package on first run or via Auto-Setup. If that fails, use Manual Configuration (below).
To install via OpenUPM
- Install the OpenUPM CLI
- Open a terminal (PowerShell, Terminal, etc.) and navigate to your Unity project directory
- Run
openupm add com.coplaydev.unity-mcp
Note: If you installed the MCP Server before Coplay's maintenance, you will need to uninstall the old package before re-installing the new one.
🛠️ Step 2: Configure Your MCP Client
Connect your MCP Client (Claude, Cursor, etc.) to the Python server set up in Step 1 (auto) or via Manual Configuration (below).
Option A: Auto-Setup (Recommended for Claude/Cursor/VSC Copilot)
- In Unity, go to
Window > MCP for Unity. - Click
Auto-Setup. - Look for a green status indicator 🟢 and "Connected ✓". (This attempts to modify the MCP Client's config file automatically).
Client-specific troubleshooting
- VSCode: uses
Code/User/mcp.jsonwith top-levelservers.unityMCPand"type": "stdio". On Windows, MCP for Unity writes an absoluteuv.exe(prefers WinGet Links shim) to avoid PATH issues. - Cursor / Windsurf (help link): if
uvis missing, the MCP for Unity window shows "uv Not Found" with a quick [HELP] link and a "ChooseuvInstall Location" button. - Claude Code (help link): if
claudeisn't found, the window shows "Claude Not Found" with [HELP] and a "Choose Claude Location" button. Unregister now updates the UI immediately.
Option B: Manual Configuration
If Auto-Setup fails or you use a different client:
- Find your MCP Client's configuration file. (Check client documentation).
- Claude Example (macOS):
~/Library/Application Support/Claude/claude_desktop_config.json - Claude Example (Windows):
%APPDATA%\Claude\claude_desktop_config.json
- Claude Example (macOS):
- Edit the file to add/update the
mcpServerssection, using the exact paths from Step 1.
Click for Client-Specific JSON Configuration Snippets...
VSCode (all OS)
{
"servers": {
"unityMCP": {
"command": "uv",
"args": [
"--directory",
"<ABSOLUTE_PATH_TO>/UnityMcpServer/src",
"run",
"server.py"
],
"type": "stdio"
}
}
}
Linux:
{
"mcpServers": {
"UnityMCP": {
"command": "uv",
"args": [
"run",
"--directory",
"/home/YOUR_USERNAME/.local/share/UnityMCP/UnityMcpServer/src",
"server.py"
]
}
// ... other servers might be here ...
}
}
(Replace YOUR_USERNAME)
Usage ▶️
-
Open your Unity Project. The MCP for Unity package should connect automatically. Check status via Window > MCP for Unity.
-
Start your MCP Client (Claude, Cursor, etc.). It should automatically launch the MCP for Unity Server (Python) using the configuration from Installation Step 2.
-
Interact! Unity tools should now be available in your MCP Client.
Example Prompt:
Create a 3D player controller,Create a tic-tac-toe game in 3D,Create a cool shader and apply to a cube.
Troubleshooting ❓
Click to view common issues and fixes...
- Unity Bridge Not Running/Connecting:
- Ensure Unity Editor is open.
- Check the status window: Window > MCP for Unity.
- Restart Unity.
- MCP Client Not Connecting / Server Not Starting:
- Verify Server Path: Double-check the --directory path in your MCP Client's JSON config. It must exactly match the installation location:
- Windows:
%USERPROFILE%\AppData\Local\UnityMCP\UnityMcpServer\src - macOS:
~/Library/AppSupport/UnityMCP/UnityMcpServer\src - Linux:
~/.local/share/UnityMCP/UnityMcpServer\src
- Windows:
- Verify uv: Make sure
uvis installed and working (uv --version). - Run Manually: Try running the server directly from the terminal to see errors:
cd /path/to/your/UnityMCP/UnityMcpServer/src uv run server.py
- Verify Server Path: Double-check the --directory path in your MCP Client's JSON config. It must exactly match the installation location:
- Auto-Configure Failed:
- Use the Manual Configuration steps. Auto-configure might lack permissions to write to the MCP client's config file.