UnrealClientProtocol — скилл
Плагин и набор скиллов для Unreal Engine 5: агент вызывает функции движка и правит свойства объектов в запущенном редакторе.
- 130 ★ репозитория
- Последний коммит
- MIT
Широкий доступ
Почему такой уровень
- Агент вызывает любую функцию и пишет любое свойство в открытом редакторе.
- Скрипты Python, которые агент запускает через плагин, выполняются внутри проекта.
Установка
- Работает в
В терминале, через SkillFoxx CLI
npx skillfoxx add skills/unrealclientprotocolОпределит агенты на машине, покажет уровень доступа и зафиксирует версию.
Другие способы установки
Доступ и проверки
Как мы проверяемШирокий доступИнструмент может менять данные, выполнять команды или работать с секретами.
- Агент вызывает любую функцию и пишет любое свойство в открытом редакторе.
- Скрипты Python, которые агент запускает через плагин, выполняются внутри проекта.
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
UnrealClientProtocol, или UCP, открывает рефлексию Unreal Engine по TCP и JSON. Плагин лежит в папке `Plugins/` проекта и слушает `127.0.0.1:9876`, а агент шлет единственную команду `call`: она вызывает любую функцию UFunction или читает и пишет любое свойство UPROPERTY. К плагину прилагается набор скиллов в папке `Skills/`. Они разделены по областям: протокол и Python-клиент `UCP.py`, операции с объектами, правка акторов, работа с ассетами, материалы с узлами и HLSL, Blueprint, анализ больших Blueprint с переводом в C++. Агент подгружает только нужный скилл. Записи свойств попадают в историю Undo и Redo редактора. Свои скиллы с соглашениями проекта, например правилами именования ассетов, добавляют рядом с готовыми.
Для кого. Технические художники и программисты на Unreal Engine 5, которым нужен агент внутри открытого редактора.
Подходит, если
- На сцене надо масштабировать десятки кубов или переставить акторы по правилу.
- Материал из ShaderToy переносят в узлы материала Unreal с компиляцией и проверкой.
- Большой Blueprint разбирают и переводят в C++.
- Команда фиксирует соглашения по ассетам в собственных скиллах поверх протокола.
Не подходит, если
- Редактор не запущен: плагин отвечает только при открытом проекте.
- Нужны отложенные функции с `FLatentActionInfo` или делегаты в параметрах, их протокол не поддерживает.
- Проект работает не на Unreal Engine 5.
Пример запроса к агенту
Покажи, что есть на текущей сцене, и увеличь все кубы в два раза.Ограничения
Отложенные функции с параметром `FLatentActionInfo` не поддерживаются, делегаты нельзя передавать как параметры. Плагин слушает порт 9876 только на локальном адресе, пока включена настройка `bLoopbackOnly`; списки `AllowedClassPrefixes` и `BlockedFunctions` по умолчанию пусты, то есть ограничений на классы и функции нет. Скиллы зависят от Python 3.10 и новее и вызывают скрипты, а в Windows PowerShell может потребовать `Set-ExecutionPolicy RemoteSigned -Scope CurrentUser`. Виджеты и Niagara в дорожной карте помечены как еще не готовые.
Как отключить. Снимите флажок плагина в настройках проекта или удалите папку `Plugins/UnrealClientProtocol`, затем уберите скопированные папки скиллов из `.cursor/skills/` или `.claude/skills/`.
Частые вопросы
Как поставить UCP в проект Unreal Engine?
Скопируйте папку `UnrealClientProtocol` в `Plugins/` проекта и перезапустите редактор. После запуска плагин сам слушает `127.0.0.1:9876`.
Куда копировать скиллы для Claude Code и Cursor?
Для Claude Code в `.claude/skills/`, для Cursor в `.cursor/skills/`, для OpenCode в `.opencode/skills/`. Копируйте все папки из `Skills/`, а не отдельные.
Как проверить, что связь с редактором работает?
Отправьте скрипту `UCP.py` команду `FindObjectInstances` для класса `/Script/Engine.World`. Если пришел список объектов World, плагин отвечает.
Можно ли ограничить, что агент вызывает в движке?
Да. В настройках плагина задают `AllowedClassPrefixes` для разрешенных классов и `BlockedFunctions` для запретных функций в формате `ClassName::FunctionName`.
Какие скиллы входят в набор?
Протокол, операции с объектами, акторы, ассеты, материалы, Blueprint и анализ больших Blueprint. Агент читает нужный `SKILL.md` по задаче.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
СкиллыPython-CLI и MCP-сервер, через которые агент создает акторы, правит блупринты и запускает PIE в Unreal Engine 5
MCP-сервер для Unreal Editor: агент правит уровни, Blueprint и материалы, собирает проект обычными фразами
MCP-сервер, который позволяет агенту управлять редактором Unreal Engine словами: акторы, блупринты, узлы графа, камера
Плагин Unreal Engine с MCP-сервером: Claude и Cursor создают блупринты, спавнят объекты и запускают команды редактора
Около 76 скиллов по Unreal Engine 5.8: C++, Blueprints, GAS, анимация, материалы, MetaHuman и пакеты Ultra Dynamic
Официальный плагин Epic Games: Claude Code управляет открытым Unreal Editor по MCP, от акторов и Blueprint до Niagara и Sequencer
Сравнение с похожими
Карточки с тем же главным запросом: чем они отличаются.
| Инструмент | Официальный | Авторизация | Звезды репозитория | Главное отличие |
|---|---|---|---|---|
| UnrealClientProtocol (эта карточка) | нет | 130 | ||
| AI Game Developer: Unreal MCP | нет | OAuth | 60 | плагин с MCP и языком запросов RQL, есть облачный и свой сервер; UCP отдает рефлексию движка по TCP и набор скиллов без MCP |
| Flopperam Unreal Engine MCP | нет | API-ключ | 1 117 | локальный MCP-сервер на Python для сцен и Blueprint плюс хостинговый вариант; UCP работает через единственную команду call и скиллы |
Коротко о README
Авторы строят UCP на идее атомарных возможностей: протокол остается стабильным, а знание Unreal Engine приходит от модели и скиллов. Плагин не требует правок исходников движка. Python-клиент помещается в одну строку командной строки.
Бейдж для README
Исходный 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: