The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Funplay Unreal MCP listing page.
The most advanced MCP server for the Unreal Editor.
中文 | English
💖 If this saves you time, please star the repo — it helps a lot.
Funplay MCP for Unreal lets AI assistants — Claude Code, Cursor, Windsurf, Codex, VS Code Copilot and any other MCP client — operate directly inside a running Unreal Editor. It is a pure-Python editor plugin (no C++ build, works across Unreal Engine 5.3–5.8) that exposes the editor over a local MCP server, plus a tiny Node.js stdio bridge that connects your AI client to it. MIT-licensed and free for commercial use.
Describe what you want in natural language — spawn and arrange actors, build
levels and Blueprints, create materials, import assets, drive Play-In-Editor,
capture screenshots, or run arbitrary execute_python — and let the assistant
do it.
"Build a small arena: a floor, four walls, some point lights, and a player start in the middle. Then play it and send me a screenshot."
The assistant inspects the level, spawns and positions the actors, sets up lighting, enters Play-In-Editor, and returns a screenshot — all through this MCP server.
Codex asks for a castle, Funplay MCP drives the Unreal Editor through MCP, and the finished scene appears directly in the editor.
Three things: (1) drop the plugin into your project, (2) enable it and start the server, (3) point your AI client at it.
💡 The plugin is pure Python — there is nothing to compile.
FunplayMCP/ folder into your project's Plugins/ directory
(<YourProject>/Plugins/FunplayMCP/), or download
Funplay.UnrealMcp.vX.Y.Z.zip from the latest Release
and extract it there..uplugin enables automatically.http://127.0.0.1:8765/ by default. If the
port is busy it automatically picks a free local port (and a second editor of
the same project attaches to the existing server).<YourProject>/Saved/FunplayMCP/funplay_mcp_settings.json.The fastest path is the editor menu: Tools → Funplay MCP → Configure Claude Code (or Cursor / VS Code / Codex). It writes the right config with the endpoint and token filled in.
Claude Code (~/.claude.json), Cursor (~/.cursor/mcp.json):
VS Code (mcp.json) uses the servers key; Codex
(~/.codex/config.toml) uses a [mcp_servers."funplay-unreal"] table. Both are
written for you by the one-click menu.
Ask your assistant to:
get_project_info,unreal://project/context,execute_python with result = unreal.SystemLibrary.get_engine_version().127.0.0.1 and rejects non-loopback Origins; POST
requests require the per-project auth token.core profile. A focused 32-tool set is exposed by default; switch
to full (97 tools) in the settings file when you want everything.execute_python safety checks are on by default (a filesystem/process
denylist); pass safety_checks=false to override per call.unreal API work is marshalled onto the game thread, so the editor never
crashes from off-thread access.execute_python first. A first-class tool that runs arbitrary Python in
the editor — anything the 96 dedicated tools don't cover, you can still do.search_api / describe_class / inspect_object
read the embedded unreal module's own docs, so the assistant uses the real
API instead of hallucinating it.AGENTS.md bridge from the editor menu.core profile) across 20 categories.unreal://...) for project, level, selection, logs, and the
tool catalog, plus prompt templates for common workflows.funplay-unreal-mcp.execute_python — run any Python snippet in the editor.level_review, feature_plan, debug_runtime, blueprint_actor.unreal://project/context, unreal://project/info,
unreal://level/current, unreal://actors/list, unreal://selection/current,
unreal://tools/catalog, unreal://logs/recent, unreal://interaction/history,
plus templates unreal://actor/{ref} and unreal://asset/{path}.| Funplay MCP for Unreal | Funplay MCP for Unity | |
|---|---|---|
| Editor side | Pure-Python plugin (no build) | C# package |
| Primary execution | execute_python (embedded unreal) | execute_code (in-memory C#) |
| Transport | Local HTTP + stdio bridge | Local HTTP + stdio bridge |
| Default exposure | core profile (32 of 97) | core profile |
| Engine versions | UE 5.3–5.8 | Unity 2022.3+ |
| Client config | One-click (Claude/Cursor/VS Code/Codex) | One-click |
97 built-in tools (32 core). Call get_tool_catalog for the live list.
| Category | Tools |
|---|---|
| Execution | execute_python, run_console_command |
| Reflection | search_api, describe_class, list_enum_values, inspect_object |
| Actors | spawn_actor, spawn_actor_from_asset, destroy_actor, duplicate_actor, set_actor_transform, set_actor_label, set_actor_property, attach_actor, get_actor_info, list_actors, find_actors, batch_spawn_actors |
| Components | add_component, list_components, get_component_properties, set_component_property, set_static_mesh, set_material, set_physics_properties, add_ism_instances |
| Assets | list_assets, find_assets, get_asset_info, duplicate_asset, rename_asset, delete_asset, save_asset, import_asset, create_folder, asset_exists, get_asset_references |
| Blueprints | create_blueprint, add_blueprint_component, compile_blueprint, get_blueprint_info, spawn_blueprint |
| Materials | create_material, create_material_instance, set_material_instance_parameter, get_material_info, add_material_expression, connect_material_expressions, connect_material_property, recompile_material |
| Levels | new_level, load_level, save_current_level, save_all_dirty, get_level_info, list_levels |
| Play-In-Editor | play_in_editor, stop_play_in_editor, simulate_in_editor, get_play_state |
| Viewport | set_viewport_camera, get_viewport_camera, focus_viewport |
| Screenshots | take_screenshot |
| Selection | get_selection, set_selection, select_none, get_selected_assets |
| Editor State | get_editor_state, get_project_info, get_output_log, sync_content_browser, health_status, undo, redo |
| Files | read_file, write_file, list_directory, file_exists |
| Procedural | build_wall, build_floor, build_stairs, scatter_actors |
| Organization | set_actor_folder, create_layer, add_actors_to_layer, list_layers |
| Data | create_data_table, get_data_table, set_data_table_rows, export_data_table_csv |
| UMG | create_widget_blueprint, add_widget, set_widget_property |
| Effects | spawn_niagara_system, set_niagara_parameter |
| Discovery | get_tool_catalog |
See CONTRIBUTING.md. Run python3 scripts/validate_repo.py
before opening a PR.
MIT — see LICENSE.