Rename endpoints to make them more intuitive.

This commit is contained in:
2026-03-06 15:43:55 -05:00
parent 9f405ce5ba
commit 11dd976441
8 changed files with 492 additions and 286 deletions

View File

@@ -6,7 +6,7 @@
#include "EdGraph/EdGraphNode.h"
#include "EdGraph/EdGraphPin.h"
void UMCPHandler_DiffBlueprints::Handle(const FJsonObject* Json, FJsonObject* Result)
void UMCPHandler_DiffTwoBlueprints::Handle(const FJsonObject* Json, FJsonObject* Result)
{
MCPHelper* Helper = MCPHelper::Get();

View File

@@ -10,7 +10,7 @@
// ListInterfaces
// ============================================================
void UMCPHandler_ListInterfaces::Handle(const FJsonObject* Json, FJsonObject* Result)
void UMCPHandler_ListBlueprintInterfaces::Handle(const FJsonObject* Json, FJsonObject* Result)
{
MCPHelper* Helper = MCPHelper::Get();
@@ -55,7 +55,7 @@ void UMCPHandler_ListInterfaces::Handle(const FJsonObject* Json, FJsonObject* Re
// AddInterface
// ============================================================
void UMCPHandler_AddInterface::Handle(const FJsonObject* Json, FJsonObject* Result)
void UMCPHandler_AddBlueprintInterface::Handle(const FJsonObject* Json, FJsonObject* Result)
{
MCPHelper* Helper = MCPHelper::Get();
@@ -179,7 +179,7 @@ void UMCPHandler_AddInterface::Handle(const FJsonObject* Json, FJsonObject* Resu
// RemoveInterface
// ============================================================
void UMCPHandler_RemoveInterface::Handle(const FJsonObject* Json, FJsonObject* Result)
void UMCPHandler_RemoveBlueprintInterface::Handle(const FJsonObject* Json, FJsonObject* Result)
{
MCPHelper* Helper = MCPHelper::Get();

View File

@@ -50,7 +50,7 @@
// ReplaceFunctionCalls — redirect function call nodes
// ============================================================
void UMCPHandler_ReplaceFunctionCalls::Handle(const FJsonObject* Json, FJsonObject* Result)
void UMCPHandler_ReplaceFunctionCallsInBlueprint::Handle(const FJsonObject* Json, FJsonObject* Result)
{
MCPHelper* Helper = MCPHelper::Get();
@@ -427,9 +427,9 @@ void UMCPHandler_DeleteAsset::Handle(const FJsonObject* Json, FJsonObject* Resul
// HandleConnectPins — wire two pins together
// ============================================================
// connect_pins is now handled by UMCPHandler_ConnectPins (new-style registry)
// connect_pins is now handled by UMCPHandler_ConnectBlueprintPins (new-style registry)
void UMCPHandler_ConnectPins::Handle(const FJsonObject* Json, FJsonObject* Result)
void UMCPHandler_ConnectBlueprintPins::Handle(const FJsonObject* Json, FJsonObject* Result)
{
MCPHelper* Helper = MCPHelper::Get();
@@ -530,9 +530,9 @@ void UMCPHandler_ConnectPins::Handle(const FJsonObject* Json, FJsonObject* Resul
// HandleDisconnectPin — break connections on a pin
// ============================================================
// disconnect_pin is now handled by UMCPHandler_DisconnectPin (new-style registry)
// disconnect_pin is now handled by UMCPHandler_DisconnectBlueprintPins (new-style registry)
void UMCPHandler_DisconnectPin::Handle(const FJsonObject* Json, FJsonObject* Result)
void UMCPHandler_DisconnectBlueprintPins::Handle(const FJsonObject* Json, FJsonObject* Result)
{
MCPHelper* Helper = MCPHelper::Get();
@@ -639,7 +639,7 @@ void UMCPHandler_DisconnectPin::Handle(const FJsonObject* Json, FJsonObject* Res
// RefreshAllNodes — refresh all nodes and recompile
// ============================================================
void UMCPHandler_RefreshAllNodes::Handle(const FJsonObject* Json, FJsonObject* Result)
void UMCPHandler_RefreshAllNodesInGraph::Handle(const FJsonObject* Json, FJsonObject* Result)
{
MCPHelper* Helper = MCPHelper::Get();
@@ -746,7 +746,7 @@ void UMCPHandler_RefreshAllNodes::Handle(const FJsonObject* Json, FJsonObject* R
// SetPinDefault — set the default value of a pin on a node
// ============================================================
void UMCPHandler_SetPinDefault::Handle(const FJsonObject* Json, FJsonObject* Result)
void UMCPHandler_SetPinDefaultValues::Handle(const FJsonObject* Json, FJsonObject* Result)
{
MCPHelper* Helper = MCPHelper::Get();
@@ -1059,9 +1059,9 @@ void UMCPHandler_ChangeStructNodeType::Handle(const FJsonObject* Json, FJsonObje
// HandleDeleteNode — remove a node from a blueprint graph
// ============================================================
// delete_node is now handled by UMCPHandler_DeleteNode (new-style registry)
// delete_node is now handled by UMCPHandler_DeleteNodeFromGraph (new-style registry)
void UMCPHandler_DeleteNode::Handle(const FJsonObject* Json, FJsonObject* Result)
void UMCPHandler_DeleteNodeFromGraph::Handle(const FJsonObject* Json, FJsonObject* Result)
{
MCPHelper* Helper = MCPHelper::Get();
@@ -1219,7 +1219,7 @@ void UMCPHandler_RenameAsset::Handle(const FJsonObject* Json, FJsonObject* Resul
// SetBlueprintDefault — set a default property value on a Blueprint CDO
// ============================================================
void UMCPHandler_SetBlueprintDefault::Handle(const FJsonObject* Json, FJsonObject* Result)
void UMCPHandler_SetClassDefaultValue::Handle(const FJsonObject* Json, FJsonObject* Result)
{
MCPHelper* Helper = MCPHelper::Get();
@@ -1377,7 +1377,7 @@ void UMCPHandler_SetBlueprintDefault::Handle(const FJsonObject* Json, FJsonObjec
// MoveNode — reposition one or more nodes in a blueprint graph
// ============================================================
void UMCPHandler_MoveNode::Handle(const FJsonObject* Json, FJsonObject* Result)
void UMCPHandler_SetNodePositions::Handle(const FJsonObject* Json, FJsonObject* Result)
{
MCPHelper* Helper = MCPHelper::Get();
@@ -1441,7 +1441,7 @@ void UMCPHandler_MoveNode::Handle(const FJsonObject* Json, FJsonObject* Result)
// DuplicateNodes — duplicate one or more nodes in a graph
// ============================================================
void UMCPHandler_DuplicateNodes::Handle(const FJsonObject* Json, FJsonObject* Result)
void UMCPHandler_DuplicateNodesInGraph::Handle(const FJsonObject* Json, FJsonObject* Result)
{
MCPHelper* Helper = MCPHelper::Get();
@@ -1656,7 +1656,7 @@ void UMCPHandler_SetNodeComment::Handle(const FJsonObject* Json, FJsonObject* Re
// for spawners matching a query string (same pool as the right-click menu)
// ============================================================
void UMCPHandler_SearchNodeTypes::Handle(const FJsonObject* Json, FJsonObject* Result)
void UMCPHandler_SearchSpawnableNodeTypes::Handle(const FJsonObject* Json, FJsonObject* Result)
{
int32 ClampedMax = FMath::Clamp(MaxResults, 1, 500);
@@ -1678,7 +1678,7 @@ void UMCPHandler_SearchNodeTypes::Handle(const FJsonObject* Json, FJsonObject* R
// Takes a full action name, finds the spawner, and calls Invoke().
// ============================================================
void UMCPHandler_SpawnNode::Handle(const FJsonObject* Json, FJsonObject* Result)
void UMCPHandler_SpawnNodesInGraph::Handle(const FJsonObject* Json, FJsonObject* Result)
{
MCPHelper* Helper = MCPHelper::Get();

View File

@@ -510,11 +510,11 @@ bool FBlueprintMCPServer::Start(int32 InPort, bool bEditorMode)
}));
// /api/rescan — re-scan asset registry and refresh cached asset lists (game thread)
Router->BindRoute(FHttpPath(TEXT("/api/rescan")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("rescan")));
Router->BindRoute(FHttpPath(TEXT("/api/rescan_asset_registry")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("rescan_asset_registry")));
// /api/list — answered directly (only reads immutable asset list)
Router->BindRoute(FHttpPath(TEXT("/api/list")), EHttpServerRequestVerbs::VERB_GET,
Router->BindRoute(FHttpPath(TEXT("/api/list_blueprint_assets")), EHttpServerRequestVerbs::VERB_GET,
FHttpRequestHandler::CreateLambda(
[this](const FHttpServerRequest& Request, const FHttpResultCallback& OnComplete)
{
@@ -532,87 +532,87 @@ bool FBlueprintMCPServer::Start(int32 InPort, bool bEditorMode)
}));
// Old-style handlers (queued, not yet ported to UMCPHandler)
Router->BindRoute(FHttpPath(TEXT("/api/blueprint")), EHttpServerRequestVerbs::VERB_GET,
QueuedHandler(TEXT("blueprint")));
Router->BindRoute(FHttpPath(TEXT("/api/graph")), EHttpServerRequestVerbs::VERB_GET,
QueuedHandler(TEXT("graph")));
Router->BindRoute(FHttpPath(TEXT("/api/search")), EHttpServerRequestVerbs::VERB_GET,
QueuedHandler(TEXT("search")));
Router->BindRoute(FHttpPath(TEXT("/api/references")), EHttpServerRequestVerbs::VERB_GET,
QueuedHandler(TEXT("references")));
Router->BindRoute(FHttpPath(TEXT("/api/change_variable_type")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("change_variable_type")));
Router->BindRoute(FHttpPath(TEXT("/api/change_function_param_type")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("change_function_param_type")));
Router->BindRoute(FHttpPath(TEXT("/api/test_save")), EHttpServerRequestVerbs::VERB_GET,
QueuedHandler(TEXT("test_save")));
Router->BindRoute(FHttpPath(TEXT("/api/get_pin_info")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("get_pin_info")));
Router->BindRoute(FHttpPath(TEXT("/api/check_pin_compatibility")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("check_pin_compatibility")));
Router->BindRoute(FHttpPath(TEXT("/api/list_classes")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("list_classes")));
Router->BindRoute(FHttpPath(TEXT("/api/list_functions")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("list_functions")));
Router->BindRoute(FHttpPath(TEXT("/api/list_properties")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("list_properties")));
Router->BindRoute(FHttpPath(TEXT("/api/dump_blueprint")), EHttpServerRequestVerbs::VERB_GET,
QueuedHandler(TEXT("dump_blueprint")));
Router->BindRoute(FHttpPath(TEXT("/api/dump_blueprint_graph")), EHttpServerRequestVerbs::VERB_GET,
QueuedHandler(TEXT("dump_blueprint_graph")));
Router->BindRoute(FHttpPath(TEXT("/api/search_within_blueprints")), EHttpServerRequestVerbs::VERB_GET,
QueuedHandler(TEXT("search_within_blueprints")));
Router->BindRoute(FHttpPath(TEXT("/api/find_asset_references")), EHttpServerRequestVerbs::VERB_GET,
QueuedHandler(TEXT("find_asset_references")));
Router->BindRoute(FHttpPath(TEXT("/api/change_blueprint_variable_type")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("change_blueprint_variable_type")));
Router->BindRoute(FHttpPath(TEXT("/api/change_function_parameter_type")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("change_function_parameter_type")));
Router->BindRoute(FHttpPath(TEXT("/api/test_save_blueprint_package")), EHttpServerRequestVerbs::VERB_GET,
QueuedHandler(TEXT("test_save_blueprint_package")));
Router->BindRoute(FHttpPath(TEXT("/api/get_pin_details")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("get_pin_details")));
Router->BindRoute(FHttpPath(TEXT("/api/check_pin_connection_compatibility")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("check_pin_connection_compatibility")));
Router->BindRoute(FHttpPath(TEXT("/api/search_unreal_classes")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("search_unreal_classes")));
Router->BindRoute(FHttpPath(TEXT("/api/list_class_functions")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("list_class_functions")));
Router->BindRoute(FHttpPath(TEXT("/api/list_class_properties")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("list_class_properties")));
Router->BindRoute(FHttpPath(TEXT("/api/remove_function_parameter")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("remove_function_parameter")));
Router->BindRoute(FHttpPath(TEXT("/api/search_by_type")), EHttpServerRequestVerbs::VERB_GET,
QueuedHandler(TEXT("search_by_type")));
Router->BindRoute(FHttpPath(TEXT("/api/validate_blueprint")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("validate_blueprint")));
Router->BindRoute(FHttpPath(TEXT("/api/validate_all_blueprints")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("validate_all_blueprints")));
Router->BindRoute(FHttpPath(TEXT("/api/search_type_usage_in_blueprints")), EHttpServerRequestVerbs::VERB_GET,
QueuedHandler(TEXT("search_type_usage_in_blueprints")));
Router->BindRoute(FHttpPath(TEXT("/api/compile_blueprint")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("compile_blueprint")));
Router->BindRoute(FHttpPath(TEXT("/api/compile_all_blueprints")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("compile_all_blueprints")));
Router->BindRoute(FHttpPath(TEXT("/api/reparent_blueprint")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("reparent_blueprint")));
Router->BindRoute(FHttpPath(TEXT("/api/create_blueprint")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("create_blueprint")));
Router->BindRoute(FHttpPath(TEXT("/api/create_graph")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("create_graph")));
Router->BindRoute(FHttpPath(TEXT("/api/create_struct")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("create_struct")));
Router->BindRoute(FHttpPath(TEXT("/api/create_enum")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("create_enum")));
Router->BindRoute(FHttpPath(TEXT("/api/add_struct_property")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("add_struct_property")));
Router->BindRoute(FHttpPath(TEXT("/api/remove_struct_property")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("remove_struct_property")));
Router->BindRoute(FHttpPath(TEXT("/api/delete_graph")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("delete_graph")));
Router->BindRoute(FHttpPath(TEXT("/api/rename_graph")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("rename_graph")));
Router->BindRoute(FHttpPath(TEXT("/api/add_variable")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("add_variable")));
Router->BindRoute(FHttpPath(TEXT("/api/remove_variable")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("remove_variable")));
Router->BindRoute(FHttpPath(TEXT("/api/set_variable_metadata")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("set_variable_metadata")));
Router->BindRoute(FHttpPath(TEXT("/api/create_blueprint_asset")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("create_blueprint_asset")));
Router->BindRoute(FHttpPath(TEXT("/api/create_blueprint_graph")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("create_blueprint_graph")));
Router->BindRoute(FHttpPath(TEXT("/api/create_struct_asset")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("create_struct_asset")));
Router->BindRoute(FHttpPath(TEXT("/api/create_enum_asset")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("create_enum_asset")));
Router->BindRoute(FHttpPath(TEXT("/api/add_struct_field")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("add_struct_field")));
Router->BindRoute(FHttpPath(TEXT("/api/remove_struct_field")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("remove_struct_field")));
Router->BindRoute(FHttpPath(TEXT("/api/delete_blueprint_graph")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("delete_blueprint_graph")));
Router->BindRoute(FHttpPath(TEXT("/api/rename_blueprint_graph")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("rename_blueprint_graph")));
Router->BindRoute(FHttpPath(TEXT("/api/add_blueprint_variable")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("add_blueprint_variable")));
Router->BindRoute(FHttpPath(TEXT("/api/remove_blueprint_variable")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("remove_blueprint_variable")));
Router->BindRoute(FHttpPath(TEXT("/api/set_blueprint_variable_metadata")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("set_blueprint_variable_metadata")));
Router->BindRoute(FHttpPath(TEXT("/api/add_event_dispatcher")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("add_event_dispatcher")));
Router->BindRoute(FHttpPath(TEXT("/api/list_event_dispatchers")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("list_event_dispatchers")));
Router->BindRoute(FHttpPath(TEXT("/api/add_function_parameter")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("add_function_parameter")));
Router->BindRoute(FHttpPath(TEXT("/api/add_component")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("add_component")));
Router->BindRoute(FHttpPath(TEXT("/api/remove_component")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("remove_component")));
Router->BindRoute(FHttpPath(TEXT("/api/list_components")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("list_components")));
Router->BindRoute(FHttpPath(TEXT("/api/snapshot_graph")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("snapshot_graph")));
Router->BindRoute(FHttpPath(TEXT("/api/diff_graph")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("diff_graph")));
Router->BindRoute(FHttpPath(TEXT("/api/restore_graph")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("restore_graph")));
Router->BindRoute(FHttpPath(TEXT("/api/find_disconnected_pins")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("find_disconnected_pins")));
Router->BindRoute(FHttpPath(TEXT("/api/analyze_rebuild_impact")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("analyze_rebuild_impact")));
Router->BindRoute(FHttpPath(TEXT("/api/add_blueprint_component")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("add_blueprint_component")));
Router->BindRoute(FHttpPath(TEXT("/api/remove_blueprint_component")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("remove_blueprint_component")));
Router->BindRoute(FHttpPath(TEXT("/api/list_blueprint_components")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("list_blueprint_components")));
Router->BindRoute(FHttpPath(TEXT("/api/snapshot_blueprint_graph")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("snapshot_blueprint_graph")));
Router->BindRoute(FHttpPath(TEXT("/api/diff_blueprint_graph_vs_snapshot")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("diff_blueprint_graph_vs_snapshot")));
Router->BindRoute(FHttpPath(TEXT("/api/restore_blueprint_graph_from_snapshot")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("restore_blueprint_graph_from_snapshot")));
Router->BindRoute(FHttpPath(TEXT("/api/find_pins_disconnected_since_snapshot")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("find_pins_disconnected_since_snapshot")));
Router->BindRoute(FHttpPath(TEXT("/api/analyze_cpp_rebuild_impact")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("analyze_cpp_rebuild_impact")));
// Material read-only tools (Phase 1)
Router->BindRoute(FHttpPath(TEXT("/api/materials")), EHttpServerRequestVerbs::VERB_GET,
Router->BindRoute(FHttpPath(TEXT("/api/list_material_assets")), EHttpServerRequestVerbs::VERB_GET,
FHttpRequestHandler::CreateLambda(
[this](const FHttpServerRequest& Request, const FHttpResultCallback& OnComplete)
{
@@ -629,46 +629,46 @@ bool FBlueprintMCPServer::Start(int32 InPort, bool bEditorMode)
return true;
}));
Router->BindRoute(FHttpPath(TEXT("/api/material")), EHttpServerRequestVerbs::VERB_GET,
QueuedHandler(TEXT("get_material")));
QueuedHandler(TEXT("dump_material")));
Router->BindRoute(FHttpPath(TEXT("/api/material_graph")), EHttpServerRequestVerbs::VERB_GET,
QueuedHandler(TEXT("get_material_graph")));
Router->BindRoute(FHttpPath(TEXT("/api/describe_material")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("describe_material")));
Router->BindRoute(FHttpPath(TEXT("/api/search_materials")), EHttpServerRequestVerbs::VERB_GET,
QueuedHandler(TEXT("search_materials")));
QueuedHandler(TEXT("dump_material_expression_graph")));
Router->BindRoute(FHttpPath(TEXT("/api/describe_material_in_english")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("describe_material_in_english")));
Router->BindRoute(FHttpPath(TEXT("/api/search_within_materials")), EHttpServerRequestVerbs::VERB_GET,
QueuedHandler(TEXT("search_within_materials")));
Router->BindRoute(FHttpPath(TEXT("/api/material_references")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("find_material_references")));
// Material mutation tools (Phase 2)
Router->BindRoute(FHttpPath(TEXT("/api/create_material")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("create_material")));
Router->BindRoute(FHttpPath(TEXT("/api/create_material_asset")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("create_material_asset")));
Router->BindRoute(FHttpPath(TEXT("/api/set_material_property")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("set_material_property")));
Router->BindRoute(FHttpPath(TEXT("/api/add_material_expression")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("add_material_expression")));
Router->BindRoute(FHttpPath(TEXT("/api/delete_material_expression")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("delete_material_expression")));
Router->BindRoute(FHttpPath(TEXT("/api/connect_material_pins")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("connect_material_pins")));
Router->BindRoute(FHttpPath(TEXT("/api/disconnect_material_pin")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("disconnect_material_pin")));
Router->BindRoute(FHttpPath(TEXT("/api/set_expression_value")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("set_expression_value")));
Router->BindRoute(FHttpPath(TEXT("/api/move_material_expression")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("move_material_expression")));
Router->BindRoute(FHttpPath(TEXT("/api/connect_material_expression_pins")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("connect_material_expression_pins")));
Router->BindRoute(FHttpPath(TEXT("/api/disconnect_material_expression_pin")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("disconnect_material_expression_pin")));
Router->BindRoute(FHttpPath(TEXT("/api/set_material_expression_property")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("set_material_expression_property")));
Router->BindRoute(FHttpPath(TEXT("/api/set_material_expression_position")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("set_material_expression_position")));
// Material instance tools (Phase 3)
Router->BindRoute(FHttpPath(TEXT("/api/create_material_instance")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("create_material_instance")));
Router->BindRoute(FHttpPath(TEXT("/api/create_material_instance_asset")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("create_material_instance_asset")));
Router->BindRoute(FHttpPath(TEXT("/api/set_material_instance_parameter")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("set_material_instance_parameter")));
Router->BindRoute(FHttpPath(TEXT("/api/material_instance_params")), EHttpServerRequestVerbs::VERB_GET,
QueuedHandler(TEXT("get_material_instance_params")));
QueuedHandler(TEXT("dump_material_instance_parameters")));
Router->BindRoute(FHttpPath(TEXT("/api/reparent_material_instance")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("reparent_material_instance")));
// Material function tools (Phase 4)
Router->BindRoute(FHttpPath(TEXT("/api/material_functions")), EHttpServerRequestVerbs::VERB_GET,
Router->BindRoute(FHttpPath(TEXT("/api/list_material_function_assets")), EHttpServerRequestVerbs::VERB_GET,
FHttpRequestHandler::CreateLambda(
[this](const FHttpServerRequest& Request, const FHttpResultCallback& OnComplete)
{
@@ -685,47 +685,47 @@ bool FBlueprintMCPServer::Start(int32 InPort, bool bEditorMode)
return true;
}));
Router->BindRoute(FHttpPath(TEXT("/api/material_function")), EHttpServerRequestVerbs::VERB_GET,
QueuedHandler(TEXT("get_material_function")));
Router->BindRoute(FHttpPath(TEXT("/api/create_material_function")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("create_material_function")));
QueuedHandler(TEXT("dump_material_function")));
Router->BindRoute(FHttpPath(TEXT("/api/create_material_function_asset")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("create_material_function_asset")));
// Material snapshot/diff/restore (Phase 5)
Router->BindRoute(FHttpPath(TEXT("/api/snapshot_material_graph")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("snapshot_material_graph")));
Router->BindRoute(FHttpPath(TEXT("/api/diff_material_graph")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("diff_material_graph")));
Router->BindRoute(FHttpPath(TEXT("/api/restore_material_graph")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("restore_material_graph")));
Router->BindRoute(FHttpPath(TEXT("/api/validate_material")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("validate_material")));
Router->BindRoute(FHttpPath(TEXT("/api/snapshot_material_expression_graph")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("snapshot_material_expression_graph")));
Router->BindRoute(FHttpPath(TEXT("/api/diff_material_graph_vs_snapshot")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("diff_material_graph_vs_snapshot")));
Router->BindRoute(FHttpPath(TEXT("/api/restore_material_graph_from_snapshot")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("restore_material_graph_from_snapshot")));
Router->BindRoute(FHttpPath(TEXT("/api/compile_material")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("compile_material")));
// Animation Blueprint tools
Router->BindRoute(FHttpPath(TEXT("/api/create_anim_blueprint")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("create_anim_blueprint")));
Router->BindRoute(FHttpPath(TEXT("/api/add_anim_state")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("add_anim_state")));
Router->BindRoute(FHttpPath(TEXT("/api/remove_anim_state")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("remove_anim_state")));
Router->BindRoute(FHttpPath(TEXT("/api/add_anim_transition")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("add_anim_transition")));
Router->BindRoute(FHttpPath(TEXT("/api/set_transition_rule")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("set_transition_rule")));
Router->BindRoute(FHttpPath(TEXT("/api/add_anim_node")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("add_anim_node")));
Router->BindRoute(FHttpPath(TEXT("/api/add_state_machine")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("add_state_machine")));
Router->BindRoute(FHttpPath(TEXT("/api/set_state_animation")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("set_state_animation")));
Router->BindRoute(FHttpPath(TEXT("/api/list_anim_slots")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("list_anim_slots")));
Router->BindRoute(FHttpPath(TEXT("/api/list_sync_groups")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("list_sync_groups")));
Router->BindRoute(FHttpPath(TEXT("/api/create_blend_space")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("create_blend_space")));
Router->BindRoute(FHttpPath(TEXT("/api/set_blend_space_samples")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("set_blend_space_samples")));
Router->BindRoute(FHttpPath(TEXT("/api/set_state_blend_space")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("set_state_blend_space")));
Router->BindRoute(FHttpPath(TEXT("/api/create_anim_blueprint_asset")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("create_anim_blueprint_asset")));
Router->BindRoute(FHttpPath(TEXT("/api/add_anim_state_to_machine")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("add_anim_state_to_machine")));
Router->BindRoute(FHttpPath(TEXT("/api/remove_anim_state_from_machine")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("remove_anim_state_from_machine")));
Router->BindRoute(FHttpPath(TEXT("/api/add_anim_state_transition")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("add_anim_state_transition")));
Router->BindRoute(FHttpPath(TEXT("/api/set_anim_transition_rule")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("set_anim_transition_rule")));
Router->BindRoute(FHttpPath(TEXT("/api/add_anim_graph_node")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("add_anim_graph_node")));
Router->BindRoute(FHttpPath(TEXT("/api/add_anim_state_machine")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("add_anim_state_machine")));
Router->BindRoute(FHttpPath(TEXT("/api/set_anim_state_animation")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("set_anim_state_animation")));
Router->BindRoute(FHttpPath(TEXT("/api/list_anim_slot_names")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("list_anim_slot_names")));
Router->BindRoute(FHttpPath(TEXT("/api/list_anim_sync_groups")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("list_anim_sync_groups")));
Router->BindRoute(FHttpPath(TEXT("/api/create_blend_space_asset")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("create_blend_space_asset")));
Router->BindRoute(FHttpPath(TEXT("/api/set_blend_space_sample_points")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("set_blend_space_sample_points")));
Router->BindRoute(FHttpPath(TEXT("/api/set_anim_state_blend_space")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("set_anim_state_blend_space")));
// Build new-style handler registry from UMCPHandler subclasses and bind routes for each
BuildMCPHandlerRegistry();
@@ -872,63 +872,63 @@ void FBlueprintMCPServer::RegisterHandlers()
{
// Mutation endpoints — wrapped in undo transactions by ProcessOneRequest()
MutationEndpoints = {
TEXT("replace_function_calls"),
TEXT("change_variable_type"),
TEXT("change_function_param_type"),
TEXT("replace_function_calls_in_blueprint"),
TEXT("change_blueprint_variable_type"),
TEXT("change_function_parameter_type"),
TEXT("remove_function_parameter"),
TEXT("delete_asset"),
TEXT("connect_pins"),
TEXT("disconnect_pin"),
TEXT("refresh_all_nodes"),
TEXT("set_pin_default"),
TEXT("move_node"),
TEXT("connect_blueprint_pins"),
TEXT("disconnect_blueprint_pins"),
TEXT("refresh_all_nodes_in_graph"),
TEXT("set_pin_default_values"),
TEXT("set_node_positions"),
TEXT("change_struct_node_type"),
TEXT("delete_node"),
TEXT("duplicate_nodes"),
TEXT("spawn_node"),
TEXT("delete_node_from_graph"),
TEXT("duplicate_nodes_in_graph"),
TEXT("spawn_nodes_in_graph"),
TEXT("set_node_comment"),
TEXT("rename_asset"),
TEXT("reparent_blueprint"),
TEXT("set_blueprint_default"),
TEXT("create_blueprint"),
TEXT("create_graph"),
TEXT("delete_graph"),
TEXT("rename_graph"),
TEXT("add_variable"),
TEXT("remove_variable"),
TEXT("set_variable_metadata"),
TEXT("add_interface"),
TEXT("remove_interface"),
TEXT("set_class_default_value"),
TEXT("create_blueprint_asset"),
TEXT("create_blueprint_graph"),
TEXT("delete_blueprint_graph"),
TEXT("rename_blueprint_graph"),
TEXT("add_blueprint_variable"),
TEXT("remove_blueprint_variable"),
TEXT("set_blueprint_variable_metadata"),
TEXT("add_blueprint_interface"),
TEXT("remove_blueprint_interface"),
TEXT("add_event_dispatcher"),
TEXT("add_function_parameter"),
TEXT("add_component"),
TEXT("remove_component"),
TEXT("restore_graph"),
TEXT("create_struct"),
TEXT("create_enum"),
TEXT("add_struct_property"),
TEXT("remove_struct_property"),
TEXT("create_material"),
TEXT("add_blueprint_component"),
TEXT("remove_blueprint_component"),
TEXT("restore_blueprint_graph_from_snapshot"),
TEXT("create_struct_asset"),
TEXT("create_enum_asset"),
TEXT("add_struct_field"),
TEXT("remove_struct_field"),
TEXT("create_material_asset"),
TEXT("set_material_property"),
TEXT("add_material_expression"),
TEXT("delete_material_expression"),
TEXT("connect_material_pins"),
TEXT("disconnect_material_pin"),
TEXT("set_expression_value"),
TEXT("move_material_expression"),
TEXT("create_material_instance"),
TEXT("connect_material_expression_pins"),
TEXT("disconnect_material_expression_pin"),
TEXT("set_material_expression_property"),
TEXT("set_material_expression_position"),
TEXT("create_material_instance_asset"),
TEXT("set_material_instance_parameter"),
TEXT("reparent_material_instance"),
TEXT("create_material_function"),
TEXT("restore_material_graph"),
TEXT("create_anim_blueprint"),
TEXT("add_anim_state"),
TEXT("remove_anim_state"),
TEXT("add_anim_transition"),
TEXT("set_transition_rule"),
TEXT("add_anim_node"),
TEXT("add_state_machine"),
TEXT("set_state_animation"),
TEXT("create_material_function_asset"),
TEXT("restore_material_graph_from_snapshot"),
TEXT("create_anim_blueprint_asset"),
TEXT("add_anim_state_to_machine"),
TEXT("remove_anim_state_from_machine"),
TEXT("add_anim_state_transition"),
TEXT("set_anim_transition_rule"),
TEXT("add_anim_graph_node"),
TEXT("add_anim_state_machine"),
TEXT("set_anim_state_animation"),
};
// All handlers have uniform signature: void(const FJsonObject&, FJsonObject&)
@@ -937,82 +937,82 @@ void FBlueprintMCPServer::RegisterHandlers()
HandlerMap.Add(Name, [this, Fn](const FJsonObject* Json, FJsonObject* Result) { (this->*Fn)(Json, Result); });
};
H(TEXT("rescan"), &FBlueprintMCPServer::HandleRescan);
H(TEXT("blueprint"), &FBlueprintMCPServer::HandleGetBlueprint);
H(TEXT("graph"), &FBlueprintMCPServer::HandleGetGraph);
H(TEXT("search"), &FBlueprintMCPServer::HandleSearch);
H(TEXT("references"), &FBlueprintMCPServer::HandleFindReferences);
H(TEXT("test_save"), &FBlueprintMCPServer::HandleTestSave);
H(TEXT("search_by_type"), &FBlueprintMCPServer::HandleSearchByType);
H(TEXT("change_variable_type"), &FBlueprintMCPServer::HandleChangeVariableType);
H(TEXT("change_function_param_type"), &FBlueprintMCPServer::HandleChangeFunctionParamType);
H(TEXT("rescan_asset_registry"), &FBlueprintMCPServer::HandleRescan);
H(TEXT("dump_blueprint"), &FBlueprintMCPServer::HandleGetBlueprint);
H(TEXT("dump_blueprint_graph"), &FBlueprintMCPServer::HandleGetGraph);
H(TEXT("search_within_blueprints"), &FBlueprintMCPServer::HandleSearch);
H(TEXT("find_asset_references"), &FBlueprintMCPServer::HandleFindReferences);
H(TEXT("test_save_blueprint_package"), &FBlueprintMCPServer::HandleTestSave);
H(TEXT("search_type_usage_in_blueprints"), &FBlueprintMCPServer::HandleSearchByType);
H(TEXT("change_blueprint_variable_type"), &FBlueprintMCPServer::HandleChangeVariableType);
H(TEXT("change_function_parameter_type"), &FBlueprintMCPServer::HandleChangeFunctionParamType);
H(TEXT("remove_function_parameter"), &FBlueprintMCPServer::HandleRemoveFunctionParameter);
H(TEXT("get_pin_info"), &FBlueprintMCPServer::HandleGetPinInfo);
H(TEXT("check_pin_compatibility"), &FBlueprintMCPServer::HandleCheckPinCompatibility);
H(TEXT("list_classes"), &FBlueprintMCPServer::HandleListClasses);
H(TEXT("list_functions"), &FBlueprintMCPServer::HandleListFunctions);
H(TEXT("list_properties"), &FBlueprintMCPServer::HandleListProperties);
H(TEXT("validate_blueprint"), &FBlueprintMCPServer::HandleValidateBlueprint);
H(TEXT("validate_all_blueprints"), &FBlueprintMCPServer::HandleValidateAllBlueprints);
H(TEXT("get_pin_details"), &FBlueprintMCPServer::HandleGetPinInfo);
H(TEXT("check_pin_connection_compatibility"), &FBlueprintMCPServer::HandleCheckPinCompatibility);
H(TEXT("search_unreal_classes"), &FBlueprintMCPServer::HandleListClasses);
H(TEXT("list_class_functions"), &FBlueprintMCPServer::HandleListFunctions);
H(TEXT("list_class_properties"), &FBlueprintMCPServer::HandleListProperties);
H(TEXT("compile_blueprint"), &FBlueprintMCPServer::HandleValidateBlueprint);
H(TEXT("compile_all_blueprints"), &FBlueprintMCPServer::HandleValidateAllBlueprints);
H(TEXT("reparent_blueprint"), &FBlueprintMCPServer::HandleReparentBlueprint);
H(TEXT("create_blueprint"), &FBlueprintMCPServer::HandleCreateBlueprint);
H(TEXT("create_graph"), &FBlueprintMCPServer::HandleCreateGraph);
H(TEXT("delete_graph"), &FBlueprintMCPServer::HandleDeleteGraph);
H(TEXT("rename_graph"), &FBlueprintMCPServer::HandleRenameGraph);
H(TEXT("add_variable"), &FBlueprintMCPServer::HandleAddVariable);
H(TEXT("remove_variable"), &FBlueprintMCPServer::HandleRemoveVariable);
H(TEXT("set_variable_metadata"), &FBlueprintMCPServer::HandleSetVariableMetadata);
H(TEXT("create_blueprint_asset"), &FBlueprintMCPServer::HandleCreateBlueprint);
H(TEXT("create_blueprint_graph"), &FBlueprintMCPServer::HandleCreateGraph);
H(TEXT("delete_blueprint_graph"), &FBlueprintMCPServer::HandleDeleteGraph);
H(TEXT("rename_blueprint_graph"), &FBlueprintMCPServer::HandleRenameGraph);
H(TEXT("add_blueprint_variable"), &FBlueprintMCPServer::HandleAddVariable);
H(TEXT("remove_blueprint_variable"), &FBlueprintMCPServer::HandleRemoveVariable);
H(TEXT("set_blueprint_variable_metadata"), &FBlueprintMCPServer::HandleSetVariableMetadata);
H(TEXT("add_event_dispatcher"), &FBlueprintMCPServer::HandleAddEventDispatcher);
H(TEXT("list_event_dispatchers"), &FBlueprintMCPServer::HandleListEventDispatchers);
H(TEXT("add_function_parameter"), &FBlueprintMCPServer::HandleAddFunctionParameter);
H(TEXT("add_component"), &FBlueprintMCPServer::HandleAddComponent);
H(TEXT("remove_component"), &FBlueprintMCPServer::HandleRemoveComponent);
H(TEXT("list_components"), &FBlueprintMCPServer::HandleListComponents);
H(TEXT("snapshot_graph"), &FBlueprintMCPServer::HandleSnapshotGraph);
H(TEXT("diff_graph"), &FBlueprintMCPServer::HandleDiffGraph);
H(TEXT("restore_graph"), &FBlueprintMCPServer::HandleRestoreGraph);
H(TEXT("find_disconnected_pins"), &FBlueprintMCPServer::HandleFindDisconnectedPins);
H(TEXT("analyze_rebuild_impact"), &FBlueprintMCPServer::HandleAnalyzeRebuildImpact);
H(TEXT("create_struct"), &FBlueprintMCPServer::HandleCreateStruct);
H(TEXT("create_enum"), &FBlueprintMCPServer::HandleCreateEnum);
H(TEXT("add_struct_property"), &FBlueprintMCPServer::HandleAddStructProperty);
H(TEXT("remove_struct_property"), &FBlueprintMCPServer::HandleRemoveStructProperty);
H(TEXT("get_material"), &FBlueprintMCPServer::HandleGetMaterial);
H(TEXT("get_material_graph"), &FBlueprintMCPServer::HandleGetMaterialGraph);
H(TEXT("search_materials"), &FBlueprintMCPServer::HandleSearchMaterials);
H(TEXT("get_material_instance_params"),&FBlueprintMCPServer::HandleGetMaterialInstanceParameters);
H(TEXT("get_material_function"), &FBlueprintMCPServer::HandleGetMaterialFunction);
H(TEXT("describe_material"), &FBlueprintMCPServer::HandleDescribeMaterial);
H(TEXT("add_blueprint_component"), &FBlueprintMCPServer::HandleAddComponent);
H(TEXT("remove_blueprint_component"), &FBlueprintMCPServer::HandleRemoveComponent);
H(TEXT("list_blueprint_components"), &FBlueprintMCPServer::HandleListComponents);
H(TEXT("snapshot_blueprint_graph"), &FBlueprintMCPServer::HandleSnapshotGraph);
H(TEXT("diff_blueprint_graph_vs_snapshot"), &FBlueprintMCPServer::HandleDiffGraph);
H(TEXT("restore_blueprint_graph_from_snapshot"), &FBlueprintMCPServer::HandleRestoreGraph);
H(TEXT("find_pins_disconnected_since_snapshot"), &FBlueprintMCPServer::HandleFindDisconnectedPins);
H(TEXT("analyze_cpp_rebuild_impact"), &FBlueprintMCPServer::HandleAnalyzeRebuildImpact);
H(TEXT("create_struct_asset"), &FBlueprintMCPServer::HandleCreateStruct);
H(TEXT("create_enum_asset"), &FBlueprintMCPServer::HandleCreateEnum);
H(TEXT("add_struct_field"), &FBlueprintMCPServer::HandleAddStructProperty);
H(TEXT("remove_struct_field"), &FBlueprintMCPServer::HandleRemoveStructProperty);
H(TEXT("dump_material"), &FBlueprintMCPServer::HandleGetMaterial);
H(TEXT("dump_material_expression_graph"), &FBlueprintMCPServer::HandleGetMaterialGraph);
H(TEXT("search_within_materials"), &FBlueprintMCPServer::HandleSearchMaterials);
H(TEXT("dump_material_instance_parameters"),&FBlueprintMCPServer::HandleGetMaterialInstanceParameters);
H(TEXT("dump_material_function"), &FBlueprintMCPServer::HandleGetMaterialFunction);
H(TEXT("describe_material_in_english"), &FBlueprintMCPServer::HandleDescribeMaterial);
H(TEXT("find_material_references"), &FBlueprintMCPServer::HandleFindMaterialReferences);
H(TEXT("create_material"), &FBlueprintMCPServer::HandleCreateMaterial);
H(TEXT("create_material_asset"), &FBlueprintMCPServer::HandleCreateMaterial);
H(TEXT("set_material_property"), &FBlueprintMCPServer::HandleSetMaterialProperty);
H(TEXT("add_material_expression"), &FBlueprintMCPServer::HandleAddMaterialExpression);
H(TEXT("delete_material_expression"), &FBlueprintMCPServer::HandleDeleteMaterialExpression);
H(TEXT("connect_material_pins"), &FBlueprintMCPServer::HandleConnectMaterialPins);
H(TEXT("disconnect_material_pin"), &FBlueprintMCPServer::HandleDisconnectMaterialPin);
H(TEXT("set_expression_value"), &FBlueprintMCPServer::HandleSetExpressionValue);
H(TEXT("move_material_expression"), &FBlueprintMCPServer::HandleMoveMaterialExpression);
H(TEXT("create_material_instance"), &FBlueprintMCPServer::HandleCreateMaterialInstance);
H(TEXT("connect_material_expression_pins"), &FBlueprintMCPServer::HandleConnectMaterialPins);
H(TEXT("disconnect_material_expression_pin"), &FBlueprintMCPServer::HandleDisconnectMaterialPin);
H(TEXT("set_material_expression_property"), &FBlueprintMCPServer::HandleSetExpressionValue);
H(TEXT("set_material_expression_position"), &FBlueprintMCPServer::HandleMoveMaterialExpression);
H(TEXT("create_material_instance_asset"), &FBlueprintMCPServer::HandleCreateMaterialInstance);
H(TEXT("set_material_instance_parameter"), &FBlueprintMCPServer::HandleSetMaterialInstanceParameter);
H(TEXT("reparent_material_instance"), &FBlueprintMCPServer::HandleReparentMaterialInstance);
H(TEXT("create_material_function"), &FBlueprintMCPServer::HandleCreateMaterialFunction);
H(TEXT("snapshot_material_graph"), &FBlueprintMCPServer::HandleSnapshotMaterialGraph);
H(TEXT("diff_material_graph"), &FBlueprintMCPServer::HandleDiffMaterialGraph);
H(TEXT("restore_material_graph"), &FBlueprintMCPServer::HandleRestoreMaterialGraph);
H(TEXT("validate_material"), &FBlueprintMCPServer::HandleValidateMaterial);
H(TEXT("create_anim_blueprint"), &FBlueprintMCPServer::HandleCreateAnimBlueprint);
H(TEXT("add_anim_state"), &FBlueprintMCPServer::HandleAddAnimState);
H(TEXT("remove_anim_state"), &FBlueprintMCPServer::HandleRemoveAnimState);
H(TEXT("add_anim_transition"), &FBlueprintMCPServer::HandleAddAnimTransition);
H(TEXT("set_transition_rule"), &FBlueprintMCPServer::HandleSetTransitionRule);
H(TEXT("add_anim_node"), &FBlueprintMCPServer::HandleAddAnimNode);
H(TEXT("add_state_machine"), &FBlueprintMCPServer::HandleAddStateMachine);
H(TEXT("set_state_animation"), &FBlueprintMCPServer::HandleSetStateAnimation);
H(TEXT("list_anim_slots"), &FBlueprintMCPServer::HandleListAnimSlots);
H(TEXT("list_sync_groups"), &FBlueprintMCPServer::HandleListSyncGroups);
H(TEXT("create_blend_space"), &FBlueprintMCPServer::HandleCreateBlendSpace);
H(TEXT("set_blend_space_samples"), &FBlueprintMCPServer::HandleSetBlendSpaceSamples);
H(TEXT("set_state_blend_space"), &FBlueprintMCPServer::HandleSetStateBlendSpace);
H(TEXT("create_material_function_asset"), &FBlueprintMCPServer::HandleCreateMaterialFunction);
H(TEXT("snapshot_material_expression_graph"), &FBlueprintMCPServer::HandleSnapshotMaterialGraph);
H(TEXT("diff_material_graph_vs_snapshot"), &FBlueprintMCPServer::HandleDiffMaterialGraph);
H(TEXT("restore_material_graph_from_snapshot"), &FBlueprintMCPServer::HandleRestoreMaterialGraph);
H(TEXT("compile_material"), &FBlueprintMCPServer::HandleValidateMaterial);
H(TEXT("create_anim_blueprint_asset"), &FBlueprintMCPServer::HandleCreateAnimBlueprint);
H(TEXT("add_anim_state_to_machine"), &FBlueprintMCPServer::HandleAddAnimState);
H(TEXT("remove_anim_state_from_machine"), &FBlueprintMCPServer::HandleRemoveAnimState);
H(TEXT("add_anim_state_transition"), &FBlueprintMCPServer::HandleAddAnimTransition);
H(TEXT("set_anim_transition_rule"), &FBlueprintMCPServer::HandleSetTransitionRule);
H(TEXT("add_anim_graph_node"), &FBlueprintMCPServer::HandleAddAnimNode);
H(TEXT("add_anim_state_machine"), &FBlueprintMCPServer::HandleAddStateMachine);
H(TEXT("set_anim_state_animation"), &FBlueprintMCPServer::HandleSetStateAnimation);
H(TEXT("list_anim_slot_names"), &FBlueprintMCPServer::HandleListAnimSlots);
H(TEXT("list_anim_sync_groups"), &FBlueprintMCPServer::HandleListSyncGroups);
H(TEXT("create_blend_space_asset"), &FBlueprintMCPServer::HandleCreateBlendSpace);
H(TEXT("set_blend_space_sample_points"), &FBlueprintMCPServer::HandleSetBlendSpaceSamples);
H(TEXT("set_anim_state_blend_space"), &FBlueprintMCPServer::HandleSetStateBlendSpace);
}
void FBlueprintMCPServer::BuildMCPHandlerRegistry()

View File

@@ -4,8 +4,8 @@
#include "MCPHandler.h"
#include "BlueprintMCPHandlers_DiffBlueprints.generated.h"
UCLASS(meta=(ToolName="diff_blueprints"))
class UMCPHandler_DiffBlueprints : public UObject, public IMCPHandler
UCLASS(meta=(ToolName="diff_two_blueprints"))
class UMCPHandler_DiffTwoBlueprints : public UObject, public IMCPHandler
{
GENERATED_BODY()

View File

@@ -4,8 +4,8 @@
#include "MCPHandler.h"
#include "BlueprintMCPHandlers_Interfaces.generated.h"
UCLASS(meta=(ToolName="list_interfaces"))
class UMCPHandler_ListInterfaces : public UObject, public IMCPHandler
UCLASS(meta=(ToolName="list_blueprint_interfaces"))
class UMCPHandler_ListBlueprintInterfaces : public UObject, public IMCPHandler
{
GENERATED_BODY()
@@ -22,8 +22,8 @@ public:
virtual void Handle(const FJsonObject* Json, FJsonObject* Result) override;
};
UCLASS(meta=(ToolName="add_interface"))
class UMCPHandler_AddInterface : public UObject, public IMCPHandler
UCLASS(meta=(ToolName="add_blueprint_interface"))
class UMCPHandler_AddBlueprintInterface : public UObject, public IMCPHandler
{
GENERATED_BODY()
@@ -43,8 +43,8 @@ public:
virtual void Handle(const FJsonObject* Json, FJsonObject* Result) override;
};
UCLASS(meta=(ToolName="remove_interface"))
class UMCPHandler_RemoveInterface : public UObject, public IMCPHandler
UCLASS(meta=(ToolName="remove_blueprint_interface"))
class UMCPHandler_RemoveBlueprintInterface : public UObject, public IMCPHandler
{
GENERATED_BODY()

View File

@@ -22,8 +22,8 @@ struct FSetPinDefaultEntry
FString Value;
};
UCLASS(meta=(ToolName="set_pin_default"))
class UMCPHandler_SetPinDefault : public UObject, public IMCPHandler
UCLASS(meta=(ToolName="set_pin_default_values"))
class UMCPHandler_SetPinDefaultValues : public UObject, public IMCPHandler
{
GENERATED_BODY()
@@ -54,8 +54,8 @@ struct FMoveNodeEntry
int32 Y = 0;
};
UCLASS(meta=(ToolName="move_node"))
class UMCPHandler_MoveNode : public UObject, public IMCPHandler
UCLASS(meta=(ToolName="set_node_positions"))
class UMCPHandler_SetNodePositions : public UObject, public IMCPHandler
{
GENERATED_BODY()
@@ -74,8 +74,8 @@ public:
virtual void Handle(const FJsonObject* Json, FJsonObject* Result) override;
};
UCLASS(meta=(ToolName="duplicate_nodes"))
class UMCPHandler_DuplicateNodes : public UObject, public IMCPHandler
UCLASS(meta=(ToolName="duplicate_nodes_in_graph"))
class UMCPHandler_DuplicateNodesInGraph : public UObject, public IMCPHandler
{
GENERATED_BODY()
@@ -120,8 +120,8 @@ struct FSpawnNodeEntry
int32 PosY = 0;
};
UCLASS(meta=(ToolName="spawn_node"))
class UMCPHandler_SpawnNode : public UObject, public IMCPHandler
UCLASS(meta=(ToolName="spawn_nodes_in_graph"))
class UMCPHandler_SpawnNodesInGraph : public UObject, public IMCPHandler
{
GENERATED_BODY()
@@ -188,8 +188,8 @@ public:
virtual void Handle(const FJsonObject* Json, FJsonObject* Result) override;
};
UCLASS(meta=(ToolName="delete_node"))
class UMCPHandler_DeleteNode : public UObject, public IMCPHandler
UCLASS(meta=(ToolName="delete_node_from_graph"))
class UMCPHandler_DeleteNodeFromGraph : public UObject, public IMCPHandler
{
GENERATED_BODY()
@@ -227,8 +227,8 @@ struct FConnectPinsEntry
FString TargetPinName;
};
UCLASS(meta=(ToolName="connect_pins"))
class UMCPHandler_ConnectPins : public UObject, public IMCPHandler
UCLASS(meta=(ToolName="connect_blueprint_pins"))
class UMCPHandler_ConnectBlueprintPins : public UObject, public IMCPHandler
{
GENERATED_BODY()
@@ -265,8 +265,8 @@ struct FDisconnectPinEntry
FString TargetPinName;
};
UCLASS(meta=(ToolName="disconnect_pin"))
class UMCPHandler_DisconnectPin : public UObject, public IMCPHandler
UCLASS(meta=(ToolName="disconnect_blueprint_pins"))
class UMCPHandler_DisconnectBlueprintPins : public UObject, public IMCPHandler
{
GENERATED_BODY()
@@ -286,8 +286,8 @@ public:
virtual void Handle(const FJsonObject* Json, FJsonObject* Result) override;
};
UCLASS(meta=(ToolName="replace_function_calls"))
class UMCPHandler_ReplaceFunctionCalls : public UObject, public IMCPHandler
UCLASS(meta=(ToolName="replace_function_calls_in_blueprint"))
class UMCPHandler_ReplaceFunctionCallsInBlueprint : public UObject, public IMCPHandler
{
GENERATED_BODY()
@@ -334,8 +334,8 @@ public:
virtual void Handle(const FJsonObject* Json, FJsonObject* Result) override;
};
UCLASS(meta=(ToolName="refresh_all_nodes"))
class UMCPHandler_RefreshAllNodes : public UObject, public IMCPHandler
UCLASS(meta=(ToolName="refresh_all_nodes_in_graph"))
class UMCPHandler_RefreshAllNodesInGraph : public UObject, public IMCPHandler
{
GENERATED_BODY()
@@ -396,8 +396,8 @@ public:
virtual void Handle(const FJsonObject* Json, FJsonObject* Result) override;
};
UCLASS(meta=(ToolName="set_blueprint_default"))
class UMCPHandler_SetBlueprintDefault : public UObject, public IMCPHandler
UCLASS(meta=(ToolName="set_class_default_value"))
class UMCPHandler_SetClassDefaultValue : public UObject, public IMCPHandler
{
GENERATED_BODY()
@@ -420,8 +420,8 @@ public:
virtual void Handle(const FJsonObject* Json, FJsonObject* Result) override;
};
UCLASS(meta=(ToolName="search_node_types"))
class UMCPHandler_SearchNodeTypes : public UObject, public IMCPHandler
UCLASS(meta=(ToolName="search_spawnable_node_types"))
class UMCPHandler_SearchSpawnableNodeTypes : public UObject, public IMCPHandler
{
GENERATED_BODY()