Repository navigation
Releases
nanora-unity-mcp 1.2.2
Changed
- Skill recipes and references use
FindObjectsByType(FindObjectsSortMode.None)instead of the Unity 6-deprecatedFindObjectsOfType, andunity-mcp-skillhas a "Writing Unity code" section (find APIs, per-frame work, static state with domain reload disabled, Awaitable) linked to the Unity 6.3 docs.unity-pre-pr-checktreats new obsolete-API warnings in changed files as findings. execute_csharpreflection mode acceptsFindAnyObjectByType<T>()andFindFirstObjectByType<T>()as well asFindObjectOfType<T>(), and resolves them without reflecting on the deprecated method.query_objectstype selectors callFindObjectsByTypethroughUnityCompatibilityinstead of reflecting onFindObjectsOfType.
Fixed
- U-Selector attribute selectors understand
>=and<=. Before,[layer>=5]was read as>with the value=5and matched nothing.[activeInHierarchy=…]now reads the GameObject'sactiveInHierarchy; before, only the shorter[active=…]did and the long name matched nothing.
Install: Package Manager > + > Add package from tarball... with the .tgz below, or Add package from git URL...:
https://github.com/nanora-sama/nanora-unity-mcp.git?path=Assets/NanoraUnityMCP#v1.2.2
nanora-unity-mcp 1.2.1
Fixed
simulate_inputaccepts Input System key names such asDownArrow,UpArrow,F5andLeftShift. Before, names that are also aKeyCodewent to the focused Editor window as an Editor event (Key pressed: DownArrow (Editor Event)), so the game'sInputActionnever saw them; only the short names (Down,Up) worked.compile_projectcalled again after a failed compile, with nothing changed, reportedSUCCESSwith 0 errors because Unity did not compile again. It now reportsFAILEDwith the errors from the last compile.
Install: Package Manager > + > Add package from tarball... with the .tgz below, or Add package from git URL...:
https://github.com/nanora-sama/nanora-unity-mcp.git?path=Assets/NanoraUnityMCP#v1.2.1
nanora-unity-mcp 1.2.0
Open-source release. The package is now MIT licensed and the testing tools of the former paid Test Pro edition are part of it.
Added
- Streamable HTTP at
POST /mcpfor Codex and other HTTP clients, next to legacy SSE for Claude Code, Claude Desktop and Cursor. - Read-only resources
unity://project/infoandunity://editor/state(compile failure, play/pause state, loaded and unsaved scenes). /healthreports project path, process id, version, protocol version and transports, so a client can tell which Editor it reached.mcp_statusandget_console_logsreturnstructuredContent.- Testing tools formerly in Test Pro, now free:
run_e2e_test,visual_regression_test,performance_budget_test,generate_test_report(categorytest). - Shooting Game sample: scripts plus Tools > Nanora Unity MCP > Samples > Build Shooting Game Scene, which builds the scene in the importing project's Unity version and render pipeline.
#ScoreText,#GameOverand Input System actions make it a target forsimulate_input,wait_for_selectorandassert_ui_state. scripts/mcp/verify-transport.mjsandverify-codex.mjs: checks against a running Editor and an installed Codex client.
Changed
package.jsondeclarescom.unity.test-frameworkandcom.unity.ugui, which the package always needed; a tarball or Git install into an empty project now compiles without adding them by hand.- License: MIT (was the Unity Asset Store EULA). Bundled Roslyn and System.* assemblies are listed in
THIRD-PARTY-NOTICES.md. - Legacy SSE gives each connection its own
/message?sessionId=...endpoint; replies go only to the requesting client even when JSON-RPC ids overlap./messagewithout a session replies directly instead of broadcasting. - Browser
Originheaders are validated against loopback; request bodies are bounded. Protocol versions 2024-11-05 through 2025-11-25 are negotiated. - Console logs are filtered by type before the count limit, and errors, assertions, exceptions and warnings are told apart.
Removed
- The Test Pro package, its license keys and license window. Nothing needs activating.
AssetStoreCaptureUtility(Asset Store screenshot menu) and the oldNanoraUnityMCP-Reference.html, which listed 31 tools.
Fixed
-
simulate_inputkeys and mouse reach the game while the Unity window is in the background. The Input System disables the keyboard and mouse when Unity loses focus and gives keys to the game only while the Game view is focused, so an AI driving Unity from a terminal had its key taps dropped while the tool reported them sent. During Play Mode the tool now routes input to the game regardless of focus while simulated keys are held, and restores the project settings when the last key is released or Play Mode ends. -
The HTTP/SSE server falls back to the next port when the configured one is taken, on any OS language. "Port in use" is now detected from error codes (
SocketError.AddressAlreadyInUse, Win32 10048/183/32, Mono's duplicate-listener error) instead of English words in the message, so Japanese Windows no longer gives up after the first attempt. The failure log reports the attempts actually made. -
HTTP
/messageno longer cuts tool calls off at 30 s. Atools/callrequest stays open for the longer of itstimeout_seconds/timeout_msargument and 300 s (therun_testsdefault), plus 30 s for the tool to report its own timeout, socompile_project,manage_playmodewithwait_for_ready,run_testsand package installs return their results instead of a bare 504. When the limit is reached, the 504 body is a JSON-RPC error carrying the request id and says the request may still be running or may already have completed. -
Main-thread timeouts say whether the operation ran. An operation that never reached the main thread is dropped and reported as not started; one that started (for example a player build run through
execute_menu_item) keeps running and is reported as still running and possibly completing, instead of advising to focus the Editor. Previously a timed-out operation that had not started still ran later. -
Server instructions are returned in the top-level
instructionsfield of the initialize result, where MCP clients read them, instead of insideserverInfo. -
Tool descriptions match the implementation:
manage_scenestates thatnew/loadsave or discard unsaved changes,capture_screenshotstates what the game view capture omits,manage_playmodedocuments the immediate "Already in Play Mode" return, and connection-retry advice no longer tells clients to replay mutations. -
assert_ui_state,install_skills,manage_assets, andmanage_prefabsare listed bylist_categories/list_toolsin SuperSave mode;list_toolstakes its category enum from the category table. -
Bundled skills resolve their actual UPM package location, including local and cached packages.
-
Empty batch commands return an input error before registry lookup; missing or ambiguous Prefab selectors return MCP errors.
-
CI creates clean install fixtures, serializes Unity license use, rejects missing test evidence, and avoids blocking the editor thread in Test Pro tests.
-
execute_csharpnow returns compilation and runtime failures as MCP errors without retrying the script through reflection. Reflection fallback is limited to unavailable Roslyn assemblies, preventing false success responses and repeated scene mutations after a runtime exception. -
execute_csharp(Roslyn) referencesSystem.dll, soSortedDictionary,Queue,Stack,LinkedList,RegexandUricompile on Unity's Mono profile instead of failing with CS1069/CS0103. -
Reflection fallback now rejects unsupported expressions as MCP errors, accepts optional return/semicolon syntax for supported reads, and preserves forced Roslyn runtime diagnostics.
Install: Package Manager > + > Add package from tarball... with the .tgz below, or Add package from git URL...:
https://github.com/nanora-sama/nanora-unity-mcp.git?path=Assets/NanoraUnityMCP#v1.2.0