Skip to content

Releases

nanora-unity-mcp 1.2.2

Choose a tag to compare

@github-actions github-actions released this 14 Nov 12:37
cbee8ad

Changed

  • Skill recipes and references use FindObjectsByType(FindObjectsSortMode.None) instead of the Unity 6-deprecated FindObjectsOfType, and unity-mcp-skill has 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-check treats new obsolete-API warnings in changed files as findings.
  • execute_csharp reflection mode accepts FindAnyObjectByType<T>() and FindFirstObjectByType<T>() as well as FindObjectOfType<T>(), and resolves them without reflecting on the deprecated method.
  • query_objects type selectors call FindObjectsByType through UnityCompatibility instead of reflecting on FindObjectsOfType.

Fixed

  • U-Selector attribute selectors understand >= and <=. Before, [layer>=5] was read as > with the value =5 and matched nothing. [activeInHierarchy=…] now reads the GameObject's activeInHierarchy; 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

Choose a tag to compare

@nanora-sama nanora-sama released this 08 Nov 05:04

Fixed

  • simulate_input accepts Input System key names such as DownArrow, UpArrow, F5 and LeftShift. Before, names that are also a KeyCode went to the focused Editor window as an Editor event (Key pressed: DownArrow (Editor Event)), so the game's InputAction never saw them; only the short names (Down, Up) worked.
  • compile_project called again after a failed compile, with nothing changed, reported SUCCESS with 0 errors because Unity did not compile again. It now reports FAILED with 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

Choose a tag to compare

@nanora-sama nanora-sama released this 08 Nov 05:03

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 /mcp for Codex and other HTTP clients, next to legacy SSE for Claude Code, Claude Desktop and Cursor.
  • Read-only resources unity://project/info and unity://editor/state (compile failure, play/pause state, loaded and unsaved scenes).
  • /health reports project path, process id, version, protocol version and transports, so a client can tell which Editor it reached.
  • mcp_status and get_console_logs return structuredContent.
  • Testing tools formerly in Test Pro, now free: run_e2e_test, visual_regression_test, performance_budget_test, generate_test_report (category test).
  • 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, #GameOver and Input System actions make it a target for simulate_input, wait_for_selector and assert_ui_state.
  • scripts/mcp/verify-transport.mjs and verify-codex.mjs: checks against a running Editor and an installed Codex client.

Changed

  • package.json declares com.unity.test-framework and com.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. /message without a session replies directly instead of broadcasting.
  • Browser Origin headers 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 old NanoraUnityMCP-Reference.html, which listed 31 tools.

Fixed

  • simulate_input keys 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 /message no longer cuts tool calls off at 30 s. A tools/call request stays open for the longer of its timeout_seconds/timeout_ms argument and 300 s (the run_tests default), plus 30 s for the tool to report its own timeout, so compile_project, manage_playmode with wait_for_ready, run_tests and 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 instructions field of the initialize result, where MCP clients read them, instead of inside serverInfo.

  • Tool descriptions match the implementation: manage_scene states that new/load save or discard unsaved changes, capture_screenshot states what the game view capture omits, manage_playmode documents 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, and manage_prefabs are listed by list_categories/list_tools in SuperSave mode; list_tools takes 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_csharp now 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) references System.dll, so SortedDictionary, Queue, Stack, LinkedList, Regex and Uri compile 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