ue-mcp 0.4.25 → 0.4.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -17,6 +17,7 @@ export const blueprintTool = categoryTool("blueprint", "Blueprint reading, autho
17
17
  connect_pins: bp("connect_pins"),
18
18
  add_component: bp("add_component", (p) => ({ path: p.assetPath, componentClass: p.componentClass, componentName: p.componentName ?? p.componentClass })),
19
19
  set_component_property: bp("set_blueprint_component_property", (p) => ({ path: p.assetPath, componentName: p.componentName, propertyName: p.propertyName, value: p.value })),
20
+ set_class_default: bp("set_class_default", (p) => ({ path: p.assetPath, propertyName: p.propertyName, value: p.value })),
20
21
  compile: bp("compile_blueprint", (p) => ({ path: p.assetPath })),
21
22
  list_node_types: bp("list_node_types"),
22
23
  search_node_types: bp("search_node_types"),
@@ -41,6 +42,7 @@ export const blueprintTool = categoryTool("blueprint", "Blueprint reading, autho
41
42
  - connect_pins: Wire nodes. Params: sourceNode, sourcePin, targetNode, targetPin, assetPath, graphName?
42
43
  - add_component: Add BP component. Params: assetPath, componentClass, componentName?
43
44
  - set_component_property: Set property on SCS component template (supports dot paths, asset paths for object refs). Params: assetPath, componentName, propertyName, value
45
+ - set_class_default: Set UPROPERTY on Blueprint CDO (FName, object refs, soft refs, TArray, TMap via ImportText). Params: assetPath, propertyName, value
44
46
  - compile: Compile Blueprint. Params: assetPath
45
47
  - list_node_types: List node types. Params: category?, includeFunctions?
46
48
  - search_node_types: Search nodes. Params: query
@@ -1 +1 @@
1
- {"version":3,"file":"blueprint.js","sourceRoot":"","sources":["../../src/tools/blueprint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blueprint.js","sourceRoot":"","sources":["../../src/tools/blueprint.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ue-mcp",
3
- "version": "0.4.25",
3
+ "version": "0.4.27",
4
4
  "description": "Unreal Engine MCP server — 19 tools, 300+ actions for AI-driven editor control",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  #include "GameThreadExecutor.h"
2
2
  #include "HAL/PlatformProcess.h"
3
- #include "Async/Async.h"
3
+ #include "Containers/Ticker.h"
4
4
 
5
5
  FMCPGameThreadExecutor::FMCPGameThreadExecutor()
6
6
  {
@@ -23,27 +23,32 @@ TSharedPtr<FJsonValue> FMCPGameThreadExecutor::ExecuteOnGameThread(FHandlerFunct
23
23
  return Handler(Params);
24
24
  }
25
25
 
26
- // Execute on game thread via AsyncTask
27
- TSharedPtr<TFuture<TSharedPtr<FJsonValue>>> Future = MakeShared<TFuture<TSharedPtr<FJsonValue>>>(
28
- Async(EAsyncExecution::TaskGraphMainThread, [Handler, Params]() -> TSharedPtr<FJsonValue>
26
+ // Use FTSTicker to run on the game thread tick loop (NOT inside TaskGraph).
27
+ // This avoids the TaskGraph recursion assertion when handlers trigger
28
+ // subsystems like InterchangeEngine that schedule their own TaskGraph work.
29
+ TSharedPtr<FJsonValue> Result;
30
+ FEvent* DoneEvent = FPlatformProcess::GetSynchEventFromPool();
31
+
32
+ FTSTicker::GetCoreTicker().AddTicker(
33
+ FTickerDelegate::CreateLambda([&Result, &Handler, &Params, DoneEvent](float) -> bool
29
34
  {
30
- return Handler(Params);
35
+ Result = Handler(Params);
36
+ DoneEvent->Trigger();
37
+ return false; // one-shot — do not re-tick
31
38
  })
32
39
  );
33
40
 
34
- // Wait for result with timeout
35
- double StartTime = FPlatformTime::Seconds();
36
- while (!Future->IsReady())
41
+ // Block calling thread until the ticker fires or timeout
42
+ uint32 TimeoutMs = static_cast<uint32>(TimeoutSeconds * 1000.0f);
43
+ bool bCompleted = DoneEvent->Wait(TimeoutMs);
44
+ FPlatformProcess::ReturnSynchEventToPool(DoneEvent);
45
+
46
+ if (!bCompleted)
37
47
  {
38
- if (FPlatformTime::Seconds() - StartTime > TimeoutSeconds)
39
- {
40
- // Timeout
41
- TSharedPtr<FJsonObject> ErrorObject = MakeShared<FJsonObject>();
42
- ErrorObject->SetStringField(TEXT("error"), TEXT("Handler execution timed out"));
43
- return MakeShared<FJsonValueObject>(ErrorObject);
44
- }
45
- FPlatformProcess::Sleep(0.01f); // 10ms sleep
48
+ TSharedPtr<FJsonObject> ErrorObject = MakeShared<FJsonObject>();
49
+ ErrorObject->SetStringField(TEXT("error"), TEXT("Handler execution timed out"));
50
+ return MakeShared<FJsonValueObject>(ErrorObject);
46
51
  }
47
52
 
48
- return Future->Get();
53
+ return Result;
49
54
  }
@@ -3,7 +3,6 @@
3
3
  #include "CoreMinimal.h"
4
4
  #include "Dom/JsonValue.h"
5
5
  #include "Dom/JsonObject.h"
6
- #include "Async/Async.h"
7
6
  #include "HAL/PlatformProcess.h"
8
7
 
9
8
  class FMCPGameThreadExecutor
@@ -1854,7 +1854,7 @@ TSharedPtr<FJsonValue> FAssetHandlers::ReimportAsset(const TSharedPtr<FJsonObjec
1854
1854
  UAssetImportData* ImportData = nullptr;
1855
1855
  if (UStaticMesh* SM = Cast<UStaticMesh>(Asset))
1856
1856
  {
1857
- ImportData = SM->AssetImportData;
1857
+ ImportData = SM->GetAssetImportData();
1858
1858
  }
1859
1859
  else if (USkeletalMesh* SKM = Cast<USkeletalMesh>(Asset))
1860
1860
  {
@@ -93,6 +93,7 @@ void FBlueprintHandlers::RegisterHandlers(FMCPHandlerRegistry& Registry)
93
93
  Registry.RegisterHandler(TEXT("set_node_property"), &SetNodeProperty);
94
94
  Registry.RegisterHandler(TEXT("list_blueprint_graphs"), &ListGraphs);
95
95
  Registry.RegisterHandler(TEXT("set_blueprint_component_property"), &SetComponentProperty);
96
+ Registry.RegisterHandler(TEXT("set_class_default"), &SetClassDefault);
96
97
  }
97
98
 
98
99
  UBlueprint* FBlueprintHandlers::LoadBlueprint(const FString& AssetPath)
@@ -2511,3 +2512,149 @@ TSharedPtr<FJsonValue> FBlueprintHandlers::SetComponentProperty(const TSharedPtr
2511
2512
 
2512
2513
  return MakeShared<FJsonValueObject>(Result);
2513
2514
  }
2515
+
2516
+ // ---------------------------------------------------------------------------
2517
+ // set_class_default — Set a UPROPERTY on a Blueprint's Class Default Object
2518
+ // Params: assetPath, propertyName, value
2519
+ // ---------------------------------------------------------------------------
2520
+ TSharedPtr<FJsonValue> FBlueprintHandlers::SetClassDefault(const TSharedPtr<FJsonObject>& Params)
2521
+ {
2522
+ TSharedPtr<FJsonObject> Result = MakeShared<FJsonObject>();
2523
+
2524
+ FString AssetPath;
2525
+ if (!Params->TryGetStringField(TEXT("path"), AssetPath) && !Params->TryGetStringField(TEXT("assetPath"), AssetPath))
2526
+ {
2527
+ Result->SetStringField(TEXT("error"), TEXT("Missing 'assetPath' parameter"));
2528
+ Result->SetBoolField(TEXT("success"), false);
2529
+ return MakeShared<FJsonValueObject>(Result);
2530
+ }
2531
+
2532
+ FString PropertyName;
2533
+ if (!Params->TryGetStringField(TEXT("propertyName"), PropertyName))
2534
+ {
2535
+ Result->SetStringField(TEXT("error"), TEXT("Missing 'propertyName' parameter"));
2536
+ Result->SetBoolField(TEXT("success"), false);
2537
+ return MakeShared<FJsonValueObject>(Result);
2538
+ }
2539
+
2540
+ FString Value;
2541
+ if (!Params->TryGetStringField(TEXT("value"), Value))
2542
+ {
2543
+ Result->SetStringField(TEXT("error"), TEXT("Missing 'value' parameter"));
2544
+ Result->SetBoolField(TEXT("success"), false);
2545
+ return MakeShared<FJsonValueObject>(Result);
2546
+ }
2547
+
2548
+ UBlueprint* Blueprint = LoadBlueprint(AssetPath);
2549
+ if (!Blueprint)
2550
+ {
2551
+ Result->SetStringField(TEXT("error"), FString::Printf(TEXT("Blueprint not found: %s"), *AssetPath));
2552
+ Result->SetBoolField(TEXT("success"), false);
2553
+ return MakeShared<FJsonValueObject>(Result);
2554
+ }
2555
+
2556
+ UClass* GenClass = Blueprint->GeneratedClass;
2557
+ if (!GenClass)
2558
+ {
2559
+ Result->SetStringField(TEXT("error"), TEXT("Blueprint has no GeneratedClass (needs compilation first?)"));
2560
+ Result->SetBoolField(TEXT("success"), false);
2561
+ return MakeShared<FJsonValueObject>(Result);
2562
+ }
2563
+
2564
+ UObject* CDO = GenClass->GetDefaultObject();
2565
+ if (!CDO)
2566
+ {
2567
+ Result->SetStringField(TEXT("error"), TEXT("Could not get Class Default Object"));
2568
+ Result->SetBoolField(TEXT("success"), false);
2569
+ return MakeShared<FJsonValueObject>(Result);
2570
+ }
2571
+
2572
+ // Navigate dotted property paths (e.g. "EjectConfigs.Cork.Force")
2573
+ TArray<FString> PathParts;
2574
+ PropertyName.ParseIntoArray(PathParts, TEXT("."));
2575
+
2576
+ UStruct* CurrentStruct = GenClass;
2577
+ void* CurrentContainer = CDO;
2578
+ FProperty* FinalProp = nullptr;
2579
+
2580
+ for (int32 i = 0; i < PathParts.Num(); i++)
2581
+ {
2582
+ FProperty* Prop = CurrentStruct->FindPropertyByName(FName(*PathParts[i]));
2583
+ if (!Prop) break;
2584
+
2585
+ if (i < PathParts.Num() - 1)
2586
+ {
2587
+ FStructProperty* StructProp = CastField<FStructProperty>(Prop);
2588
+ if (!StructProp) break;
2589
+ CurrentContainer = StructProp->ContainerPtrToValuePtr<void>(CurrentContainer);
2590
+ CurrentStruct = StructProp->Struct;
2591
+ }
2592
+ else
2593
+ {
2594
+ FinalProp = Prop;
2595
+ }
2596
+ }
2597
+
2598
+ if (!FinalProp)
2599
+ {
2600
+ TArray<FString> PropNames;
2601
+ for (TFieldIterator<FProperty> It(GenClass); It; ++It)
2602
+ {
2603
+ PropNames.Add(It->GetName());
2604
+ }
2605
+ Result->SetStringField(TEXT("error"), FString::Printf(
2606
+ TEXT("Property '%s' not found on %s. Properties: [%s]"),
2607
+ *PropertyName, *GenClass->GetName(),
2608
+ *FString::Join(PropNames, TEXT(", "))));
2609
+ Result->SetBoolField(TEXT("success"), false);
2610
+ return MakeShared<FJsonValueObject>(Result);
2611
+ }
2612
+
2613
+ void* ValuePtr = FinalProp->ContainerPtrToValuePtr<void>(CurrentContainer);
2614
+
2615
+ if (FObjectPropertyBase* ObjProp = CastField<FObjectPropertyBase>(FinalProp))
2616
+ {
2617
+ UObject* LoadedObj = LoadObject<UObject>(nullptr, *Value);
2618
+ if (LoadedObj)
2619
+ {
2620
+ ObjProp->SetObjectPropertyValue(ValuePtr, LoadedObj);
2621
+ }
2622
+ else
2623
+ {
2624
+ Result->SetStringField(TEXT("error"), FString::Printf(
2625
+ TEXT("Could not load object at '%s' for property '%s'"), *Value, *PropertyName));
2626
+ Result->SetBoolField(TEXT("success"), false);
2627
+ return MakeShared<FJsonValueObject>(Result);
2628
+ }
2629
+ }
2630
+ else if (FSoftObjectProperty* SoftProp = CastField<FSoftObjectProperty>(FinalProp))
2631
+ {
2632
+ FSoftObjectPath SoftPath(Value);
2633
+ SoftProp->SetPropertyValue(ValuePtr, FSoftObjectPtr(SoftPath));
2634
+ }
2635
+ else
2636
+ {
2637
+ // Generic: ImportText handles FName, int, float, bool, FVector, TArray, TMap, etc.
2638
+ FinalProp->ImportText_Direct(*Value, ValuePtr, CDO, PPF_None);
2639
+ }
2640
+
2641
+ CDO->PostEditChange();
2642
+
2643
+ // Save
2644
+ UPackage* Package = Blueprint->GetOutermost();
2645
+ if (Package)
2646
+ {
2647
+ Package->MarkPackageDirty();
2648
+ FString PackageFileName = FPackageName::LongPackageNameToFilename(Package->GetName(), FPackageName::GetAssetPackageExtension());
2649
+ FSavePackageArgs SaveArgs;
2650
+ SaveArgs.TopLevelFlags = RF_Standalone;
2651
+ UPackage::SavePackage(Package, nullptr, *PackageFileName, SaveArgs);
2652
+ }
2653
+
2654
+ Result->SetStringField(TEXT("path"), AssetPath);
2655
+ Result->SetStringField(TEXT("propertyName"), PropertyName);
2656
+ Result->SetStringField(TEXT("value"), Value);
2657
+ Result->SetBoolField(TEXT("success"), true);
2658
+
2659
+ return MakeShared<FJsonValueObject>(Result);
2660
+ }
@@ -37,6 +37,7 @@ private:
37
37
  static TSharedPtr<FJsonValue> SetNodeProperty(const TSharedPtr<FJsonObject>& Params);
38
38
  static TSharedPtr<FJsonValue> ListGraphs(const TSharedPtr<FJsonObject>& Params);
39
39
  static TSharedPtr<FJsonValue> SetComponentProperty(const TSharedPtr<FJsonObject>& Params);
40
+ static TSharedPtr<FJsonValue> SetClassDefault(const TSharedPtr<FJsonObject>& Params);
40
41
 
41
42
  // Helper functions
42
43
  static class UBlueprint* LoadBlueprint(const FString& AssetPath);