Add code-workspace for blueprintmcp. Add mcp-test.py

This commit is contained in:
2026-03-09 07:10:49 -04:00
parent f895e2ae8b
commit 25a264edcb
2 changed files with 86 additions and 0 deletions

View File

@@ -134,6 +134,25 @@
}
},
"append2" : [
{
"name": "BlueprintMCP Commandlet",
"request": "launch",
"program": "[UNREALENGINE]/Engine/Binaries/Linux/UnrealEditor-Linux-[DEBUG]-Cmd",
"preLaunchTask": "python3 build.py c++",
"args": [
"[INTEGRATION]/Integration.uproject",
"-userdir=User/[USER]",
"-run=BlueprintMCP",
"-unattended"
],
"cwd": "[INTEGRATION]",
"type": "lldb",
"console": "integratedTerminal",
"initCommands": [
"command script import [UNREALENGINE]/Engine/Extras/LLDBDataFormatters/UEDataFormatters_2ByteChars.py",
"settings set target.inline-breakpoint-strategy always"
]
},
{
"name": "Luprex Server",
"request": "launch",

67
tools/mcp-test.py Executable file
View File

@@ -0,0 +1,67 @@
#!/usr/bin/env python3
"""
Human-friendly MCP test client.
Usage: mcp-test.py ShowCommands
mcp-test.py ListBlueprintAssets filter=lx
mcp-test.py ShowCommands verbose=true
"""
import sys
import json
import socket
HOST = "localhost"
PORT = 9847
TIMEOUT = 120
def main():
args = sys.argv[1:]
if not args:
print("Usage: mcp-test.py ShowCommands [key=value ...]")
sys.exit(1)
msg = {"command": args[0]}
for arg in args[1:]:
key, _, value = arg.partition("=")
if value.lower() == "true":
value = True
elif value.lower() == "false":
value = False
else:
try:
value = int(value)
except ValueError:
pass
msg[key] = value
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(TIMEOUT)
try:
sock.connect((HOST, PORT))
except (ConnectionRefusedError, socket.timeout, OSError) as e:
print(f"Cannot connect to {HOST}:{PORT} — is the editor running?")
sys.exit(1)
sock.sendall((json.dumps(msg) + "\n").encode())
result = b""
while True:
chunk = sock.recv(65536)
if not chunk:
break
result += chunk
if b"\0" in result:
break
sock.close()
result = result[:result.index(b"\0")].decode() if b"\0" in result else result.decode()
try:
parsed = json.loads(result)
print(json.dumps(parsed, indent=2))
except json.JSONDecodeError:
print(result)
if __name__ == "__main__":
main()