More work on MCP endpoints

This commit is contained in:
2026-03-06 04:18:16 -05:00
parent 7351756a71
commit 3ed7a33f69
5 changed files with 313 additions and 827 deletions

View File

@@ -367,23 +367,6 @@ static int32 TrySavePackageSEH(
}
}
static void RefreshAllNodesInner(UBlueprint* BP)
{
FBlueprintEditorUtils::RefreshAllNodes(BP);
}
int32 TryRefreshAllNodesSEH(UBlueprint* BP)
{
__try
{
RefreshAllNodesInner(BP);
return 0;
}
__except (1)
{
return -1;
}
}
// Inner: create expression, register in material, and trigger PostEditChange.
// All of this may crash for classes that are effectively abstract.
@@ -601,13 +584,13 @@ bool FBlueprintMCPServer::Start(int32 InPort, bool bEditorMode)
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("replaceFunctionCalls")));
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("deleteAsset")));
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,
@@ -615,7 +598,7 @@ bool FBlueprintMCPServer::Start(int32 InPort, bool bEditorMode)
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("refreshAllNodes")));
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,
@@ -635,7 +618,7 @@ bool FBlueprintMCPServer::Start(int32 InPort, bool bEditorMode)
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("changeStructNodeType")));
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,
@@ -648,18 +631,16 @@ bool FBlueprintMCPServer::Start(int32 InPort, bool bEditorMode)
QueuedHandler(TEXT("validateBlueprint")));
Router->BindRoute(FHttpPath(TEXT("/api/validate-all-blueprints")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("validateAllBlueprints")));
Router->BindRoute(FHttpPath(TEXT("/api/add-node")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("addNode")));
Router->BindRoute(FHttpPath(TEXT("/api/search-node-actions")), EHttpServerRequestVerbs::VERB_POST,
QueuedHandler(TEXT("searchNodeActions")));
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("renameAsset")));
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("setBlueprintDefault")));
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,
@@ -977,25 +958,24 @@ void FBlueprintMCPServer::RegisterHandlers()
{
// Mutation endpoints — wrapped in undo transactions by ProcessOneRequest()
MutationEndpoints = {
TEXT("replaceFunctionCalls"),
TEXT("replace_function_calls"),
TEXT("changeVariableType"),
TEXT("changeFunctionParamType"),
TEXT("removeFunctionParameter"),
TEXT("deleteAsset"),
TEXT("delete_asset"),
TEXT("connect_pins"),
TEXT("disconnect_pin"),
TEXT("refreshAllNodes"),
TEXT("refresh_all_nodes"),
TEXT("set_pin_default"),
TEXT("move_node"),
TEXT("changeStructNodeType"),
TEXT("change_struct_node_type"),
TEXT("delete_node"),
TEXT("duplicate_nodes"),
TEXT("addNode"),
TEXT("spawn_node"),
TEXT("set_node_comment"),
TEXT("renameAsset"),
TEXT("rename_asset"),
TEXT("reparentBlueprint"),
TEXT("setBlueprintDefault"),
TEXT("set_blueprint_default"),
TEXT("createBlueprint"),
TEXT("createGraph"),
TEXT("deleteGraph"),
@@ -1050,14 +1030,14 @@ void FBlueprintMCPServer::RegisterHandlers()
H(TEXT("references"), &FBlueprintMCPServer::HandleFindReferences);
H(TEXT("testSave"), &FBlueprintMCPServer::HandleTestSave);
H(TEXT("searchByType"), &FBlueprintMCPServer::HandleSearchByType);
H(TEXT("replaceFunctionCalls"), &FBlueprintMCPServer::HandleReplaceFunctionCalls);
// 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);
H(TEXT("deleteAsset"), &FBlueprintMCPServer::HandleDeleteAsset);
// 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)
H(TEXT("refreshAllNodes"), &FBlueprintMCPServer::HandleRefreshAllNodes);
// 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)
@@ -1067,17 +1047,16 @@ void FBlueprintMCPServer::RegisterHandlers()
H(TEXT("listClasses"), &FBlueprintMCPServer::HandleListClasses);
H(TEXT("listFunctions"), &FBlueprintMCPServer::HandleListFunctions);
H(TEXT("listProperties"), &FBlueprintMCPServer::HandleListProperties);
H(TEXT("changeStructNodeType"), &FBlueprintMCPServer::HandleChangeStructNodeType);
// 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);
H(TEXT("addNode"), &FBlueprintMCPServer::HandleAddNode);
H(TEXT("searchNodeActions"), &FBlueprintMCPServer::HandleSearchNodeActions);
// search_node_actions is now handled by UMCPHandler_SearchNodeActions (new-style registry)
// spawn_node is now handled by UMCPHandler_SpawnNode (new-style registry)
H(TEXT("renameAsset"), &FBlueprintMCPServer::HandleRenameAsset);
// rename_asset is now handled by UMCPHandler_RenameAsset (new-style registry)
H(TEXT("reparentBlueprint"), &FBlueprintMCPServer::HandleReparentBlueprint);
H(TEXT("setBlueprintDefault"), &FBlueprintMCPServer::HandleSetBlueprintDefault);
// 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);