ue-mcp 0.5.1 → 0.5.2
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.
- package/README.md +9 -2
- package/package.json +1 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/BridgeServer.cpp +8 -9
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/HandlerRegistry.cpp +1 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers.cpp +5 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/ReflectionHandlers.cpp +1 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/UE_MCP_Bridge.Build.cs +8 -19
package/README.md
CHANGED
|
@@ -83,14 +83,21 @@ If you prefer to configure manually, add to your MCP client config:
|
|
|
83
83
|
| **Editor** | Console, Python, PIE, viewport, sequencer, build pipeline, logs |
|
|
84
84
|
| **Reflection** | Class/struct/enum introspection, gameplay tags |
|
|
85
85
|
|
|
86
|
-
## Supported
|
|
86
|
+
## Supported Platforms
|
|
87
87
|
|
|
88
|
-
|
|
88
|
+
- **Windows** — UE 5.4–5.7
|
|
89
|
+
- **Linux** — UE 5.6+ (contributed by [@robinduckett](https://github.com/robinduckett))
|
|
90
|
+
|
|
91
|
+
Requires `PythonScriptPlugin` (ships with UE 4.26+).
|
|
89
92
|
|
|
90
93
|
## Contributing
|
|
91
94
|
|
|
92
95
|
Issues and pull requests welcome. If an AI agent had to fall back to `execute_python` during your session, it will offer to submit structured feedback automatically — this helps us prioritize which native handlers to add next.
|
|
93
96
|
|
|
97
|
+
### Contributors
|
|
98
|
+
|
|
99
|
+
- [@robinduckett](https://github.com/robinduckett) — Linux platform support ([#96](https://github.com/db-lyon/ue-mcp/pull/96))
|
|
100
|
+
|
|
94
101
|
## License
|
|
95
102
|
|
|
96
103
|
MIT — see [LICENSE](LICENSE).
|
package/package.json
CHANGED
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
#elif PLATFORM_LINUX || PLATFORM_MAC
|
|
41
41
|
#include <sys/socket.h>
|
|
42
42
|
#include <netinet/in.h>
|
|
43
|
+
#include <netinet/tcp.h>
|
|
43
44
|
#include <arpa/inet.h>
|
|
44
45
|
#include <unistd.h>
|
|
45
46
|
#include <sys/select.h>
|
|
@@ -551,10 +552,10 @@ FString FMCPBridgeServer::CreateWebSocketAcceptKey(const FString& ClientKey)
|
|
|
551
552
|
FString MagicString = TEXT("258EAFA5-E914-47DA-95CA-C5AB0DC85B11");
|
|
552
553
|
FString Combined = ClientKey + MagicString;
|
|
553
554
|
|
|
554
|
-
// Compute SHA1 hash (20 bytes)
|
|
555
|
+
// Compute SHA1 hash (20 bytes)
|
|
555
556
|
FTCHARToUTF8 UTF8String(*Combined);
|
|
556
557
|
uint8 HashBytes[20];
|
|
557
|
-
|
|
558
|
+
|
|
558
559
|
#if PLATFORM_WINDOWS
|
|
559
560
|
HCRYPTPROV hProv = 0;
|
|
560
561
|
HCRYPTHASH hHash = 0;
|
|
@@ -570,13 +571,11 @@ FString FMCPBridgeServer::CreateWebSocketAcceptKey(const FString& ClientKey)
|
|
|
570
571
|
CryptReleaseContext(hProv, 0);
|
|
571
572
|
}
|
|
572
573
|
#else
|
|
573
|
-
//
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
}
|
|
579
|
-
FMemory::Memcpy(HashBytes, &Hash, 20);
|
|
574
|
+
// UE's cross-platform SHA1
|
|
575
|
+
FSHA1 Sha1;
|
|
576
|
+
Sha1.Update((const uint8*)UTF8String.Get(), UTF8String.Length());
|
|
577
|
+
Sha1.Final();
|
|
578
|
+
Sha1.GetHash(HashBytes);
|
|
580
579
|
#endif
|
|
581
580
|
|
|
582
581
|
// Base64 encode
|
|
@@ -34,7 +34,9 @@
|
|
|
34
34
|
#include "GameFramework/Actor.h"
|
|
35
35
|
#include "EditorValidatorSubsystem.h"
|
|
36
36
|
#include "GenericPlatform/GenericPlatformCrashContext.h"
|
|
37
|
+
#if PLATFORM_WINDOWS
|
|
37
38
|
#include "ILiveCodingModule.h"
|
|
39
|
+
#endif
|
|
38
40
|
#include "LevelEditorSubsystem.h"
|
|
39
41
|
#include "Subsystems/AssetEditorSubsystem.h"
|
|
40
42
|
#include "DesktopPlatformModule.h"
|
|
@@ -1130,6 +1132,7 @@ TSharedPtr<FJsonValue> FEditorHandlers::FocusViewportOnActor(const TSharedPtr<FJ
|
|
|
1130
1132
|
|
|
1131
1133
|
TSharedPtr<FJsonValue> FEditorHandlers::HotReload(const TSharedPtr<FJsonObject>& Params)
|
|
1132
1134
|
{
|
|
1135
|
+
#if PLATFORM_WINDOWS
|
|
1133
1136
|
ILiveCodingModule* LiveCoding = FModuleManager::GetModulePtr<ILiveCodingModule>(LIVE_CODING_MODULE_NAME);
|
|
1134
1137
|
if (LiveCoding && LiveCoding->IsEnabledForSession())
|
|
1135
1138
|
{
|
|
@@ -1147,8 +1150,9 @@ TSharedPtr<FJsonValue> FEditorHandlers::HotReload(const TSharedPtr<FJsonObject>&
|
|
|
1147
1150
|
return MCPResult(Result);
|
|
1148
1151
|
}
|
|
1149
1152
|
else
|
|
1153
|
+
#endif
|
|
1150
1154
|
{
|
|
1151
|
-
// Live Coding not available - fall back to console command
|
|
1155
|
+
// Live Coding not available (or not on Windows) - fall back to console command
|
|
1152
1156
|
UWorld* World = GetEditorWorld();
|
|
1153
1157
|
if (World)
|
|
1154
1158
|
{
|
|
@@ -6,16 +6,6 @@ public class UE_MCP_Bridge : ModuleRules
|
|
|
6
6
|
{
|
|
7
7
|
PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs;
|
|
8
8
|
|
|
9
|
-
PublicIncludePaths.AddRange(
|
|
10
|
-
new string[] {
|
|
11
|
-
}
|
|
12
|
-
);
|
|
13
|
-
|
|
14
|
-
PrivateIncludePaths.AddRange(
|
|
15
|
-
new string[] {
|
|
16
|
-
}
|
|
17
|
-
);
|
|
18
|
-
|
|
19
9
|
PublicDependencyModuleNames.AddRange(
|
|
20
10
|
new string[]
|
|
21
11
|
{
|
|
@@ -40,6 +30,8 @@ public class UE_MCP_Bridge : ModuleRules
|
|
|
40
30
|
"BlueprintGraph",
|
|
41
31
|
"Blutility",
|
|
42
32
|
"ContentBrowser",
|
|
33
|
+
"ControlRig",
|
|
34
|
+
"ControlRigDeveloper",
|
|
43
35
|
"DataValidation",
|
|
44
36
|
"EditorScriptingUtilities",
|
|
45
37
|
"EditorStyle",
|
|
@@ -49,19 +41,16 @@ public class UE_MCP_Bridge : ModuleRules
|
|
|
49
41
|
"Foliage",
|
|
50
42
|
"GameplayAbilities",
|
|
51
43
|
"GameplayTasks",
|
|
52
|
-
"ControlRig",
|
|
53
|
-
"ControlRigDeveloper",
|
|
54
44
|
"HTTP",
|
|
55
45
|
"IKRig",
|
|
56
|
-
"IKRigEditor",
|
|
57
46
|
"IKRigDeveloper",
|
|
47
|
+
"IKRigEditor",
|
|
58
48
|
"InputCore",
|
|
59
49
|
"Kismet",
|
|
60
50
|
"KismetCompiler",
|
|
61
51
|
"Landscape",
|
|
62
52
|
"LevelEditor",
|
|
63
53
|
"LevelSequence",
|
|
64
|
-
"LiveCoding",
|
|
65
54
|
"MaterialEditor",
|
|
66
55
|
"MovieScene",
|
|
67
56
|
"MovieSceneTracks",
|
|
@@ -84,10 +73,10 @@ public class UE_MCP_Bridge : ModuleRules
|
|
|
84
73
|
}
|
|
85
74
|
);
|
|
86
75
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
76
|
+
// LiveCoding is Windows-only (Developer/Windows/LiveCoding)
|
|
77
|
+
if (Target.Platform == UnrealTargetPlatform.Win64)
|
|
78
|
+
{
|
|
79
|
+
PrivateDependencyModuleNames.Add("LiveCoding");
|
|
80
|
+
}
|
|
92
81
|
}
|
|
93
82
|
}
|