FlaxMCP-Live
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FLAX_BRIDGE | No | Bridge mode placeholder; defaults to `auto`. It is parsed but does not currently change connection behavior | auto |
| FLAX_TOOLSETS | No | Comma-separated selection from `project`, `content`, `scene`, `build`, `logs`, `editor`, `events`, `jobs`, and `game`; `server` is always included. Omit for all toolsets | |
| FLAX_LOG_LEVEL | No | Minimum server log level written to stderr; defaults to `Warning` | Warning |
| FLAX_READ_ONLY | No | `true`, `1`, or `yes` removes all tools that can alter files or editor state | |
| FLAX_ENGINE_PATH | No | Flax Engine root. When omitted, uses the Flax Launcher's `%APPDATA%/Flax/Versions.txt` registrations | |
| FLAX_PROJECT_PATH | Yes | Path to a `.flaxproj`, or a directory containing exactly one top-level `.flaxproj` | |
| FLAX_EDITOR_CONFIG | No | Editor binary configuration: `Development` (default), `Debug`, or `Release` | Development |
| FLAX_ALLOW_CODE_EXECUTION | No | Enables `editor_execute_csharp` and `editor_invoke_method` only when true and `FLAX_READ_ONLY` is false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| server_infoA | Returns the FlaxMcp server name and version. |
| flax_statusA | Reports whether the configured project has a reachable Flax Editor bridge and returns its session metadata. |
| project_infoA | Reads the .flaxproj file: name, version, targets, references, and default scene. |
| project_targetsB | Parses the GameTarget/EditorTarget *.Build.cs files referenced from the .flaxproj: target class names and referenced modules. |
| project_settingsA | Reads Content/.json and Content/Settings/.json settings assets (Game, Graphics, Input, Physics, ...) as structured JSON. |
| content_searchB | Searches the Content/ index by partial path match, TypeName, and/or extension. Id/TypeName are null for files whose format isn't recognized or a .flax header that doesn't match the reverse-engineered layout (verified against Flax 1.12 and 1.13). |
| content_asset_infoB | Returns metadata (Id, TypeName, RelativePath, Extension) for the content asset with the given GUID. |
| content_resolve_guidB | Resolves a content asset GUID to its path relative to Content/. |
| content_create_materialC | Creates a surface Material asset through the live Flax Editor. Paths are relative to Content/ and must end in .flax. |
| content_material_detailsA | Returns typed values, texture references, UV tiling, and exposed parameters for a live surface Material asset. |
| content_create_material_instanceA | Creates a MaterialInstance asset from a live surface material and applies validated parameter overrides atomically. |
| content_set_material_instance_parameterB | Sets one validated parameter override on an existing MaterialInstance and saves the asset. |
| content_create_material_transparentA | Creates a transparent surface Material (blend mode Transparent, Lit) through the live Flax Editor, for glass, water or film. Opacity 0 is fully clear. Refraction is the material's Refraction input: 1 bends nothing. Flax applies it as a strong screen distortion: 1.03 already shrinks objects behind a bottle-sized surface to about 40 % of their width, as through thick glass. Use 1.0 for thin glass with something inside (a bottle with liquid), and values above 1 only for a lens effect. The material traces screen-space reflections. Its four values are public parameters named BaseColor, Opacity, Roughness and Refraction, so content_create_material_instance makes variants (a tint, frosted or thicker glass, water) of one material. Paths are relative to Content/ and must end in .flax. No asset may exist at the path. |
| scene_listB | Lists scenes (.scene) and prefabs (.prefab) in the project's Content/ directory. |
| scene_outlineA | Reads a .scene/.prefab file's actor tree, built from ParentID linkage (not file order). Scripts attached to an actor are listed on that actor's Scripts, not as child nodes. Truncated is true if the configured depth/node-count limit was hit. |
| scene_find_actorA | Searches a .scene/.prefab file's actors by partial Name match and/or exact TypeName. |
| build_generate_projectsA | Runs FlaxEditor.exe -genprojectfiles to regenerate IDE project/solution files. |
| build_compile_scriptsA | Compiles game scripts headlessly. Returns structured compiler errors (file/line/code/message) parsed from the engine log, not a raw log dump. |
| build_clear_cacheB | Runs FlaxEditor.exe -clearcache, and optionally -clearcooker too, to clear build caches. |
| build_check_scriptsA | Compiles the project's script modules (and those of the projects it references) outside the editor, with the compiler arguments Flax.Build last used and the modules' current files, into a scratch folder. Returns passed, failed or unavailable (never built yet: Reason says why) with structured errors and warnings (file, line, column, code) and each module's outcome. Works while the editor is open, also during play mode; changes nothing in the project. |
| build_gameA | Starts a game build (-build ., e.g. preset 'Development', target 'Windows') in the background and returns its job at once -- a real build can take minutes. Follow it with job_status or job_wait; the job's result is the build outcome. |
| logs_tailA | Returns the last N lines (default 200) of the project's most recent Logs/*.txt file, without running the editor. |
| logs_errorsA | Extracts lines tagged [Error] or [Warning] from the project's most recent Logs/*.txt file, without running the editor. |
| editor_scene_graphA | Returns the live actor tree from every scene loaded in the Flax Editor, including unsaved runtime state. Truncated is true when the 500-node or 32-level response limit is reached. |
| editor_get_selectionA | Returns the actors currently selected in the live Flax Editor. |
| editor_set_selectionA | Replaces the live Flax Editor actor selection with the actors identified by GUID. Pass an empty list to clear the selection. |
| editor_actor_detailsA | Returns live identity, hierarchy, activation, layer, tags, world/local transforms, and scripts for one actor loaded in the Flax Editor. |
| editor_modify_actorA | Replaces an existing live actor's world transform and returns its updated details. Use editor_actor_details first to preserve transform values that should not change. |
| editor_create_actorB | Creates an allowlisted EmptyActor or StaticModel in a loaded scene and returns its live details. |
| editor_duplicate_actorC | Duplicates a loaded actor into a loaded scene or parent and returns the duplicate's live details. |
| editor_rename_actorA | Renames a loaded actor through the editor Undo/Redo history and returns its updated details. |
| editor_reparent_actorA | Moves a loaded actor to another loaded parent or to a loaded scene root through Undo/Redo history. Set exactly one of sceneId or parentId and explicitly choose whether to preserve the world transform. |
| editor_delete_actorA | Deletes a loaded actor through the editor Undo/Redo history. Set deleteDescendants to true to explicitly delete its complete hierarchy; false rejects actors with children. |
| editor_static_model_detailsA | Returns the assigned model reference and live actor details for a loaded StaticModel actor. |
| editor_set_static_modelA | Assigns an existing FlaxEngine.Model asset to a loaded StaticModel actor through Undo/Redo history. The bridge validates that modelId resolves to a compatible model before changing the scene. |
| editor_set_static_model_materialA | Assigns an existing FlaxEngine.MaterialBase asset to one slot of a loaded StaticModel through Undo/Redo history. The bridge validates the actor, slot, and material before changing the scene. |
| editor_box_collider_detailsA | Returns the local size, center, trigger mode, and actor details for a loaded BoxCollider. |
| editor_create_box_colliderB | Creates a BoxCollider under a loaded parent actor and returns its effective properties. |
| editor_set_box_colliderB | Updates a loaded BoxCollider's local size, center, and trigger mode through Undo/Redo history. |
| editor_saveA | Saves every open scene (including changes made through the API, which the editor does not mark as modified) and all modified content assets in the live Flax Editor. Refused during play mode: a save then would write the play-time scene, with every actor scripts created at run time. |
| editor_play_modeA | Controls play mode in the live Flax Editor. Action must be start, stop, pause, or resume. Returns when the editor has reached the requested state (up to 30 seconds, so a heavy scene can load). |
| editor_screenshotA | Captures the visible Flax Editor scene viewport to a PNG file. The output directory must already exist, and capture is unavailable in headless mode. |
| editor_compileA | Compiles the project's scripts and returns when the editor has reloaded and settled. The scripts are first compiled outside the editor with the compiler arguments Flax.Build last used (build_check_scripts): errors come back at once, structured (file, line, column, code), and the editor is not touched. A clean check goes on to the editor's compile; its outcome is reloaded, unchanged or failed (build tool lines in BuildErrors). Check says how the check went (passed, failed, or unavailable with the reason). Stops play mode first. |
| editor_open_sceneA | Opens a scene in the live Flax Editor and returns when it has loaded. The path is absolute or relative to the project's Content folder (for example Scenes/Main.scene). Refused during play mode. |
| editor_host_statusA | Returns the state of the bridge host, the pipe server that outlives script reloads: its version and start time, the attached plugin generation, attach and detach counts, the editor's memory and garbage collections, and how many old plugin load contexts are still alive (reloads that leak). collect=true runs a full garbage collection first so that count is a measurement; it takes long on a large heap. |
| editor_find_actorsA | Finds actors in the loaded scenes (the play-time scene during play) by name, actor type and script type, all optional and combined. Types match by full or short name. Returns id, name, type, path from the scene and the scripts' types; Truncated is true when more than the limit matched. |
| editor_get_memberA | Reads a field or property of an actor, or of one of its scripts, by a dotted path (e.g. Clock.Steps). Private members count. Unknown names list the members that exist. |
| editor_set_memberA | Writes a field or property of an actor or of one of its scripts by a dotted path; a struct on the way is written back. The value is JSON in the member's shape (a number, true, "text", an enum name, {"X":1,"Y":2,"Z":3}). In edit mode it goes through the editor's undo and marks the scene edited (editor_save keeps it); in play mode it lasts until play ends. Returns the value read back. |
| editor_add_scriptA | Adds a script of a type to an actor (nothing when it has one already) and, in edit mode, marks the scene edited so editor_save keeps it. The type is resolved by full or short name in the loaded assemblies. |
| editor_camera_screenshotA | Renders a camera into its own render target and saves a PNG. It does not read an editor window, so it works with the editor covered, small or minimised, in play mode and in edit mode. Camera: the given Camera actor. Without one: the main camera in play mode, else the editor viewport's view. The picture shows the 3D scene with the game's post effects, without editor or screen-space UI. Not available in headless mode. Replaces an existing file. Read the PNG to see it. |
| game_commandsA | Lists the commands the game registered with the bridge (FlaxMcpBridge.GameCommands.Register): name, description and the type that registered it. Game scripts usually register while enabled, so the list in play mode can differ from the one in edit mode. |
| game_commandA | Runs a registered game command on the editor's main thread and returns its text result. Errors: unknown_command (lists the registered names), command_failed (the handler's exception type and message). |
| editor_eventsA | Returns the editor's recorded events after a sequence number, oldest first. Kinds: log (managed log lines only; the engine's native lines such as compiler output stay in the log file), exception, compile_begin, compile_succeeded, compile_failed, reload_begin, reload_end, play_begin, play_end, scene_loaded, scene_load_error, scene_saved, scene_save_error, scene_unloaded. The bridge host keeps the last 4096 events across script reloads; Truncated is true when some after sinceSeq were overwritten. A new HostStartedUtc means the editor restarted and the sequence began again. |
| editor_wait_forA | Waits for the first editor event of a kind (see editor_events), optionally with a text, and returns it. Without sinceSeq it waits for an event after the call; with it, an event already recorded after that number counts. A timeout is a result (TimedOut true), not an error. Example: start play with editor_play_mode, then editor_wait_for kind=log textContains="[Test]" to read a game's answer. |
| editor_job_startA | Starts a long editor operation as a job and returns at once: compile (compile scripts and wait until the editor has reloaded and settled), play_start, play_stop, play_pause, play_resume, open_scene (path). Editor jobs run one at a time: another one while one runs fails with job_conflict naming it. Follow the job with job_wait or job_status; its result is what editor_compile, editor_play_mode or editor_open_scene return. |
| job_statusA | Returns a job's state: running, succeeded (with its result), failed or canceled (with the reason), and its latest progress message. Jobs come from editor_job_start, build_game, and the editor tools that run as jobs. |
| job_waitA | Waits for a job to end, up to the timeout, sending its progress messages as progress notifications, and returns its state. A timeout is a result (Status running), not an error. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| diagnose_build_failure | Compiles Flax game scripts and diagnoses the failure using structured diagnostics and the engine log. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 57 tools
Most tools have distinct purposes and the descriptions clarify live-editor versus file-based contexts. However, several pairs overlap in practice: editor_find_actors vs scene_find_actor, editor_scene_graph vs scene_outline, and editor_compile vs build_compile_scripts vs build_check_scripts. editor_job_start also duplicates blocking editor operations, so the large surface creates real selection ambiguity.
Names are consistently snake_case and grouped by clear functional prefixes such as editor_, content_, scene_, build_, logs_, project_, and job_. Within those prefixes some names are noun-first (editor_actor_details, editor_scene_graph, editor_play_mode) while others are verb-first (editor_find_actors, editor_create_actor), so it is not a pure verb_noun convention, but it remains predictable.
With 57 tools, the surface is far beyond the typical well-scoped range and well past the 25+ threshold for being heavy. Even though the tools are grouped into coherent domains, the sheer count makes reliable tool selection difficult for an agent.
Coverage is broad: project metadata, scene inspection, live actor manipulation, materials, builds, logs, screenshots, play mode, events, and jobs are all represented. Notable gaps remain around asset lifecycle operations (delete/rename/import), broader component creation beyond BoxCollider/StaticModel, script removal, and prefab creation, though generic member access and game commands provide workarounds.