Unreal Engine
Permite que los agentes de IA vean, construyan, prueben y editen dentro de Unreal Engine 5.7, incluidos los Blueprints, que normalmente son activos binarios opacos.
Documentación
mcp-unreal
Servidor MCP (Model Context Protocol) que brinda a los agentes de codificación con IA control autónomo completo sobre un proyecto de Unreal Engine 5.7. Un único binario Go, cero dependencias externas.
Compila, prueba, manipula el editor, edita Blueprints, genera mallas procedurales y consulta la documentación de la API de UE — todo a través de 49 herramientas MCP que cualquier agente compatible con MCP puede invocar directamente.
Inicio Rápido
# Install
go install github.com/remiphilippe/mcp-unreal/cmd/mcp-unreal@latest
# Build the documentation index
mcp-unreal --build-index
# Register with your AI coding tool (see Setup section below)
Requisitos Previos
- Go 1.25+ — instalar
- Unreal Engine 5.7 — para las herramientas de compilación/pruebas y la interacción con el editor
- Complemento Remote Control API — habilitado en UE (consulta Habilitar Remote Control API más abajo)
- Complemento de editor MCPUnreal — para herramientas avanzadas del editor (consulta plugin/README.md)
Instalación
Desde el Código Fuente
git clone https://github.com/remiphilippe/mcp-unreal.git
cd mcp-unreal
make build
Binarios Precompilados
Descarga desde GitHub Releases — disponibles para macOS, Linux y Windows en amd64 y arm64.
Habilitar Remote Control API
La Remote Control API es un complemento integrado de UE que proporciona acceso HTTP a las propiedades de actores y llamadas a funciones en el puerto 30010. mcp-unreal la utiliza para las herramientas get_property, set_property, call_function y move_actor.
- Abre tu proyecto en Unreal Editor
- Ve a Edit > Plugins
- Busca "Remote Control API"
- Marca la casilla Enabled
- Reinicia el editor cuando se te solicite
Para verificar que está en ejecución:
curl http://localhost:30010/remote/info
Deberías recibir una respuesta JSON con la versión de la API. Si la conexión es rechazada, el complemento no está habilitado o el editor no está en ejecución.
Instalar el Complemento de UE
Copia el directorio plugin/ en la carpeta Plugins/ de tu proyecto:
cp -r plugin/ /path/to/YourProject/Plugins/MCPUnreal/
Reconstruye el proyecto. El complemento inicia un servidor HTTP en el puerto 8090 cuando el editor se carga. Consulta plugin/README.md para más detalles.
Configuración por Cliente
mcp-unreal funciona con cualquier herramienta de codificación con IA compatible con MCP. A continuación se presentan las instrucciones de configuración para cada una.
Nota: Reemplaza
/path/to/mcp-unrealcon la ruta real a tu binario compilado (por ejemplo, la salida dego installomake build). EstableceMCP_UNREAL_PROJECTa la ruta de tu archivo.uprojecto al directorio raíz del proyecto.
Claude Code
Registro CLI:
claude mcp add mcp-unreal -- /path/to/mcp-unreal
Archivo de configuración (.mcp.json en la raíz del proyecto, o ~/.claude.json para global):
{
"mcpServers": {
"mcp-unreal": {
"type": "stdio",
"command": "/path/to/mcp-unreal",
"env": {
"MCP_UNREAL_PROJECT": "/path/to/MyProject/MyProject.uproject"
}
}
}
}
Cursor
Archivo de configuración (.cursor/mcp.json en la raíz del proyecto, o ~/.cursor/mcp.json para global):
{
"mcpServers": {
"mcp-unreal": {
"command": "/path/to/mcp-unreal",
"env": {
"MCP_UNREAL_PROJECT": "/path/to/MyProject/MyProject.uproject"
}
}
}
}
Después de guardar, habilítalo mediante Cursor Settings > MCP Servers.
OpenAI Codex CLI
Registro CLI:
codex mcp add mcp-unreal -- /path/to/mcp-unreal
Archivo de configuración (.codex/config.toml en la raíz del proyecto, o ~/.codex/config.toml para global):
[mcp_servers.mcp-unreal]
command = "/path/to/mcp-unreal"
args = []
tool_timeout_sec = 120
[mcp_servers.mcp-unreal.env]
MCP_UNREAL_PROJECT = "/path/to/MyProject/MyProject.uproject"
Aumenta
tool_timeout_secparabuild_projectyrun_tests, que pueden tardar más de 60 segundos.
VS Code con GitHub Copilot
Requiere VS Code 1.99+ con GitHub Copilot Agent Mode habilitado.
Archivo de configuración (.vscode/mcp.json en la raíz del proyecto):
{
"servers": {
"mcp-unreal": {
"type": "stdio",
"command": "/path/to/mcp-unreal",
"env": {
"MCP_UNREAL_PROJECT": "${workspaceFolder}"
}
}
}
}
Windsurf
Archivo de configuración (~/.codeium/windsurf/mcp_config.json):
{
"mcpServers": {
"mcp-unreal": {
"command": "/path/to/mcp-unreal",
"env": {
"MCP_UNREAL_PROJECT": "/path/to/MyProject/MyProject.uproject"
}
}
}
}
Cline (Extensión de VS Code)
Abre el panel de Cline > ícono de MCP Servers > pestaña Configure > Advanced MCP Settings, y luego agrega:
{
"mcpServers": {
"mcp-unreal": {
"command": "/path/to/mcp-unreal",
"env": {
"MCP_UNREAL_PROJECT": "/path/to/MyProject/MyProject.uproject"
}
}
}
}
Zed
Archivo de configuración (~/.config/zed/settings.json):
{
"context_servers": {
"mcp-unreal": {
"command": "/path/to/mcp-unreal",
"env": {
"MCP_UNREAL_PROJECT": "/path/to/MyProject/MyProject.uproject"
}
}
}
}
Referencia Rápida
| Cliente | Archivo de Configuración | Clave de Nivel Superior |
|---|---|---|
| Claude Code | .mcp.json o ~/.claude.json | mcpServers |
| Cursor | .cursor/mcp.json o ~/.cursor/mcp.json | mcpServers |
| Codex CLI | .codex/config.toml o ~/.codex/config.toml | [mcp_servers.<name>] |
| VS Code Copilot | .vscode/mcp.json | servers |
| Windsurf | ~/.codeium/windsurf/mcp_config.json | mcpServers |
| Cline | Configuración gestionada por la extensión | mcpServers |
| Zed | ~/.config/zed/settings.json | context_servers |
Prompt de Sistema Recomendado
Para obtener los mejores resultados, agrega lo siguiente al prompt de sistema de tu proyecto (por ejemplo, CLAUDE.md, .cursorrules, .codex/instructions.md o equivalente). Esto le indica al agente de IA cómo usar las herramientas MCP de manera efectiva.
## Unreal Engine MCP Tools
This project uses mcp-unreal for AI-driven Unreal Engine development. The following MCP tools are available:
### Workflow Guidelines
1. **Always check status first**: Call `status` to verify the editor and plugin connections before attempting editor operations.
2. **Look up docs before writing UE code**: Use `lookup_class` to get class references (inheritance, properties, functions) and `lookup_docs` for API patterns before writing C++ or Blueprint logic.
3. **Build-test cycle**: After editing C++ files, call `build_project` to compile, then `run_tests` to verify. Read build errors carefully — use `lookup_docs` to understand UE APIs.
4. **Actor workflow**: Use `get_level_actors` to discover existing actors, `spawn_actor` to create new ones, `move_actor` to position them, and `set_property`/`get_property` to read/write properties.
5. **Blueprint workflow**: Use `blueprint_query` with operation `list` to find Blueprints, then `list_variables`/`list_functions`/`list_nodes` to inspect them. Use `blueprint_modify` to make changes, and always `compile` after modifications.
6. **Material workflow**: Use `material_ops` with `create` to make new materials, `get_parameters` to inspect existing ones, and `set_parameter` or `set_texture` to modify them.
7. **Save your work**: The editor does not auto-save. After making changes, use `level_ops` with `save_level` or remind the user to save.
8. **PIE testing**: Use `pie_control` with operation `start` to begin a Play In Editor session, `status` to verify it started, and `stop` to end it. Use `capture_viewport` with `include_ui=true` during PIE to see the game view with HUD/menus. Use `player_control` to move the player pawn (`teleport`, `set_rotation`) or reposition the editor viewport camera (`get_camera`, `set_camera`).
### Tool Modes
- **Headless tools** (`build_project`, `run_tests`, `cook_project`, etc.) do NOT require the editor to be running. They invoke UnrealEditor-Cmd directly.
- **Editor tools** (actors, blueprints, materials, etc.) require the Unreal Editor to be open with the MCPUnreal plugin loaded.
- **Documentation tools** (`lookup_docs`, `lookup_class`) are always available — use them liberally.
### Object Paths
Many tools require UE object paths. The format is:
- Actor paths: `/Game/Maps/MapName.MapName:PersistentLevel.ActorName`
- Asset paths: `/Game/Folder/AssetName`
- Engine assets: `/Engine/BasicShapes/Cube`
Use `get_level_actors` to discover actor paths, and `search_assets` to find asset paths.
Consejo: Para Claude Code, guarda esto como
CLAUDE.mden la raíz de tu proyecto. Para Cursor, guárdalo como.cursorrules. Para Codex, guárdalo como.codex/instructions.md.
Configuración
| Variable | Predeterminado | Descripción |
|---|---|---|
UE_EDITOR_PATH | Dependiente de la plataforma | Ruta al binario de UnrealEditor-Cmd |
MCP_UNREAL_PROJECT | Detectado automáticamente desde cwd | Ruta al archivo .uproject o directorio raíz del proyecto |
RC_API_PORT | 30010 | Puerto HTTP de la Remote Control API de UE |
PLUGIN_PORT | 8090 | Puerto HTTP del complemento de editor MCPUnreal |
MCP_UNREAL_LOG_LEVEL | info | Nivel de registro: debug, info, warn, error |
MCP_UNREAL_DOCS_INDEX | ./docs/index.bleve | Ruta al índice de documentación de bleve |
Valores predeterminados por plataforma para UE_EDITOR_PATH:
- macOS:
/Users/Shared/Epic Games/UE_5.7/Engine/Binaries/Mac/UnrealEditor-Cmd - Windows:
C:\Program Files\Epic Games\UE_5.7\Engine\Binaries\Win64\UnrealEditor-Cmd.exe - Linux:
/opt/UnrealEngine/Engine/Binaries/Linux/UnrealEditor-Cmd
Arquitectura
┌───────────────────────┐
│ UE 5.7 Editor │
│ │
│ ┌─────────────────┐ │
│ │ Remote Control │ │
┌────►│ │ API (port 30010)│ │
│ │ │ (built-in) │ │
│ │ └─────────────────┘ │
┌──────────────┐ stdio ┌──────────────┐│ │ │
│ AI Coding │ JSON-RPC │ ││ │ ┌─────────────────┐ │
│ Agent │◄────────────►│ mcp-unreal │├────►│ │ MCPUnreal │ │
│ (Claude Code │ │ (Go binary) ││ │ │ Plugin (port │ │
│ Cursor, etc)│ │ ││ │ │ 8090) │ │
└──────────────┘ │ 49 tools │┘ │ │ • Actors │ │
│ doc index │ │ │ • Blueprints │ │
│ │ │ │ • Materials │ │
│ ┌──────────┐ │ │ │ • PCG / GAS │ │
│ │ Headless │ │ │ │ • Niagara │ │
│ │ exec.Cmd │─┼──────│──│ • Mesh ops │ │
│ └──────────┘ │ │ │ • Levels │ │
│ │ │ └─────────────────┘ │
│ ┌──────────┐ │ │ │
│ │ Bleve │ │ └───────────────────────┘
│ │ Doc Index│ │
│ └──────────┘ │ ┌───────────────────────┐
│ │──────│ docs/ │
└──────────────┘ │ ├── ue5.7/ │
│ ├── realtimemesh/ │
│ └── index.bleve │
└───────────────────────┘
Tres rutas de comunicación:
- Headless —
exec.CommandinvocaUnrealEditor-Cmdpara compilaciones, pruebas y cooking. No se necesita editor. - Remote Control API — HTTP PUT a
localhost:30010para acceso a propiedades y llamadas a funciones. Integrada en UE. - Complemento MCPUnreal — HTTP POST a
localhost:8090para edición de Blueprints, consultas de activos, operaciones de mallas y otros aspectos internos profundos del editor.
Consulta IMPLEMENTATION.md para el documento completo de arquitectura.
Herramientas Disponibles (48)
Compilación y Compilado (Headless)
| Herramienta | Descripción |
|---|---|
build_project | Compila el proyecto de UE mediante UnrealEditor-Cmd / UBT. Devuelve JSON estructurado con el recuento de errores y los detalles de los errores. |
cook_project | Cocina (empaqueta) contenido para una plataforma de destino usando RunUAT. Admite cocinados iterativos. |
generate_project_files | Regenera los archivos de proyecto del IDE (.xcworkspace / .sln) después de agregar o eliminar módulos de C++. |
Proyecto y Configuración (Headless)
| Herramienta | Descripción |
|---|---|
project_ops | Lee y modifica el archivo .uproject: obtén información del proyecto, lista/habilita/deshabilita complementos, agrega módulos, establece plataformas de destino. |
config_ops | Lee y escribe archivos de configuración .ini del proyecto de UE (DefaultEngine.ini, DefaultGame.ini, etc.): obtén, establece, elimina claves, lista secciones. |
Automatización de Pruebas (Headless)
| Herramienta | Descripción |
|---|---|
run_tests | Ejecuta pruebas de automatización headless (-nullrhi) con resultados de aprobado/fallido por prueba y detalles de fallos. |
run_visual_tests | Ejecuta pruebas de automatización con renderizado por GPU habilitado (sin -nullrhi) para pruebas visuales/de renderizado. |
list_tests | Lista los nombres de pruebas de automatización disponibles que coinciden con un patrón de filtro. |
get_test_log | Lee archivos de registro sin procesar de UE con límites de líneas, desplazamientos y filtrado por palabras clave. |
Actores y Propiedades (Editor)
| Herramienta | Descripción |
|---|---|
get_level_actors | Lista todos los actores en el nivel actual con clase, ruta, ubicación, rotación, escala. |
spawn_actor | Genera un actor por nombre de clase en una ubicación/rotación/escala determinada. |
delete_actors | Elimina uno o más actores por ruta de objeto o nombre visible. |
move_actor | Establece ubicación, rotación y/o escala de un actor mediante llamadas a funciones de la API RC (K2_SetActorLocation, K2_SetActorRotation, SetActorScale3D). |
get_property | Lee un valor de propiedad de un actor mediante la Remote Control API. |
set_property | Establece un valor de propiedad en un actor mediante la Remote Control API. |
call_function | Llama a una función en un objeto mediante la Remote Control API. |
Edición de Blueprints (Editor)
| Herramienta | Descripción |
|---|---|
blueprint_query | Consulta la estructura de Blueprints: lista todos los BPs, inspecciona las variables/funciones/grafos de un BP, obtén nodos y conexiones del grafo. |
blueprint_modify | Modifica Blueprints: crea, agrega/elimina variables, agrega/elimina funciones, agrega/elimina nodos, conecta/desconecta pines, establece valores de pines, compila. |
Edición de Blueprints de Animación (Editor)
| Herramienta | Descripción |
|---|---|
anim_blueprint_query | Consulta máquinas de estados y estados de AnimBP: lista máquinas de estados, inspecciona estados/transiciones/espacios de mezcla. |
anim_blueprint_modify | Modifica AnimBPs: agrega/elimina estados, agrega/elimina transiciones, establece espacios de mezcla, establece animaciones de estados, establece reglas de transición, agrega estados de notificación. |
Activos (Editor)
| Herramienta | Descripción |
|---|---|
search_assets | Busca activos por clase, ruta, nombre o etiqueta. Devuelve resultados paginados. |
get_asset_info | Obtén información detallada del activo, incluyendo dependencias y referenciadores. |
Materiales (Editor)
| Herramienta | Descripción |
|---|---|
material_ops | Operaciones de materiales: create, create_instance, set_parameter, set_texture, get_parameters, list_parameters. |
Personajes y Entrada (Editor)
| Herramienta | Descripción |
|---|---|
character_config | Configuración de personajes: get_config, set_movement, set_capsule, set_mesh, set_camera, get_movement_modes. |
input_ops | Operaciones de Enhanced Input: list_actions, list_contexts, add_action, remove_action, add_context, bind_action, unbind_action, get_bindings. |
Generación de Contenido Procedural (Editor)
| Herramienta | Descripción |
|---|---|
pcg_ops | Operaciones de grafos PCG: list_components, get_graph, execute, set_parameter, add_node, connect_nodes, get_results. |
Sistema de Habilidades de Gameplay (Editor)
| Herramienta | Descripción |
|---|---|
gas_ops | Operaciones de GAS: list_abilities, grant_ability, activate, get_attributes, set_attribute, apply_effect, remove_effect, list_active_effects. |
Niagara VFX (Editor)
| Herramienta | Descripción |
|---|---|
niagara_ops | Operaciones de Niagara: spawn_system, set_parameter, get_parameter, activate, deactivate, list_emitters, set_emitter_enabled, get_system_info. |
Generación de Mallas (Editor)
| Herramienta | Descripción |
|---|---|
procedural_mesh | Crea y modifica geometría de ProceduralMeshComponent: create_section, update_section, clear, set_material. |
realtime_mesh | Crea y modifica geometría de RealtimeMeshComponent (requiere el complemento RMC): create_lod, create_section_group, create_section, update_mesh_data, set_material_slot, setup_collision. |
Niveles (Editor)
| Herramienta | Descripción |
|---|---|
level_ops | Gestión de niveles: get_current, list_levels, load_level, save_level, new_level, add_sublevel, remove_sublevel, set_streaming_method. |
Utilidades del Editor (Editor)
| Herramienta | Descripción |
|---|---|
run_console_command | Ejecuta un comando de consola de Unreal en el editor. |
get_output_log | Lee el registro de salida del editor con filtrado opcional por categoría y verbosidad. |
capture_viewport | Captura una captura de pantalla del viewport activo. Devuelve MCP ImageContent (visible por el LLM) o la guarda en un archivo. Establece include_ui=true para capturar con superposiciones de Slate/UMG (HUD, menús) — requiere PIE. |
execute_script | Ejecuta un script de Python en el entorno de Python del editor. |
live_compile | Activa la compilación de Live Coding (recarga en caliente) sin reiniciar el editor. |
pie_control | Controla sesiones de Play In Editor (PIE): iniciar, detener o verificar el estado. Admite anulación de mapa y modo Simulate In Editor. Iniciar/detener son asíncronos — usa status para verificar. |
player_control | Controla el pawn del jugador y la cámara del viewport del editor. Operaciones: get_info (estado del jugador), teleport (mover pawn), set_rotation (establecer dirección de vista), set_view_target (cambiar objetivo de cámara) — requieren PIE. get_camera/set_camera mueven la cámara del viewport del editor sin PIE. |
Componentes e Instanciación (Editor)
| Herramienta | Descripción |
|---|---|
get_actor_components | Obtén la jerarquía completa de componentes de un actor, incluyendo tipos, visibilidad, referencias de malla y transformaciones. |
ism_ops | Gestiona componentes ISM/HISM: crear, añadir/eliminar/actualizar instancias, establecer materiales, obtener recuentos de instancias. |
Texturas (Editor)
| Herramienta | Descripción |
|---|---|
texture_ops | Importa imágenes como activos de textura, consulta información de texturas, asigna texturas a parámetros de material, lista texturas. |
DataTables (Editor)
| Herramienta | Descripción |
|---|---|
data_asset_ops | Gestiona DataTables: listar, leer filas, añadir/actualizar/eliminar filas, crear tablas, importar desde CSV. |
Fab Marketplace (Editor)
| Herramienta | Descripción |
|---|---|
fab_ops | Gestiona la caché de activos de Fab Marketplace: listar activos descargados, importar al proyecto, limpiar caché. |
Subsistemas y UI (Editor)
| Herramienta | Descripción |
|---|---|
subsystem_query | Lista los subsistemas UE activos por tipo (world, game_instance, engine, editor, local_player). |
ui_query | Inspecciona la jerarquía de widgets de Slate y UMG: árbol, buscar por clase, obtener detalles, listar enlaces. |
Depuración de red (Editor)
| Herramienta | Descripción |
|---|---|
network_debug | Inspecciona solicitudes HTTP activas, conexiones WebSocket y registros recientes de solicitud/respuesta. |
Documentación (Siempre disponible)
| Herramienta | Descripción |
|---|---|
status | Comprueba el estado del servidor, la ruta de instalación de UE, la información del proyecto y la conectividad del editor. |
lookup_docs | Busca en la documentación de la API de UE 5.7, en la documentación de RealtimeMesh y en la documentación del proyecto mediante consultas en lenguaje natural. |
lookup_class | Obtén una referencia de clase estructurada (herencia, propiedades, funciones) para una clase UE específica. |
Índice de documentación
Construye el índice de búsqueda de documentación local:
mcp-unreal --build-index
Esto indexa archivos markdown de docs/ue5.7/ y docs/realtimemesh/, además del CLAUDE.md de tu proyecto. El índice se almacena en ./docs/index.bleve (configurable mediante MCP_UNREAL_DOCS_INDEX).
Para añadir documentación personalizada, coloca archivos markdown en el directorio docs/ y reconstruye el índice. Consulta docs/README.md.
Ejemplo de uso
Una vez registrado, tu agente de IA puede de forma autónoma:
You: "Build the project, fix any errors, and run the tests"
Agent calls:
1. status() → editor + plugin online
2. build_project() → finds 2 compile errors
3. lookup_class("AActor") → looks up the correct API
4. (edits the C++ source)
5. build_project() → clean build
6. run_tests(filter: "Game") → 14/14 tests pass
You: "Add a Niagara fire effect to the torch actor"
Agent calls:
1. get_level_actors(name_filter: "Torch") → finds actor path
2. lookup_class("UNiagaraComponent") → checks API
3. niagara_ops(operation: "spawn_system", system_path: "/Game/FX/NS_Fire", ...)
4. niagara_ops(operation: "set_parameter", parameter_name: "SpawnRate", value: 50)
You: "Create a PCG scatter for placing rocks on the landscape"
Agent calls:
1. lookup_docs("PCG scatter landscape") → reads PCG docs
2. pcg_ops(operation: "list_components") → finds existing PCG actors
3. spawn_actor(class: "Actor", name: "RockScatter")
4. pcg_ops(operation: "add_node", node_type: "SurfaceSampler")
5. pcg_ops(operation: "execute") → generates rocks
Desarrollo
# Build
make build
# Run all tests with race detector
make test
# Go lint
make lint
# C++ format check (requires clang-format)
make cpp-fmt-check
# Run all checks (Go format, C++ format, vet, lint, tests)
make check
Pruebas del plugin C++
El plugin MCPUnreal incluye pruebas de automatización que se ejecutan sin interfaz dentro del editor de UE. Estas requieren UE 5.7 instalado localmente y no forman parte de CI; son opcionales para el desarrollo local.
# Build the test project (first run ~2-5 min, incremental after)
make test-cpp-build
# Build and run all MCPUnreal.* automation tests
make test-cpp
Esto utiliza un proyecto UE mínimo en test-project/ que enlaza simbólicamente el código fuente del plugin y ejecuta todas las pruebas MCPUnreal.* mediante UnrealEditor-Cmd -nullrhi.
Contribuciones
Consulta CONTRIBUTING.md para la configuración de desarrollo, los estándares de codificación y cómo añadir nuevas herramientas.
Licencia
Apache-2.0 — consulta LICENSE.
Unreal Engine es una marca comercial de Epic Games, Inc. Este proyecto no está afiliado ni respaldado por Epic Games.