Conduit
A Unity Engine MCP server.
Ask AI about Conduit
Powered by Claude ยท Grounded in docs
I know everything about Conduit. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
โโโโโโโโโ โโโโโโโโ โโโโโโโ โโโโโโโโโ โโโ โโ โโ โโโ
โโโ โโโ โโโ โโโ โโโโโโโโโ โโโ โโโโ โโโ โโโ โโโ โโโโโโโโโโโ
โโโ โโ โโโ โโโ โโโ โโโ โโโ โโโ โโโ โโโ โโโโ โโโโโโโโ
โโโ โโโ โโโ โโโ โโโ โโโ โโโ โโโ โโโ โโโโ โโโ โ
โโโ โโโ โโโ โโโ โโโ โโโ โโโ โโโ โโโ โโโโ โโโ
โโโ โโ โโโ โโโ โโโ โโโ โโโ โโโ โโโ โโโ โโโ โโโ
โโโ โโโ โโโ โโโ โโโ โโโ โโโ โโโโ โโโ โโโ โโโ โโโ
โโโโโโโโโ โโโโโโโโ โโ โโ โโโโโโโโโ โโโโโโโโโ โโ โโโโโโ
A simple and fast MCP server for Unity.
A Unity MCP server that stays out of the way of your coding agent.
- Robust: survives crashes, restarts, assembly reloads, and handles multiple agents and Unity instances.
- Context-efficient: conserves the agent's context window and saves tokens. Small number of versatile tools.
- Simple setup: one Unity package, one server exe, editor config wizard. No dependencies, no pollution.
[!CAUTION] This package is WIP:
- No linux support
- Docs are incomplete
[!WARNING] Granting an AI agent access to Unity indirectly gives them escalated access to your machine. Have a resilient backup strategy, and make sure your work machine is resilient to data loss.
Installation
Add the package to your project by Git URL:
https://github.com/apkd/Conduit.git?path=/Conduit.Unity#release
You can also declare it directly in Packages/manifest.json:
"dependencies": {
"dev.tryfinally.conduit": "https://github.com/apkd/Conduit.git?path=/Conduit.Unity#release",
Automatic setup
[!TIP] The Unity package includes a wizard for setting up the MCP server. This downloads the server executable and configures your installed code editors.
Tools โ Conduit โ Setup MCP Server
[!CAUTION] (automatic setup and tutorial/docs coming soon)
Manual setup
Build and editor configuration instructions
You can either:
- Download the server executable from the releases page, or...
- Build it by running
dotnet publish,
Now configure your editor:
Codex
For a basic stdio setup, add this to config.toml:
stdio | Windows (Native)
[mcp_servers.unity]
command = "C:\\src\\Conduit\\Conduit.Server\\publish\\win-x64\\conduit.exe"
cwd = "C:\\src\\Conduit"
disabled_tools = []
tool_timeout_sec = 1800
enabled = true
stdio | Windows (WSL)
[mcp_servers.unity]
command = "/mnt/c/src/Conduit/Conduit.Server/publish/win-x64/conduit.exe"
cwd = "/mnt/c/src/Conduit"
disabled_tools = []
tool_timeout_sec = 1800
enabled = true
stdio | Linux
[mcp_servers.unity]
command = "/home/you/src/Conduit/Conduit.Server/publish/linux-x64/conduit"
cwd = "/home/you/src/Conduit"
disabled_tools = []
tool_timeout_sec = 1800
enabled = true
http
conduit --http [--port 5080] [--url http://127.0.0.1:5080]
codex mcp add unity --url http://127.0.0.1:5080
Approve tool calls
To avoid going insane from having to approve every tool call separately:
[mcp_servers.unity]
tools.discard_scenes.approval_mode = "approve"
tools.execute_code.approval_mode = "approve"
tools.find_missing_scripts.approval_mode = "approve"
tools.find_references_to.approval_mode = "approve"
tools.from_json_overwrite.approval_mode = "approve"
tools.get_dependencies.approval_mode = "approve"
tools.help.approval_mode = "approve"
tools.play.approval_mode = "approve"
tools.refresh_asset_database.approval_mode = "approve"
tools.restart.approval_mode = "approve"
tools.run_tests_editmode.approval_mode = "approve"
tools.run_tests_player.approval_mode = "approve"
tools.run_tests_playmode.approval_mode = "approve"
tools.save_scenes.approval_mode = "approve"
tools.screenshot.approval_mode = "approve"
tools.search.approval_mode = "approve"
tools.show.approval_mode = "approve"
tools.status.approval_mode = "approve"
tools.to_json.approval_mode = "approve"
Claude Code
Claude Code adds MCP servers with claude mcp add.
stdio | Windows (Native)
claude mcp add --transport stdio unity -- C:\src\Conduit\Conduit.Server\publish\win-x64\conduit.exe
stdio | Windows (WSL)
claude mcp add --transport stdio unity -- /mnt/c/src/Conduit/Conduit.Server/publish/win-x64/conduit.exe
stdio | Linux
claude mcp add --transport stdio unity -- /home/you/src/Conduit/Conduit.Server/publish/linux-x64/conduit
http
conduit --http [--port 5080] [--url http://127.0.0.1:5080]
claude mcp add --transport http unity http://127.0.0.1:5080
Cursor
Cursor uses mcp.json with a top-level mcpServers object. You can put it in ~/.cursor/mcp.json for a global setup or .cursor/mcp.json for a project-local setup.
stdio | Windows (Native)
{
"mcpServers": {
"unity": {
"command": "C:\\src\\Conduit\\Conduit.Server\\publish\\win-x64\\conduit.exe"
}
}
}
stdio | Windows (WSL)
{
"mcpServers": {
"unity": {
"command": "/mnt/c/src/Conduit/Conduit.Server/publish/win-x64/conduit.exe"
}
}
}
stdio | Linux
{
"mcpServers": {
"unity": {
"command": "/home/you/src/Conduit/Conduit.Server/publish/linux-x64/conduit"
}
}
}
http
conduit --http [--port 5080] [--url http://127.0.0.1:5080]
{
"mcpServers": {
"unity": {
"url": "http://127.0.0.1:5080"
}
}
}
Windsurf
Windsurf stores MCP servers in ~/.codeium/windsurf/mcp_config.json.
stdio | Windows (Native)
{
"mcpServers": {
"unity": {
"command": "C:\\src\\Conduit\\Conduit.Server\\publish\\win-x64\\conduit.exe",
"args": []
}
}
}
stdio | Windows (WSL)
{
"mcpServers": {
"unity": {
"command": "/mnt/c/src/Conduit/Conduit.Server/publish/win-x64/conduit.exe",
"args": []
}
}
}
stdio | Linux
{
"mcpServers": {
"unity": {
"command": "/home/you/src/Conduit/Conduit.Server/publish/linux-x64/conduit",
"args": []
}
}
}
http
conduit --http [--port 5080] [--url http://127.0.0.1:5080]
{
"mcpServers": {
"unity": {
"serverUrl": "http://127.0.0.1:5080"
}
}
}
Cline
Cline stores MCP settings in cline_mcp_settings.json.
stdio | Windows (Native)
{
"mcpServers": {
"unity": {
"command": "C:\\src\\Conduit\\Conduit.Server\\publish\\win-x64\\conduit.exe",
"args": [],
"disabled": false
}
}
}
stdio | Windows (WSL)
{
"mcpServers": {
"unity": {
"command": "/mnt/c/src/Conduit/Conduit.Server/publish/win-x64/conduit.exe",
"args": [],
"disabled": false
}
}
}
stdio | Linux
{
"mcpServers": {
"unity": {
"command": "/home/you/src/Conduit/Conduit.Server/publish/linux-x64/conduit",
"args": [],
"disabled": false
}
}
}
http
conduit --http [--port 5080] [--url http://127.0.0.1:5080]
{
"mcpServers": {
"unity": {
"url": "http://127.0.0.1:5080",
"type": "streamableHttp",
"disabled": false
}
}
}
Continue
Continue uses YAML, typically as standalone files under .continue/mcpServers/
Create .continue/mcpServers/unity.yaml:
stdio | Windows (Native)
name: Unity MCP
version: 0.0.1
schema: v1
mcpServers:
- name: unity
type: stdio
command: C:\src\Conduit\Conduit.Server\publish\win-x64\conduit.exe
cwd: C:\src\Conduit
stdio | Windows (WSL)
name: Unity MCP
version: 0.0.1
schema: v1
mcpServers:
- name: unity
type: stdio
command: /mnt/c/src/Conduit/Conduit.Server/publish/win-x64/conduit.exe
cwd: /mnt/c/src/Conduit
stdio | Linux
name: Unity MCP
version: 0.0.1
schema: v1
mcpServers:
- name: unity
type: stdio
command: /home/you/src/Conduit/Conduit.Server/publish/linux-x64/conduit
cwd: /home/you/src/Conduit
http
conduit --http [--port 5080] [--url http://127.0.0.1:5080]
name: Unity MCP
version: 0.0.1
schema: v1
mcpServers:
- name: unity
type: streamable-http
url: http://127.0.0.1:5080
Gemini CLI
Gemini CLI stores MCP configuration in ~/.gemini/settings.json for user scope or .gemini/settings.json for project scope.
stdio | Windows (Native)
{
"mcpServers": {
"unity": {
"command": "C:\\src\\Conduit\\Conduit.Server\\publish\\win-x64\\conduit.exe",
"cwd": "C:\\src\\Conduit"
}
}
}
stdio | Windows (WSL)
{
"mcpServers": {
"unity": {
"command": "/mnt/c/src/Conduit/Conduit.Server/publish/win-x64/conduit.exe",
"cwd": "/mnt/c/src/Conduit"
}
}
}
stdio | Linux
{
"mcpServers": {
"unity": {
"command": "/home/you/src/Conduit/Conduit.Server/publish/linux-x64/conduit",
"cwd": "/home/you/src/Conduit"
}
}
}
http
conduit --http [--port 5080] [--url http://127.0.0.1:5080]
{
"mcpServers": {
"unity": {
"httpUrl": "http://127.0.0.1:5080"
}
}
}
Equivalent CLI commands:
Local stdio
gemini mcp add unity /home/you/src/Conduit/Conduit.Server/publish/linux-x64/conduit
HTTP
gemini mcp add --transport http unity http://127.0.0.1:5080
GitHub Copilot CLI
GitHub Copilot CLI stores MCP servers in ~/.copilot/mcp-config.json.
stdio | Windows (Native)
{
"mcpServers": {
"unity": {
"type": "local",
"command": "C:\\src\\Conduit\\Conduit.Server\\publish\\win-x64\\conduit.exe",
"args": [],
"env": {},
"tools": ["*"]
}
}
}
stdio | Windows (WSL)
{
"mcpServers": {
"unity": {
"type": "local",
"command": "/mnt/c/src/Conduit/Conduit.Server/publish/win-x64/conduit.exe",
"args": [],
"env": {},
"tools": ["*"]
}
}
}
stdio | Linux
{
"mcpServers": {
"unity": {
"type": "local",
"command": "/home/you/src/Conduit/Conduit.Server/publish/linux-x64/conduit",
"args": [],
"env": {},
"tools": ["*"]
}
}
}
http
conduit --http [--port 5080] [--url http://127.0.0.1:5080]
{
"mcpServers": {
"unity": {
"type": "http",
"url": "http://127.0.0.1:5080",
"headers": {},
"tools": ["*"]
}
}
}
Interactive alternative:
/mcp add
VS Code / GitHub Copilot Chat
VS Code uses mcp.json with a top-level servers object. For workspace scope, put it in .vscode/mcp.json; for user scope, open the user MCP configuration from the Command Palette.
stdio | Windows (Native)
{
"servers": {
"unity": {
"type": "stdio",
"command": "C:\\src\\Conduit\\Conduit.Server\\publish\\win-x64\\conduit.exe",
"args": []
}
}
}
stdio | Windows (WSL)
{
"servers": {
"unity": {
"type": "stdio",
"command": "/mnt/c/src/Conduit/Conduit.Server/publish/win-x64/conduit.exe",
"args": []
}
}
}
stdio | Linux
{
"servers": {
"unity": {
"type": "stdio",
"command": "/home/you/src/Conduit/Conduit.Server/publish/linux-x64/conduit",
"args": []
}
}
}
http
conduit --http [--port 5080] [--url http://127.0.0.1:5080]
{
"servers": {
"unity": {
"type": "http",
"url": "http://127.0.0.1:5080"
}
}
}
Antigravity
You can get to the config file from Manage MCP Servers โ View raw config.
stdio | Windows (Native)
{
"mcpServers": {
"unity": {
"command": "C:\\src\\Conduit\\Conduit.Server\\publish\\win-x64\\conduit.exe",
"args": [],
"cwd": "C:\\src\\Conduit"
}
}
}
stdio | Windows (WSL)
{
"mcpServers": {
"unity": {
"command": "/mnt/c/src/Conduit/Conduit.Server/publish/win-x64/conduit.exe",
"args": [],
"cwd": "/mnt/c/src/Conduit"
}
}
}
stdio | Linux
{
"mcpServers": {
"unity": {
"command": "/home/you/src/Conduit/Conduit.Server/publish/linux-x64/conduit",
"args": [],
"cwd": "/home/you/src/Conduit"
}
}
}
Zed
Zed uses context_servers in its settings. For project scope, put this in .zed/settings.json; for user scope, add it to your user settings.
stdio | Windows (Native)
{
"context_servers": {
"unity": {
"command": "C:\\src\\Conduit\\Conduit.Server\\publish\\win-x64\\conduit.exe",
"args": []
}
}
}
stdio | Windows (WSL)
{
"context_servers": {
"unity": {
"command": "/mnt/c/src/Conduit/Conduit.Server/publish/win-x64/conduit.exe",
"args": []
}
}
}
stdio | Linux
{
"context_servers": {
"unity": {
"command": "/home/you/src/Conduit/Conduit.Server/publish/linux-x64/conduit",
"args": []
}
}
}
http
conduit --http [--port 5080] [--url http://127.0.0.1:5080]
{
"context_servers": {
"unity": {
"url": "http://127.0.0.1:5080"
}
}
}
Roo Code
Roo Code stores global MCP configuration in mcp_settings.json. For project-local setup, create .roo/mcp.json.
stdio | Windows (Native)
{
"mcpServers": {
"unity": {
"command": "C:\\src\\Conduit\\Conduit.Server\\publish\\win-x64\\conduit.exe",
"args": [],
"cwd": "C:\\src\\Conduit",
"disabled": false
}
}
}
stdio | Windows (WSL)
{
"mcpServers": {
"unity": {
"command": "/mnt/c/src/Conduit/Conduit.Server/publish/win-x64/conduit.exe",
"args": [],
"cwd": "/mnt/c/src/Conduit",
"disabled": false
}
}
}
stdio | Linux
{
"mcpServers": {
"unity": {
"command": "/home/you/src/Conduit/Conduit.Server/publish/linux-x64/conduit",
"args": [],
"cwd": "/home/you/src/Conduit",
"disabled": false
}
}
}
http
conduit --http [--port 5080] [--url http://127.0.0.1:5080]
{
"mcpServers": {
"unity": {
"type": "streamable-http",
"url": "http://127.0.0.1:5080",
"disabled": false
}
}
}
JetBrains IDEs / Junie
Junie in JetBrains IDEs and Junie CLI use the same MCP config file format. Use ~/.junie/mcp/mcp.json for user scope or .junie/mcp/mcp.json in the project root for project scope.
stdio | Windows (Native)
{
"mcpServers": {
"unity": {
"command": "C:\\src\\Conduit\\Conduit.Server\\publish\\win-x64\\conduit.exe",
"args": []
}
}
}
stdio | Windows (WSL)
{
"mcpServers": {
"unity": {
"command": "/mnt/c/src/Conduit/Conduit.Server/publish/win-x64/conduit.exe",
"args": []
}
}
}
stdio | Linux
{
"mcpServers": {
"unity": {
"command": "/home/you/src/Conduit/Conduit.Server/publish/linux-x64/conduit",
"args": []
}
}
}
http
conduit --http [--port 5080] [--url http://127.0.0.1:5080]
{
"mcpServers": {
"unity": {
"url": "http://127.0.0.1:5080"
}
}
}
Available tools
The basics:
These core tools that cover most situations.
In particular, execute_code is vital, as it can run arbitrary C# code without an assembly reload.
It returns the result, logs, exceptions, and compilation errors.
Agents are very proficient at using it for interacting with Unity and debugging code.
status: project and MCP connection staterefresh_asset_database: imports modified assets, recompiles codeexecute_code: runs ad hoc C# coderestart: starts or restarts Unity Editor
Object search, reading, and editing:
Together, these tools enable agents to find, read, and write any asset, GameObject, or component.
search: finds objects and assetsshow: displays object propertiesto_json: read object in JSON formatfrom_json_overwrite: overwrite object properties with JSONfind_missing_scripts: scans objects for invalid/deleted scriptsget_dependencies: what assets does this use?find_references_to: what assets use this?save_scenes: save current changes for open scenesdiscard_scenes: discard current changes for open scenes
Testing:
These complete the iteration loop, allowing the agent to validate their work. By the way: if your project doesn't have tests, you're doing it wrong.
run_tests_editmode: run Edit Mode testsrun_tests_playmode: run Play Mode testsrun_tests_player: run player testsscreenshot: captures the game view, scene view, or any other object
Agent instructions
The tool descriptions themselves should be enough to get started.
If you really want to, you can include something like this in your agent instructions:
Use the Unity MCP tools to prototype solutions, validate code compilation and run tests.
Invoke the `restart` tool in case of instability.
Don't build the Unity solution manually; simply call `refresh_asset_database` after making any code changes.
When dealing with assets and GameObjects, `search`, `show`, `to_json`, `from_json_overwrite`, `find_missing_scripts`, `get_dependencies` and `find_references_to` are your friends.
