Summary
In Unreal Engine 5.8.1, the experimental Unreal MCP ObjectTools.get_properties tool can crash the Unreal Editor if a JSON Schema object returned by ObjectTools.list_properties is mistakenly passed to the properties argument.
Instead of rejecting the invalid argument and returning a tool/MCP error, the conversion path attempts to convert the entire JSON Schema to an Unreal FName.
In my case, the schema was 71,624 characters long, causing the following assertion:
FName’s 1023 max length exceeded.
Got 71624 characters excluding null-terminator.
The crash occurred while querying the WorldSettings object in Lvl_ThirdPerson.
ObjectTools.list_properties itself did not crash the Editor. The crash occurred on the subsequent ObjectTools.get_properties call.
Expected behavior:
get_properties should validate its properties argument and return an invalid-argument/tool error when it receives a schema object instead of property-name strings. Invalid MCP input should not crash the Unreal Editor.
What Type of Bug are you experiencing?
Editor
Steps to Reproduce
-
Launch Unreal Engine 5.8.1 on Windows with the experimental ModelContextProtocol, EditorToolset, and ToolsetRegistry plugins enabled.
-
Start the Unreal MCP server and connect an MCP client.
-
Open Lvl_ThirdPerson and obtain its WorldSettings object.
-
Call:
editor_toolset.toolsets.object.ObjectTools.list_properties
for the WorldSettings object. -
list_properties returns a JSON Schema object similar to:
{
“returnValue”: {
“visibilityCellSize”: {
“type”: “integer”,
“description”: “…”
},
“defaultGameMode”: {
“type”: “object”,
“description”: “…”
}
}
}
-
Pass the returned schema object itself to the “properties” argument of:
editor_toolset.toolsets.object.ObjectTools.get_properties
through the MCP call_tool interface, instead of passing an array/list of property-name strings. -
Unreal Editor asserts and crashes.
Expected Result
ObjectTools.get_properties should validate the “properties” argument before attempting Unreal type conversion.
If a JSON Schema object or any other invalid type is supplied instead of valid property-name strings, the MCP tool should return an invalid-argument/tool-call error.
Invalid MCP input should not crash the Unreal Editor process.
Observed Result
Unreal Editor crashes with an assertion while ObjectTools.get_properties is processing the invalid input.
Assertion failed: false
FName’s 1023 max length exceeded.
Got 71624 characters excluding null-terminator:
{“visibilityCellSize”:{“type”:“integer”,“description”:…
The Script Stack identifies:
/EditorToolset/Python/editor_toolset/toolsets/object_PY.ObjectTools.get_properties
ObjectTools.list_properties itself did not crash the Editor. The crash occurred on the subsequent get_properties call after the returned JSON Schema object was incorrectly passed as the properties argument.
Affects Versions
5.8
Platform(s)
Windows
Upload an image
For crash reports, include your callstack
Assertion failed: false
FName’s 1023 max length exceeded.
Got 71624 characters excluding null-terminator.
UnrealEditor_Core
UnrealEditor_Core
UnrealEditor_Core
UnrealEditor_Core
UnrealEditor_CoreUObject
UnrealEditor_PythonScriptPlugin
UnrealEditor_PythonScriptPlugin
UnrealEditor_PythonScriptPlugin
UnrealEditor_PythonScriptPlugin
UnrealEditor_PythonScriptPlugin
UnrealEditor_PythonScriptPlugin
UnrealEditor_PythonScriptPlugin
python311
python311
python311
python311
python311
python311
python311
python311
python311
UnrealEditor_PythonScriptPlugin
UnrealEditor_PythonScriptPlugin
UnrealEditor_CoreUObject
UnrealEditor_ToolsetRegistry
UnrealEditor_ToolsetRegistry
UnrealEditor_ToolsetRegistry
UnrealEditor_ToolsetRegistry
UnrealEditor_ModelContextProtocolEditor
UnrealEditor_ModelContextProtocolEditor
UnrealEditor_ModelContextProtocol
UnrealEditor_ModelContextProtocol
UnrealEditor_ModelContextProtocol
UnrealEditor_ModelContextProtocol
UnrealEditor_HTTPServer
UnrealEditor_HTTPServer
UnrealEditor_HTTPServer
UnrealEditor_HTTPServer
UnrealEditor_HTTPServer
UnrealEditor_HTTPServer
UnrealEditor_HTTPServer
UnrealEditor_Core
UnrealEditor_Core
UnrealEditor_Core
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
kernel32
ntdll
Additional Notes
Environment:
- Unreal Engine 5.8.1-56057345
- Windows 11
- Unreal MCP (Experimental)
- MCP Protocol: 2025-11-25
- MCP endpoint: http://127.0.0.1:8000/mcp
- Toolset: editor_toolset.toolsets.object.ObjectTools
- Target object: WorldSettings in Lvl_ThirdPerson
Log analysis showed the following sequence:
- ObjectTools.list_properties was executed on WorldSettings.
- list_properties returned a large JSON Schema object.
- Some JSON Schema generation warnings were logged for unsupported delegate/property types.
- The client incorrectly treated the returned schema object as if it were a list of property names.
- That schema object was then passed to ObjectTools.get_properties through call_tool.
- ObjectTools.get_properties did not reject the invalid argument.
- The Python/Unreal conversion path attempted to convert the JSON Schema to FName.
- The schema was 71,624 characters long, exceeding the FName maximum length of 1023 characters.
- Unreal Editor asserted and crashed.
The relevant Script Stack points to:
/EditorToolset/Python/editor_toolset/toolsets/object_PY.ObjectTools.get_properties
ObjectTools.list_properties itself did not crash the Editor. The crash occurred during the subsequent get_properties call.
I understand that the immediate trigger involved incorrect client-side handling of the list_properties return value. However, I am reporting this because invalid MCP/tool input should be rejected safely with an argument validation error instead of causing the entire Unreal Editor process to assert and crash.
I also found related community reports about very large list_properties responses and other ObjectTools issues, but I could not find an existing report for this specific get_properties → FName max-length Editor crash.
CallStack Hash:
88D15CF8406991E96208CCD391A5FA32543F1E9D
