Get rid of meta toolname for MCP handlers

This commit is contained in:
2026-03-08 22:00:29 -04:00
parent c3950595eb
commit 3e6fb21b7b
23 changed files with 161 additions and 216 deletions

View File

@@ -21,8 +21,8 @@
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="create_anim_blueprint_asset")) UCLASS()
class UMCPHandler_CreateAnimBlueprint : public UObject, public IMCPHandler class UMCPHandler_CreateAnimBlueprintAsset : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -135,8 +135,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="list_anim_slot_names")) UCLASS()
class UMCPHandler_ListAnimSlots : public UObject, public IMCPHandler class UMCPHandler_ListAnimSlotNames : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -193,8 +193,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="list_anim_sync_groups")) UCLASS()
class UMCPHandler_ListSyncGroups : public UObject, public IMCPHandler class UMCPHandler_ListAnimSyncGroups : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -251,8 +251,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="create_blend_space_asset")) UCLASS()
class UMCPHandler_CreateBlendSpace : public UObject, public IMCPHandler class UMCPHandler_CreateBlendSpaceAsset : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -347,8 +347,8 @@ struct FBlendSpaceSampleEntry
float Y = 0.0f; float Y = 0.0f;
}; };
UCLASS(meta=(ToolName="set_blend_space_sample_points")) UCLASS()
class UMCPHandler_SetBlendSpaceSamples : public UObject, public IMCPHandler class UMCPHandler_SetBlendSpaceSamplePoints : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()

View File

@@ -19,7 +19,7 @@
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="delete_asset")) UCLASS()
class UMCPHandler_DeleteAsset : public UObject, public IMCPHandler class UMCPHandler_DeleteAsset : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -169,7 +169,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="rename_asset")) UCLASS()
class UMCPHandler_RenameAsset : public UObject, public IMCPHandler class UMCPHandler_RenameAsset : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -247,7 +247,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="backup_asset")) UCLASS()
class UMCPHandler_BackupAsset : public UObject, public IMCPHandler class UMCPHandler_BackupAsset : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -286,7 +286,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="restore_asset")) UCLASS()
class UMCPHandler_RestoreAsset : public UObject, public IMCPHandler class UMCPHandler_RestoreAsset : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()

View File

@@ -16,7 +16,7 @@
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="list_blueprint_components")) UCLASS()
class UMCPHandler_ListBlueprintComponents : public UObject, public IMCPHandler class UMCPHandler_ListBlueprintComponents : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -107,7 +107,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="add_blueprint_component")) UCLASS()
class UMCPHandler_AddBlueprintComponent : public UObject, public IMCPHandler class UMCPHandler_AddBlueprintComponent : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -272,7 +272,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="remove_blueprint_component")) UCLASS()
class UMCPHandler_RemoveBlueprintComponent : public UObject, public IMCPHandler class UMCPHandler_RemoveBlueprintComponent : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()

View File

@@ -15,7 +15,7 @@
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="diff_two_blueprints")) UCLASS()
class UMCPHandler_DiffTwoBlueprints : public UObject, public IMCPHandler class UMCPHandler_DiffTwoBlueprints : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()

View File

@@ -20,8 +20,8 @@
// HandleGetPinInfo — detailed information about a specific pin // HandleGetPinInfo — detailed information about a specific pin
// ============================================================ // ============================================================
UCLASS(meta=(ToolName="get_pin_details")) UCLASS()
class UMCPHandler_GetPinInfo : public UObject, public IMCPHandler class UMCPHandler_GetPinDetails : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -133,8 +133,8 @@ public:
// HandleCheckPinCompatibility — pre-flight check for connect_pins // HandleCheckPinCompatibility — pre-flight check for connect_pins
// ============================================================ // ============================================================
UCLASS(meta=(ToolName="check_pin_connection_compatibility")) UCLASS()
class UMCPHandler_CheckPinCompatibility : public UObject, public IMCPHandler class UMCPHandler_CheckPinConnectionCompatibility : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -255,8 +255,8 @@ public:
// HandleListClasses — discover available UClasses // HandleListClasses — discover available UClasses
// ============================================================ // ============================================================
UCLASS(meta=(ToolName="search_unreal_classes")) UCLASS()
class UMCPHandler_ListClasses : public UObject, public IMCPHandler class UMCPHandler_SearchUnrealClasses : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -378,8 +378,8 @@ public:
// HandleListFunctions — list Blueprint-callable functions on a class // HandleListFunctions — list Blueprint-callable functions on a class
// ============================================================ // ============================================================
UCLASS(meta=(ToolName="list_class_functions")) UCLASS()
class UMCPHandler_ListFunctions : public UObject, public IMCPHandler class UMCPHandler_ListClassFunctions : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -495,8 +495,8 @@ public:
// HandleListProperties — list properties on a class // HandleListProperties — list properties on a class
// ============================================================ // ============================================================
UCLASS(meta=(ToolName="list_class_properties")) UCLASS()
class UMCPHandler_ListProperties : public UObject, public IMCPHandler class UMCPHandler_ListClassProperties : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -583,7 +583,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="show_commands")) UCLASS()
class UMCPHandler_ShowCommands : public UObject, public IMCPHandler class UMCPHandler_ShowCommands : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -607,8 +607,7 @@ public:
if (Class->HasAnyClassFlags(CLASS_Abstract)) continue; if (Class->HasAnyClassFlags(CLASS_Abstract)) continue;
const IMCPHandler* Handler = Cast<IMCPHandler>(Class->GetDefaultObject()); const IMCPHandler* Handler = Cast<IMCPHandler>(Class->GetDefaultObject());
if (!Handler) continue; if (!Handler) continue;
const FString& ToolName = Class->GetMetaData(TEXT("ToolName")); FString ToolName = MCPUtils::GetToolName(Class);
if (ToolName.IsEmpty()) continue;
Handlers.Add({ToolName, Class}); Handlers.Add({ToolName, Class});
} }
Handlers.Sort(); Handlers.Sort();

View File

@@ -28,7 +28,7 @@ struct FDispatcherParamEntry
FString Type; FString Type;
}; };
UCLASS(meta=(ToolName="add_event_dispatcher")) UCLASS()
class UMCPHandler_AddEventDispatcher : public UObject, public IMCPHandler class UMCPHandler_AddEventDispatcher : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -161,7 +161,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="list_event_dispatchers")) UCLASS()
class UMCPHandler_ListEventDispatchers : public UObject, public IMCPHandler class UMCPHandler_ListEventDispatchers : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()

View File

@@ -18,7 +18,7 @@
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="reparent_blueprint")) UCLASS()
class UMCPHandler_ReparentBlueprint : public UObject, public IMCPHandler class UMCPHandler_ReparentBlueprint : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -119,8 +119,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="create_blueprint_asset")) UCLASS()
class UMCPHandler_CreateBlueprint : public UObject, public IMCPHandler class UMCPHandler_CreateBlueprintAsset : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -249,8 +249,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="create_blueprint_graph")) UCLASS()
class UMCPHandler_CreateGraph : public UObject, public IMCPHandler class UMCPHandler_CreateBlueprintGraph : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -369,8 +369,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="delete_blueprint_graph")) UCLASS()
class UMCPHandler_DeleteGraph : public UObject, public IMCPHandler class UMCPHandler_DeleteBlueprintGraph : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -458,8 +458,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="rename_blueprint_graph")) UCLASS()
class UMCPHandler_RenameGraph : public UObject, public IMCPHandler class UMCPHandler_RenameBlueprintGraph : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()

View File

@@ -15,7 +15,7 @@
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="list_blueprint_interfaces")) UCLASS()
class UMCPHandler_ListBlueprintInterfaces : public UObject, public IMCPHandler class UMCPHandler_ListBlueprintInterfaces : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -71,7 +71,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="add_blueprint_interface")) UCLASS()
class UMCPHandler_AddBlueprintInterface : public UObject, public IMCPHandler class UMCPHandler_AddBlueprintInterface : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -210,7 +210,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="remove_blueprint_interface")) UCLASS()
class UMCPHandler_RemoveBlueprintInterface : public UObject, public IMCPHandler class UMCPHandler_RemoveBlueprintInterface : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()

View File

@@ -21,8 +21,8 @@
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="create_material_instance_asset")) UCLASS()
class UMCPHandler_CreateMaterialInstance : public UObject, public IMCPHandler class UMCPHandler_CreateMaterialInstanceAsset : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -127,7 +127,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="set_material_instance_parameter")) UCLASS()
class UMCPHandler_SetMaterialInstanceParameter : public UObject, public IMCPHandler class UMCPHandler_SetMaterialInstanceParameter : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -366,8 +366,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="dump_material_instance_parameters")) UCLASS()
class UMCPHandler_GetMaterialInstanceParameters : public UObject, public IMCPHandler class UMCPHandler_DumpMaterialInstanceParameters : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -611,7 +611,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="reparent_material_instance")) UCLASS()
class UMCPHandler_ReparentMaterialInstance : public UObject, public IMCPHandler class UMCPHandler_ReparentMaterialInstance : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()

View File

@@ -58,8 +58,8 @@ extern int32 TryAddMaterialExpressionSEH(
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="create_material_asset")) UCLASS()
class UMCPHandler_CreateMaterial : public UObject, public IMCPHandler class UMCPHandler_CreateMaterialAsset : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -177,7 +177,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="set_material_property")) UCLASS()
class UMCPHandler_SetMaterialProperty : public UObject, public IMCPHandler class UMCPHandler_SetMaterialProperty : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -387,7 +387,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="add_material_expression")) UCLASS()
class UMCPHandler_AddMaterialExpression : public UObject, public IMCPHandler class UMCPHandler_AddMaterialExpression : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -579,7 +579,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="delete_material_expression")) UCLASS()
class UMCPHandler_DeleteMaterialExpression : public UObject, public IMCPHandler class UMCPHandler_DeleteMaterialExpression : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -712,8 +712,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="connect_material_expression_pins")) UCLASS()
class UMCPHandler_ConnectMaterialPins : public UObject, public IMCPHandler class UMCPHandler_ConnectMaterialExpressionPins : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -880,8 +880,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="disconnect_material_expression_pin")) UCLASS()
class UMCPHandler_DisconnectMaterialPin : public UObject, public IMCPHandler class UMCPHandler_DisconnectMaterialExpressionPin : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -1010,8 +1010,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="set_material_expression_property")) UCLASS()
class UMCPHandler_SetExpressionValue : public UObject, public IMCPHandler class UMCPHandler_SetMaterialExpressionProperty : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -1293,8 +1293,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="set_material_expression_position")) UCLASS()
class UMCPHandler_MoveMaterialExpression : public UObject, public IMCPHandler class UMCPHandler_SetMaterialExpressionPosition : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -1413,8 +1413,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="create_material_function_asset")) UCLASS()
class UMCPHandler_CreateMaterialFunction : public UObject, public IMCPHandler class UMCPHandler_CreateMaterialFunctionAsset : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()

View File

@@ -39,8 +39,8 @@
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="list_material_assets")) UCLASS()
class UMCPHandler_ListMaterials : public UObject, public IMCPHandler class UMCPHandler_ListMaterialAssets : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -87,8 +87,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="dump_material")) UCLASS()
class UMCPHandler_GetMaterial : public UObject, public IMCPHandler class UMCPHandler_DumpMaterial : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -343,8 +343,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="dump_material_expression_graph")) UCLASS()
class UMCPHandler_GetMaterialGraph : public UObject, public IMCPHandler class UMCPHandler_DumpMaterialExpressionGraph : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -401,8 +401,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="describe_material_in_english")) UCLASS()
class UMCPHandler_DescribeMaterial : public UObject, public IMCPHandler class UMCPHandler_DescribeMaterialInEnglish : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -609,8 +609,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="search_within_materials")) UCLASS()
class UMCPHandler_SearchMaterials : public UObject, public IMCPHandler class UMCPHandler_SearchWithinMaterials : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -710,7 +710,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="find_material_references")) UCLASS()
class UMCPHandler_FindMaterialReferences : public UObject, public IMCPHandler class UMCPHandler_FindMaterialReferences : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -758,8 +758,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="list_material_function_assets")) UCLASS()
class UMCPHandler_ListMaterialFunctions : public UObject, public IMCPHandler class UMCPHandler_ListMaterialFunctionAssets : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -795,8 +795,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="dump_material_function")) UCLASS()
class UMCPHandler_GetMaterialFunction : public UObject, public IMCPHandler class UMCPHandler_DumpMaterialFunction : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -886,8 +886,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="compile_material")) UCLASS()
class UMCPHandler_ValidateMaterial : public UObject, public IMCPHandler class UMCPHandler_CompileMaterial : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()

View File

@@ -70,7 +70,7 @@ struct FMoveNodeEntry
}; };
UCLASS(meta=(ToolName="set_node_positions")) UCLASS()
class UMCPHandler_SetNodePositions : public UObject, public IMCPHandler class UMCPHandler_SetNodePositions : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -138,7 +138,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="duplicate_nodes_in_graph")) UCLASS()
class UMCPHandler_DuplicateNodesInGraph : public UObject, public IMCPHandler class UMCPHandler_DuplicateNodesInGraph : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -302,7 +302,7 @@ struct FSpawnNodeEntry
}; };
UCLASS(meta=(ToolName="spawn_nodes_in_graph")) UCLASS()
class UMCPHandler_SpawnNodesInGraph : public UObject, public IMCPHandler class UMCPHandler_SpawnNodesInGraph : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -429,7 +429,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="get_node_comment")) UCLASS()
class UMCPHandler_GetNodeComment : public UObject, public IMCPHandler class UMCPHandler_GetNodeComment : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -468,7 +468,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="set_node_comment")) UCLASS()
class UMCPHandler_SetNodeComment : public UObject, public IMCPHandler class UMCPHandler_SetNodeComment : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -524,7 +524,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="delete_node_from_graph")) UCLASS()
class UMCPHandler_DeleteNodeFromGraph : public UObject, public IMCPHandler class UMCPHandler_DeleteNodeFromGraph : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -610,7 +610,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="replace_function_calls_in_blueprint")) UCLASS()
class UMCPHandler_ReplaceFunctionCallsInBlueprint : public UObject, public IMCPHandler class UMCPHandler_ReplaceFunctionCallsInBlueprint : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -861,7 +861,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="refresh_all_nodes_in_graph")) UCLASS()
class UMCPHandler_RefreshAllNodesInGraph : public UObject, public IMCPHandler class UMCPHandler_RefreshAllNodesInGraph : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -960,7 +960,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="change_struct_node_type")) UCLASS()
class UMCPHandler_ChangeStructNodeType : public UObject, public IMCPHandler class UMCPHandler_ChangeStructNodeType : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -1187,7 +1187,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="set_class_default_value")) UCLASS()
class UMCPHandler_SetClassDefaultValue : public UObject, public IMCPHandler class UMCPHandler_SetClassDefaultValue : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -1354,7 +1354,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="search_spawnable_node_types")) UCLASS()
class UMCPHandler_SearchSpawnableNodeTypes : public UObject, public IMCPHandler class UMCPHandler_SearchSpawnableNodeTypes : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()

View File

@@ -17,8 +17,8 @@
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="change_function_parameter_type")) UCLASS()
class UMCPHandler_ChangeFunctionParamType : public UObject, public IMCPHandler class UMCPHandler_ChangeFunctionParameterType : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -208,7 +208,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="remove_function_parameter")) UCLASS()
class UMCPHandler_RemoveFunctionParameter : public UObject, public IMCPHandler class UMCPHandler_RemoveFunctionParameter : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -347,7 +347,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="add_function_parameter")) UCLASS()
class UMCPHandler_AddFunctionParameter : public UObject, public IMCPHandler class UMCPHandler_AddFunctionParameter : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()

View File

@@ -35,7 +35,7 @@ struct FSetPinDefaultEntry
}; };
UCLASS(meta=(ToolName="set_pin_default_values")) UCLASS()
class UMCPHandler_SetPinDefaultValues : public UObject, public IMCPHandler class UMCPHandler_SetPinDefaultValues : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -154,7 +154,7 @@ struct FConnectPinsEntry
}; };
UCLASS(meta=(ToolName="connect_blueprint_pins")) UCLASS()
class UMCPHandler_ConnectBlueprintPins : public UObject, public IMCPHandler class UMCPHandler_ConnectBlueprintPins : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -274,7 +274,7 @@ struct FDisconnectPinEntry
}; };
UCLASS(meta=(ToolName="disconnect_blueprint_pins")) UCLASS()
class UMCPHandler_DisconnectBlueprintPins : public UObject, public IMCPHandler class UMCPHandler_DisconnectBlueprintPins : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()

View File

@@ -26,8 +26,8 @@
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="list_blueprint_assets")) UCLASS()
class UMCPHandler_List : public UObject, public IMCPHandler class UMCPHandler_ListBlueprintAssets : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -93,8 +93,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="dump_blueprint")) UCLASS()
class UMCPHandler_GetBlueprint : public UObject, public IMCPHandler class UMCPHandler_DumpBlueprint : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -121,8 +121,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="dump_blueprint_graph")) UCLASS()
class UMCPHandler_GetGraph : public UObject, public IMCPHandler class UMCPHandler_DumpBlueprintGraph : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -177,8 +177,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="search_within_blueprints")) UCLASS()
class UMCPHandler_Search : public UObject, public IMCPHandler class UMCPHandler_SearchWithinBlueprints : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -313,8 +313,8 @@ public:
// HandleTestSave — load a Blueprint and save it unmodified (diagnostic) // HandleTestSave — load a Blueprint and save it unmodified (diagnostic)
// ============================================================ // ============================================================
UCLASS(meta=(ToolName="test_save_blueprint_package")) UCLASS()
class UMCPHandler_TestSave : public UObject, public IMCPHandler class UMCPHandler_TestSaveBlueprintPackage : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -356,8 +356,8 @@ public:
// HandleFindReferences — find all Blueprints referencing an asset // HandleFindReferences — find all Blueprints referencing an asset
// ============================================================ // ============================================================
UCLASS(meta=(ToolName="find_asset_references")) UCLASS()
class UMCPHandler_FindReferences : public UObject, public IMCPHandler class UMCPHandler_FindAssetReferences : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -417,8 +417,8 @@ public:
// HandleSearchByType — find all usages of a type across blueprints // HandleSearchByType — find all usages of a type across blueprints
// ============================================================ // ============================================================
UCLASS(meta=(ToolName="search_type_usage_in_blueprints")) UCLASS()
class UMCPHandler_SearchByType : public UObject, public IMCPHandler class UMCPHandler_SearchTypeUsageInBlueprints : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()

View File

@@ -23,8 +23,8 @@
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="add_anim_state_to_machine")) UCLASS()
class UMCPHandler_AddAnimState : public UObject, public IMCPHandler class UMCPHandler_AddAnimStateToMachine : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -119,8 +119,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="remove_anim_state_from_machine")) UCLASS()
class UMCPHandler_RemoveAnimState : public UObject, public IMCPHandler class UMCPHandler_RemoveAnimStateFromMachine : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -187,8 +187,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="add_anim_state_transition")) UCLASS()
class UMCPHandler_AddAnimTransition : public UObject, public IMCPHandler class UMCPHandler_AddAnimStateTransition : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -276,8 +276,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="set_anim_transition_rule")) UCLASS()
class UMCPHandler_SetTransitionRule : public UObject, public IMCPHandler class UMCPHandler_SetAnimTransitionRule : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -379,8 +379,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="set_anim_state_animation")) UCLASS()
class UMCPHandler_SetStateAnimation : public UObject, public IMCPHandler class UMCPHandler_SetAnimStateAnimation : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -460,8 +460,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="set_anim_state_blend_space")) UCLASS()
class UMCPHandler_SetStateBlendSpace : public UObject, public IMCPHandler class UMCPHandler_SetAnimStateBlendSpace : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()

View File

@@ -33,8 +33,8 @@ struct FStructPropertyEntry
FString Type; FString Type;
}; };
UCLASS(meta=(ToolName="create_struct_asset")) UCLASS()
class UMCPHandler_CreateStruct : public UObject, public IMCPHandler class UMCPHandler_CreateStructAsset : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -142,8 +142,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="create_enum_asset")) UCLASS()
class UMCPHandler_CreateEnum : public UObject, public IMCPHandler class UMCPHandler_CreateEnumAsset : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -220,7 +220,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="add_struct_field")) UCLASS()
class UMCPHandler_AddStructField : public UObject, public IMCPHandler class UMCPHandler_AddStructField : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -286,7 +286,7 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="remove_struct_field")) UCLASS()
class UMCPHandler_RemoveStructField : public UObject, public IMCPHandler class UMCPHandler_RemoveStructField : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()

View File

@@ -15,7 +15,7 @@
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="compile_blueprint")) UCLASS()
class UMCPHandler_CompileBlueprint : public UObject, public IMCPHandler class UMCPHandler_CompileBlueprint : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()

View File

@@ -16,8 +16,8 @@
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="change_blueprint_variable_type")) UCLASS()
class UMCPHandler_ChangeVariableType : public UObject, public IMCPHandler class UMCPHandler_ChangeBlueprintVariableType : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -200,8 +200,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="add_blueprint_variable")) UCLASS()
class UMCPHandler_AddVariable : public UObject, public IMCPHandler class UMCPHandler_AddBlueprintVariable : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -288,8 +288,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="remove_blueprint_variable")) UCLASS()
class UMCPHandler_RemoveVariable : public UObject, public IMCPHandler class UMCPHandler_RemoveBlueprintVariable : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()
@@ -359,8 +359,8 @@ public:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
UCLASS(meta=(ToolName="set_blueprint_variable_metadata")) UCLASS()
class UMCPHandler_SetVariableMetadata : public UObject, public IMCPHandler class UMCPHandler_SetBlueprintVariableMetadata : public UObject, public IMCPHandler
{ {
GENERATED_BODY() GENERATED_BODY()

View File

@@ -420,15 +420,10 @@ void FMCPServer::BuildMCPHandlerRegistry()
{ {
continue; continue;
} }
const FString& ToolName = Class->GetMetaData(TEXT("ToolName")); FString ToolName = MCPUtils::GetToolName(Class);
if (ToolName.IsEmpty())
{
UE_LOG(LogTemp, Warning, TEXT("BlueprintMCP: %s has no ToolName meta — skipping."), *Class->GetName());
continue;
}
if (MCPHandlerRegistry.Contains(ToolName)) if (MCPHandlerRegistry.Contains(ToolName))
{ {
UE_LOG(LogTemp, Warning, TEXT("BlueprintMCP: Duplicate ToolName '%s' on %s — skipping."), *ToolName, *Class->GetName()); UE_LOG(LogTemp, Warning, TEXT("BlueprintMCP: Duplicate tool name '%s' on %s — skipping."), *ToolName, *Class->GetName());
continue; continue;
} }
MCPHandlerRegistry.Add(ToolName, Class); MCPHandlerRegistry.Add(ToolName, Class);

View File

@@ -1499,6 +1499,21 @@ bool MCPUtils::PopulateFromJson(
return true; return true;
} }
// ============================================================
// GetToolName — derive tool name from handler class name
// ============================================================
FString MCPUtils::GetToolName(UClass* HandlerClass)
{
FString Name = HandlerClass->GetName();
int32 UnderscoreIdx;
if (Name.FindChar(TEXT('_'), UnderscoreIdx))
{
return Name.Mid(UnderscoreIdx + 1);
}
return Name;
}
// ============================================================ // ============================================================
// FormatPropertyType — human-readable type name for a UPROPERTY // FormatPropertyType — human-readable type name for a UPROPERTY
// ============================================================ // ============================================================
@@ -1527,7 +1542,7 @@ void MCPUtils::FormatCommandHelp(UClass* HandlerClass, FStringBuilderBase& Resul
const IMCPHandler* Handler = Cast<IMCPHandler>(HandlerClass->GetDefaultObject()); const IMCPHandler* Handler = Cast<IMCPHandler>(HandlerClass->GetDefaultObject());
if (!Handler) return; if (!Handler) return;
const FString& ToolName = HandlerClass->GetMetaData(TEXT("ToolName")); FString ToolName = GetToolName(HandlerClass);
// Command signature line // Command signature line
Result.Append(ToolName); Result.Append(ToolName);

View File

@@ -200,6 +200,8 @@ public:
static bool PopulateFromJson(UStruct* StructType, void* Container, const FJsonObject* Json, MCPErrorCallback Error); static bool PopulateFromJson(UStruct* StructType, void* Container, const FJsonObject* Json, MCPErrorCallback Error);
// ----- Command help ----- // ----- Command help -----
// Derive tool name from handler class name: "MCPHandler_FooBar" → "FooBar"
static FString GetToolName(UClass* HandlerClass);
static FString FormatPropertyType(FProperty* Prop); static FString FormatPropertyType(FProperty* Prop);
static void FormatCommandHelp(UClass* HandlerClass, FStringBuilderBase& Result); static void FormatCommandHelp(UClass* HandlerClass, FStringBuilderBase& Result);

View File

@@ -1,66 +0,0 @@
#!/usr/bin/env python3
"""
Human-friendly MCP test client.
Usage: python3 tools/mcp-test.py command=show_commands
python3 tools/mcp-test.py command=list_blueprint_assets filter=lx
python3 tools/mcp-test.py command=show_commands verbose=true
"""
import sys
import json
import socket
HOST = "localhost"
PORT = 9847
TIMEOUT = 120
def main():
msg = {}
for arg in sys.argv[1:]:
key, _, value = arg.partition("=")
if value.lower() == "true":
value = True
elif value.lower() == "false":
value = False
else:
try:
value = int(value)
except ValueError:
pass
msg[key] = value
if not msg:
print("Usage: python3 tools/mcp-test.py command=show_commands")
sys.exit(1)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(TIMEOUT)
try:
sock.connect((HOST, PORT))
except (ConnectionRefusedError, socket.timeout, OSError) as e:
print(f"Cannot connect to {HOST}:{PORT} — is the editor running?")
sys.exit(1)
sock.sendall((json.dumps(msg) + "\n").encode())
result = b""
while True:
chunk = sock.recv(65536)
if not chunk:
break
result += chunk
if b"\0" in result:
break
sock.close()
result = result[:result.index(b"\0")].decode() if b"\0" in result else result.decode()
try:
parsed = json.loads(result)
print(json.dumps(parsed, indent=2))
except json.JSONDecodeError:
print(result)
if __name__ == "__main__":
main()