Servidor MCP para UE5
# Servidor MCP para UE5
[](tests/) [](vitest.config.js) [](package.json) [](LICENSE)
Um servidor MCP (Model Context Protocol) que conecta assistentes de IA ao editor do Unreal Engine 5, permitindo manipular diretamente níveis, atores, Blueprints e Animation Blueprints.
## Por que um repositório independente?
Este servidor MCP fazia originalmente parte do plugin [Martins Unreal Claude](https://github.com/SilvaneiMartins/MartinsUrealClaude), mas foi transferido para um repositório próprio porque:
1. **Escopo ampliado:** o protocolo MCP é um padrão aberto, hoje compatível com vários provedores de IA.
2. **Forks mais simples:** desenvolvedores podem adaptar a ponte para outros serviços de IA sem precisar obter o plugin inteiro do Unreal.
3. **Contribuições da comunidade:** um repositório independente facilita receber contribuições de novos recursos, correções de bugs e suporte a outros clientes MCP.
## Clientes de IA compatíveis
Este servidor usa o padrão [Model Context Protocol](https://modelcontextprotocol.io/) e funciona com **qualquer cliente compatível com MCP**, incluindo:
- **Claude Code** (CLI)
- **Aplicativo Claude Desktop**
- **OpenAI ChatGPT Desktop** (suporte a MCP adicionado em março de 2025)
- **Cursor** (ambiente de desenvolvimento com IA)
- **Replit** (plataforma de programação com IA)
- **Sourcegraph Cody**
- **Windsurf**
- **E qualquer outra ferramenta compatível com MCP**
O protocolo foi [doado à Linux Foundation](https://en.wikipedia.org/wiki/Model_Context_Protocol) em dezembro de 2025 e continua sendo amplamente adotado pela indústria de IA.
---
## Importante: o que esta ferramenta é — e o que não é
**Esta NÃO é uma ferramenta de “texto para jogo”.** Ela não gera modelos 3D, texturas ou animações, nem substitui o trabalho de artistas, animadores e criadores de assets.
**Esta ferramenta acelera o fluxo de trabalho** de quem desenvolve com Unreal Engine. Ela ajuda a:
- **Reduzir tarefas repetitivas de configuração:** criar a estrutura inicial de Blueprints, configurar máquinas de estado e vinculações de entrada.
- **Automatizar tarefas repetitivas no editor:** gerar atores, definir propriedades e organizar níveis usando linguagem natural.
- **Prototipar rapidamente:** testar ideias descrevendo o que você quer, em vez de navegar pelos menus.
- **Aprender UE5:** consultar a documentação integrada da API durante o trabalho.
O objetivo é acelerar as partes mais tediosas do desenvolvimento de jogos para que você possa se concentrar no trabalho criativo que realmente importa.
---
## Requisitos
- **Node.js** 18.0.0 ou superior
- Um endpoint HTTP que implemente a API REST esperada (padrão: `http://localhost:3000`)
> **Observação:** este servidor MCP foi desenvolvido para funcionar com o [plugin Martins Unreal Claude](https://github.com/SilvaneiMartins/MartinsUrealClaude), mas pode ser adaptado para outros back-ends HTTP que implementem a mesma API.
## Início rápido
### 1. Instalação
```bash
git clone https://github.com/SilvaneiMartins/ue5-mcp-bridge-martins.git
cd ue5-mcp-bridge-martins
npm install
```
### 2. Configure seu cliente MCP
Adicione a configuração a seguir à configuração do seu cliente MCP:
**Claude Code** (`~/.claude/settings.json`):
```json
{
"mcpServers": {
"unreal": {
"command": "node",
"args": ["/path/to/ue5-mcp-bridge-martins/index.js"],
"env": {
"UNREAL_MCP_URL": "http://localhost:3000"
}
}
}
}
```
**Claude Desktop** (`claude_desktop_config.json`):
```json
{
"mcpServers": {
"unreal": {
"command": "node",
"args": ["/path/to/ue5-mcp-bridge-martins/index.js"],
"env": {
"UNREAL_MCP_URL": "http://localhost:3000"
}
}
}
}
```
**Outros clientes MCP:** consulte a documentação do seu cliente para configurar um servidor MCP. Este servidor usa transporte stdio.
### 3. Use o servidor
Depois de conectar, você pode interagir com o Unreal Editor usando linguagem natural:
```text
"Crie um Point Light na posição 0, 0, 500"
"Liste todos os StaticMeshActors do nível"
"Crie um novo Actor Blueprint chamado BP_Enemy"
"Adicione uma variável float chamada Health ao BP_Player"
"Crie uma máquina de estado chamada Locomotion no meu Animation Blueprint"
```
---
## Ferramentas disponíveis
### Conexão e contexto
| Ferramenta | Descrição |
|------------|-----------|
| `unreal_status` | Verifica a conexão com o Unreal Editor |
| `unreal_get_ue_context` | Obtém a documentação da API do UE 5.7 por categoria ou consulta |
### Níveis e atores
| Ferramenta | Descrição |
|------------|-----------|
| `unreal_open_level` | Abre, cria ou lista mapas de nível no editor |
| `unreal_spawn_actor` | Gera atores no nível |
| `unreal_get_level_actors` | Lista os atores do nível atual |
| `unreal_set_property` | Define propriedades de atores |
| `unreal_move_actor` | Move, gira ou redimensiona atores |
| `unreal_delete_actors` | Exclui atores do nível |
| `unreal_run_console_command` | Executa comandos do console do Unreal |
| `unreal_get_output_log` | Obtém as entradas recentes do Output Log |
### Assets
| Ferramenta | Descrição |
|------------|-----------|
| `unreal_asset_search` | Pesquisa assets por classe, caminho ou nome |
| `unreal_asset_dependencies` | Obtém todos os assets dos quais um asset depende |
| `unreal_asset_referencers` | Obtém todos os assets que fazem referência a um asset |
### Execução de scripts
| Ferramenta | Descrição |
|------------|-----------|
| `unreal_execute_script` | Executa scripts C++, Python ou de console |
| `unreal_cleanup_scripts` | Remove scripts gerados |
| `unreal_get_script_history` | Obtém o histórico de execução dos scripts |
### Viewport
| Ferramenta | Descrição |
|------------|-----------|
| `unreal_capture_viewport` | Captura uma imagem da viewport ativa |
### Blueprints
| Ferramenta | Descrição |
|------------|-----------|
| `unreal_blueprint_query` | Consulta informações de Blueprints (`list`, `inspect`, `get_graph`) |
| `unreal_blueprint_modify` | Modifica Blueprints: cria, adiciona variáveis e funções, nós e conecta pinos |
### Animation Blueprints
| Ferramenta | Descrição |
|------------|-----------|
| `unreal_anim_blueprint_modify` | Oferece controle completo sobre Animation Blueprints |
### Personagens
| Ferramenta | Descrição |
|------------|-----------|
| `unreal_character` | Consulta e modifica atores `ACharacter` do nível atual |
| `unreal_character_data` | Cria e gerencia DataAssets de configuração de personagens e DataTables de atributos |
### Materiais
| Ferramenta | Descrição |
|------------|-----------|
| `unreal_material` | Cria e atribui instâncias de materiais a Skeletal Meshes |
### Enhanced Input
| Ferramenta | Descrição |
|------------|-----------|
| `unreal_enhanced_input` | Cria e modifica assets do Enhanced Input (`InputAction`, `InputMappingContext`) |
### Fila de tarefas assíncronas
| Ferramenta | Descrição |
|------------|-----------|
| `unreal_task_submit` | Envia uma ferramenta MCP para execução assíncrona em segundo plano |
| `unreal_task_status` | Verifica o estado de uma tarefa assíncrona enviada |
| `unreal_task_result` | Obtém o resultado de uma tarefa concluída |
| `unreal_task_list` | Lista todas as tarefas assíncronas |
| `unreal_task_cancel` | Cancela uma tarefa em execução |
---
## Operações com Animation Blueprints
A ferramenta `unreal_anim_blueprint_modify` oferece controle abrangente sobre Animation Blueprints:
### Operações com máquinas de estado
| Operação | Descrição |
|----------|-----------|
| `get_info` | Obtém uma visão geral da estrutura do AnimBlueprint |
| `get_state_machine` | Obtém informações detalhadas da máquina de estado |
| `create_state_machine` | Cria uma máquina de estado |
| `add_state` | Adiciona um estado à máquina de estado |
| `remove_state` | Remove um estado |
| `set_entry_state` | Define o estado inicial da máquina de estado |
| `connect_state_machine_to_output` | Conecta a máquina de estado à saída de pose do AnimGraph |
### Operações com transições
| Operação | Descrição |
|----------|-----------|
| `add_transition` | Cria uma transição entre estados |
| `remove_transition` | Remove uma transição |
| `set_transition_duration` | Define a duração da mesclagem |
| `set_transition_priority` | Define a prioridade de avaliação |
### Grafo de condições de transição
| Operação | Descrição |
|----------|-----------|
| `add_condition_node` | Adiciona um nó lógico (`TimeRemaining`, `Greater`, `Less`, `And`, `Or`, `Not`, `GetVariable`) |
| `delete_condition_node` | Remove um nó do grafo de transição |
| `connect_condition_nodes` | Conecta nós no grafo de condições |
| `connect_to_result` | Conecta uma condição ao resultado da transição |
### Inspeção de nós e pinos
| Operação | Descrição |
|----------|-----------|
| `get_transition_nodes` | Lista os nós de todos os grafos de transição e seus pinos |
| `inspect_node_pins` | Obtém detalhes dos pinos: tipos, conexões e valores padrão |
| `set_pin_default_value` | Define o valor padrão de um pino com validação de tipo |
| `add_comparison_chain` | Adiciona uma cadeia `GetVariable -> Comparison -> Result` |
| `validate_blueprint` | Retorna o estado da compilação e os diagnósticos |
### Atribuição de animações
| Operação | Descrição |
|----------|-----------|
| `set_state_animation` | Atribui um `AnimSequence`, `BlendSpace`, `BlendSpace1D` ou `Montage` |
| `find_animations` | Pesquisa assets de animação compatíveis |
### Operações em lote
| Operação | Descrição |
|----------|-----------|
| `batch` | Executa várias operações atomicamente |
---
## Sistema de contexto do UE 5.7
O servidor inclui documentação integrada da API do UE 5.7 que pode ser consultada:
### Categorias disponíveis
| Categoria | Descrição |
|-----------|-----------|
| `animation` | Animation Blueprint, máquinas de estado, transições e `UAnimInstance` |
| `blueprint` | Grafos de Blueprint, `UK2Node` e `FBlueprintEditorUtils` |
| `slate` | Widgets Slate, `SNew`/`SAssignNew` e padrões de layout |
| `actor` | Geração de atores, componentes, transformações e iteração |
| `assets` | Carregamento de assets, `TSoftObjectPtr`, `FStreamableManager` e carregamento assíncrono |
| `replication` | Replicação de rede, RPCs, `DOREPLIFETIME` e `OnRep` |
| `enhanced_input` | Sistema Enhanced Input, ações de entrada e contextos de mapeamento |
| `character` | Movimento, configuração e atributos de personagens |
| `material` | Instâncias de materiais, parâmetros e slots |
### Uso
```json
// Obter uma categoria específica
{ "category": "animation" }
// Pesquisar por palavras-chave
{ "query": "state machine transitions" }
// Listar todas as categorias
{}
```
### Injeção automática de contexto
Ative a injeção automática de contexto definindo:
```json
{
"env": {
"INJECT_CONTEXT": "true"
}
}
```
---
## Configuração
| Variável de ambiente | Padrão | Descrição |
|----------------------|--------|-----------|
| `UNREAL_MCP_URL` | `http://localhost:3000` | URL do servidor HTTP do plugin do Unreal |
| `MCP_REQUEST_TIMEOUT_MS` | `30000` | Tempo limite da solicitação, em milissegundos |
| `INJECT_CONTEXT` | `false` | Injeta automaticamente o contexto do UE5 nas respostas das ferramentas |
| `DEBUG` | - | Habilita o registro de depuração |
---
## Solução de problemas
### As ferramentas exibem “NOT CONNECTED”
- Verifique se o back-end HTTP está em execução e acessível.
- Confirme se a variável de ambiente `UNREAL_MCP_URL` aponta para o endpoint correto.
- Confira se o endpoint responde em `/mcp/status`.
### Erros de stdin/stdout
- Verifique se o Node.js 18 ou superior está instalado e disponível no `PATH`.
- Execute `npm install` para instalar as dependências.
- Confirme se o caminho na configuração do cliente MCP aponta para o `index.js` correto.
### Executar a suíte de testes
Este repositório inclui uma suíte de testes Vitest (87 testes) que valida o comportamento da ponte sem precisar de uma instância do Unreal Editor em execução:
```bash
npm install
npm test # executa todos os testes
npm run test:watch # executa em modo de observação
npm run test:coverage # executa com relatório de cobertura
```
Os testes simulam o servidor HTTP do Unreal e cobrem a conversão de esquemas, a lógica do cliente HTTP, o carregamento de contexto, a listagem de ferramentas e o roteamento de chamadas.
---
## Contribuição
Contribuições são bem-vindas! Você pode:
- Adicionar suporte a configurações de outros clientes MCP.
- Melhorar a documentação de contexto do UE5.
- Corrigir bugs ou adicionar recursos.
- Enviar melhorias para a documentação.
---
## Licença
MIT com requisito de atribuição — consulte [LICENSE](LICENSE) para obter os detalhes.
**Créditos originais exigidos pela licença:** este projeto deriva do UE5 MCP Server original. A licença exige que os seguintes créditos sejam mantidos:
- Projeto original: UE5 MCP Server
- Repositório original: https://github.com/SilvaneiMartins/ue5-mcp-bridge-martins
**Divulgação exigida:** se você usar este código em outro servidor MCP ou integração de IA, informe esse uso na documentação do seu projeto.
---
## Links relacionados
- [Plugin Martins Unreal Claude](https://github.com/SilvaneiMartins/MartinsUrealClaude) — plugin do Unreal Engine que fornece o back-end HTTP para este servidor MCP.
- [Model Context Protocol](https://modelcontextprotocol.io/) — especificação do protocolo.
- [GitHub do MCP](https://github.com/modelcontextprotocol) — repositórios e SDKs oficiais.
TDQS
Scored across 1 tool
With a single tool there is nothing to confuse it with, so misselection is impossible. It loses a point only because a lone status probe offers no sibling actions against which clarity of purpose can actually be demonstrated.
unreal_status follows a clear snake_case, domain-prefixed convention that matches the server identity. One tool cannot break consistency, and the naming style establishes a readable baseline for expansion.
A single tool is a severe mismatch for a server whose stated purpose is acting as an MCP control surface for Unreal Engine 5. A read-only connection check cannot fulfill a domain that inherently requires level, actor, asset, and editor operations.
The only capability is reporting whether the editor is running, with no way to start the editor, query a project, spawn actors, or perform any UE5 operation. Every meaningful part of the stated domain is missing, making the surface a dead end.