MCP tool calls return Blueprint runtime errors instead of the tool's return value

Summary

Opus’s diagnostic on log flood from having lots of NPC spawners:

Tool calls come back as thousands of lines of Blueprint runtime errors with the tool’s actual result missing entirely. Sample text:

Accessed None trying to read (real) property CallFunc_GetOwnerFortPlayerAnimInstance in not an UClass
Accessed None trying to read (real) property CallFunc_K2_GetRootComponent_ReturnValue in not an UClass
Accessed None trying to read (real) property CallFunc_GetGameStateAthena_ReturnValue in not an UClass

Affects ProgrammaticToolset.execute_tool_script and plain call_tool alike. Read-only calls included.

The work still lands. Three DeviceToolset.RemoveEventBinding calls returned only error text; a ListEventBindings read immediately after showed all three had applied. Same pattern with a 243-light property pass and a 248-row array write. This makes every drowned call ambiguous — a blind retry double-applies.

Not a log-verbosity problem. A full 169,062-line session log contains 20 LogScript: Warning lines, while a single tool response contains thousands. EditorToolset.LogsToolset.SetVerbosity on LogScript has no effect. The toolset wrapper appears to collect Blueprint script exceptions directly, below the UE_LOG category gate, so there is no client- or config-side workaround.

Source

Our level has 778 Device_CharacterSpawner_C (NPC spawners). Each one carries a DONT_ACCESS_AISpawnerPreviewer component (AISpawnerPreviewerComponent, a ChildActorComponent) with childActorClass = /CRD_Mannequin/SetupAssets/Character_Mannequin.Character_Mannequin_C and bChildActorIsTransient = true. That gives 778 transient FortPlayerMannequin preview actors, which is what GetOwnerFortPlayerAnimInstance points at. The spawner device exposes no toggle to disable the preview.

Triggers (inside execute_tool_script)

Operation Floods?
get_properties / set_properties by explicit refPath No
find_actors, any filter Yes
add_to_scene_from_class Yes

Started intermittent, now near-constant on this project.

Asks

Don’t let Blueprint script exceptions into the tool result channel, or separate them from the return value so the result survives.
Give the NPC spawner a way to disable the preview mannequin.

Please select what you are reporting on:

Verse

What Type of Bug are you experiencing?

AI

Steps to Reproduce

Open a UEFN project (42.20, CL 58011042) containing a large number of NPC spawners — Device_CharacterSpawner_C. Ours has 778.
Enable Project Settings → Python Editor Scripting and UEFN MCP Toolsets, and let the MCP server start on http://127.0.0.1:8000/mcp.
Connect an MCP client (Claude Code via .mcp.json).
Call SceneTools.find_actors with any filter, or any ProgrammaticToolset.execute_tool_script.
The response returns thousands of Accessed None trying to read (real) property CallFunc_GetOwnerFortPlayerAnimInstance in not an UClass lines, with the tool’s return value absent.
Re-read the same state with a single ObjectTools.get_properties call by explicit refPath — it returns cleanly, and shows any writes from step 4 did apply.

Expected Result

the tool’s return value.

Observed Result

Blueprint script exceptions in its place; the call’s success or failure is unknowable from the response.

Platform(s)

UEFN MCP with Opus 5 Medium