UniCortex
Provides tools for controlling the Unity Editor remotely, including scene manipulation, GameObject management, component editing, prefab operations, test running, and more.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
UniCortex
This project is still under active development. The API and command structure may change without notice.
A toolkit for controlling Unity Editor externally via REST API, MCP (Model Context Protocol), and CLI.
UniCortex can be used in two ways:
As an MCP server for AI agents such as Claude Code or Codex CLI
As a CLI tool for direct terminal-based control
In both cases, you must install the UniCortex Unity package into the target Unity project first.
Requirements
Unity 2022.3 or later
.NET 10 SDK (for MCP server and CLI)
Related MCP server: Funplay MCP for Unity
Installation
Add via Unity Package Manager using a Git URL:
Open Package Manager
Click the
+buttonSelect "Add package from git URL"
Enter the following URL:
https://github.com/VeyronSakai/UniCortex.gitUse UniCortex as an MCP Server
Use this mode when you want an MCP client to call Unity operations as tools. The UniCortex Unity package must be installed in the target Unity project.
MCP Server Setup
Add the following MCP server configuration to your MCP client's settings file (e.g., .mcp.json, claude_desktop_config.json, etc.). Refer to your client's documentation for the exact configuration location.
{
"mcpServers": {
"Unity": {
"type": "stdio",
"command": "bash",
"args": ["-c", "dotnet run --project ${UNICORTEX_PROJECT_PATH}/Library/PackageCache/com.veyron-sakai.uni-cortex@*/Tools~/UniCortex.Mcp/"],
"env": {
"UNICORTEX_PROJECT_PATH": "/path/to/your/unity/project"
}
}
}
}Replace /path/to/your/unity/project with the absolute path of your Unity project. After saving the configuration, restart the client to apply the changes.
The MCP server reads the port number from Library/UniCortex/config.json (written automatically when Unity Editor starts) and connects to the HTTP server.
No pre-build or tool installation is required. The MCP server is built and started automatically via dotnet run.
Alternatively, you can specify the URL directly via the UNICORTEX_URL environment variable (takes priority over UNICORTEX_PROJECT_PATH):
{
"mcpServers": {
"Unity": {
"type": "stdio",
"command": "bash",
"args": ["-c", "dotnet run --project ${UNICORTEX_PROJECT_PATH}/Library/PackageCache/com.veyron-sakai.uni-cortex@*/Tools~/UniCortex.Mcp/"],
"env": {
"UNICORTEX_PROJECT_PATH": "/path/to/your/unity/project",
"UNICORTEX_URL": "http://localhost:12345"
}
}
}
}Available MCP Tools
The MCP server exposes the following built-in tools.
Editor Control
Tool | Description |
| Check connectivity with the Unity Editor |
| Start Play Mode |
| Stop Play Mode |
| Get the current state of the Unity Editor (play mode, paused) |
| Pause the Unity Editor. Use with |
| Unpause the Unity Editor |
| Advance the Unity Editor by one frame while paused |
| Request script recompilation (domain reload) |
| Undo the last operation |
| Redo an undone operation |
| Save the currently active stage (Scene, Prefab, Timeline, etc.) |
| Get the active build target platform |
| Switch the active build target platform (reimports assets and recompiles scripts) |
Editor Dialog
Tool | Description |
| Get the modal dialogs that the Unity Editor itself shows (e.g. "Saving failed"), not the game's UI, with their title, message, and button labels |
| Click a button of an open Editor dialog by its label to close it |
While a modal dialog is open, the Unity Editor cannot answer the other tools. These tools read the dialog with the OS window APIs instead, so they work while the Editor is blocked. They need UNICORTEX_PROJECT_PATH and support macOS and Windows. On macOS, allow the app that runs the MCP server (e.g. your terminal or AI agent app) in System Settings > Privacy & Security > Accessibility.
Scene
Tool | Description |
| Create a new empty scene and save it at the specified asset path |
| Open a scene by path |
| Get the GameObject hierarchy tree of every loaded scene or the Prefab |
GameObject
Tool | Description |
| Search GameObjects in every loaded scene by name or component type, using the Hierarchy window's search syntax |
| Create a new empty GameObject, optionally under a parent at a given sibling index (with RectTransform support for UI) |
| Delete a GameObject (supports Undo) |
| Modify name, active state, tag, layer, parent, or sibling order |
| Duplicate a GameObject like the Editor's Duplicate command, keeping prefab instance links (supports Undo) |
Component
Tool | Description |
| Add a component to a GameObject |
| Remove a component from a GameObject |
| Get serialized properties of a component |
| Set a serialized property on a component |
Component type arguments are supplied as a fully-qualified type name plus the defining assembly name (e.g. UnityEngine.Rigidbody + UnityEngine.PhysicsModule).
Object reference properties (e.g. PlayableDirector.m_PlayableAsset or a [SerializeField] component field) accept an asset path (Assets/Timelines/Intro.playable), an asset GUID, an instanceId, or null. If the object does not match the field type, a matching component on the GameObject or a matching sub-asset in the same file is assigned instead, and an error is returned when nothing matches.
ScriptableObject
Tool | Description |
| Create a new ScriptableObject |
| Get serialized properties of an existing |
| Set a serialized property on an existing |
create_scriptable_object takes the ScriptableObject subclass name plus the defining assembly name (e.g. MyNamespace.MyData + Assembly-CSharp). Property paths and value formats match set_component_property.
AnimationClip
Tool | Description |
| Create a new empty AnimationClip |
| Get the settings and all float curves (with keys) of an AnimationClip |
| Replace one float curve of an AnimationClip with the given keys (supports Undo) |
| Remove one float curve from an AnimationClip (supports Undo) |
A curve is identified by animatorRelativePath (path relative to the Animator root, e.g. Root/Child), the component type plus its assembly name (e.g. UnityEngine.UI.Image + UnityEngine.UI), and propertyName (e.g. m_Color.a). Each key takes time / value and an optional tangentMode (Free, Auto, ClampedAuto, Linear, Constant).
Prefab
Tool | Description |
| Save a scene GameObject as a Prefab asset |
| Instantiate a Prefab into the scene |
| Open a Prefab asset in Prefab Mode for editing |
| Close Prefab Mode and return to the main stage |
Asset
Tool | Description |
| Refresh the Unity Asset Database |
Project Window
Tool | Description |
| Select an asset in the Project Window, focus the window, and ping it |
Console
Tool | Description |
| Get console log entries from the Unity Editor |
| Clear all console logs |
Test
Tool | Description |
| Run Unity Test Runner tests and return results |
Menu Item
Tool | Description |
| Execute a Unity Editor menu item by path |
View
Tool | Description |
| Switch focus to the Scene View window |
| Capture the Scene View as a PNG image. Works in both Edit Mode and Play Mode, and captures the Prefab contents in Prefab Mode (gizmos and Screen Space - Overlay UI are not included) |
| Switch focus to the Game View window |
| Capture the Game View (or the Simulator view) as a PNG at its resolution (Play Mode only), with the device frame in the Simulator view by default, optionally drawing the safe area and cutouts |
| Get the current Game View size (width and height in pixels) |
| Get the list of available Game View sizes (built-in and custom) |
| Set the Game View resolution by index from the size list |
| Add a fixed resolution to the Game View size list of the current platform without selecting it, and return its index (an existing entry with the same name and size is returned instead) |
| Get the current Game View scale (zoom factor) and its valid range |
| Set the Game View scale (zoom factor); clamped to the valid range |
| Get whether the Play Mode window shows the Game view or the Device Simulator view |
| Switch the Play Mode window between the Game view and the Device Simulator view |
| List the devices of the Simulator view with the selected device and rotation |
| Select the simulated device and/or its rotation in the Simulator view |
| Get the screen size, safe area and cutouts (notch) of the Game view or the Simulator view |
Recorder
Tool | Description |
| Get the list of all configured recorders and their settings (requires com.unity.recorder) |
| Add a Movie recorder to the list with name, output path, encoder, quality, audio capture (requires com.unity.recorder) |
| Remove a Movie recorder from the list by index (requires com.unity.recorder) |
| Start recording with the specified Movie recorder (Play Mode only, requires com.unity.recorder) |
| Stop recording and save the video file (requires com.unity.recorder) |
Input
Tool | Description |
| Press keys via Input System in Play Mode (requires com.unity.inputsystem). Pass several keys for a combination such as Ctrl+S. Use holdDuration to keep them pressed. Does not type text into text fields |
| Type text (any characters, e.g. Japanese) into the focused text field in Play Mode: uGUI InputField, TMP_InputField or UI Toolkit TextField (requires com.unity.inputsystem) |
| Click (or tap) via Input System in Play Mode (requires com.unity.inputsystem). Accepts either x/y or the instanceId of a UI target (requires com.unity.ugui). Use holdDuration for a long press |
| Drag (or swipe) from a start to an end over a given time in one call |
| Move the mouse without pressing a button, e.g. for hover |
| List the uGUI objects that can be pressed now in Play Mode, with their rects in Game View coordinates (requires com.unity.ugui) |
Timeline
Tool | Description |
| Create a new TimelineAsset (.playable file) at the specified asset path (requires com.unity.timeline) |
| Get an overview of the tracks and clips of a Timeline (types, timing, extrapolation, bindings, AnimationClips) by PlayableDirector or asset path (requires com.unity.timeline) |
| Get the serialized properties of a Timeline track (requires com.unity.timeline) |
| Get the serialized properties of a clip's PlayableAsset (requires com.unity.timeline) |
| Add a track to a TimelineAsset (requires com.unity.timeline) |
| Remove a track from a TimelineAsset by index (requires com.unity.timeline) |
| Set the binding of a Timeline track on a PlayableDirector (requires com.unity.timeline) |
| Add a default clip to a Timeline track (requires com.unity.timeline) |
| Remove a clip from a Timeline track by index (requires com.unity.timeline) |
| Change a clip's start, duration, timeScale, clipIn, ease in/out, and pre/post extrapolation (requires com.unity.timeline) |
| Set a serialized property on a clip's PlayableAsset, e.g. its AnimationClip ( |
| Set a serialized property on a track, e.g. Track Offsets or mute (requires com.unity.timeline) |
| Start playback of a Timeline on a PlayableDirector (requires com.unity.timeline) |
| Stop playback of a Timeline on a PlayableDirector and reset to the beginning (requires com.unity.timeline) |
| Evaluate a Timeline at the specified time without playing it, e.g. to inspect an intermediate state. Works in Edit Mode (including Prefab Mode) via the Timeline window preview (requires com.unity.timeline) |
Extensions
User-defined extensions in your Unity project are automatically discovered and exposed alongside the built-in tools. See Extension for details.
Use UniCortex as a CLI Tool
Use this mode when you want to control Unity Editor directly from a terminal. As with the MCP server, the UniCortex Unity package must be installed in the target Unity project, and the Unity Editor must be open with the package loaded.
Connection settings
The CLI resolves the Unity Editor endpoint in the following order:
If
UNICORTEX_URLis set, the CLI connects directly to that URL.Otherwise, it uses
UNICORTEX_PROJECT_PATHto readLibrary/UniCortex/config.json, which is written when the Unity Editor starts.If neither is set, the CLI exits with an error.
Choose how to run the CLI
Choose one of the following options depending on how you want to invoke the CLI.
Whichever option you choose, make sure the CLI version matches the UniCortex package version installed in the Unity project. Running via dotnet run --project from Library/PackageCache naturally uses the same package version.
Option 1: Run commands with dotnet run --project
export UNICORTEX_PROJECT_PATH="/path/to/your/unity/project"
export UNICORTEX_CLI_PROJECT=$(echo "${UNICORTEX_PROJECT_PATH}"/Library/PackageCache/com.veyron-sakai.uni-cortex@*/Tools~/UniCortex.Cli)
dotnet run --project "$UNICORTEX_CLI_PROJECT" -- editor ping
dotnet run --project "$UNICORTEX_CLI_PROJECT" -- scene hierarchy
dotnet run --project "$UNICORTEX_CLI_PROJECT" -- game-object find "t:Camera"
dotnet run --project "$UNICORTEX_CLI_PROJECT" -- component property list 1234 UnityEngine.Transform UnityEngine.CoreModule
dotnet run --project "$UNICORTEX_CLI_PROJECT" -- test run --test-mode EditModeOption 2: Install as a dotnet local tool
Install UniCortex.Cli from NuGet.org as a local tool.
dotnet new tool-manifest
dotnet tool install --local UniCortex.Cli
dotnet tool run unicortex -- editor ping
dotnet tool run unicortex -- scene hierarchyIf the tool is already installed, run dotnet tool update --local UniCortex.Cli instead.
If you share the tool manifest with your team, run dotnet tool restore before the first dotnet tool run ... so the manifest-defined tools are installed locally.
Option 3: Install as a dotnet global tool
Install UniCortex.Cli globally when you want to invoke unicortex directly from your shell.
dotnet tool install --global UniCortex.Cli
unicortex editor ping
unicortex scene hierarchyIf the tool is already installed, run dotnet tool update --global UniCortex.Cli instead.
Argument and output conventions
Required parameters are positional arguments, for example
scene open Assets/Scenes/Main.unity.Optional parameters with defaults become named options, for example
game-object modify 1234 --name CameraRig --tag Player.Boolean options are flags that take no value, for example
game-object modify 1234 --deactivate.Read/query commands usually print JSON, such as
scene hierarchy,game-object find,component property list, andrecorder all list.State-changing commands usually print a short status message, such as
editor play,scene open,component add, andtimeline track bind.game-view captureandscene-view capturewrite a PNG file to the path you pass, and recorder commands create media files in the configured output path.
Available CLI Commands
editor
Command | Description |
| Check connectivity with the Unity Editor. |
| Start Play Mode in the Unity Editor. |
| Stop Play Mode in the Unity Editor. |
| Show the current play/paused state. |
| Pause the Unity Editor. |
| Unpause the Unity Editor. |
| Advance the Unity Editor by one frame while paused. |
| Perform Undo. |
| Perform Redo. |
| Save the active stage. |
| Request script recompilation. |
| Show the active build target platform. |
| Switch the active build target platform (e.g. |
| List the modal dialogs open in the Unity Editor with their title, message, and button labels. |
| Click a button of an open modal dialog by its label (e.g. |
scene
Command | Description |
| Create a new empty scene at the specified asset path. |
| Open a scene by asset path. |
| Print the current scene hierarchy as JSON. |
game-object
Command | Description |
| Search GameObjects with the Hierarchy window's search syntax. |
| Create a new empty GameObject, optionally under a parent at a given sibling index. |
| Delete a GameObject by |
| Rename, reparent, reorder, or change active state, tag, or layer. |
| Duplicate a GameObject like the Editor's Duplicate command, keeping prefab instance links. |
component
Command | Description |
| Add a component to a GameObject. |
| Remove a component from a GameObject. |
| Print serialized component properties as JSON. |
| Set a serialized property by path. |
Component commands accept the fully-qualified component type name plus the defining assembly name (e.g. UnityEngine.Rigidbody UnityEngine.PhysicsModule).
scriptable-object
Command | Description |
| Create a new ScriptableObject |
| Print serialized properties of an existing |
| Set a serialized property on an existing |
scriptable-object create accepts the fully-qualified ScriptableObject subclass name plus the defining assembly name (e.g. MyNamespace.MyData Assembly-CSharp).
animation-clip
Command | Description |
| Create a new empty AnimationClip |
| Print the settings and all float curves of an AnimationClip as JSON. |
| Replace one float curve with keys given as a JSON array. Use |
| Remove one float curve. |
prefab
Command | Description |
| Save a scene GameObject as a Prefab asset. |
| Instantiate a Prefab into the current scene. |
| Open a Prefab in Prefab Mode. |
| Close Prefab Mode and return to the main stage. |
test
Command | Description |
| Run Unity Test Runner tests. Supports filters such as |
console
Command | Description |
| Read Unity Editor console logs. Fetches every level by default; pass |
| Clear Unity Editor console logs. |
asset, project-window, menu
Command | Description |
| Refresh the Unity Asset Database. |
| Select and ping an asset in the Project Window. |
| Execute a Unity menu item by path. |
scene-view, game-view, game-view size, game-view scale, game-view view-type, game-view simulator device
Command | Description |
| Focus the Scene View window. |
| Capture the Scene View as a PNG file. Works in Edit Mode and Play Mode, including Prefab Mode. |
| Focus the Game View window. |
| Capture the Game View (or the Simulator view) as a PNG file at its resolution. Play Mode only. In the Simulator view the device frame is drawn by default ( |
| Show the screen size, safe area and cutouts of the Game view or the Simulator view. |
| Show the current Game View size. |
| List available Game View sizes. |
| Set the Game View size by index. |
| Add a fixed resolution ( |
| Show the current Game View scale and its valid range. |
| Set the Game View scale (zoom factor). |
| Show whether the Play Mode window shows the Game view or the Simulator view. |
| Switch the Play Mode window to |
| List the devices of the Simulator view. |
| Select the simulated device ( |
input
Command | Description |
| Press keys together (e.g. |
| Type text into the focused text field. Requires |
| Click (or tap) at |
| Drag from |
| Move the mouse without pressing a button, e.g. for hover. |
| List the uGUI objects that can be pressed now. Requires |
recorder all, recorder movie
Command | Description |
| List configured recorders. Requires |
| Add a Movie recorder. Requires |
| Remove a Movie recorder by index. Requires |
| Start movie recording. Play Mode only; requires |
| Stop movie recording and save the output file. |
timeline, timeline track, timeline track property, timeline clip, timeline clip property
Command | Description |
| Create a Timeline asset. Requires |
| Start Timeline playback on a PlayableDirector. Requires |
| Stop Timeline playback and reset to the beginning. Requires |
| Evaluate a Timeline at the specified time without playing it, e.g. to inspect an intermediate state. Works in Edit Mode (including Prefab Mode) via the Timeline window preview, so animated values are reverted when the preview ends. Requires |
| Print the tracks and clips of a Timeline as JSON. Requires |
| Add a Timeline track. Requires |
| Remove a Timeline track by index. Requires |
| Bind a Timeline track to a target object. Requires |
| Print the serialized properties of a Timeline track as JSON. Requires |
| Set a serialized property on a Timeline track. Requires |
| Add a clip to a Timeline track. Requires |
| Remove a clip from a Timeline track. Requires |
| Change the timing, ease, and extrapolation of a Timeline clip. Requires |
| Print the serialized properties of a clip's PlayableAsset as JSON. Requires |
| Set a serialized property on a clip's PlayableAsset. Requires |
extension
Command | Description |
| List registered extensions from the Unity project. |
| Execute an extension by name, optionally passing JSON through |
Representative workflows
# Find cameras and inspect a component
dotnet run --project "$UNICORTEX_CLI_PROJECT" -- game-object find "t:Camera"
dotnet run --project "$UNICORTEX_CLI_PROJECT" -- component property list 1234 UnityEngine.Transform UnityEngine.CoreModule
# Rename and reparent a GameObject
dotnet run --project "$UNICORTEX_CLI_PROJECT" -- game-object modify 1234 --name CameraRig --parent-instance-id 5678
# Set a serialized property
dotnet run --project "$UNICORTEX_CLI_PROJECT" -- component property set 1234 UnityEngine.Transform UnityEngine.CoreModule m_LocalPosition.x 1.5
# Create and edit a ScriptableObject .asset
dotnet run --project "$UNICORTEX_CLI_PROJECT" -- scriptable-object create MyNamespace.MyData Assembly-CSharp Assets/Data/MyData.asset
dotnet run --project "$UNICORTEX_CLI_PROJECT" -- scriptable-object property set Assets/Data/MyData.asset m_Speed 1.5
# Create an AnimationClip and key an Image fade-in
dotnet run --project "$UNICORTEX_CLI_PROJECT" -- animation-clip create Assets/Animations/FadeIn.anim
dotnet run --project "$UNICORTEX_CLI_PROJECT" -- animation-clip curve set Assets/Animations/FadeIn.anim UnityEngine.UI.Image UnityEngine.UI m_Color.a '[{"time":0,"value":0},{"time":0.5,"value":1}]' --animator-relative-path Root/Child
# Capture the Scene View (Edit Mode) and the Game View (Play Mode)
dotnet run --project "$UNICORTEX_CLI_PROJECT" -- scene-view capture ./Artifacts/sceneview.png
dotnet run --project "$UNICORTEX_CLI_PROJECT" -- game-view capture ./Artifacts/gameview.png
# Discover and run a custom extension
dotnet run --project "$UNICORTEX_CLI_PROJECT" -- extension list
dotnet run --project "$UNICORTEX_CLI_PROJECT" -- extension execute count_gameobjects --arguments '{"nameFilter":"Camera"}'Extension
You can define extensions in your Unity project by creating Editor-only C# classes that inherit from ExtensionHandler. They are automatically discovered via TypeCache and exposed as MCP tools and CLI commands.
#if UNITY_EDITOR
using UniCortex.Editor.Handlers.Extension;
using UnityEngine;
public class CountGameObjects : ExtensionHandler
{
public override string Name => "count_gameobjects";
public override string Description => "Count GameObjects in the current scene.";
public override bool ReadOnly => true;
public override ExtensionSchema InputSchema => new ExtensionSchema(
new ExtensionProperty("nameFilter", ExtensionPropertyType.String,
"Only count GameObjects whose name contains this string.")
);
public override string Execute(string argumentsJson)
{
// Runs on the Unity main thread — safe to call Unity APIs
var filter = "";
if (!string.IsNullOrEmpty(argumentsJson))
{
var args = JsonUtility.FromJson<Args>(argumentsJson);
if (!string.IsNullOrEmpty(args.nameFilter))
filter = args.nameFilter;
}
var allObjects = Object.FindObjectsByType<GameObject>(FindObjectsSortMode.None);
var count = 0;
foreach (var obj in allObjects)
{
if (string.IsNullOrEmpty(filter) || obj.name.Contains(filter))
count++;
}
return $"Found {count} GameObject(s).";
}
[System.Serializable]
private class Args
{
public string nameFilter;
}
}
#endifAPI Reference
Class | Description |
| Abstract base class. Override |
| Defines the input parameter schema via |
| Defines a single parameter: name, type, description, and whether it is required |
| Parameter types: |
After adding or removing extensions, restart the MCP client (e.g., Claude Code) to refresh the tool list.
Architecture
graph LR
Agent["AI Agent"]
MCP["UniCortex.Mcp<br/>.NET 10"]
CLI["UniCortex.Cli<br/>.NET 10"]
Unity["Unity Editor<br/>HTTP Server"]
Agent -- "MCP / stdio" --> MCP
Agent -- "CLI" --> CLI
MCP -- "HTTP" --> Unity
CLI -- "HTTP" --> UnityUnity Editor side: C#
HttpListenerHTTP server embedded in the EditorShared Core:
UniCortex.Core— service layer and HTTP infrastructure shared by MCP and CLIMCP Server:
UniCortex.Mcp— .NET 10 + Model Context Protocol C# SDKCLI Tool:
UniCortex.Cli— .NET 10 + ConsoleAppFrameworkUPM Package:
com.veyron-sakai.uni-cortex
Documentation
Documentations~/SPEC.md— Full API endpoint and MCP tool definitions
Development
Do not edit
README.mddirectly. Make README documentation changes in.github/DRAFT_README.mdinstead.
When developing this package locally:
# Build all projects
dotnet build Tools~/UniCortex.Core/
dotnet build Tools~/UniCortex.Mcp/
dotnet build Tools~/UniCortex.Cli/
# Run tests
UNICORTEX_PROJECT_PATH=$(pwd)/Samples~ dotnet test Tools~/UniCortex.Core.Test/
# Run MCP server
dotnet run --project Tools~/UniCortex.Mcp/
# Run CLI
dotnet run --project Tools~/UniCortex.Cli/ -- editor pingLicense
MIT License - LICENSE.txt
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Make games with AI: one MCP server that connects your agent to Unity, Unreal and Godot editors.
One MCP server for the services your AI needs: memory, files, Microsoft 365, kanban and more.
MCP server for building and testing AI agents with multi-model experimentation and insights.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides 20 tools to control the Unity Editor with natural language, including scene management, component manipulation, script generation, asset handling, project settings, builds, and live C# execution.2MIT

Funplay MCP for Unityofficial
AlicenseNot gradedqualityAmaintenanceThis MCP server integrates AI assistants with Unity Editor, allowing them to create scenes, generate scripts, simulate input, and automate workflows using 91 built-in tools.304MIT- AlicenseNot gradedqualityDmaintenanceAn MCP server for Unity that enables AI agents to query and control the Unity Editor, providing tools for scene management, object manipulation, and asset browsing.MIT
- FlicenseNot gradedqualityDmaintenanceMCP server that lets AI agents drive the full Unity lifecycle on macOS without opening the Unity Editor.2-