NarshaADK (NarshaMCP)

O NarshaMCP é um servidor MCP para Unreal Engine. Ele é distribuído na Fab como NarshaADK. Ele analisa código-fonte C++, símbolos PDB e arquivos binários .uasset e serve o resultado via MCP. É testado com Claude Code e Codex. A maioria das leituras funciona a partir do disco com o Unreal Editor fechado; edições precisam do Editor.

Documentação

NarshaADK cover image

NarshaADK: Servidor MCP para Unreal Engine

NarshaMCP é um servidor MCP para Unreal Engine. Ele é distribuído na Fab como NarshaADK.

Ele analisa código-fonte C++, símbolos PDB e arquivos binários .uasset e serve o resultado via MCP. É testado com Claude Code e Codex. A maioria das leituras funciona a partir do disco com o Editor do Unreal fechado; edições precisam do Editor.

Obtenha na Fab · Última versão · Documentação

UE 5.7 UE 5.8 Early Access


Acesso Antecipado. Nomes de ferramentas, parâmetros e formatos de saída podem mudar entre versões.

O produto na Fab é chamado NarshaADK. A pasta do plugin instalado, o módulo de código e o executável em tempo de execução são chamados NarshaMCP.

O que você pode fazer

A maioria das ferramentas aceita um argumento operation. A tabela lista operações de leitura comuns. ue_tool_docs retorna todas as operações e seus parâmetros, e seu cliente lista as ferramentas em tools/list.

FerramentaRetornaOperações de leituraEditor fechadoMaturidade
ue_analyze_symbolsSímbolos, chamadores, chamados e hierarquia de classes dos PDBs do projeto; referências cruzadas C++/Blueprint correspondidas com os pacotes de Blueprintsearch_symbols, find_callers, find_callees, trace_hierarchy, find_cpp_to_bp, find_bp_to_cpp, impact_analysissimProdução
ue_manage_blueprintEventos, nós, variáveis e padrões, classe pai e AnimGraph de um asset Blueprintget_event_graph, get_raw_nodes, search_variables, get_variable_default, get_blueprint_metadata, list_blueprints, get_animgraphsim; edições precisam do EditorBeta
ue_fix_errorsErros do log de build correspondidos a uma correção: o #include ausente, o módulo Build.cs ausentescan_build_log, preflight, previewsim; build_and_fix executa um build, get_compiler_results precisa do EditorBeta
ue_manage_aiEstados, tarefas, transições e bindings de StateTree e Behavior Treeget_summary, get_structure, find_transitions, get_bindingssim; edições precisam do EditorProdução
ue_manage_materialTopologia de nós de material, resumo do grafo e hierarquia de instânciasget_graph_summary, get_nodes, get_hierarchy, search_materialssim; arestas baseadas em nome precisam do EditorExperimental
ue_manage_niagaraSistemas Niagara, emissores, renderizadores e parâmetrosget_emitter_details, get_structure, get_parameters, search_systemssimExperimental
ue_manage_pcgNós e fluxo do grafo PCGget_structure, trace_flow, find_nodes, search_graphssimExperimental
ue_search_assetsBusca de assets e linhas de DataTable; uma carga a frio do índice de referências pode persistir um cache no projetosearch, get_table, find_dependencies, find_references, find_impactsimBeta
ue_analyze_configValores de configuração entre camadas do engine e do projeto; declarações de variáveis de consolesearch_config, explain_config, explore_cvarsimBeta
ue_trace_executionUm caminho de execução por entrada, abilities, Blueprint e C++trace_execution_flow, trace_from_input, trace_ability_flow, trace_gameplay_tagsimBeta
ue_generate_codeEstruturas de classe C++ com macros Unreal e configuração de módulogenerate_classsim; retorna o conteúdo do arquivo para você salvarBeta
ue_grep, ue_glob, ue_readBusca de texto e nome em código-fonte, assets e configuraçãoum query, pattern ou identifier; sem operationsimExperimental

ue_check_health informa a versão do runtime e se os índices estão prontos.

Antes e depois

Cada exemplo mostra a solicitação, a chamada de ferramenta MCP e a resposta JSON. Capturado do NarshaMCP v0.13.7 no Epic's Lyra Starter Game (UE 5.8.1) com o Editor fechado. Valores como retornados; chaves removidas e elementos de array são marcados no bloco.

Referências cruzadas C++ e Blueprint

Solicitação. Quais Blueprints chamam StartRangedWeaponTargeting, qual C++ o GA_Weapon_Fire chama e o que deriva de ALyraCharacter?

Antes. grep -rn StartRangedWeaponTargeting encontra a declaração e a definição em C++. Os locais de chamada do Blueprint estão dentro de pacotes binários .uasset.

Chamada. Editor fechado.

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

Saída. Como retornado; cortes são 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
}

Chamada. Editor fechado.

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

Saída. Como retornado; cortes são 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
}

Chamada. Editor fechado.

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

Saída. Como retornado; cortes são 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 é o evento Blueprint que contém a chamada, e match_tier com confidence registra como o símbolo foi correspondido ao nó. descendants[].source é pdb para uma subclasse C++ e blueprint para uma de Blueprint.

Eventos, variáveis e nós de Blueprint

Solicitação. Quais eventos o GA_Weapon_Fire manipula, qual é o atraso de disparo e como um nó é conectado?

Antes. Content/Weapons/GA_Weapon_Fire.uasset é binário, e grep -rn FireDelayTimeSecs sobre o código-fonte não encontra nada: a variável existe apenas no asset.

Chamada. Editor fechado.

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

Saída. Como retornado; cortes são 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
}

Chamada. Editor fechado.

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

Saída. Como retornado; cortes são 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
}

Chamada. Editor fechado.

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

Saída. Como retornado; cortes são 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 e results[].default_value são lidos do .uasset. pins[].linked_to nomeia o nó e o pino ao qual cada pino se conecta; onde um id de nó se repete dentro de um asset, export_index identifica o endpoint.

Resumo do grafo de material

Solicitação. Como o M_TeamColorBasic é construído?

Antes. M_TeamColorBasic.uasset é binário; o grafo de expressões não está em nenhum arquivo de texto.

Chamada. Editor fechado.

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

Saída. Como retornado; cortes são 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. Com o Editor fechado, a resposta tem a contagem de nós, a contagem de conexões e o nó raiz de cada cadeia de saída. ue_manage_material é Experimental; com o Editor em execução, sua operação get_nodes adiciona nomes de nós e arestas baseadas em nome.

Estados e transições de StateTree

Solicitação. O que o StateTree L_STT_FollowPlayer faz?

Antes. L_STT_FollowPlayer.uasset é binário, e grep -rn L_STT_FollowPlayer sobre o código-fonte não encontra nada: nenhum código descreve esta árvore.

Chamada. Editor fechado.

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

Saída. Como retornado; cortes são 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 as tarefas de cada estado e states[].transitions[].to_state lista suas transições de saída.

Emissor Niagara

Solicitação. O que o emissor NE_ImpactCore do NS_ImpactGlass renderiza?

Antes. NS_ImpactGlass.uasset é binário.

Chamada. Editor fechado.

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

Saída. Como retornado; cortes são 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 é a classe do renderizador e data_interfaces[].di_type é o tipo de interface de dados. ue_manage_niagara é Experimental.

Grafo de Animation Blueprint

Solicitação. Qual é o tamanho do ABP_Mannequin_Base e qual skeleton ele usa como alvo?

Antes. ABP_Mannequin_Base.uasset é binário.

Chamada. Editor fechado.

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

Saída. Como retornado; cortes são 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 nomeia o skeleton e anim_node_types conta os nós do grafo por tipo. Aumente detail_level para ler uma única máquina de estados.

PCG

Lyra não inclui nenhum grafo PCG, então PCG não é mostrado aqui. ue_manage_pcg get_structure lê um grafo PCG com o Editor fechado e é Experimental; ele está listado na tabela de comparação abaixo.

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

Mock-up, não uma sessão capturada. Para C2065: 'UAbilitySystemComponent': identificador não declarado, ue_fix_errors adiciona o #include, adiciona GameplayAbilities ao Build.cs e muda para IAbilitySystemInterface.

Uma sessão no Claude Code

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

Mock-up de uma sessão do Claude Code que chama ue_analyze_symbols, depois ue_generate_code, depois ue_fix_errors.

Requisitos

  • Windows 64 bits
  • Um projeto C++ de Unreal Engine 5.7 ou 5.8. Projetos somente Blueprint não são suportados.
  • Visual Studio 2022 com as ferramentas de build C++ do Unreal Engine
  • Um cliente MCP. Testado com Claude Code e Codex. Clientes de IA são produtos separados e podem precisar de sua própria assinatura.
  • Python e Node.js não são necessários; o runtime é um executável pré-compilado dentro do ZIP do plugin.

Instalação

Da Fab. Instale o NarshaADK da listagem na Fab e habilite o plugin NarshaMCP em um projeto C++.

Das Releases do GitHub

  1. Baixe o ZIP para a versão do seu engine na última versão.
  2. Extraia o ZIP em YourProject/Plugins/. O ZIP já contém a pasta NarshaMCP, então o plugin fica em YourProject/Plugins/NarshaMCP/. Ao atualizar, remova a pasta Plugins/NarshaMCP/ anterior primeiro e mantenha uma cópia se quiser reverter.
  3. Compile o projeto C++ uma vez. O primeiro build executa a configuração local e grava a configuração MCP do projeto, a menos que o plugin tenha sido instalado no modo somente plugin.
  4. Abra a seção AI Clients do dashboard local e confirme a conexão com Claude Code ou Codex.
  5. Verifique pelo cliente: chame ue_check_health. Ele retorna status e version. A primeira inicialização indexa os PDBs que seu build produziu. Enquanto o índice está sendo construído, operações de símbolo retornam "status": "symbol_index_loading", com um objeto progress assim que o total for conhecido; chame novamente quando terminar. symbol_index_degraded_budget significa que um orçamento de memória limitou o índice, e esperar não o limpa.

Conecte seu cliente MCP

O primeiro build grava a configuração MCP do projeto para você. Se você configurar um cliente manualmente, aponte-o para o runtime que acompanha o 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, em ~/.codex/config.toml, com barras normais no caminho:
[mcp_servers.narshamcp]
command = "<Project>/Plugins/NarshaMCP/Source/ThirdParty/bin/narshamcp.exe"
args = ["connect", "--project-path", "<Project>"]

connect conecta o cliente ao daemon em segundo plano do projeto e o inicia quando nenhum está em execução. Clientes que iniciam o servidor como um processo direto, como Cursor, usam --stdio no lugar de connect.

Como funciona

CamadaO que o NarshaADK lê
Análise de código-fonteCódigo-fonte C++, com macros como UPROPERTY, UFUNCTION e DOREPLIFETIME resolvidas
Índice de símbolos do compiladorOs dados de depuração PDB que seu build produz: hierarquias de classes, grafos de chamadas e buscas de símbolos
Análise de assets bináriosPacotes .uasset, sem commandlets ou o Editor. Operações que alteram assets precisam de um Editor em execução

O índice de símbolos é construído a partir dos PDBs do seu próprio build, então ele cobre as classes do seu projeto, e as do engine quando os símbolos de depuração do engine estão instalados. Ele precisa de um build bem-sucedido.

O Unreal MCP embutido no UE 5.8 roda dentro do Editor. O NarshaMCP lê o projeto do disco, então o Editor pode estar fechado, e ele indexa PDBs para um grafo de chamadas C++. A tabela abaixo compara os dois, leitura por leitura.

O que ele não pode fazer (ainda)

  • Ativos cozidos (cooked) não podem ser lidos. O processo de cooking remove o grafo de nós do editor dos dados do jogo empacotado.
  • Os pinos de dados de Blueprints são retornados apenas como conexões; os valores não são avaliados. Apenas a ordem de execução é rastreada.
  • Arestas latentes, assíncronas e de delegate são aproximadas.
  • Projetos somente Blueprint não são suportados; um projeto C++ é obrigatório.
  • Um Editor em execução é necessário para toda operação que cria ou edita um ativo, para spawn de atores, para testes de automação, para ue_fix_errors get_compiler_results, e para os nomes de nós e arestas baseadas em nomes de ue_manage_material get_nodes. As operações de leitura listadas na tabela acima funcionam com o Editor fechado.
  • Uma resposta acima do limite de tamanho inline do runtime é retornada como um detail_handle para um arquivo local, que ue_cache_control resolve_detail_handle carrega. Solicite uma leitura mais restrita, como um emissor ou um limit, para obter os dados inline.

Até onde ele lê, em comparação com outros servidores MCP do Unreal

O que cada servidor pode ler e entregar a um agente, e se essa leitura funciona com o Editor fechado. ✅ lê os arquivos do projeto; o Editor nunca precisa ser executado · ● no Editor em execução (uma escolha de design) · — não fornecido · ? não confirmado no pino mostrado · sobrescrito p = parcial.

O que é lidoNarshaADK
v0.13.7 · 2026-09-13
Unreal MCP (integrado ao UE 5.8)
UE 5.8.0 · 2026-06-27
VibeUE
kevinpbuckley/VibeUE@0ea59b3 · 2026-09-20 (leitura em 2026-09-22)
unreal-mcp (sam-david)
sam-david/unreal-mcp@8b88ec3 · 2026-03-28 (leitura em 2026-09-22)
unreal-mcp (ZiggyMar)
ZiggyMar/unreal-mcp@d1a8539 · 2026-09-07 (leitura em 2026-09-22)
Leitura com o Editor fechado✅p●●✅p●
Grafos de Blueprint: nós, pinos, fluxo de execução✅●●?●
Variáveis, funções, componentes e padrões de Blueprint✅●p●●p●
Grafos e expressões de materiais✅p●●●p●p
Sistemas, emissores e módulos Niagara✅●●—●p
Grafos PCG✅●———
Animation Blueprints, montagens, blend spaces✅●p●p—●p
DataTables, structs, enums✅●p●p—●
Widgets / árvores UMG✅●●—●
Arquivos de configuração e variáveis de console✅p●●—●p
Hierarquia de classes: classes base e ancestralidade✅●p●p●p●
Grafo de chamadas: chamadores e chamados✅———●p
Análise de impacto de mudanças✅●p●p●p●p
Erros de build e logs✅p●p●p✅p●
Rastreamentos do Unreal Insights✅—●——
Referências e dependências de ativos✅●—●●
Criar ou modificar ativos (escrita)●●●●●
Table of what each Unreal Engine MCP server can read, and whether the read works with the Editor closed.

Onde outros servidores vão além

Notas — o que cada marca cobre e não cobre - **Leituras com o Editor fechado — NarshaADK:** A análise de ativos binários, o índice de símbolos do compilador, a análise de configuração e a análise de logs de build são executadas com o Editor fechado. Quando uma linha está marcada como parcial, a nota dessa própria linha indica o que a marca não cobre. A escrita de ativos, a criação de atores e a execução de automação exigem o Editor. Requer um projeto C++ e os PDBs de um build bem-sucedido; as leituras de símbolos refletem esse build até o próximo. Ativos cozidos não são suportados. - **Leituras com o Editor fechado — Unreal MCP (integrado ao UE 5.8):** Ferramentas em processo servidas pelo Editor via HTTP. Esta coluna é a única que não é lida de um repositório: foi medida enumerando os conjuntos de ferramentas ao vivo em um Editor na versão do mecanismo mostrada, e os conjuntos de ferramentas são distribuídos por trás de plugins, então um conjunto ausente dessa enumeração está ausente daquela instalação, não do mecanismo. - **Leituras com o Editor fechado — VibeUE:** Estende o endpoint MCP do próprio Editor; não há servidor separado. - **Leituras com o Editor fechado — unreal-mcp (sam-david):** Um servidor autônomo que envia Python ao Editor por meio de sua execução remota integrada, com a API de Controle Remoto como fallback e um plugin de ponte opcional para comandos de grafo; apenas suas ferramentas de build, que executam a ferramenta de build do mecanismo como um processo filho e retornam a saída do compilador analisada, leem com o Editor fechado, enquanto leituras de ativos, Blueprints, materiais, níveis e sequências exigem o Editor. - **Leituras com o Editor fechado — unreal-mcp (ZiggyMar):** Um servidor Node encaminha chamadas de ferramentas via TCP local para um plugin C++ em execução dentro do Editor. As ferramentas de log, código-fonte C++ e compilação C++ leem arquivos ou executam o build a partir do processo do servidor, mas localizam o projeto perguntando primeiro ao Editor. - **Grafos de Blueprint: nós, pinos, fluxo de execução — unreal-mcp (sam-david):** A ferramenta de listagem de nós de grafo encaminha para um plugin de ponte opcional cujo código-fonte não está no repositório neste commit, e sem esse plugin ela retorna um erro; o que o plugin retornaria não pôde ser verificado. - **Variáveis, funções, componentes e padrões de Blueprint — Unreal MCP (integrado ao UE 5.8):** Variáveis, funções e padrões de Blueprint são leituras nomeadas; a enumeração não nomeia nenhuma leitura da lista de componentes de um Blueprint, porque as unidades de componentes do conjunto de ferramentas de Blueprint vinculam ou listam eventos, e as unidades que leem componentes pertencem ao conjunto de ferramentas de atores e exigem um ator colocado. - **Variáveis, funções, componentes e padrões de Blueprint — unreal-mcp (sam-david):** Sua ferramenta de informações de Blueprint retorna a classe pai e a lista de componentes, esta última obtida criando um ator temporário; variáveis, funções e padrões não estão entre os campos que seu script lê, embora a descrição da ferramenta os nomeie. - **Grafos e expressões de material — NarshaADK:** Topologia de nós offline e resumo do grafo; arestas baseadas em nomes ao vivo quando o Editor está em execução. A ferramenta de material é Experimental. - **Grafos e expressões de material — unreal-mcp (sam-david):** Lista os nós de expressão de um material por nome e classe; conexões entre expressões não são lidas de volta. - **Grafos e expressões de material — unreal-mcp (ZiggyMar):** Os parâmetros escalares, de cor e de textura expostos de um material são lidos; o grafo de expressões em si não tem ferramenta de leitura, apenas a escrita que constrói um. - **Sistemas, emissores e módulos Niagara — unreal-mcp (sam-david):** As ferramentas Niagara criam sistemas e definem, redefinem ou reinicializam seus parâmetros; nenhuma lê os emissores ou módulos de um sistema de volta. - **Sistemas, emissores e módulos Niagara — unreal-mcp (ZiggyMar):** Emissores, se cada um está desabilitado, e os parâmetros do usuário são lidos; os módulos dentro de um emissor não são. - **Grafos PCG — VibeUE:** Nenhum serviço PCG próprio, e o conjunto de ferramentas PCG do mecanismo está listado entre os não habilitados aqui; seu documento de habilidades roteia PCG através do script Python geral do mecanismo, o que não rende marca para nenhum servidor aqui. - **Grafos PCG — unreal-mcp (sam-david):** Nenhuma ferramenta PCG entre os módulos que o servidor registra. - **Grafos PCG — unreal-mcp (ZiggyMar):** Nenhuma ferramenta PCG entre as ferramentas que registra; PCG é acessível apenas delegando ao servidor integrado do mecanismo através de uma ferramenta de passagem, o que não rende marca aqui. - **Blueprints de Animação, montagens, blend spaces — Unreal MCP (integrado ao UE 5.8):** Os conjuntos de ferramentas enumerados de malha esquelética e ativos de física retornam esqueletos, ossos, soquetes, alvos de morph e corpos físicos; nenhum deles retorna um grafo de Blueprint de Animação, as seções de uma montagem ou um blend space. - **Blueprints de Animação, montagens, blend spaces — VibeUE:** Grafos de Blueprint de Animação e montagens são lidos em profundidade; um blend space é apenas um caminho de ativo atribuído a um nó de jogador, nunca lido de volta. - **Blueprints de Animação, montagens, blend spaces — unreal-mcp (sam-david):** O módulo de animação cria Blueprints de Animação e montagens e lê a duração, a contagem de quadros e o esqueleto de uma sequência de animação; nenhuma ferramenta lê um grafo de Blueprint de Animação, as seções de uma montagem ou um blend space. - **Blueprints de Animação, montagens, blend spaces — unreal-mcp (ZiggyMar):** Máquinas de estado, estados e condições de transição de Blueprint de Animação têm um leitor dedicado; montagens e blend spaces não têm nenhum próprio e alcançam um agente apenas como as configurações editáveis que o leitor de ativos simples retorna. - **DataTables, structs, enums — Unreal MCP (integrado ao UE 5.8):** Linhas e esquema de DataTable, e uma listagem genérica de propriedades de objeto; sua ferramenta de struct de linha pesquisa tipos de linha, e a única leitura de enum nomeada na enumeração está dentro do conjunto de ferramentas Niagara. - **DataTables, structs, enums — VibeUE:** Enums e structs são lidos por seu próprio serviço; nenhum cabeçalho de serviço DataTable existe neste commit, e leituras de DataTable alcançam um agente através do conjunto de ferramentas da Epic no endpoint que o VibeUE estende, então são marcadas na coluna do servidor integrado, não aqui. - **DataTables, structs, enums — unreal-mcp (sam-david):** Nenhuma ferramenta de DataTable, struct ou enum entre os módulos que o servidor registra. - **Widgets / árvores UMG — unreal-mcp (sam-david):** A única ferramenta de widget abre um Widget de Utilitário do Editor como uma aba; nada lê uma árvore de widgets. - **Arquivos de configuração e variáveis de console — NarshaADK:** Arquivos de configuração são lidos do disco nas camadas do mecanismo e do projeto; variáveis de console são lidas como declarações, padrões e flags analisados do código-fonte do mecanismo unido a essas camadas, não como valores atuais de um mecanismo em execução. - **Arquivos de configuração e variáveis de console — unreal-mcp (sam-david):** Nenhuma leitura de INI ou variável de console entre os módulos que o servidor registra; a ferramenta de plugin lê a lista de plugins do arquivo do projeto, e comandos de console passam por uma ferramenta de comando genérica que não rende marca aqui. - **Arquivos de configuração e variáveis de console — unreal-mcp (ZiggyMar):** Lê o GameMode padrão do projeto, o mapa e seus mapeamentos de entrada legados; nenhuma ferramenta lê arquivos INI ou variáveis de console, e a ferramenta de comando de console é um console geral, não um leitor de configuração. - **Hierarquia de classes: classes base e ancestralidade — Unreal MCP (integrado ao UE 5.8):** Uma busca de classe, uma busca de pai de Blueprint e uma busca de subclasse; nenhuma unidade enumerada retorna a cadeia de ancestralidade de uma classe. - **Hierarquia de classes: classes base e ancestralidade — VibeUE:** Seu serviço de Blueprint relata a classe pai de um Blueprint, e a listagem de funções substituíveis nomeia a classe de onde cada função vem; nenhum serviço retorna a cadeia de ancestralidade em si, e nenhum relata uma hierarquia de classes C++. - **Hierarquia de classes: classes base e ancestralidade — unreal-mcp (sam-david):** A ferramenta de informações de Blueprint relata a classe pai direta de um Blueprint; não há caminhada de ancestralidade e nenhuma ferramenta para hierarquia de classes C++. - **Grafo de chamadas: chamadores e chamados — Unreal MCP (integrado ao UE 5.8):** Nenhuma ferramenta de símbolo ou grafo de chamadas entre os conjuntos de ferramentas enumerados. - **Grafo de chamadas: chamadores e chamados — VibeUE:** Nenhum serviço de código-fonte ou símbolo entre seus cabeçalhos, e as ferramentas em ponte que descobrem módulos, classes e funções inspecionam a API Python do Editor em vez de chamadores ou chamados C++. - **Grafo de chamadas: chamadores e chamados — unreal-mcp (sam-david):** Nenhum módulo de código-fonte ou símbolo entre os que o servidor registra, então chamadores e chamados C++ não são lidos. - **Grafo de chamadas: chamadores e chamados — unreal-mcp (ZiggyMar):** Cada ponto de chamada de Blueprint de uma função, com se pode ser executado, e as chamadas ordenadas dentro de um grafo são lidos; chamadas feitas a partir de código C++ não são rastreadas. - **Análise de impacto de mudanças — Unreal MCP (integrado ao UE 5.8):** Leituras de dependência e referência de ativos e uma busca de subclasse respondem o que uma mudança em um ativo ou classe alcançaria; a enumeração não carrega grafo de chamadas, então o efeito de mudar uma função não está entre o que ela relata. - **Análise de impacto de mudanças — VibeUE:** Uma consulta somente leitura lista cada seletor de nó de Behavior Tree vinculado a uma chave de blackboard, para que uma renomeação ou remoção possa ser avaliada primeiro; nenhum serviço relata o que uma mudança em uma classe ou ativo afetaria. - **Análise de impacto de mudanças — unreal-mcp (sam-david):** Leituras de dependência e referência de ativos respondem o que uma mudança em um ativo alcançaria; nada entre suas ferramentas registradas relata chamadores ou chamados, então o efeito de mudar uma função não está entre o que ela relata. - **Análise de impacto de mudanças — unreal-mcp (ZiggyMar):** Leituras de referência de ativos e rastreamento de chamadas e variáveis de Blueprint em todo o projeto respondem o que uma mudança em um ativo, um membro de Blueprint ou uma função chamada de Blueprints alcançaria; chamadas feitas a partir de código C++ não são rastreadas, então o efeito sobre outro código C++ não está entre o que ela relata. - **Erros e logs de build — NarshaADK:** Logs de build são detectados e analisados com o Editor fechado; resultados ao vivo do compilador são lidos de um Editor em execução. - **Erros e logs de build — Unreal MCP (integrado ao UE 5.8):** O conjunto de ferramentas de log enumerado retorna entradas de log do Editor; a enumeração não nomeia nenhuma ferramenta de build ou resultados de compilador, então mensagens do compilador alcançam um agente apenas como linhas nesse log. - **Erros e logs de build — VibeUE:** Uma ferramenta em ponte retorna entradas de log do Editor, seu próprio serviço de desempenho lê o log de volta como parte de um resumo de execução, e seu serviço de Blueprint retorna mensagens do compilador de um Blueprint quando o compila; seu caminho de build é um script de shell em vez de uma ferramenta, então a saída do compilador C++ não está entre o que ele lê. - **Erros e logs de build — unreal-mcp (sam-david):** Sua ferramenta de build executa a ferramenta de build do mecanismo como um processo filho com o Editor fechado e retorna os erros e avisos do compilador analisados dessa saída, e uma segunda ferramenta analisa um log de build passado a ela; o log do próprio Editor não é lido. - **Rastreamentos do Unreal Insights — Unreal MCP (integrado ao UE 5.8):** Nenhum conjunto de ferramentas de perfilagem entre as ferramentas enumeradas. - **Rastreamentos do Unreal Insights — unreal-mcp (sam-david):** As ferramentas de perfilagem iniciam e param uma captura de rastreamento ou um perfil CSV e emitem comandos stat; nenhuma lê um rastreamento gravado de volta. - **Rastreamentos do Unreal Insights — unreal-mcp (ZiggyMar):** Nenhuma ferramenta de perfilagem ou rastreamento entre as ferramentas que registra; a ferramenta de comando de console pode emitir comandos stat, o que não rende marca aqui. - **Referências e dependências de ativos — VibeUE:** Seu próprio serviço de ativos cobre importação, exportação, exclusão e seleção, e referenciadores aparecem apenas como o payload de recusa de uma tentativa de exclusão; as consultas de referência e dependência alcançam um agente através do conjunto de ferramentas da Epic no endpoint que o VibeUE estende, então são marcadas na coluna do servidor integrado, não aqui. - **Maturidade das ferramentas — NarshaADK:** Maturidade das ferramentas nesta versão: análise de símbolos é Production; as ferramentas de Blueprint, configuração, erro de build, busca de ativos e estrutura de Sequencer são Beta; as ferramentas de Material, Niagara, PCG e Insights são Experimental, assim como as ferramentas de keyframe, reprodução e trilhas de Sequencer; as ferramentas de Widget, Animação e diff de ativos ainda não têm classificação de maturidade.
Capacidade medida a partir do código-fonte público de cada projeto de código aberto comparado, no commit e na data indicados, a partir de uma enumeração ao vivo do conjunto de ferramentas do servidor integrado do motor na versão do motor indicada e, para o NarshaADK, a partir do registro de ferramentas deste produto na versão indicada. Comparados: servidores que publicam sua própria comparação com outro servidor MCP do Unreal ou com o servidor integrado do motor, além desse servidor integrado como linha de base; isso não cobre todos os servidores MCP do Unreal. Não é um ranking. Quando as evidências sustentam uma afirmação mais restrita do que a marca, uma nota no README informa isso. Não é afiliado ou endossado pela Epic Games ou pelos projetos comparados. Correções são bem-vindas nas Discussões deste repositório.

Versões suportadas

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

Cada versão inclui estes arquivos:

  • NarshaMCP-v<version>-UE5.7-Release-RustMCP.zip e NarshaMCP-v<version>-UE5.8-Release-RustMCP.zip são os mesmos ZIPs do plugin enviados à Fab. Eles contêm o código-fonte C++ do Unreal do plugin, que seu projeto compila, e o runtime como um executável pré-compilado. O código-fonte do próprio runtime não está incluído.
  • narshamcp-windows-x64.exe é o runtime Windows autônomo, byte idêntico ao runtime dentro dos ZIPs.

As notas de cada versão listam o resumo SHA-256 de cada arquivo. Os avisos de software de terceiros acompanham o runtime: execute narshamcp --licenses (ou narshamcp --licenses-json).

Licença

O NarshaADK é licenciado sob o Contrato de Licença de Usuário Final da Fab (a "Licença Padrão da Fab"). As cópias baixadas deste repositório recebem os mesmos termos diretamente da Next Stage Inc.: o nível Pessoal se aplica sem custo se você, juntamente com qualquer entidade controladora e qualquer entidade sob controle comum com você, não gerou mais do que o limite de receita da Fab com atividade comercial na indústria de conteúdo digital nos últimos 12 meses (USD 100.000 quando isto foi escrito; o EULA da Fab informa o valor atual). Acima disso, é necessária uma licença Profissional adquirida por meio da listagem na Fab. O LICENSE.md informa o limite e os termos completos.

Suporte

Documentação e exemplos estão em narshaadk.ai. Para fazer perguntas ou relatar problemas, use o canal de suporte na listagem na Fab.

O NarshaADK é desenvolvido e mantido pela Next Stage Inc.