Rename MCP endpoints to snake_case. Eliminate javascript wrapper.
This commit is contained in:
@@ -1727,11 +1727,11 @@ struct FNodeActionSearch
|
||||
};
|
||||
|
||||
// ============================================================
|
||||
// SearchNodeActions — search the blueprint action database
|
||||
// SearchNodeTypes — search the blueprint action database
|
||||
// for spawners matching a query string (same pool as the right-click menu)
|
||||
// ============================================================
|
||||
|
||||
void UMCPHandler_SearchNodeActions::Handle(const FJsonObject* Json, FJsonObject* Result)
|
||||
void UMCPHandler_SearchNodeTypes::Handle(const FJsonObject* Json, FJsonObject* Result)
|
||||
{
|
||||
int32 ClampedMax = FMath::Clamp(MaxResults, 1, 500);
|
||||
|
||||
@@ -1746,7 +1746,7 @@ void UMCPHandler_SearchNodeActions::Handle(const FJsonObject* Json, FJsonObject*
|
||||
|
||||
Result->SetBoolField(TEXT("success"), true);
|
||||
Result->SetNumberField(TEXT("count"), ResultArray.Num());
|
||||
Result->SetArrayField(TEXT("actions"), ResultArray);
|
||||
Result->SetArrayField(TEXT("results"), ResultArray);
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
@@ -1816,7 +1816,7 @@ void UMCPHandler_SpawnNode::Handle(const FJsonObject* Json, FJsonObject* Result)
|
||||
if (Matches.Num() == 0)
|
||||
{
|
||||
EntryResult->SetStringField(TEXT("error"), FString::Printf(
|
||||
TEXT("No action found matching '%s'. Use search_node_actions to find available actions."),
|
||||
TEXT("No action found matching '%s'. Use search_node_types to find available actions."),
|
||||
*Entry.ActionName));
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -572,137 +572,85 @@ bool FBlueprintMCPServer::Start(int32 InPort, bool bEditorMode)
|
||||
return true;
|
||||
}));
|
||||
|
||||
// Queued (need main thread for LoadObject)
|
||||
// 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")));
|
||||
|
||||
// Reference finder + write tools
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/references")), EHttpServerRequestVerbs::VERB_GET,
|
||||
QueuedHandler(TEXT("references")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/replace-function-calls")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("replace_function_calls")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/change-variable-type")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("changeVariableType")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/change-function-param-type")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("changeFunctionParamType")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/delete-asset")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("delete_asset")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/test-save")), EHttpServerRequestVerbs::VERB_GET,
|
||||
QueuedHandler(TEXT("testSave")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/connect-pins")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("connect_pins")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/disconnect-pin")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("disconnect_pin")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/refresh-all-nodes")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("refresh_all_nodes")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/set-pin-default")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("set_pin_default")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/move-node")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("move_node")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/get-node-comment")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("get_node_comment")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/set-node-comment")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("set_node_comment")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/get-pin-info")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("getPinInfo")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/check-pin-compatibility")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("checkPinCompatibility")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/list-classes")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("listClasses")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/list-functions")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("listFunctions")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/list-properties")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("listProperties")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/change-struct-node-type")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("change_struct_node_type")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/remove-function-parameter")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("removeFunctionParameter")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/delete-node")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("delete_node")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/duplicate-nodes")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("duplicate_nodes")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/search-by-type")), EHttpServerRequestVerbs::VERB_GET,
|
||||
QueuedHandler(TEXT("searchByType")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/validate-blueprint")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("validateBlueprint")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/validate-all-blueprints")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("validateAllBlueprints")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/search-node-actions")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("search_node_actions")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/spawn-node")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("spawn_node")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/rename-asset")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("rename_asset")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/reparent-blueprint")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("reparentBlueprint")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/set-blueprint-default")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("set_blueprint_default")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/create-blueprint")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("createBlueprint")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/create-graph")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("createGraph")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/create-struct")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("createStruct")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/create-enum")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("createEnum")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/add-struct-property")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("addStructProperty")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/remove-struct-property")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("removeStructProperty")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/delete-graph")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("deleteGraph")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/rename-graph")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("renameGraph")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/add-variable")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("addVariable")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/remove-variable")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("removeVariable")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/set-variable-metadata")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("setVariableMetadata")));
|
||||
|
||||
// Interface tools
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/add-interface")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("add_interface")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/remove-interface")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("remove_interface")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/list-interfaces")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("list_interfaces")));
|
||||
|
||||
// Event Dispatcher tools
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/add-event-dispatcher")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("addEventDispatcher")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/list-event-dispatchers")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("listEventDispatchers")));
|
||||
|
||||
// Function parameter tools
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/add-function-parameter")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("addFunctionParameter")));
|
||||
|
||||
// Component tools
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/add-component")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("addComponent")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/remove-component")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("removeComponent")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/list-components")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("listComponents")));
|
||||
|
||||
// Snapshot / Safety tools
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/snapshot-graph")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("snapshotGraph")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/diff-graph")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("diffGraph")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/restore-graph")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("restoreGraph")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/find-disconnected-pins")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("findDisconnectedPins")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/analyze-rebuild-impact")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("analyzeRebuildImpact")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/diff-blueprints")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("diff_blueprints")));
|
||||
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/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/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/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")));
|
||||
|
||||
// Material read-only tools (Phase 1)
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/materials")), EHttpServerRequestVerbs::VERB_GET,
|
||||
@@ -722,46 +670,46 @@ Router->BindRoute(FHttpPath(TEXT("/api/search-node-actions")), EHttpServerReques
|
||||
return true;
|
||||
}));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/material")), EHttpServerRequestVerbs::VERB_GET,
|
||||
QueuedHandler(TEXT("getMaterial")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/material-graph")), EHttpServerRequestVerbs::VERB_GET,
|
||||
QueuedHandler(TEXT("getMaterialGraph")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/describe-material")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("describeMaterial")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/search-materials")), EHttpServerRequestVerbs::VERB_GET,
|
||||
QueuedHandler(TEXT("searchMaterials")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/material-references")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("findMaterialReferences")));
|
||||
QueuedHandler(TEXT("get_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")));
|
||||
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("createMaterial")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/set-material-property")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("setMaterialProperty")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/add-material-expression")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("addMaterialExpression")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/delete-material-expression")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("deleteMaterialExpression")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/connect-material-pins")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("connectMaterialPins")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/disconnect-material-pin")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("disconnectMaterialPin")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/set-expression-value")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("setExpressionValue")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/move-material-expression")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("moveMaterialExpression")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/create_material")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("create_material")));
|
||||
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")));
|
||||
|
||||
// Material instance tools (Phase 3)
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/create-material-instance")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("createMaterialInstance")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/set-material-instance-parameter")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("setMaterialInstanceParameter")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/material-instance-params")), EHttpServerRequestVerbs::VERB_GET,
|
||||
QueuedHandler(TEXT("getMaterialInstanceParams")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/reparent-material-instance")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("reparentMaterialInstance")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/create_material_instance")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("create_material_instance")));
|
||||
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")));
|
||||
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/material_functions")), EHttpServerRequestVerbs::VERB_GET,
|
||||
FHttpRequestHandler::CreateLambda(
|
||||
[this](const FHttpServerRequest& Request, const FHttpResultCallback& OnComplete)
|
||||
{
|
||||
@@ -777,54 +725,60 @@ Router->BindRoute(FHttpPath(TEXT("/api/search-node-actions")), EHttpServerReques
|
||||
OnComplete(MoveTemp(R));
|
||||
return true;
|
||||
}));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/material-function")), EHttpServerRequestVerbs::VERB_GET,
|
||||
QueuedHandler(TEXT("getMaterialFunction")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/create-material-function")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("createMaterialFunction")));
|
||||
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")));
|
||||
|
||||
// Material snapshot/diff/restore (Phase 5)
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/snapshot-material-graph")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("snapshotMaterialGraph")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/diff-material-graph")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("diffMaterialGraph")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/restore-material-graph")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("restoreMaterialGraph")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/validate-material")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("validateMaterial")));
|
||||
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")));
|
||||
|
||||
// Animation Blueprint tools
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/create-anim-blueprint")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("createAnimBlueprint")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/add-anim-state")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("addAnimState")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/remove-anim-state")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("removeAnimState")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/add-anim-transition")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("addAnimTransition")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/set-transition-rule")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("setTransitionRule")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/add-anim-node")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("addAnimNode")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/add-state-machine")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("addStateMachine")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/set-state-animation")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("setStateAnimation")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/list-anim-slots")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("listAnimSlots")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/list-sync-groups")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("listSyncGroups")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/create-blend-space")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("createBlendSpace")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/set-blend-space-samples")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("setBlendSpaceSamples")));
|
||||
Router->BindRoute(FHttpPath(TEXT("/api/set-state-blend-space")), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(TEXT("setStateBlendSpace")));
|
||||
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")));
|
||||
|
||||
// Register TMap dispatch handlers
|
||||
RegisterHandlers();
|
||||
|
||||
// Build new-style handler registry from UMCPHandler subclasses
|
||||
// Build new-style handler registry from UMCPHandler subclasses and bind routes for each
|
||||
BuildMCPHandlerRegistry();
|
||||
for (const auto& KV : MCPHandlerRegistry)
|
||||
{
|
||||
FString Path = FString::Printf(TEXT("/api/%s"), *KV.Key);
|
||||
Router->BindRoute(FHttpPath(Path), EHttpServerRequestVerbs::VERB_POST,
|
||||
QueuedHandler(KV.Key));
|
||||
}
|
||||
|
||||
// Register old-style TMap dispatch handlers
|
||||
RegisterHandlers();
|
||||
|
||||
HttpModule.StartAllListeners();
|
||||
|
||||
@@ -959,9 +913,9 @@ void FBlueprintMCPServer::RegisterHandlers()
|
||||
// Mutation endpoints — wrapped in undo transactions by ProcessOneRequest()
|
||||
MutationEndpoints = {
|
||||
TEXT("replace_function_calls"),
|
||||
TEXT("changeVariableType"),
|
||||
TEXT("changeFunctionParamType"),
|
||||
TEXT("removeFunctionParameter"),
|
||||
TEXT("change_variable_type"),
|
||||
TEXT("change_function_param_type"),
|
||||
TEXT("remove_function_parameter"),
|
||||
TEXT("delete_asset"),
|
||||
TEXT("connect_pins"),
|
||||
TEXT("disconnect_pin"),
|
||||
@@ -974,47 +928,47 @@ void FBlueprintMCPServer::RegisterHandlers()
|
||||
TEXT("spawn_node"),
|
||||
TEXT("set_node_comment"),
|
||||
TEXT("rename_asset"),
|
||||
TEXT("reparentBlueprint"),
|
||||
TEXT("reparent_blueprint"),
|
||||
TEXT("set_blueprint_default"),
|
||||
TEXT("createBlueprint"),
|
||||
TEXT("createGraph"),
|
||||
TEXT("deleteGraph"),
|
||||
TEXT("renameGraph"),
|
||||
TEXT("addVariable"),
|
||||
TEXT("removeVariable"),
|
||||
TEXT("setVariableMetadata"),
|
||||
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("addEventDispatcher"),
|
||||
TEXT("addFunctionParameter"),
|
||||
TEXT("addComponent"),
|
||||
TEXT("removeComponent"),
|
||||
TEXT("restoreGraph"),
|
||||
TEXT("createStruct"),
|
||||
TEXT("createEnum"),
|
||||
TEXT("addStructProperty"),
|
||||
TEXT("removeStructProperty"),
|
||||
TEXT("createMaterial"),
|
||||
TEXT("setMaterialProperty"),
|
||||
TEXT("addMaterialExpression"),
|
||||
TEXT("deleteMaterialExpression"),
|
||||
TEXT("connectMaterialPins"),
|
||||
TEXT("disconnectMaterialPin"),
|
||||
TEXT("setExpressionValue"),
|
||||
TEXT("moveMaterialExpression"),
|
||||
TEXT("createMaterialInstance"),
|
||||
TEXT("setMaterialInstanceParameter"),
|
||||
TEXT("reparentMaterialInstance"),
|
||||
TEXT("createMaterialFunction"),
|
||||
TEXT("restoreMaterialGraph"),
|
||||
TEXT("createAnimBlueprint"),
|
||||
TEXT("addAnimState"),
|
||||
TEXT("removeAnimState"),
|
||||
TEXT("addAnimTransition"),
|
||||
TEXT("setTransitionRule"),
|
||||
TEXT("addAnimNode"),
|
||||
TEXT("addStateMachine"),
|
||||
TEXT("setStateAnimation"),
|
||||
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("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("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"),
|
||||
};
|
||||
|
||||
// All handlers have uniform signature: void(const FJsonObject&, FJsonObject&)
|
||||
@@ -1028,95 +982,77 @@ void FBlueprintMCPServer::RegisterHandlers()
|
||||
H(TEXT("graph"), &FBlueprintMCPServer::HandleGetGraph);
|
||||
H(TEXT("search"), &FBlueprintMCPServer::HandleSearch);
|
||||
H(TEXT("references"), &FBlueprintMCPServer::HandleFindReferences);
|
||||
H(TEXT("testSave"), &FBlueprintMCPServer::HandleTestSave);
|
||||
H(TEXT("searchByType"), &FBlueprintMCPServer::HandleSearchByType);
|
||||
// replace_function_calls is now handled by UMCPHandler_ReplaceFunctionCalls (new-style registry)
|
||||
H(TEXT("changeVariableType"), &FBlueprintMCPServer::HandleChangeVariableType);
|
||||
H(TEXT("changeFunctionParamType"), &FBlueprintMCPServer::HandleChangeFunctionParamType);
|
||||
H(TEXT("removeFunctionParameter"), &FBlueprintMCPServer::HandleRemoveFunctionParameter);
|
||||
// delete_asset is now handled by UMCPHandler_DeleteAsset (new-style registry)
|
||||
// connect_pins is now handled by UMCPHandler_ConnectPins (new-style registry)
|
||||
// disconnect_pin is now handled by UMCPHandler_DisconnectPin (new-style registry)
|
||||
// refresh_all_nodes is now handled by UMCPHandler_RefreshAllNodes (new-style registry)
|
||||
// set_pin_default is now handled by UMCPHandler_SetPinDefault (new-style registry)
|
||||
// move_node is now handled by UMCPHandler_MoveNode (new-style registry)
|
||||
// get_node_comment is now handled by UMCPHandler_GetNodeComment (new-style registry)
|
||||
// set_node_comment is now handled by UMCPHandler_SetNodeComment (new-style registry)
|
||||
H(TEXT("getPinInfo"), &FBlueprintMCPServer::HandleGetPinInfo);
|
||||
H(TEXT("checkPinCompatibility"), &FBlueprintMCPServer::HandleCheckPinCompatibility);
|
||||
H(TEXT("listClasses"), &FBlueprintMCPServer::HandleListClasses);
|
||||
H(TEXT("listFunctions"), &FBlueprintMCPServer::HandleListFunctions);
|
||||
H(TEXT("listProperties"), &FBlueprintMCPServer::HandleListProperties);
|
||||
// change_struct_node_type is now handled by UMCPHandler_ChangeStructNodeType (new-style registry)
|
||||
// delete_node is now handled by UMCPHandler_DeleteNode (new-style registry)
|
||||
// duplicate_nodes is now handled by UMCPHandler_DuplicateNodes (new-style registry)
|
||||
H(TEXT("validateBlueprint"), &FBlueprintMCPServer::HandleValidateBlueprint);
|
||||
H(TEXT("validateAllBlueprints"), &FBlueprintMCPServer::HandleValidateAllBlueprints);
|
||||
// search_node_actions is now handled by UMCPHandler_SearchNodeActions (new-style registry)
|
||||
// spawn_node is now handled by UMCPHandler_SpawnNode (new-style registry)
|
||||
// rename_asset is now handled by UMCPHandler_RenameAsset (new-style registry)
|
||||
H(TEXT("reparentBlueprint"), &FBlueprintMCPServer::HandleReparentBlueprint);
|
||||
// set_blueprint_default is now handled by UMCPHandler_SetBlueprintDefault (new-style registry)
|
||||
H(TEXT("createBlueprint"), &FBlueprintMCPServer::HandleCreateBlueprint);
|
||||
H(TEXT("createGraph"), &FBlueprintMCPServer::HandleCreateGraph);
|
||||
H(TEXT("deleteGraph"), &FBlueprintMCPServer::HandleDeleteGraph);
|
||||
H(TEXT("renameGraph"), &FBlueprintMCPServer::HandleRenameGraph);
|
||||
H(TEXT("addVariable"), &FBlueprintMCPServer::HandleAddVariable);
|
||||
H(TEXT("removeVariable"), &FBlueprintMCPServer::HandleRemoveVariable);
|
||||
H(TEXT("setVariableMetadata"), &FBlueprintMCPServer::HandleSetVariableMetadata);
|
||||
// add_interface, remove_interface, list_interfaces now handled by new-style registry
|
||||
H(TEXT("addEventDispatcher"), &FBlueprintMCPServer::HandleAddEventDispatcher);
|
||||
H(TEXT("listEventDispatchers"), &FBlueprintMCPServer::HandleListEventDispatchers);
|
||||
H(TEXT("addFunctionParameter"), &FBlueprintMCPServer::HandleAddFunctionParameter);
|
||||
H(TEXT("addComponent"), &FBlueprintMCPServer::HandleAddComponent);
|
||||
H(TEXT("removeComponent"), &FBlueprintMCPServer::HandleRemoveComponent);
|
||||
H(TEXT("listComponents"), &FBlueprintMCPServer::HandleListComponents);
|
||||
H(TEXT("snapshotGraph"), &FBlueprintMCPServer::HandleSnapshotGraph);
|
||||
H(TEXT("diffGraph"), &FBlueprintMCPServer::HandleDiffGraph);
|
||||
H(TEXT("restoreGraph"), &FBlueprintMCPServer::HandleRestoreGraph);
|
||||
H(TEXT("findDisconnectedPins"), &FBlueprintMCPServer::HandleFindDisconnectedPins);
|
||||
H(TEXT("analyzeRebuildImpact"), &FBlueprintMCPServer::HandleAnalyzeRebuildImpact);
|
||||
// diff_blueprints is now handled by UMCPHandler_DiffBlueprints (new-style registry)
|
||||
H(TEXT("createStruct"), &FBlueprintMCPServer::HandleCreateStruct);
|
||||
H(TEXT("createEnum"), &FBlueprintMCPServer::HandleCreateEnum);
|
||||
H(TEXT("addStructProperty"), &FBlueprintMCPServer::HandleAddStructProperty);
|
||||
H(TEXT("removeStructProperty"), &FBlueprintMCPServer::HandleRemoveStructProperty);
|
||||
H(TEXT("getMaterial"), &FBlueprintMCPServer::HandleGetMaterial);
|
||||
H(TEXT("getMaterialGraph"), &FBlueprintMCPServer::HandleGetMaterialGraph);
|
||||
H(TEXT("searchMaterials"), &FBlueprintMCPServer::HandleSearchMaterials);
|
||||
H(TEXT("getMaterialInstanceParams"),&FBlueprintMCPServer::HandleGetMaterialInstanceParameters);
|
||||
H(TEXT("getMaterialFunction"), &FBlueprintMCPServer::HandleGetMaterialFunction);
|
||||
H(TEXT("describeMaterial"), &FBlueprintMCPServer::HandleDescribeMaterial);
|
||||
H(TEXT("findMaterialReferences"), &FBlueprintMCPServer::HandleFindMaterialReferences);
|
||||
H(TEXT("createMaterial"), &FBlueprintMCPServer::HandleCreateMaterial);
|
||||
H(TEXT("setMaterialProperty"), &FBlueprintMCPServer::HandleSetMaterialProperty);
|
||||
H(TEXT("addMaterialExpression"), &FBlueprintMCPServer::HandleAddMaterialExpression);
|
||||
H(TEXT("deleteMaterialExpression"), &FBlueprintMCPServer::HandleDeleteMaterialExpression);
|
||||
H(TEXT("connectMaterialPins"), &FBlueprintMCPServer::HandleConnectMaterialPins);
|
||||
H(TEXT("disconnectMaterialPin"), &FBlueprintMCPServer::HandleDisconnectMaterialPin);
|
||||
H(TEXT("setExpressionValue"), &FBlueprintMCPServer::HandleSetExpressionValue);
|
||||
H(TEXT("moveMaterialExpression"), &FBlueprintMCPServer::HandleMoveMaterialExpression);
|
||||
H(TEXT("createMaterialInstance"), &FBlueprintMCPServer::HandleCreateMaterialInstance);
|
||||
H(TEXT("setMaterialInstanceParameter"), &FBlueprintMCPServer::HandleSetMaterialInstanceParameter);
|
||||
H(TEXT("reparentMaterialInstance"), &FBlueprintMCPServer::HandleReparentMaterialInstance);
|
||||
H(TEXT("createMaterialFunction"), &FBlueprintMCPServer::HandleCreateMaterialFunction);
|
||||
H(TEXT("snapshotMaterialGraph"), &FBlueprintMCPServer::HandleSnapshotMaterialGraph);
|
||||
H(TEXT("diffMaterialGraph"), &FBlueprintMCPServer::HandleDiffMaterialGraph);
|
||||
H(TEXT("restoreMaterialGraph"), &FBlueprintMCPServer::HandleRestoreMaterialGraph);
|
||||
H(TEXT("validateMaterial"), &FBlueprintMCPServer::HandleValidateMaterial);
|
||||
H(TEXT("createAnimBlueprint"), &FBlueprintMCPServer::HandleCreateAnimBlueprint);
|
||||
H(TEXT("addAnimState"), &FBlueprintMCPServer::HandleAddAnimState);
|
||||
H(TEXT("removeAnimState"), &FBlueprintMCPServer::HandleRemoveAnimState);
|
||||
H(TEXT("addAnimTransition"), &FBlueprintMCPServer::HandleAddAnimTransition);
|
||||
H(TEXT("setTransitionRule"), &FBlueprintMCPServer::HandleSetTransitionRule);
|
||||
H(TEXT("addAnimNode"), &FBlueprintMCPServer::HandleAddAnimNode);
|
||||
H(TEXT("addStateMachine"), &FBlueprintMCPServer::HandleAddStateMachine);
|
||||
H(TEXT("setStateAnimation"), &FBlueprintMCPServer::HandleSetStateAnimation);
|
||||
H(TEXT("listAnimSlots"), &FBlueprintMCPServer::HandleListAnimSlots);
|
||||
H(TEXT("listSyncGroups"), &FBlueprintMCPServer::HandleListSyncGroups);
|
||||
H(TEXT("createBlendSpace"), &FBlueprintMCPServer::HandleCreateBlendSpace);
|
||||
H(TEXT("setBlendSpaceSamples"), &FBlueprintMCPServer::HandleSetBlendSpaceSamples);
|
||||
H(TEXT("setStateBlendSpace"), &FBlueprintMCPServer::HandleSetStateBlendSpace);
|
||||
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("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("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("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("find_material_references"), &FBlueprintMCPServer::HandleFindMaterialReferences);
|
||||
H(TEXT("create_material"), &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("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);
|
||||
}
|
||||
|
||||
void FBlueprintMCPServer::BuildMCPHandlerRegistry()
|
||||
|
||||
@@ -132,14 +132,14 @@ public:
|
||||
UPROPERTY(meta=(Description="Graph name (e.g. 'EventGraph')"))
|
||||
FString Graph;
|
||||
|
||||
UPROPERTY(meta=(Description="Array of {actionName, posX, posY} objects. Use search_node_actions to find action names."))
|
||||
UPROPERTY(meta=(Description="Array of {actionName, posX, posY} objects. Use search_node_types to find action names."))
|
||||
FMCPJsonArray Nodes;
|
||||
|
||||
virtual FString GetDescription() const override
|
||||
{
|
||||
return TEXT("Create nodes in a Blueprint graph using the editor's action database. "
|
||||
"Can create ANY node type that appears in the editor's right-click menu, including custom K2 nodes. "
|
||||
"Use search_node_actions first to find the exact action name.");
|
||||
"Use search_node_types first to find the exact action name.");
|
||||
}
|
||||
|
||||
virtual void Handle(const FJsonObject* Json, FJsonObject* Result) override;
|
||||
@@ -420,8 +420,8 @@ public:
|
||||
virtual void Handle(const FJsonObject* Json, FJsonObject* Result) override;
|
||||
};
|
||||
|
||||
UCLASS(meta=(ToolName="search_node_actions"))
|
||||
class UMCPHandler_SearchNodeActions : public UMCPHandler
|
||||
UCLASS(meta=(ToolName="search_node_types"))
|
||||
class UMCPHandler_SearchNodeTypes : public UMCPHandler
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user