UnrealClientProtocol — скилл

Плагин и набор скиллов для Unreal Engine 5: агент вызывает функции движка и правит свойства объектов в запущенном редакторе.

  • 130 ★ репозитория
  • Последний коммит
  • MIT
Скилл

Широкий доступ

Почему такой уровень

  • Агент вызывает любую функцию и пишет любое свойство в открытом редакторе.
  • Скрипты Python, которые агент запускает через плагин, выполняются внутри проекта.
Все причины и проверки

italink/unrealclientprotocol

Установка

В терминале, через 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

CLIШирокий доступ216Звезды репозитория

MCP-сервер для Unreal Editor: агент правит уровни, Blueprint и материалы, собирает проект обычными фразами

MCP-серверШирокий доступ495Звезды репозитория

MCP-сервер, который позволяет агенту управлять редактором Unreal Engine словами: акторы, блупринты, узлы графа, камера

MCP-серверРасширенный доступ2,1 тыс.Звезды репозитория

Плагин Unreal Engine с MCP-сервером: Claude и Cursor создают блупринты, спавнят объекты и запускают команды редактора

MCP-серверШирокий доступ686Звезды репозитория

Около 76 скиллов по Unreal Engine 5.8: C++, Blueprints, GAS, анимация, материалы, MetaHuman и пакеты Ultra Dynamic

СкиллМинимальный доступ102Звезды репозитория
Официальный

Официальный плагин Epic Games: Claude Code управляет открытым Unreal Editor по MCP, от акторов и Blueprint до Niagara и Sequencer

ПлагинШирокий доступ2 тыс.Звезды репозитория

Сравнение с похожими

Карточки с тем же главным запросом: чем они отличаются.

ИнструментОфициальныйАвторизацияЗвезды репозиторияГлавное отличие
UnrealClientProtocol (эта карточка)нет130
AI Game Developer: Unreal MCPнетOAuth60плагин с 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:

Сообщить о проблеме