Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Added
- `MCP_ADDITIONAL_PATH_PREFIXES` environment variable to whitelist custom UE content mount points (plugins with `CanContainContent`). Default is empty (no change to existing behavior). Enables projects with modular plugin architecture to access Blueprint assets at custom mount points like `/ProjectObject/`, `/ProjectAnimation/`, etc.
- **`inspect_cdo` sub-action** for the `inspect` tool - inspect any Blueprint's Class Default Object without spawning an actor. Reads CDO property values via reflection. For Actor BPs, enumerates all components: native CDO components with effective override values, plus Blueprint SCS components from node templates (full parent chain). Includes parent attachment info for SCS components. Source classified as Native, SCS, or SCS_Inherited. Key fields (mesh, animClass, transform) included in summary; full property export via detailed or propertyNames filter.

---

Expand Down
1 change: 1 addition & 0 deletions docs/editor-plugin-extension.md
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,7 @@ The MCP Automation Bridge is a production-ready Unreal Editor plugin that enable
| | `keyframe` | ✅ Native | Native keyframe manipulation |
| **inspect** | `get_property` | ✅ Native | `FProperty` → JSON serialization |
| | `set_property` | ✅ Native | JSON → `FProperty` typed marshaling |
| | `inspect_cdo` | ✅ Native | Inspect any Blueprint CDO without spawning an actor. CDO properties via reflection; for Actor BPs enumerates CDO components with effective overrides. Supports detailed, componentName, propertyNames filters. |
| | `list` | ✅ Native | Actor/asset listing via subsystems |
| **manage_audio** | `create_sound_cue` | ✅ Native | Sound Cue asset creation |
| | `play_sound_at_location` | ✅ Native | 3D spatial sound playback |
Expand Down
2 changes: 2 additions & 0 deletions docs/handler-mapping.md
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,8 @@ This document maps the TypeScript tool definitions to their corresponding C++ ha
| Action | C++ Handler File | C++ Function | Notes |
| :--- | :--- | :--- | :--- |
| `inspect_object` | `McpAutomationBridge_PropertyHandlers.cpp` | `HandleInspectAction` | |
| `inspect_class` | `McpAutomationBridge_EnvironmentHandlers.cpp` | `HandleInspectAction` | Global action, no objectPath required |
| `inspect_cdo` | `McpAutomationBridge_PropertyHandlers.cpp` | `HandleInspectCdoAction` | Inspect any Blueprint CDO without spawning an actor. CDO properties via reflection; for Actor BPs enumerates CDO components with effective overrides. |
| `set_property` | `McpAutomationBridge_PropertyHandlers.cpp` | `HandleSetObjectProperty` | |
| `get_property` | `McpAutomationBridge_PropertyHandlers.cpp` | `HandleGetObjectProperty` | |
| `get_components` | `McpAutomationBridge_ControlHandlers.cpp` | `HandleControlActorAction` | |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1436,7 +1436,8 @@ bool UMcpAutomationBridgeSubsystem::HandleInspectAction(
LowerSubAction.Equals(TEXT("list_objects")) ||
LowerSubAction.Equals(TEXT("find_by_class")) ||
LowerSubAction.Equals(TEXT("find_by_tag")) ||
LowerSubAction.Equals(TEXT("inspect_class"));
LowerSubAction.Equals(TEXT("inspect_class")) ||
LowerSubAction.Equals(TEXT("inspect_cdo"));

// Actor actions (delegated to HandleControlActorAction)
const bool bIsActorAction =
Expand Down Expand Up @@ -1754,6 +1755,13 @@ bool UMcpAutomationBridgeSubsystem::HandleInspectAction(
}
return true;
}
// ---------------------------------------------------------------------
// inspect_cdo - delegated to HandleInspectCdoAction (PropertyHandlers)
// ---------------------------------------------------------------------
else if (LowerSubAction.Equals(TEXT("inspect_cdo")))
{
return HandleInspectCdoAction(RequestId, Payload, RequestingSocket);
}

// Fallback for unimplemented global actions
Resp->SetBoolField(TEXT("success"), true);
Expand Down
Loading
Loading