UnrealClientProtocol skill
An Unreal Engine 5 plugin with skills: an agent calls engine functions and edits object properties in a running editor.
- 130 ★ on the repository
- Last commit
- MIT
Broad access
Why this level
- The agent calls any function and writes any property in the open editor.
- Python scripts the agent runs through the plugin execute inside the project.
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add skills/unrealclientprotocolDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- The agent calls any function and writes any property in the open editor.
- Python scripts the agent runs through the plugin execute inside the project.
This is third-party code. Review the repository files before installing.
What it does
UnrealClientProtocol, or UCP, exposes Unreal Engine reflection over TCP and JSON. The plugin sits in the project's `Plugins/` folder and listens on `127.0.0.1:9876`, and the agent sends a single command, `call`: it invokes any UFunction or reads and writes any UPROPERTY. The plugin ships with a set of skills under `Skills/`. They are split by area: the protocol and the `UCP.py` Python client, object operations, actor editing, asset work, materials with nodes and HLSL, Blueprints, and analysis of large Blueprints with translation into C++. The agent loads only the skill it needs. Property writes land in the editor's Undo and Redo history. Your own skills with project conventions, such as asset naming rules, go next to the bundled ones.
Who it is for. Technical artists and programmers on Unreal Engine 5 who want an agent working inside an open editor.
Good fit when
- A scene needs dozens of cubes scaled or actors rearranged by a rule.
- A ShaderToy effect is ported into Unreal material nodes, compiled and checked.
- A large Blueprint is analysed and translated into C++.
- A team records asset conventions in its own skills on top of the protocol.
Not a fit when
- The editor is not running: the plugin answers only while the project is open.
- You need latent functions with `FLatentActionInfo` or delegates in parameters, which the protocol does not support.
- The project does not run on Unreal Engine 5.
Example request
Show what is on the current scene and scale all cubes by two.Limitations
Latent functions with a `FLatentActionInfo` parameter are not supported, and delegates cannot be passed as parameters. The plugin listens on port 9876 on the loopback address only while `bLoopbackOnly` stays on; the `AllowedClassPrefixes` and `BlockedFunctions` lists are empty by default, so no class or function restrictions apply. The skills depend on Python 3.10 or newer and run scripts, and on Windows PowerShell may need `Set-ExecutionPolicy RemoteSigned -Scope CurrentUser`. Widgets and Niagara are marked as not ready yet in the roadmap.
How to disable. Disable the plugin in project settings or delete the `Plugins/UnrealClientProtocol` folder, then remove the copied skill folders from `.cursor/skills/` or `.claude/skills/`.
FAQ
How do I install UCP in an Unreal Engine project?
Copy the `UnrealClientProtocol` folder into the project's `Plugins/` directory and restart the editor. After startup the plugin listens on `127.0.0.1:9876` by itself.
Where do I copy the skills for Claude Code and Cursor?
For Claude Code into `.claude/skills/`, for Cursor into `.cursor/skills/`, for OpenCode into `.opencode/skills/`. Copy all folders from `Skills/`, not individual ones.
How do I check that the editor connection works?
Send the `UCP.py` script a `FindObjectInstances` command for the `/Script/Engine.World` class. If a list of World objects comes back, the plugin is answering.
Can I restrict what the agent calls in the engine?
Yes. In the plugin settings, `AllowedClassPrefixes` sets permitted classes and `BlockedFunctions` blocks functions in the `ClassName::FunctionName` format.
Which skills are in the set?
The protocol, object operations, actors, assets, materials, Blueprints and analysis of large Blueprints. The agent reads the needed `SKILL.md` for the task.
Discussion
No questions or reviews yet.
Related
SkillsA Python CLI and MCP server that lets an agent spawn actors, edit Blueprints and run PIE sessions in Unreal Engine 5
An MCP server for Unreal Editor: an agent edits levels, Blueprints and materials, then builds the project from plain requests
An MCP server that lets an agent control the Unreal Engine editor in words: actors, blueprints, node graphs, camera
An Unreal Engine plugin with an MCP server: Claude and Cursor create blueprints, spawn objects and run editor commands
About 76 Unreal Engine 5.8 skills: C++, Blueprints, GAS, animation, materials, MetaHuman and Ultra Dynamic packs
Epic Games' official plugin that lets Claude Code drive a running Unreal Editor over MCP, from actors and Blueprints to Niagara and Sequencer
Comparison with similar tools
Cards that share the main search query, and how they differ.
| Tool | Official | Authentication | Repository stars | Main difference |
|---|---|---|---|---|
| UnrealClientProtocol (this card) | no | 130 | ||
| AI Game Developer: Unreal MCP | no | OAuth | 60 | a plugin with MCP and the RQL query language, with a cloud and a self-hosted server; UCP exposes engine reflection over TCP plus skills without MCP |
| Flopperam Unreal Engine MCP | no | API key | 1,117 | a local Python MCP server for scenes and Blueprints plus a hosted variant; UCP works through a single call command and skills |
README in short
The authors build UCP on atomic capabilities: the protocol stays stable while knowledge of Unreal Engine comes from the model and the skills. The plugin needs no engine source changes, and the Python client fits into a single command line.
README badge
Original SKILL.md
---
name: unreal-client-protocol
description: Interact with the running Unreal Engine editor via TCP bridge. Use when the user asks to call UFunctions or perform any Unreal Engine operation. This is the transport layer — see domain-specific skills (unreal-object-operation, unreal-material-editing, etc.) for specific operations.
---
# UnrealClientProtocol
Communicate with a running UE editor through the UnrealClientProtocol TCP plugin. UCP exposes a single command — call any UFunction on any UObject via JSON. All functionality is provided through Blueprint Function Libraries that you invoke this way.
## Invocation
When you read this SKILL.md, you already know its absolute path. Replace the filename with `scripts/UCP.py` to get UCP.py's path. For example, if this file is at `X/Skills/unreal-client-protocol/SKILL.md`, then UCP.py is at `X/Skills/unreal-client-protocol/scripts/UCP.py`. **Do NOT search or glob for UCP.py.**
Use PowerShell **here-string** (`@'...'@`) to pipe JSON into UCP.py. This avoids all quote/escape issues:
```powershell
@'
{"object":"/Script/UnrealClientProtocol.Default__ObjectOperationLibrary","function":"FindObjectInstances","params":{"ClassName":"/Script/Engine.World"}}
'@ | python "<path-to-UCP.py>"
```
**IMPORTANT**: The `@'` must be on its own line, and `'@` must also be at the start of its own line. This is PowerShell here-string syntax — the content between them is passed verbatim with zero escaping needed.
**NEVER** use `echo '...'` or `echo "..."` for JSON in PowerShell — quotes and braces will be corrupted.
## Command Format
```json
{"object":"<object_path>","function":"<func_name>","params":{...}}
```
- `object`: Full UObject path — use CDO path for static/library functions, instance path for member methods.
- `function`: The UFunction name exactly as declared in C++.
- `params`: (optional) Map of parameter name -> value. UObject* params accept path strings. Omit `WorldContextObject`.
### Parameter handling
- **Out parameters** (`TArray<AActor*>& OutActors`, etc.) can be omitted from `params` — they are auto-initialized and returned as part of the result after execution.
- **Return values** and all out parameters are serialized together in the response. For example, calling `GetAllActorsOfClass` with only `{"ActorClass":"/Script/Engine.StaticMeshActor"}` returns `{"OutActors":["/Game/Maps/Main.Main:PersistentLevel.Cube_0", ...]}`.
- **UObject\* parameters** accept full object paths as strings. The system resolves them automatically.
## Complex Operation Strategy
When an operation involves predictable multi-step logic (loops, conditionals, bulk modifications), **do NOT issue many individual calls**. Instead: