NarshaADK (NarshaMCP)

NarshaMCP es un servidor MCP para Unreal Engine. Se distribuye en Fab como NarshaADK. Analiza código fuente C++, símbolos PDB y archivos binarios .uasset y sirve el resultado a través de MCP. Está probado con Claude Code y Codex. La mayoría de las lecturas funcionan desde el disco con el Editor de Unreal cerrado; las ediciones requieren el Editor.

Documentación

NarshaADK cover image

NarshaADK: Servidor MCP para Unreal Engine

NarshaMCP es un servidor MCP para Unreal Engine. Se distribuye en Fab como NarshaADK.

Analiza código fuente C++, símbolos PDB y archivos binarios .uasset y sirve el resultado a través de MCP. Está probado con Claude Code y Codex. La mayoría de las lecturas funcionan desde el disco con el Editor de Unreal cerrado; las ediciones necesitan el Editor.

Consíguelo en Fab · Última versión · Documentación

UE 5.7 UE 5.8 Early Access


Acceso anticipado. Los nombres de las herramientas, los parámetros y las formas de salida pueden cambiar entre versiones.

El producto de Fab se llama NarshaADK. La carpeta del plugin instalado, el módulo de código y el ejecutable en tiempo de ejecución se llaman NarshaMCP.

Lo que puedes hacer

La mayoría de las herramientas toman un argumento operation. La tabla enumera las operaciones de lectura comunes. ue_tool_docs devuelve cada operación y sus parámetros, y tu cliente lista las herramientas bajo tools/list.

HerramientaDevuelveOperaciones de lecturaEditor cerradoMadurez
ue_analyze_symbolsSímbolos, llamadores, llamados y jerarquía de clases desde los PDB del proyecto; referencias cruzadas C++/Blueprint comparadas con los paquetes de Blueprintsearch_symbols, find_callers, find_callees, trace_hierarchy, find_cpp_to_bp, find_bp_to_cpp, impact_analysissíProducción
ue_manage_blueprintEventos, nodos, variables y valores predeterminados, clase padre y AnimGraph de un activo de Blueprintget_event_graph, get_raw_nodes, search_variables, get_variable_default, get_blueprint_metadata, list_blueprints, get_animgraphsí; las ediciones necesitan el EditorBeta
ue_fix_errorsErrores del registro de compilación comparados con una corrección: el #include faltante, el módulo Build.cs faltantescan_build_log, preflight, previewsí; build_and_fix ejecuta una compilación, get_compiler_results necesita el EditorBeta
ue_manage_aiEstados, tareas, transiciones y enlaces de StateTree y Behavior Treeget_summary, get_structure, find_transitions, get_bindingssí; las ediciones necesitan el EditorProducción
ue_manage_materialTopología de nodos de material, resumen del grafo y jerarquía de instanciasget_graph_summary, get_nodes, get_hierarchy, search_materialssí; los bordes basados en nombres necesitan el EditorExperimental
ue_manage_niagaraSistemas Niagara, emisores, renderizadores y parámetrosget_emitter_details, get_structure, get_parameters, search_systemssíExperimental
ue_manage_pcgNodos y flujo del grafo PCGget_structure, trace_flow, find_nodes, search_graphssíExperimental
ue_search_assetsBúsqueda de activos y filas de DataTable; una carga en frío del índice de referencias puede persistir una caché en el proyectosearch, get_table, find_dependencies, find_references, find_impactsíBeta
ue_analyze_configValores de configuración en las capas del motor y del proyecto; declaraciones de variables de consolasearch_config, explain_config, explore_cvarsíBeta
ue_trace_executionUna ruta de ejecución a través de entrada, habilidades, Blueprint y C++trace_execution_flow, trace_from_input, trace_ability_flow, trace_gameplay_tagsíBeta
ue_generate_codeAndamios de clases C++ con macros de Unreal y configuración de módulosgenerate_classsí; devuelve el contenido del archivo para que lo guardesBeta
ue_grep, ue_glob, ue_readBúsqueda de texto y nombres en código fuente, activos y configuraciónun query, pattern o identifier; sin operationsíExperimental

ue_check_health informa la versión del tiempo de ejecución y si los índices están listos.

Antes y después

Cada ejemplo muestra la solicitud, la llamada a la herramienta MCP y la respuesta JSON. Capturado de NarshaMCP v0.13.7 en Epic's Lyra Starter Game (UE 5.8.1) con el Editor cerrado. Los valores se devuelven tal cual; las claves y elementos de matriz eliminados están marcados en el bloque.

Referencias cruzadas de C++ y Blueprint

Solicitud. ¿Qué Blueprints llaman a StartRangedWeaponTargeting, qué C++ llama GA_Weapon_Fire, y qué deriva de ALyraCharacter?

Antes. grep -rn StartRangedWeaponTargeting encuentra la declaración y definición de C++. Los sitios de llamada de Blueprint están dentro de paquetes binarios .uasset.

Llamada. Editor cerrado.

{"name": "ue_analyze_symbols", "arguments": {"operation": "find_cpp_to_bp", "function_name": "ULyraGameplayAbility_RangedWeapon::StartRangedWeaponTargeting", "limit": 5}}

Salida. Tal como se devolvió; los cortes están marcados.

{
  "function_name": "ULyraGameplayAbility_RangedWeapon::StartRangedWeaponTargeting",
  "total_callers": 2,
  "truncated": false,
  "blueprint_callers": [
    {
      "blueprint_name": "GA_Weapon_Fire",
      "blueprint_path": "/Game/Weapons/GA_Weapon_Fire",
      "owning_function": "K2_ActivateAbility",
      "node_name": "K2Node_CallFunction_31",
      "match_tier": "qualified",
      "confidence": 0.75
    },
    {
      "blueprint_name": "GA_WeaponNetShooter",
      "blueprint_path": "/ShooterCore/Weapons/NetShooter_PROTO/GA_WeaponNetShooter",
      "owning_function": "K2_ActivateAbility",
      "node_name": "K2Node_CallFunction_31",
      "match_tier": "qualified",
      "confidence": 0.75
    }
  ]
  // [truncated] blueprint_callers[] fields omitted: call_type, is_pure; keys omitted: operation, skip_dedup, success
}

Llamada. Editor cerrado.

{"name": "ue_analyze_symbols", "arguments": {"operation": "find_bp_to_cpp", "blueprint_name": "GA_Weapon_Fire", "limit": 2, "offset": 18}}

Salida. Tal como se devolvió; los cortes están marcados.

{
  "blueprint_name": "GA_Weapon_Fire",
  "total_calls": 33,
  "offset": 18,
  "truncated": true,
  "cpp_calls": [
    {
      "full_name": "LyraGameplayAbility_RangedWeapon::StartRangedWeaponTargeting",
      "owning_function": "K2_ActivateAbility",
      "node_name": "K2Node_CallFunction_31",
      "is_pure": false
    },
    {
      "full_name": "KismetSystemLibrary::SetTimerDelegate",
      "owning_function": "K2_ActivateAbility",
      "node_name": "K2Node_CallFunction_4",
      "is_pure": false
    }
  ]
  // [truncated] cpp_calls[] fields omitted: function_name, owner_class; keys omitted: operation, returned, success, total_count
}

Llamada. Editor cerrado.

{"name": "ue_analyze_symbols", "arguments": {"operation": "trace_hierarchy", "class_name": "ALyraCharacter", "direction": "down"}}

Salida. Tal como se devolvió; los cortes están marcados.

{
  "class_name": "ALyraCharacter",
  "cpp_descendants_count": 1,
  "bp_descendants_count": 10,
  "descendants": [
    {"depth": 1, "name": "ALyraCharacterWithAbilities", "relation": "child", "source": "pdb"},
    {"depth": 1, "name": "Character_Default", "relation": "child_blueprint", "source": "blueprint"},
    {"depth": 2, "name": "B_Hero_Default", "relation": "child_blueprint", "source": "blueprint"},
    {"depth": 2, "name": "B_ShootingTarget", "relation": "child_blueprint", "source": "blueprint"}
  ],
  "interface_parents": ["IAbilitySystemInterface", "IGameplayCueInterface", "IGameplayTagAssetInterface", "ILyraTeamAgentInterface"]
  // [truncated] descendants: 4 of 11 elements; descendants[] fields omitted: parent; keys omitted: 13 of 18
}

Resultado. owning_function es el evento de Blueprint que contiene la llamada, y match_tier con confidence registra cómo se comparó el símbolo con el nodo. descendants[].source es pdb para una subclase de C++ y blueprint para una de Blueprint.

Eventos, variables y nodos de Blueprint

Solicitud. ¿Qué eventos maneja GA_Weapon_Fire, cuál es su retraso de disparo, y cómo está conectado un nodo?

Antes. Content/Weapons/GA_Weapon_Fire.uasset es binario, y grep -rn FireDelayTimeSecs sobre el código fuente no encuentra nada: la variable existe solo en el activo.

Llamada. Editor cerrado.

{"name": "ue_manage_blueprint", "arguments": {"operation": "get_event_graph", "blueprint_name": "GA_Weapon_Fire"}}

Salida. Tal como se devolvió; los cortes están marcados.

{
  "blueprint_name": "GA_Weapon_Fire",
  "count": 5,
  "events": [
    {"node_title": "FireComplete", "node_class": "K2Node_CustomEvent"},
    {"node_title": "FailureMontage Delay Complete", "node_class": "K2Node_CustomEvent"}
  ]
  // [truncated] events: 2 of 5 elements; events[] fields omitted: node_id, owning_function; keys omitted: operation, success
}

Llamada. Editor cerrado.

{"name": "ue_manage_blueprint", "arguments": {"operation": "search_variables", "blueprint_name": "GA_Weapon_Fire", "pattern": "*Fire*"}}

Salida. Tal como se devolvió; los cortes están marcados.

{
  "parent_class": "LyraGameplayAbility_RangedWeapon",
  "total_count": 2,
  "results": [
    {
      "name": "CharacterFireMontage",
      "default_value": "AM_MM_Rifle_Fire",
      "default_value_type": "Object",
      "edit_condition": "EditDefaultsOnly"
    },
    {
      "name": "FireDelayTimeSecs",
      "default_value": "0.1",
      "default_value_type": "Double",
      "edit_condition": "EditDefaultsOnly"
    }
  ]
  // [truncated] results[] fields omitted: 9 of 13; keys omitted: 14 of 17
}

Llamada. Editor cerrado.

{"name": "ue_manage_blueprint", "arguments": {"operation": "get_raw_nodes", "blueprint_name": "GA_Weapon_Fire", "page": 1, "page_size": 1}}

Salida. Tal como se devolvió; los cortes están marcados.

{
  "total_nodes": 98,
  "has_more": true,
  "nodes": [
    {
      "id": "K2Node_AsyncAction_ListenForGameplayMessages_0",
      "node_class": "K2Node_AsyncAction_ListenForGameplayMessages",
      "owning_function": "K2_OnAbilityAdded",
      "pins": [
        {
          "name": "execute",
          "category": "exec",
          "direction": "input",
          "linked_to": [
            {"node_id": "K2Node_Event_1", "pin_name": "then", "export_index": 70}
          ]
        },
        {"name": "then", "category": "exec", "direction": "output", "linked_to": []}
      ]
    }
  ]
  // [truncated] nodes[].pins: 2 of 12 elements; nodes[].pins[].linked_to[] fields omitted: owning_function; nodes[].pins[] fields omitted: container_type, default_value, pin_id, sub_category; nodes[] fields omitted: 5 of 9; keys omitted: 10 of 13
}

Resultado. parent_class, events[].node_title y results[].default_value se leen del .uasset. pins[].linked_to nombra el nodo y el pin al que se conecta cada pin; donde un id de nodo se repite dentro de un activo, export_index identifica el punto final.

Resumen del grafo de material

Solicitud. ¿Cómo está construido M_TeamColorBasic?

Antes. M_TeamColorBasic.uasset es binario; el grafo de expresiones no está en ningún archivo de texto.

Llamada. Editor cerrado.

{"name": "ue_manage_material", "arguments": {"operation": "get_graph_summary", "material_path": "/Game/Characters/Cosmetics/M_TeamColorBasic"}}

Salida. Tal como se devolvió; los cortes están marcados.

{
  "material_name": "M_TeamColorBasic",
  "source": "uasset_metadata_cache",
  "node_count": 4,
  "connection_count": 3,
  "stage_count": 3,
  "output_chains": [
    {"output_pin": "Material", "root_node": "MaterialExpressionVectorParameter_3", "upstream_node_count": 1},
    {"output_pin": "Material", "root_node": "MaterialExpressionAdd_0", "upstream_node_count": 4}
  ]
  // [truncated] output_chains: 2 of 3 elements; output_chains[] fields omitted: exclusive_node_count, role, top_node_types; keys omitted: 6 of 12
}

Resultado. Con el Editor cerrado, la respuesta tiene el número de nodos, el número de conexiones y el nodo raíz de cada cadena de salida. ue_manage_material es Experimental; con el Editor en ejecución, su operación get_nodes agrega nombres de nodos y bordes basados en nombres.

Estados y transiciones de StateTree

Solicitud. ¿Qué hace el StateTree L_STT_FollowPlayer?

Antes. L_STT_FollowPlayer.uasset es binario, y grep -rn L_STT_FollowPlayer sobre el código fuente no encuentra nada: ningún código describe este árbol.

Llamada. Editor cerrado.

{"name": "ue_manage_ai", "arguments": {"operation": "get_summary", "ai_type": "statetree", "asset_name": "L_STT_FollowPlayer"}}

Salida. Tal como se devolvió; los cortes están marcados.

{
  "asset_name": "L_STT_FollowPlayer",
  "root_state": "Root",
  "state_count": 9,
  "property_binding_count": 19,
  "states": [
    {
      "name": "Wait 3s Follow",
      "tasks": ["StateTreeDebugTextTask", "StateTreeDelayTask"],
      "transitions": [
        {"trigger": "OnStateCompleted", "to_state": "Wait 3s Follow TooClose"},
        {"trigger": "OnStateCompleted", "to_state": "Follow"}
      ]
    },
    {
      "name": "Follow",
      "tasks": ["STT_Follow"],
      "transitions": [
        {"trigger": "OnStateSucceeded", "to_state": "Root"},
        {"trigger": "OnStateFailed", "to_state": "Wait 3s FailFollow"}
      ]
    }
  ]
  // [truncated] states: 2 of 9 elements; states[] fields omitted: conditions, enabled, state_type; keys omitted: 11 of 16
}

Resultado. states[].tasks lista las tareas de cada estado y states[].transitions[].to_state lista sus transiciones salientes.

Emisor Niagara

Solicitud. ¿Qué renderiza el emisor NE_ImpactCore de NS_ImpactGlass?

Antes. NS_ImpactGlass.uasset es binario.

Llamada. Editor cerrado.

{"name": "ue_manage_niagara", "arguments": {"operation": "get_emitter_details", "asset_name": "NS_ImpactGlass", "emitter_name": "NE_ImpactCore"}}

Salida. Tal como se devolvió; los cortes están marcados.

{
  "system_name": "NS_ImpactGlass",
  "emitter_name": "NE_ImpactCore",
  "emitter_data": {
    "loop_behavior": "Once",
    "renderer_count": 2,
    "renderers": [
      {"renderer_type": "NiagaraSpriteRendererProperties", "facing_mode": "FaceCamera"},
      {"renderer_type": "NiagaraSpriteRendererProperties", "facing_mode": "FaceCamera"}
    ],
    "data_interface_count": 2,
    "data_interfaces": [
      {"di_type": "NiagaraDataInterfaceArrayFloat3"},
      {"di_type": "NiagaraDataInterfaceArrayPosition"}
    ]
  }
  // [truncated] emitter_data.renderers[] fields omitted: 5 of 7; emitter_data.data_interfaces[] fields omitted: name; emitter_data fields omitted: 21 of 26; keys omitted: mode, operation, requested_path, success
}

Resultado. renderers[].renderer_type es la clase del renderizador y data_interfaces[].di_type es el tipo de interfaz de datos. ue_manage_niagara es Experimental.

Grafo de Animation Blueprint

Solicitud. ¿Qué tan grande es ABP_Mannequin_Base y qué esqueleto tiene como objetivo?

Antes. ABP_Mannequin_Base.uasset es binario.

Llamada. Editor cerrado.

{"name": "ue_manage_blueprint", "arguments": {"operation": "get_animgraph", "blueprint_name": "ABP_Mannequin_Base", "detail_level": "summary"}}

Salida. Tal como se devolvió; los cortes están marcados.

{
  "blueprint_name": "ABP_Mannequin_Base",
  "target_skeleton": "SK_Mannequin",
  "source": "metadata_category:anim_blueprints",
  "anim_graph_node_count": 138,
  "state_machine_count": 1,
  "pose_link_count": 25,
  "anim_node_types": {
    "anim_state": 10,
    "anim_state_transition": 27,
    "anim_blend_space": 3,
    "anim_linked_layer": 14
  }
  // [truncated] anim_node_types fields omitted: 15 of 19; keys omitted: 6 of 13
}

Resultado. target_skeleton nombra el esqueleto y anim_node_types cuenta los nodos del grafo por tipo. Aumenta detail_level para leer una máquina de estados individual.

PCG

Lyra no incluye ningún grafo PCG, por lo que PCG no se muestra aquí. ue_manage_pcg get_structure lee un grafo PCG con el Editor cerrado y es Experimental; se lista en la tabla de comparación a continuación.

Mock-up of a C2065 build failure, and of the same build succeeding after ue_fix_errors applied the include, module and interface change.

Maqueta, no una sesión capturada. Para C2065: 'UAbilitySystemComponent': identificador no declarado, ue_fix_errors agrega el #include, agrega GameplayAbilities a Build.cs y cambia a IAbilitySystemInterface.

Una sesión en Claude Code

Mock-up of a Claude Code session using ue_analyze_symbols, ue_generate_code and ue_fix_errors.

Maqueta de una sesión de Claude Code que llama a ue_analyze_symbols, luego a ue_generate_code, y luego a ue_fix_errors.

Requisitos

  • Windows de 64 bits
  • Un proyecto C++ de Unreal Engine 5.7 o 5.8. Los proyectos solo de Blueprint no son compatibles.
  • Visual Studio 2022 con las herramientas de compilación C++ de Unreal Engine
  • Un cliente MCP. Probado con Claude Code y Codex. Los clientes de IA son productos separados y pueden necesitar su propia suscripción.
  • Python y Node.js no son necesarios; el tiempo de ejecución es un ejecutable precompilado dentro del ZIP del plugin.

Instalación

Desde Fab. Instala NarshaADK desde la lista de Fab y habilita el plugin NarshaMCP en un proyecto C++.

Desde GitHub Releases

  1. Descarga el ZIP para tu versión del motor desde la última versión.
  2. Extrae el ZIP en YourProject/Plugins/. El ZIP ya contiene la carpeta NarshaMCP, por lo que el plugin aterriza en YourProject/Plugins/NarshaMCP/. Al actualizar, elimina primero la carpeta Plugins/NarshaMCP/ anterior y guarda una copia si es posible que quieras volver atrás.
  3. Compila el proyecto C++ una vez. La primera compilación ejecuta la configuración local y escribe la configuración MCP del proyecto, a menos que el plugin se haya instalado en modo solo plugin.
  4. Abre la sección AI Clients del panel local y confirma la conexión de Claude Code o Codex.
  5. Verifica desde el cliente: llama a ue_check_health. Devuelve status y version. El primer inicio indexa los PDB que produjo tu compilación. Mientras se construye el índice, las operaciones de símbolos devuelven "status": "symbol_index_loading", con un objeto progress una vez que se conoce el total; vuelve a llamar cuando termine. symbol_index_degraded_budget significa que un presupuesto de memoria limitó el índice, y esperar no lo aclara.

Conecta tu cliente MCP

La primera compilación escribe la configuración MCP del proyecto por ti. Si configuras un cliente a mano, apúntalo al tiempo de ejecución que se incluye dentro del plugin:

{
  "mcpServers": {
    "narshamcp": {
      "command": "<Project>/Plugins/NarshaMCP/Source/ThirdParty/bin/narshamcp.exe",
      "args": ["connect", "--project-path", "<Project>"],
      "env": { "RUST_LOG": "error" }
    }
  }
}
  • Claude Code: claude mcp add narshamcp -- "<Project>/Plugins/NarshaMCP/Source/ThirdParty/bin/narshamcp.exe" connect --project-path "<Project>"
  • Codex, en ~/.codex/config.toml, con barras diagonales en la ruta:
[mcp_servers.narshamcp]
command = "<Project>/Plugins/NarshaMCP/Source/ThirdParty/bin/narshamcp.exe"
args = ["connect", "--project-path", "<Project>"]

connect conecta el cliente al daemon en segundo plano del proyecto y lo inicia cuando no hay ninguno en ejecución. Los clientes que lanzan el servidor como un proceso directo, como Cursor, usan --stdio en lugar de connect.

Cómo funciona

CapaQué lee NarshaADK
Análisis de código fuenteCódigo fuente C++, con macros como UPROPERTY, UFUNCTION y DOREPLIFETIME resueltas
Índice de símbolos del compiladorLos datos de depuración PDB que produce tu compilación: jerarquías de clases, grafos de llamadas y búsquedas de símbolos
Análisis de activos binariosPaquetes .uasset, sin commandlets ni el Editor. Las operaciones que cambian activos necesitan un Editor en ejecución

El índice de símbolos se construye a partir de los PDB de tu propia compilación, por lo que cubre las clases de tu proyecto, y las del motor cuando los símbolos de depuración del motor están instalados. Necesita una compilación exitosa.

El Unreal MCP integrado en UE 5.8 se ejecuta dentro del Editor. NarshaMCP lee el proyecto desde el disco, por lo que el Editor puede estar cerrado, e indexa PDB para un grafo de llamadas C++. La tabla a continuación compara los dos lectura por lectura.

Lo que no puede hacer (aún)

  • Los assets cocinados no se pueden leer. El cocinado elimina el grafo de nodos del editor de los datos del juego empaquetado.
  • Los pines de datos de Blueprint se devuelven solo como conexiones; los valores no se evalúan. Solo se rastrea el orden de ejecución.
  • Los bordes latentes, asíncronos y de delegados se aproximan.
  • Los proyectos solo de Blueprint no son compatibles; se requiere un proyecto de C++.
  • Un Editor en ejecución es necesario para cada operación que crea o edita un asset, para la generación de actores, para las pruebas de automatización, para ue_fix_errors get_compiler_results, y para los nombres de nodos y bordes basados en nombres de ue_manage_material get_nodes. Las operaciones de lectura mencionadas en la tabla anterior se ejecutan con el Editor cerrado.
  • Una respuesta que supera el límite de tamaño en línea del runtime se devuelve como un detail_handle a un archivo local, que ue_cache_control resolve_detail_handle carga. Solicita una lectura más limitada, como un emisor o un limit, para obtener los datos en línea.

Hasta dónde lee, junto a otros servidores MCP de Unreal

Lo que cada servidor puede leer y entregar a un agente, y si esa lectura funciona con el Editor cerrado. ✅ lee los archivos del proyecto; el Editor nunca tiene que ejecutarse · ● en el Editor en ejecución (una decisión de diseño) · — no proporcionado · ? no confirmado en el pin mostrado · superíndice p = parcial.

Qué se leeNarshaADK
v0.13.7 · 2026-09-13
Unreal MCP (integrado en UE 5.8)
UE 5.8.0 · 2026-06-27
VibeUE
kevinpbuckley/VibeUE@0ea59b3 · 2026-09-20 (leído 2026-09-22)
unreal-mcp (sam-david)
sam-david/unreal-mcp@8b88ec3 · 2026-03-28 (leído 2026-09-22)
unreal-mcp (ZiggyMar)
ZiggyMar/unreal-mcp@d1a8539 · 2026-09-07 (leído 2026-09-22)
Lecturas con el Editor cerrado✅p●●✅p●
Grafos de Blueprint: nodos, pines, flujo de ejecución✅●●?●
Variables, funciones, componentes y valores predeterminados de Blueprint✅●p●●p●
Grafos y expresiones de materiales✅p●●●p●p
Sistemas, emisores y módulos de Niagara✅●●—●p
Grafos de PCG✅●———
Animation Blueprints, montajes y blend spaces✅●p●p—●p
DataTables, structs y enums✅●p●p—●
Widgets / árboles de UMG✅●●—●
Archivos de configuración y variables de consola✅p●●—●p
Jerarquía de clases: clases base y ascendencia✅●p●p●p●
Grafo de llamadas: llamadores y llamados✅———●p
Análisis de impacto de cambios✅●p●p●p●p
Errores de compilación y registros✅p●p●p✅p●
Trazas de Unreal Insights✅—●——
Referencias y dependencias de assets✅●—●●
Crear o modificar assets (escritura)●●●●●
Table of what each Unreal Engine MCP server can read, and whether the read works with the Editor closed.

Dónde van más allá otros servidores

Notas — qué cubre y qué no cubre cada marca - **Lecturas con el Editor cerrado — NarshaADK:** El análisis de activos binarios, el índice de símbolos del compilador, la configuración analizada y el análisis de registros de compilación se ejecutan con el Editor cerrado. Cuando una fila está marcada como parcial, la nota de esa fila indica qué no cubre la marca. Escribir activos, generar actores y ejecutar automatización requieren el Editor. Requiere un proyecto C++ y los PDB de una compilación exitosa; las lecturas de símbolos reflejan esa compilación hasta la siguiente. No se admiten activos cocinados. - **Lecturas con el Editor cerrado — Unreal MCP (integrado en UE 5.8):** Herramientas en proceso servidas por el Editor a través de HTTP. Esta columna es la única que no se lee de un repositorio: se midió enumerando los conjuntos de herramientas en vivo en un Editor en la versión del motor mostrada, y los conjuntos de herramientas se distribuyen detrás de complementos, por lo que un conjunto de herramientas ausente de esa enumeración está ausente de esa instalación, no del motor. - **Lecturas con el Editor cerrado — VibeUE:** Extiende el propio endpoint MCP del Editor; no hay servidor separado. - **Lecturas con el Editor cerrado — unreal-mcp (sam-david):** Un servidor independiente que envía Python al Editor a través de su ejecución remota integrada, con la API de Control Remoto como respaldo y un complemento puente opcional para comandos de gráficos; solo sus herramientas de compilación, que ejecutan la herramienta de compilación del motor como un proceso hijo y devuelven la salida del compilador analizada, leen con el Editor cerrado, mientras que las lecturas de activos, Blueprints, materiales, niveles y secuencias necesitan el Editor. - **Lecturas con el Editor cerrado — unreal-mcp (ZiggyMar):** Un servidor Node reenvía llamadas de herramientas a través de TCP local a un complemento C++ que se ejecuta dentro del Editor. Las herramientas de registro, código fuente C++ y compilación C++ leen archivos o ejecutan la compilación desde el proceso del servidor, pero localizan el proyecto preguntando primero a ese Editor. - **Gráficos de Blueprint: nodos, pines, flujo de ejecución — unreal-mcp (sam-david):** La herramienta de listado de nodos de gráficos reenvía a un complemento puente opcional cuyo código fuente no está en el repositorio en esta confirmación, y sin ese complemento devuelve un error; lo que devolvería el complemento no se pudo verificar. - **Variables, funciones, componentes y valores predeterminados de Blueprint — Unreal MCP (integrado en UE 5.8):** Las variables, funciones y valores predeterminados de Blueprint son lecturas nombradas; la enumeración no nombra ninguna lectura de la lista de componentes de un Blueprint, porque las unidades de componentes del conjunto de herramientas de Blueprint enlazan o listan eventos, y las unidades que leen componentes pertenecen al conjunto de herramientas de actores y toman un actor colocado. - **Variables, funciones, componentes y valores predeterminados de Blueprint — unreal-mcp (sam-david):** Su herramienta de información de Blueprint devuelve la clase padre y la lista de componentes, esta última recopilada generando un actor temporal; las variables, funciones y valores predeterminados no están entre los campos que su script lee, aunque la descripción de la herramienta los nombre. - **Gráficos y expresiones de materiales — NarshaADK:** Topología de nodos sin conexión y resumen de gráficos; bordes basados en nombres en vivo cuando el Editor se ejecuta. La herramienta de materiales es Experimental. - **Gráficos y expresiones de materiales — unreal-mcp (sam-david):** Lista los nodos de expresión de un material por nombre y clase; las conexiones entre expresiones no se leen de vuelta. - **Gráficos y expresiones de materiales — unreal-mcp (ZiggyMar):** Se leen los parámetros escalares, de color y textura expuestos de un material; el gráfico de expresiones en sí no tiene herramienta de lectura, solo la escritura que construye uno. - **Sistemas, emisores y módulos de Niagara — unreal-mcp (sam-david):** Las herramientas de Niagara generan sistemas y establecen, restablecen o reinicializan sus parámetros; ninguna lee los emisores o módulos de un sistema de vuelta. - **Sistemas, emisores y módulos de Niagara — unreal-mcp (ZiggyMar):** Se leen los emisores, si cada uno está deshabilitado y los parámetros de usuario; los módulos dentro de un emisor no. - **Gráficos de PCG — VibeUE:** No tiene servicio de PCG propio, y el conjunto de herramientas de PCG del motor está listado entre los no habilitados aquí; su documento de habilidades enruta PCG a través del scripting general de Python del motor, lo que no otorga ninguna marca para ningún servidor aquí. - **Gráficos de PCG — unreal-mcp (sam-david):** No hay herramienta de PCG entre los módulos que el servidor registra. - **Gráficos de PCG — unreal-mcp (ZiggyMar):** No hay herramienta de PCG entre las herramientas que registra; PCG solo es accesible delegando al servidor integrado del motor a través de una herramienta de paso, lo que no otorga ninguna marca aquí. - **Blueprints de animación, montajes y espacios de mezcla — Unreal MCP (integrado en UE 5.8):** Los conjuntos de herramientas enumerados de malla esquelética y activos de física devuelven esqueletos, huesos, sockets, objetivos de morph y cuerpos físicos; ninguno devuelve un gráfico de Blueprint de animación, las secciones de un montaje o un espacio de mezcla. - **Blueprints de animación, montajes y espacios de mezcla — VibeUE:** Los gráficos de Blueprint de animación y los montajes se leen en profundidad; un espacio de mezcla es solo una ruta de activo asignada a un nodo de jugador, nunca se lee de vuelta. - **Blueprints de animación, montajes y espacios de mezcla — unreal-mcp (sam-david):** El módulo de animación crea Blueprints de animación y montajes y lee la duración, el recuento de fotogramas y el esqueleto de una secuencia de animación; ninguna herramienta lee un gráfico de Blueprint de animación, las secciones de un montaje o un espacio de mezcla. - **Blueprints de animación, montajes y espacios de mezcla — unreal-mcp (ZiggyMar):** Las máquinas de estado, estados y condiciones de transición de Blueprint de animación tienen un lector dedicado; los montajes y espacios de mezcla no tienen ninguno propio y llegan a un agente solo como la configuración editable que devuelve el lector de activos simples. - **DataTables, estructuras y enums — Unreal MCP (integrado en UE 5.8):** Filas y esquema de DataTable, y un listado genérico de propiedades de objetos; su herramienta de estructura de filas busca tipos de fila, y el único enum leído nombrado en la enumeración está dentro del conjunto de herramientas de Niagara. - **DataTables, estructuras y enums — VibeUE:** Los enums y estructuras son leídos por su propio servicio; no existe un encabezado de servicio de DataTable en esta confirmación, y las lecturas de DataTable llegan a un agente a través del conjunto de herramientas de Epic en el endpoint que VibeUE extiende, por lo que se marcan en la columna del servidor integrado en lugar de aquí. - **DataTables, estructuras y enums — unreal-mcp (sam-david):** No hay herramienta de DataTable, estructura o enum entre los módulos que el servidor registra. - **Widgets / árboles de UMG — unreal-mcp (sam-david):** La única herramienta de widgets abre un Widget de Utilidad del Editor como pestaña; nada lee un árbol de widgets. - **Archivos de configuración y variables de consola — NarshaADK:** Los archivos de configuración se leen desde el disco en las capas del motor y del proyecto; las variables de consola se leen como declaraciones, valores predeterminados y banderas analizadas del código fuente del motor unidas a esas capas, no como los valores actuales de un motor en ejecución. - **Archivos de configuración y variables de consola — unreal-mcp (sam-david):** No hay lectura de INI o variables de consola entre los módulos que el servidor registra; la herramienta de complementos lee la lista de complementos del archivo del proyecto, y los comandos de consola pasan por una herramienta de comandos genérica que no otorga ninguna marca aquí. - **Archivos de configuración y variables de consola — unreal-mcp (ZiggyMar):** Lee el GameMode y mapa predeterminados del proyecto y sus asignaciones de entrada heredadas; ninguna herramienta lee archivos INI o variables de consola, y la herramienta de comandos de consola es una consola general en lugar de un lector de configuración. - **Jerarquía de clases: clases base y ascendencia — Unreal MCP (integrado en UE 5.8):** Una búsqueda de clases, una búsqueda de padre de Blueprint y una búsqueda de subclases; ninguna unidad enumerada devuelve la cadena de ascendencia de una clase. - **Jerarquía de clases: clases base y ascendencia — VibeUE:** Su servicio de Blueprint informa la clase padre propia de un Blueprint, y el listado de funciones sobreescribibles nombra la clase de la que proviene cada función; ningún servicio devuelve la cadena de ascendencia en sí, y ninguno informa una jerarquía de clases C++. - **Jerarquía de clases: clases base y ascendencia — unreal-mcp (sam-david):** La herramienta de información de Blueprint informa la clase padre directa de un Blueprint; no hay recorrido de ascendencia ni herramienta para una jerarquía de clases C++. - **Grafo de llamadas: llamadores y llamados — Unreal MCP (integrado en UE 5.8):** No hay herramienta de símbolos o grafo de llamadas entre los conjuntos de herramientas enumerados. - **Grafo de llamadas: llamadores y llamados — VibeUE:** No hay servicio de código fuente o símbolos entre sus encabezados, y las herramientas puente que descubren módulos, clases y funciones inspeccionan la API de Python del Editor en lugar de llamadores o llamados C++. - **Grafo de llamadas: llamadores y llamados — unreal-mcp (sam-david):** No hay módulo de código fuente o símbolos entre los que el servidor registra, por lo que los llamadores y llamados C++ no se leen. - **Grafo de llamadas: llamadores y llamados — unreal-mcp (ZiggyMar):** Cada sitio de llamada de Blueprint de una función, con si puede ejecutarse, y las llamadas ordenadas dentro de un gráfico se leen; las llamadas hechas desde código C++ no se rastrean. - **Análisis de impacto de cambios — Unreal MCP (integrado en UE 5.8):** Las lecturas de dependencias y referencias de activos y una búsqueda de subclases responden a qué alcanzaría un cambio en un activo o una clase; la enumeración no incluye un grafo de llamadas, por lo que el efecto de cambiar una función no está entre lo que informa. - **Análisis de impacto de cambios — VibeUE:** Una consulta de solo lectura lista cada selector de nodo de Behavior Tree vinculado a una clave de blackboard, para que un cambio de nombre o eliminación pueda evaluarse primero; ningún servicio informa qué afectaría un cambio en una clase o un activo. - **Análisis de impacto de cambios — unreal-mcp (sam-david):** Las lecturas de dependencias y referencias de activos responden a qué alcanzaría un cambio en un activo; nada entre sus herramientas registradas informa llamadores o llamados, por lo que el efecto de cambiar una función no está entre lo que informa. - **Análisis de impacto de cambios — unreal-mcp (ZiggyMar):** Las lecturas de referencias de activos y el rastreo de llamadas y variables de Blueprint en todo el proyecto responden a qué alcanzaría un cambio en un activo, un miembro de Blueprint o una función llamada desde Blueprints; las llamadas hechas desde código C++ no se rastrean, por lo que el efecto sobre otro código C++ no está entre lo que informa. - **Errores y registros de compilación — NarshaADK:** Los registros de compilación se detectan y analizan con el Editor cerrado; los resultados del compilador en vivo se leen desde un Editor en ejecución. - **Errores y registros de compilación — Unreal MCP (integrado en UE 5.8):** El conjunto de herramientas de registro enumerado devuelve entradas de registro del Editor; la enumeración no nombra ninguna herramienta de compilación o resultados del compilador, por lo que los mensajes del compilador llegan a un agente solo como líneas en ese registro. - **Errores y registros de compilación — VibeUE:** Una herramienta puente devuelve entradas de registro del Editor, su propio servicio de rendimiento lee el registro de vuelta como parte de un resumen de ejecución, y su servicio de Blueprint devuelve los mensajes del compilador de un Blueprint cuando lo compila; su ruta de compilación es un script de shell en lugar de una herramienta, por lo que la salida del compilador C++ no está entre lo que lee. - **Errores y registros de compilación — unreal-mcp (sam-david):** Su herramienta de compilación ejecuta la herramienta de compilación del motor como un proceso hijo con el Editor cerrado y devuelve los errores y advertencias del compilador analizados de esa salida, y una segunda herramienta analiza un registro de compilación que se le pasa; el registro propio del Editor no se lee. - **Trazas de Unreal Insights — Unreal MCP (integrado en UE 5.8):** No hay conjunto de herramientas de perfilado entre las herramientas enumeradas. - **Trazas de Unreal Insights — unreal-mcp (sam-david):** Las herramientas de perfilado inician y detienen una captura de traza o un perfil CSV y emiten comandos de estadísticas; ninguna lee una traza grabada de vuelta. - **Trazas de Unreal Insights — unreal-mcp (ZiggyMar):** No hay herramienta de perfilado o traza entre las herramientas que registra; la herramienta de comandos de consola puede emitir comandos de estadísticas, lo que no otorga ninguna marca aquí. - **Referencias y dependencias de activos — VibeUE:** Su propio servicio de activos cubre importación, exportación, eliminación y selección, y las referencias solo aparecen como el payload de rechazo de una eliminación intentada; las consultas de referencias y dependencias llegan a un agente a través del conjunto de herramientas de Epic en el endpoint que VibeUE extiende, por lo que se marcan en la columna del servidor integrado en lugar de aquí. - **Madurez de herramientas — NarshaADK:** Madurez de herramientas en esta versión: el análisis de símbolos es Producción; las herramientas de Blueprint, configuración, errores de compilación, búsqueda de activos y estructura de Sequencer son Beta; las herramientas de Material, Niagara, PCG e Insights son Experimentales, al igual que las herramientas de fotogramas clave, reproducción y pistas de Sequencer; las herramientas de Widget, Animación y diff de activos aún no tienen calificación de madurez.
La presencia de capacidades se mide a partir del código fuente público de cada proyecto de código abierto comparado, en la confirmación y fecha indicadas, de una enumeración en vivo del conjunto de herramientas del servidor integrado del motor en la versión del motor indicada, y para NarshaADK desde el registro de herramientas propio de este producto en la versión indicada. Comparados: servidores que publican su propia comparación con otro servidor MCP de Unreal o con el integrado del motor, además de ese servidor integrado como referencia; esto no cubre todos los servidores MCP de Unreal. No es una clasificación. Cuando la evidencia respalda una afirmación más limitada que la marca, una nota en el README lo indica. No está afiliado ni respaldado por Epic Games ni por los proyectos comparados. Las correcciones son bienvenidas en los Debates de este repositorio.

Versiones compatibles

Unreal EnginePaquete del plugin
UE 5.8NarshaMCP-v<version>-UE5.8-Release-RustMCP.zip
UE 5.7NarshaMCP-v<version>-UE5.7-Release-RustMCP.zip

Cada versión incluye estos archivos:

  • NarshaMCP-v<version>-UE5.7-Release-RustMCP.zip y NarshaMCP-v<version>-UE5.8-Release-RustMCP.zip son los mismos ZIPs del plugin enviados a Fab. Contienen el código fuente C++ de Unreal del plugin, que tu proyecto compila, y el runtime como un ejecutable precompilado. El código fuente del propio runtime no está incluido.
  • narshamcp-windows-x64.exe es el runtime independiente para Windows, byte-idéntico al runtime dentro de los ZIPs.

Las notas de cada versión listan el resumen SHA-256 de cada archivo. Los avisos de software de terceros se incluyen dentro del runtime: ejecuta narshamcp --licenses (o narshamcp --licenses-json).

Licencia

NarshaADK está licenciado bajo el Acuerdo de Licencia de Usuario Final de Fab (la "Licencia Estándar de Fab"). Las copias descargadas de este repositorio reciben los mismos términos directamente de Next Stage Inc.: el nivel Personal se aplica sin cargo si tú, junto con cualquier entidad controladora y cualquier entidad bajo control común contigo, no generaste más del umbral de ingresos de Fab por actividad comercial en la industria de contenido digital en los últimos 12 meses (USD 100,000 cuando se escribió esto; el EULA de Fab indica la cifra actual). Por encima de eso, se requiere una licencia Profesional adquirida a través del listado de Fab. LICENSE.md indica el umbral y los términos completos.

Soporte

La documentación y los ejemplos están en narshaadk.ai. Para hacer preguntas o informar problemas, usa el canal de soporte en el listado de Fab.

NarshaADK es construido y mantenido por Next Stage Inc.