AI Skills, MCP Tools, and CLI for Unity Engine. Full AI develop and test loop. Use cli for quick setup. Efficient token usage, advanced tools. Any C# method may
AI Skills, MCP Tools, and CLI for Unity Engine. Full AI develop and test loop. Use cli for quick setup. Efficient token usage, advanced tools. Any C# method may
Unity MCP is an AI-powered game development assistant for Editor & Runtime. Connect Claude, Cursor, & Windsurf to Unity via MCP. Automate workflows, generate code, and enable AI within your games.
Unlike other tools, this plugin works inside your compiled game, allowing for real-time AI debugging and player-AI interaction.
Join our Discord Server - Ask questions, showcase your work, and connect with other developers!
# 1. Install unity-mcp-cli
npm install -g unity-mcp-cli
# 2. Install "AI Game Developer" in Unity project
unity-mcp-cli install-plugin ./MyUnityProject
# 3. Sign in to ai-game.dev (opens your browser — OAuth device flow)
unity-mcp-cli login
# 4. Open Unity project (auto-connects and generates skills)
unity-mcp-cli open ./MyUnityProject
Get up and running in three steps:
Install plugin — download the .unitypackage installer or run openupm add com.ivanmurzak.unity.mcp
Alternative:
npx unity-mcp-cli install-plugin ./MyUnityProject— see CLI documentation
Pick an AI agent — Claude Code, Claude Desktop, GitHub Copilot, Cursor, or any other
Setup AI agent — open Window/AI Game Developer in Unity and click Auto-generate skills (recommended) or Configure MCP
Alternative:
npx unity-mcp-cli setup-skills claude-code ./MyUnityProject— see CLI documentation
That's it. Ask your AI "Create 3 cubes in a circle with radius 2" and watch it happen. ✨
The plugin ships with 70+ built-in tools across four categories. Each tool brings AI skill. All tools are available immediately after installation — no extra configuration required. See docs/default-mcp-tools.md for the full reference with detailed descriptions.
Project & AssetsBrowse the full MCP tools registry online: ai-game.dev/docs/tools
assets-copy - Copy the asset at path and stores it at newPathassets-create-folder - Creates a new folder in the specified parent folderassets-delete - Delete the assets at paths from the projectassets-find - Search the asset database using the search filter stringassets-find-built-in - Search the built-in assets of the Unity Editorassets-get-data - Get asset data from the asset file including all serializable fields and propertiesassets-material-create - Create new material asset with default parametersassets-modify - Modify asset file in the projectassets-move - Move the assets at paths in the project (also used for rename)assets-prefab-close - Close currently opened prefabassets-prefab-create - Create a prefab from a GameObject in the current active sceneassets-prefab-instantiate - Instantiates prefab in the current active sceneassets-prefab-open - Open prefab edit mode for a specific GameObjectassets-prefab-save - Save a prefab in prefab editing modeassets-refresh - Refreshes the AssetDatabaseassets-shader-get-data - Get detailed data about a shader asset (properties, subshaders, passes)assets-shader-list-all - List all available shaders in the project assets and packagespackage-add - Install a package from the Unity Package Manager registry, Git URL, or local pathpackage-list - List all packages installed in the Unity project (UPM packages)package-remove - Remove (uninstall) a package from the Unity projectpackage-search - Search for packages in both Unity Package Manager registry and installed packagesgameobject-component-add - Add Component to GameObjectgameobject-component-destroy - Destroy one or many components from target GameObjectgameobject-component-get - Get detailed information about a specific Component on a GameObjectgameobject-component-list-all - List C# class names extended from UnityEngine.Componentgameobject-component-modify - Modify a specific Component on a GameObjectgameobject-create - Create a new GameObject in opened Prefab or in a Scenegameobject-destroy - Destroy GameObject and all nested GameObjects recursivelygameobject-duplicate - Duplicate GameObjects in opened Prefab or in a Scenegameobject-find - Finds specific GameObject by provided informationgameobject-modify - Modify GameObjects and/or attached component's fields and propertiesgameobject-set-parent - Set parent GameObject to list of GameObjectsobject-get-data - Get data of the specified Unity Objectobject-modify - Modify the specified Unity Objectscene-create - Create new scene in the project assetsscene-get-data - Retrieves the list of root GameObjects in the specified scenescene-list-opened - Returns the list of currently opened scenes in Unity Editorscene-open - Open scene from the project asset filescene-save - Save opened scene to the asset filescene-set-active - Set the specified opened scene as the active scenescene-unload - Unload scene from the opened scenes in Unity Editorscreenshot-camera - Captures a screenshot from a camera and returns it as an imagescreenshot-game-view - Captures a screenshot from the Unity Editor Game Viewscreenshot-isolated - Render a GameObject in isolation from a chosen angle (optional composite 2x2 view)screenshot-scene-view - Captures a screenshot from the Unity Editor Scene Viewconsole-clear-logs - Clears the MCP log cache and the Unity Editor Console windowconsole-get-logs - Retrieves Unity Editor logs with filtering optionseditor-application-get-state - Returns information about the Unity Editor application state (playmode, paused, compilation)editor-application-set-state - Control the Unity Editor application state (start/stop/pause playmode)editor-selection-get - Get information about the current Selection in the Unity Editoreditor-selection-set - Set the current Selection in the Unity Editorreflection-method-call - Call any C# method with input parameters and return resultsreflection-method-find - Find method in the project using C# Reflection (even private methods)script-delete - Delete the script file(s)script-execute - Compiles and executes C# code dynamically using Roslynscript-read - Reads the content of a script filescript-update-or-create - Updates or creates script file with the provided C# codetests-run - Execute Unity tests (EditMode/PlayMode) with filtering and detailed resultstype-get-json-schema - Generate a JSON Schema for a C# type via reflectionprofiler-capture-frame - Capture the current frame's timing info (delta time, FPS, frame counts)profiler-clear-data - Discard all frames currently held by the Editor Profilerprofiler-enable-module - Toggle the local enabled flag for a named profiler moduleprofiler-get-memory-stats - Return a memory statistics snapshot (reserved, allocated, mono heap, graphics)profiler-get-rendering-stats - Return frame timing, FPS, vsync, target frame rate, graphics device typeprofiler-get-script-stats - Return script execution timing plus Mono / GC memory usageprofiler-get-status - Return the profiler's enabled state, active modules, and platform supportprofiler-list-modules - List all known profiler module names with their enabled flagprofiler-load-data - Read back a previously-saved profiler JSON snapshotprofiler-save-data - Save a snapshot of profiler-derived stats to a JSON fileprofiler-start - Enable Unity's runtime profiler and open the Profiler windowprofiler-stop - Disable Unity's runtime profilerInstall extensions when need more tools or create your own tools.
Extension Description AI Animation Set of additional tools for Unity Animations AI Cinemachine MCP Tools for Cinemachine AI InputSystem MCP Tools for the Unity Input System AI Navigation MCP Tools for AI Navigation (NavMesh surfaces, baking, agents, links) AI ParticleSystem Set of additional tools for Unity Particle System AI ProBuilder Set of additional tools for Unity ProBuilder AI Splines MCP Tools for Unity Splines AI Terrain Set of additional tools for Unity Terrain AI Tilemap MCP Tools for Unity 2D Tilemaps AI Timeline MCP Tools for Unity Timeline cutscenes and sequencesMCP Server setupTo make Runtime module optional
[Bug] PlayMode run_tests can leave an orphaned running job after compilation/domain reload
unity-mcp-cli derives the local port with ProjectIdentity v1 while the plugin uses v2 — status/wait-for-ready probe the wrong port on Windows
tests-run: filter validation count ORs the fields Unity ANDs
tests-run: TotalTests ignores all filters (counts entire test tree)
Race condition in FileLogStorage.Clear() / BufferedFileLogStorage.Clear() causes "file being used by another process" on Console/ClearLogs
feat(connection): instance-metadata handshake + ProjectIdentity/ProjectMarker wiring (mcp-authorize PR 3)
feat(connection): RFC 8628 device flow + machine credential store + zero-button boot