Funplay Unity MCP Server
Unity Editor tasks executed by AI via 154 specialized automation tools.
Data last scanned today · Reviewed yesterday
Overview
Funplay Unity MCP Server allows AI assistants such as Claude Code, Cursor, and VS Code Copilot to interact directly with the Unity Editor. By integrating 154 built-in tools, it enables automated workflows ranging from scene creation and script generation to performance analysis and input simulation. Developers can prompt their AI to handle complex tasks like setting up UI components or configuring game logic within a live Unity project. The server is installed via the Unity Package Manager and provides a dedicated editor interface to bridge the gap between AI models and Unity development. It is designed to streamline game development cycles by executing editor-level operations through natural language prompts.
Our verdict
This server carries a high-risk profile with a security score of 25/100. The primary security concerns stem from the lack of any authentication method, meaning any entity with access to the configuration can control the server, combined with the absence of a read-only mode that grants full write access to your environment. It is community-maintained and not officially vetted, making it suitable for experimental setups but potentially risky for sensitive or professional production environments.
- Includes 154 built-in tools for diverse editor automation tasks
- Supports integration with popular AI assistants like Cursor and Claude
- Maintains a compact supply chain with only 2 direct dependencies
- Active development evidenced by recent commits
- Lacks authentication allowing unauthorized control of the server
- Provides full write access without a read-only mode option
- Maintained by community contributors rather than an official vendor
Setup
{
"mcpServers": {
"funplay-unity-mcp": {
"args": [
"-y",
"com.gamebooom.unity.mcp"
],
"command": "npx"
}
}
}Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows), then restart Claude Desktop. Some servers require API keys or tokens as environment variables — check the project's README and add an "env" object if needed.
- No read-only mode — running this grants full read/write access.
- No built-in authentication — anyone with access to this config can invoke every tool it exposes.
Tools
| Tool | Description | Risk |
|---|---|---|
| get_scene_info | Returns information about the currently open scene. | low |
| execute_code | Compiles and executes a C# snippet in-memory on the Unity Editor thread. | high |
| execute_menu_item | Executes a Unity menu item command as a fallback. | medium |
| create_primitive | Create a primitive game object | medium |
| create_game_object | Create a new game object | medium |
| delete_game_object | Delete a game object | high |
| find_game_objects | Find game objects | low |
| get_game_object_info | Get game object information | low |
| set_transform | Set transform properties | medium |
| duplicate_game_object | Duplicate a game object | medium |
| rename_game_object | Rename a game object | medium |
| set_parent | Set parent of a game object | medium |
| add_component | Add a component to a game object | medium |
| set_tag_and_layer | Set tag and layer of a game object | medium |
| set_active | Set active state of a game object | medium |
| get_hierarchy | Get hierarchy information | low |
| get_component_properties | Get component properties | low |
| list_components | List components of a game object | low |
| set_component_property | Set a property of a component | medium |
| set_component_properties | Set multiple properties of a component | medium |
| copy_component | Copy a component | low |
| paste_component_values | Paste values into a component | medium |
| add_component_to_many | Add a component to multiple objects | medium |
| create_script | Create a new script | medium |
| edit_script | Edit an existing script | medium |
| patch_script | Apply a patch to a script | medium |
| create_material | Create a new material | medium |
| assign_material | Assign a material to an object | medium |
| find_assets | Find assets in the project | low |
| delete_asset | Delete an asset | high |
| rename_asset | Rename an asset | medium |
| copy_asset | Copy an asset | medium |
| get_asset_import_settings | Get import settings for an asset | low |
| set_asset_import_settings | Set import settings for an asset | medium |
| find_references | Find references to an asset or object | low |
| find_broken_references | Find broken references in the project | low |
| get_mesh_info | Get information about a mesh | low |
| get_material_properties | Get material properties | low |
| set_material_property | Set material properties | medium |
| read_file | Read a file from the project | low |
| write_file | Write to a file in the project | medium |
| search_files | Search for files in the project | low |
| list_directory | List files in a directory | low |
| exists | Check if a file or directory exists | low |
| list_scenes | List all scenes in the project | low |
| load_scene_additive | Load a scene additively | medium |
| unload_scene | Unload a scene | medium |
| list_dirty_scenes | List scenes with unsaved changes | low |
| save_all_scenes | Save all open scenes | medium |
| save_scene | Save the current scene | medium |
| open_scene | Open a scene | medium |
| create_new_scene | Create a new scene | medium |
| enter_play_mode | Enter Unity Play mode | medium |
| exit_play_mode | Exit Unity Play mode | medium |
| set_time_scale | Set the time scale of the simulation | medium |
| get_time_scale | Get the current time scale | low |
| physics_raycast | Perform a physics raycast | low |
| physics_overlap | Perform a physics overlap check | low |
| physics2d_overlap_point | Perform a 2D physics overlap check | low |
| particle_control | Control particle systems | medium |
| get_lighting_settings | Get lighting settings | low |
| set_lighting_settings | Set lighting settings | medium |
| bake_lightmaps | Start lightmap baking | medium |
| director_evaluate | Evaluate a timeline director | medium |
| create_prefab | Create a prefab from a game object | medium |
| instantiate_prefab | Instantiate a prefab in the scene | medium |
| unpack_prefab | Unpack a prefab instance | medium |
| open_prefab_stage | Open a prefab in the prefab stage | medium |
| save_prefab_stage | Save the current prefab stage | medium |
| close_prefab_stage | Close the prefab stage | medium |
| create_scriptable_object | Create a new ScriptableObject | medium |
| get_scriptable_object | Get data from a ScriptableObject | low |
| set_scriptable_object_properties | Set properties of a ScriptableObject | medium |
| create_canvas | Create a UI Canvas | medium |
| create_button | Create a UI Button | medium |
| create_text | Create UI Text | medium |
| create_image | Create a UI Image | medium |
| raycast_at_point | Perform a UI raycast at a point | low |
| create_animation_clip | Create an animation clip | medium |
| create_animator_controller | Create an animator controller | medium |
| assign_animator | Assign an animator to a game object | medium |
| get_animator_state | Get information about animator states | low |
| set_animator_parameter | Set an animator parameter | medium |
| play_animator_state | Force an animator to play a state | medium |
| get_camera_properties | Get camera settings | low |
| set_camera_projection | Set camera projection | medium |
| set_camera_settings | Update camera settings | medium |
| set_camera_culling_mask | Set camera culling mask | medium |
| capture_game_view | Capture screenshot of Game View | low |
| capture_simulator_view | Capture screenshot of Simulator View | low |
| capture_scene_view | Capture screenshot of Scene View | low |
| capture_multiview | Capture screenshots of multiple views | low |
| capture_editor_window | Capture an editor window | low |
| get_execute_code_history | Get history of executed code | low |
| replay_execute_code | Re-run a piece of executed code | high |
| clear_execute_code_history | Clear the execution history | medium |
| simulate_key_press | Simulate a key press | medium |
| simulate_key_combo | Simulate a key combination | medium |
| simulate_mouse_click | Simulate a mouse click | medium |
| simulate_mouse_drag | Simulate a mouse drag | medium |
| get_performance_snapshot | Get a one-shot performance summary | low |
| analyze_scene_complexity | Analyze scene complexity | low |
| profiler_start | Start the Unity Profiler | medium |
| profiler_stop | Stop the Unity Profiler | medium |
| profiler_status | Get the status of the Profiler session | low |
| get_frame_timing | Get CPU/GPU frame timing | low |
| get_counters | Read performance counters | low |
| get_object_memory | Get memory usage of a specific object | low |
| get_top_memory_objects | List top objects by memory usage | low |
| memory_take_snapshot | Take a memory snapshot | medium |
| memory_list_snapshots | List existing memory snapshots | low |
| memory_compare_snapshots | Compare two memory snapshots | low |
| frame_debugger_enable | Enable the Frame Debugger | medium |
| frame_debugger_disable | Disable the Frame Debugger | medium |
| frame_debugger_get_events | Get frame debugger events | low |
| memory_take_full_snapshot | Take a full memory snapshot | medium |
| memory_list_full_snapshots | List full memory snapshots | low |
| memory_open_snapshot_in_profiler | Open a snapshot in the Profiler window | medium |
| memory_query_top_objects | Query top objects in memory | low |
| memory_query_references | Query references for an object in memory | low |
| install_package | Install a Unity package | high |
| remove_package | Remove a Unity package | high |
| list_packages | List installed packages | low |
| wait_for_compilation | Wait for script compilation to complete | low |
| request_recompile | Trigger a script recompile | medium |
| get_compilation_errors | Get current compilation errors | low |
| get_reload_recovery_status | Get domain reload recovery status | low |
| run_tests | Run project tests | medium |
| get_test_job | Get status of a test job | low |
| cancel_test_run | Cancel a running test job | medium |
| get_editor_state | Get general editor state | low |
| get_selection | Get currently selected objects | low |
| set_selection | Set selection | medium |
| get_prefab_stage | Get current prefab stage information | low |
| get_active_tool | Get currently active editor tool | low |
| set_active_tool | Set the active editor tool | medium |
| get_windows | List open editor windows | low |
| get_tags | List project tags | low |
| add_tag | Add a new tag | medium |
| remove_tag | Remove a tag | medium |
| get_layers | List project layers | low |
| add_layer | Add a new layer | medium |
| get_build_settings | Get build settings | low |
| get_project_settings | Get project settings | low |
| undo | Perform an undo operation | medium |
| redo | Perform a redo operation | medium |
| get_undo_state | Get state of the undo stack | low |
| validate_menu_item | Check if a menu item is valid | low |
| select_object | Select an object in the editor | low |
| focus_on_object | Focus the Scene view on an object | low |
| ping_asset | Ping an asset in the project window | low |
| log_message | Log a message to the console | low |
| show_dialog | Show a dialog box | low |
| get_console_logs | Get console logs | low |
Compatibility
| Client | Local | Docker | Remote | Read-only |
|---|---|---|---|---|
| ChatGPT | ||||
| Claude Desktop | ||||
| Cursor | ||||
| VS Code | ||||
| Windsurf |
Frequently asked questions
›Which versions of Unity are supported?
The Funplay MCP server requires Unity 2022.3 or newer.
›Can this server run outside of the Unity Editor?
No, this is an editor-only tool designed specifically to operate within your running Unity project.
›How can I maintain a stable connection during Unity domain reloads?
You can enable Experimental Broker Mode in the MCP Server window to maintain connection continuity across Unity script recompiles and Play Mode reloads.
›How do I modify which tools are available to the AI?
You can manage and edit the specific tools exposed by the server by navigating to Funplay > Tool Exposure in the Unity menu.
›How can I customize safety settings or logging?
Open the Funplay > MCP Settings window to adjust execute_code safety defaults and toggle plugin debug logging.
Alternatives
Changelog
Badge
Maintain this server? Add the live badge to your README.