Unreal Engine MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| UE_MCP_HOST | No | Remote Control endpoint host | 127.0.0.1 |
| UE_MCP_PORT | No | Remote Control endpoint port | 30010 |
| UE_MCP_LIBRARY | No | Where downloaded assets land | ~/UnrealAssetLibrary |
| UE_MCP_TIMEOUT | No | Per-call timeout in seconds | 180 |
| UE_MCP_ENGINE_DIRS | No | Extra folders to search for engine installs | |
| UE_MCP_MAX_DOWNLOAD | No | Per-file download cap | 4 GiB |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ue_engine_listA | Elenca le installazioni di Unreal Engine trovate sulla macchina. Cerca in: variabile UE_MCP_ENGINE_DIRS, elenco dell'Epic Games Launcher, registro di Windows. Da chiamare per prima quando non c'è ancora un progetto. |
| ue_engine_templatesC | Elenca i template ufficiali disponibili nell'installazione (TP_Blank, TP_ThirdPerson, ...). |
| ue_project_createA | Crea un progetto Unreal da specifica, pronto per il bridge MCP. Scrive Args:
name: nome progetto (identificatore valido, es. "MyGame").
directory: cartella genitore, es. "C:/UnrealProjects".
engine_version: es. "5.4"; se omesso usa la più recente installata.
template: "blank" (generato da zero) o il nome di un template del motore
(vedi ue_engine_templates), es. "TP_ThirdPerson".
blueprint_only: esclude la cartella Source del template (niente compilazione C++).
plugins: plugin extra da abilitare oltre a quelli di default.
default_map: mappa di avvio, es. "/Game/MyGame/Levels/L_Main".
default_game_mode: GameMode di default (path della classe |
| ue_project_findC | Cerca file .uproject sotto una cartella. |
| ue_project_infoA | Legge un .uproject: versione motore associata, plugin attivi e se il bridge è pronto. |
| ue_project_set_pluginsB | Abilita/disabilita plugin scrivendo nel .uproject (utile su progetti esistenti). Per usare il bridge servono almeno |
| ue_editor_openA | Apre un progetto nell'editor e attende che il bridge Remote Control risponda. Args: uproject: percorso del file .uproject. engine_version: forza una versione del motore diversa da quella associata. wait_seconds: quanto attendere l'apertura (il primo avvio compila gli shader e può richiedere diversi minuti; con 0 non attende). extra_args: argomenti aggiuntivi per la riga di comando dell'editor. |
| ue_build_startA | Avvia la compilazione del modulo C++ del progetto (in background). L'editor deve essere chiuso: con Live Coding attivo UnrealBuildTool si rifiuta di scrivere le DLL, e per un modulo nuovo Live Coding non è sufficiente. Sequenza tipica: ue_editor_close -> ue_build_start -> ue_build_status (finché running=false) -> ue_editor_open. Args: uproject: percorso del file .uproject. engine_version: forza una versione del motore diversa da quella associata. target: default "Editor". configuration: "Development" | "DebugGame" | "Shipping". |
| ue_build_statusB | Stato della compilazione avviata con ue_build_start: in corso, errori, coda del log. |
| ue_live_compileA | Ricompila il C++ senza chiudere l'editor, tramite Live Coding. È la via veloce per iterare: nessuna chiusura, nessun riavvio, il gioco riparte con il codice nuovo. Funziona però solo sulle modifiche al corpo delle funzioni: aggiungere o cambiare UCLASS, UFUNCTION o UPROPERTY altera i dati di reflection e richiede ue_build_start a editor chiuso. Args: max_wait_seconds: quanto attendere l'esito prima di restituire "in corso" (la compilazione prosegue comunque). |
| ue_package_startA | Crea il pacchetto giocabile del gioco (cook + build + stage + pak). Produce un eseguibile autonomo, avviabile senza l'editor. Operazione lunga (decine di minuti al primo giro, molto meno dopo): parte in background, lo stato si consulta con ue_package_status. L'editor deve essere chiuso. Sequenza: ue_editor_close -> ue_package_start -> ue_package_status (finché running=false). Args: uproject: percorso del file .uproject. configuration: "Development" (con log e console, per il prototipo) o "Shipping" (ottimizzato, senza log, per la distribuzione). maps: mappe da cuocere, es. ["/Game/MyGame/Levels/L_Main"]. Se omesso cuoce secondo le impostazioni di progetto, che è più lento. output_dir: cartella di destinazione; default /Packaged. dedicated_server: produce anche un server dedicato per le partite LAN. |
| ue_package_statusB | Stato del packaging avviato con ue_package_start. Riporta la fase corrente (Cook, Stage, Package, Archive), gli errori e, a fine corsa, il percorso dell'eseguibile prodotto. |
| ue_editor_statusB | Stato del processo editor avviato da questo MCP e del bridge Remote Control. |
| ue_editor_closeA | Chiude l'editor. Prima tenta la chiusura pulita (salvataggio + Args: save_all: salva livello e asset modificati prima di chiudere. force: salta il tentativo pulito e termina direttamente il processo. |
| preset_library_listA | Elenca i file già scaricati nella libreria locale (default: ~/UnrealAssetLibrary). I percorsi restituiti si passano direttamente a ue_import_assets. |
| preset_download_urlB | Scarica un file da un URL diretto (zip, glb, fbx, wav) nella libreria locale. Se è un archivio zip/tar e |
| preset_extract_archiveB | Estrae un archivio zip/tar già presente sul disco (i .rar non sono supportati). |
| preset_search_polyhavenB | Cerca asset CC0 su Poly Haven. Args: asset_type: "hdris" | "textures" | "models". categories: filtri, es. ["brick"], ["outdoor"]. limit: massimo di risultati. |
| preset_download_polyhavenA | Scarica un asset Poly Haven (CC0) nella libreria locale. Args: asset_id: id dell'asset, es. "brick_wall_02". resolution: "1k" | "2k" | "4k" | "8k". formats: ["jpg"] per texture, ["gltf"] per modelli, ["hdr"] per HDRI. destination: cartella alternativa alla libreria. |
| preset_search_ambientcgB | Cerca materiali/HDRI/modelli CC0 su ambientCG. Args: query: parole chiave, es. "concrete". asset_type: "Material" | "HDRI" | "3DModel" | "Decal" | "Atlas" | "Terrain". |
| preset_download_ambientcgC | Scarica ed estrae un asset ambientCG (CC0). Args: asset_id: es. "PavingStones036". variant: es. "1K-JPG", "2K-JPG", "4K-PNG". |
| preset_download_kenneyB | Scarica ed estrae un pack Kenney (CC0) risolvendo il link dalla pagina. Args: slug: ultima parte dell'URL, es. "mini-characters-1" per kenney.nl/assets/mini-characters-1. |
| preset_fab_list_vaultA | Elenca il contenuto Unreal acquistato sull'account Epic (Fab/Marketplace). Non esiste un'API pubblica: serve il client community |
| preset_fab_downloadB | Scarica un asset del vault Epic tramite Args: app_name: identificativo restituito da preset_fab_list_vault. |
| ue_statusA | Verifica la connessione all'editor Unreal e restituisce versione motore, progetto aperto, livello corrente e numero di attori. Da usare per prima. |
| ue_read_logA | Legge la coda del log di Unreal (equivalente di read_console in Unity). Args: lines: quante righe finali restituire (default 80). only_errors: se True filtra solo righe con Error/Warning. |
| ue_exec_pythonA | Esegue codice Python arbitrario dentro l'editor Unreal (escape hatch). Il modulo Args: code: snippet Python, es. "result = len(mcp_actor_subsystem().get_all_level_actors())". |
| ue_save_allA | Salva il livello corrente e tutti gli asset modificati. |
| ue_import_assetsA | Importa file 3D/audio (.glb, .gltf, .fbx, .wav) nel Content Browser. I .glb/.gltf passano dal framework Interchange nativo. Per i personaggi con scheletro usare .fbx con import_as_skeletal=True. Args: files: percorsi assoluti sul disco (es. ["C:/tmp/four_corners_export/Arena_Tetto.glb"]). destination: cartella Unreal di destinazione (/Game/...). replace_existing: sovrascrive asset con lo stesso nome. import_as_skeletal: per .fbx, importa come Skeletal Mesh con animazioni. |
| ue_list_assetsA | Elenca gli asset presenti sotto un path del Content Browser. Args: path: cartella Unreal (es. "/Game/MyGame"). recursive: include le sottocartelle. class_filter: filtro parziale sul nome classe (es. "Blueprint", "StaticMesh"). |
| ue_new_levelB | Crea un nuovo livello e lo apre. Args: path: path completo del livello, es. "/Game/MyGame/Levels/L_Main". template: livello sorgente da duplicare (opzionale). |
| ue_open_levelA | Apre un livello esistente nell'editor. Args: path: es. "/Game/MyGame/Levels/L_Main". |
| ue_spawn_actorB | Spawna un attore nel livello corrente. Args: class_ref: "StaticMeshActor", "/Script/Engine.PointLight", "/Game/MyGame/BP_Enemy", oppure il path di uno StaticMesh importato (spawn diretto della mesh). location: [x, y, z] in cm. rotation: [pitch, yaw, roll] in gradi. scale: [x, y, z] moltiplicatore. label: etichetta leggibile nell'Outliner (usata dagli altri tool per ritrovarlo). |
| ue_list_actorsC | Elenca gli attori del livello corrente, con filtri opzionali su nome e classe. |
| ue_set_actor_transformC | Modifica posizione/rotazione/scala di un attore identificato dalla sua label. |
| ue_delete_actorC | Elimina dal livello corrente l'attore con la label indicata. |
| ue_create_blueprintB | Crea un Blueprint. Args: package_path: cartella, es. "/Game/MyGame/Blueprints". name: nome asset, es. "BP_CornerSlot". parent_class: "Actor", "Character", "Pawn", "GameModeBase", "PlayerState", "GameStateBase", "AIController" o un path completo. |
| ue_add_componentA | Aggiunge un componente a un Blueprint e lo ricompila. Args: blueprint_path: es. "/Game/MyGame/Blueprints/BP_Door". component_class: es. "StaticMeshComponent", "BoxComponent", "PointLightComponent". name: nome del componente nel Blueprint. |
| ue_add_variableA | Aggiunge una variabile membro a un Blueprint e ricompila. Richiede UE 5.4+
(l'API Python per le variabili non esiste nei motori precedenti; ue_status
riporta in Args: blueprint_path: path del Blueprint. var_name: nome variabile, es. "OccupiedBy". var_type: bool | int | int64 | float | string | name | text | struct | object | class. sub_type: per struct ("Vector", "Rotator", "Transform", "LinearColor") o per object/class il nome della classe ("Actor", "PlayerState"). replicated: marca la variabile come replicata (networking). instance_editable: esposta e modificabile sulle istanze nel livello. default_value: valore di default scritto nei Class Defaults (solo tipi semplici). |
| ue_set_class_defaultsB | Imposta i Class Defaults (CDO) di un Blueprint. Args: blueprint_path: path del Blueprint. properties: mappa nome_proprieta -> valore, es. {"replicates": true}. |
| ue_compile_blueprintB | Compila e salva un Blueprint. Usare dopo modifiche manuali nell'editor. |
| ue_set_replicationC | Configura la replication di un Blueprint (equivalente di NetworkObject in Unity). |
| ue_configure_pieA | Configura il Play In Editor multi-client, per provare il multiplayer in locale. Args: num_players: numero di finestre client (server incluso in listen_server). net_mode: "standalone" | "listen_server" | "client". one_process: True = più finestre nello stesso processo (più veloce da avviare). |
| ue_start_pieB | Avvia il Play In Editor con le impostazioni correnti. |
| ue_stop_pieA | Ferma la sessione Play In Editor in corso. |
| ue_set_project_settingA | Scrive un'impostazione nei file Config/Default.ini del progetto. Args: section: es. "/Script/EngineSettings.GameMapsSettings". key: es. "GlobalDefaultGameMode". value: es. "/Game/MyGame/Blueprints/BP_MyGameMode.BP_MyGameMode_C". config: "Game" | "Engine" | "Input". Nota: alcune impostazioni richiedono il riavvio dell'editor per avere effetto. |
| ue_import_audioC | Importa file .wav come SoundWave nel Content Browser. |
| ue_create_metasound_sourceB | Crea un asset MetaSound Source vuoto (richiede il plugin MetaSound attivo). Il grafo va poi popolato nell'editor MetaSound o via ue_exec_python. |
| ue_create_sound_cueB | Crea un Sound Cue, opzionalmente già collegato a un SoundWave importato. Args: package_path: es. "/Game/MyGame/Audio". name: es. "SC_Explosion". wave_path: path del SoundWave, es. "/Game/MyGame/Audio/explosion". |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/FFZackFair92/unreal-engine-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server