Firestorm MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Firestorm MCP Open my latest mesh export in the preview and check for LOD warnings"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Firestorm MCP
Let AI agents inspect exports, operate mesh previews and capture evidence in the Firestorm viewer for Second Life.
Download · Install · Tools · Agent guide · Contribute
0.3.0a3 · Alpha · MIT
Firestorm MCP connects your agent to an installed Firestorm viewer through its LEAP interface. It runs locally beside the viewer and works with MCP hosts that support stdio servers.
Built mostly by AI coding agents, under human direction. People and AI agents are welcome to contribute.
Download
Download the setup ZIP — includes the installer, source, guides and tests.
Python wheel · Checksums · Release notes
Optional: mesh-preview agent skill. It teaches the importer workflow; install the MCP separately. Skill setup.
Downloads are on GitHub Releases. The project is not yet on PyPI or the MCP Registry.
Related MCP server: Blender-Mind-MCP
Install
Install Python 3.11–3.14 and a compatible Firestorm viewer. Live control requires both on the same desktop and user account.
Extract the setup ZIP into a permanent, user-writable folder.
Run
Install.cmdon Windows orsh Install.shin a terminal on Linux/macOS. The installer creates its own Python environment and prints your MCP configuration.Add the printed entry to your agent's MCP settings. Use the configuration generator for Codex or VS Code. Keep your other server entries.
Run
Start-FirestormMCP.cmdorsh Start-FirestormMCP.sh, sign in, then run the matchingCheck-FirestormMCPscript.
The launcher leaves an already-running viewer alone. Close it normally when convenient, then start through the launcher: LEAP connects at viewer startup.
Custom paths, diagnostics and upgrades.
Platforms
System | Current support |
Windows x64 | Live viewer workflow tested. Automated package tests cover Python 3.11–3.14. |
Linux x64 | Package tests pass. Viewer launch is experimental; select files manually. |
macOS Intel / Apple Silicon | Package tests pass on both architectures. Viewer launch is experimental; select files manually. |
Linux ARM64 / Raspberry Pi | Ubuntu ARM64 package tests pass. Pi hardware, Raspberry Pi OS and a compatible Firestorm viewer are unverified. |
Headless / remote systems | Offline file tools may work. Remote viewer control is not implemented. |
Automated tests use simulated viewers. They do not certify live desktop control. Platform details.
What it can do
Area | Capabilities |
Export inspection | Read COLLADA, glTF, GLB and image metadata, hashes, dimensions and references. |
Mesh previews | Open Local Mesh or the model importer; inspect LODs, physics, warnings, dimensions and displayed fees; adjust the preview camera. |
Viewer UI | Find and inspect controls, click registered buttons, enter text, send targeted keys and invoke menus. Windows supports recognized native file pickers. |
Camera and images | Set the world camera, capture images and orbit views, save manifests and compare pixels. |
Avatar and scene | Read position, start/poll/stop walking, query nearby objects and search an inventory folder. |
Settings and events | Read/change viewer settings, subscribe to events and coordinate agents through control leases. |
Live viewer APIs | Discover additional operations, including teleport, appearance, gestures and chat, through |
The server has 43 workflow tools. A signed-in Firestorm 7.2.4.80712 exposed 94 further operations across 18 APIs. Availability varies by viewer and login state; discovery is not test coverage.
Generated configuration uses the compact profile: 43 listed tools, with discovered operations available through viewer_call. The all profile also lists those operations individually after refresh. Both profiles have the same authority.
Tool reference · Input schemas · MCP compatibility
For agents
Check
connection_status, including platform support and the control owner. Refresh live capabilities withcapabilities_refresh.Inspect unfamiliar operations with
viewer_api_inspect. For mesh work, read the preview skill.Acquire a bounded control lease and keep the same MCP session. An existing preview may belong to someone else; establish permission before opening, focusing or replacing it.
Use scoped UI queries, verify state after input and inspect captured images. Distinguish source metadata, local preview and simulator results.
Restore temporary settings where supported and release your lease in cleanup. Preserve the user's requested final state.
Known limits
Viewer behavior varies. Some combos require selection followed by commit; some checkboxes require a targeted key. The agent guide records the tested procedures.
Preview evidence has limits. Filenames do not prove loaded file bytes, displayed fees may be stale, and a nonblank image may show the wrong subject. Upload and simulator behavior need separate verification.
Controls are incomplete. No one-call multi-file import, full object/face/material or script lifecycle suite, exact camera restoration, or Unicode text-entry fallback is provided.
Control is cooperative. Leases do not block human input. Cancelling an MCP request does not undo an action already sent to the viewer.
Consequential actions need authority. Uploads, spending, chat and inventory/world changes require the user's permission. Generic tools do not enforce a universal no-spend policy. Local Mesh's Rez Selected creates simulator objects.
Tested scope
The suite has 85 tests, with eight CI jobs covering Windows, Linux x64/ARM64 and macOS Intel/ARM64. Checks include fresh installs, MCP protocol behavior and the official Inspector.
Live evidence comes from the Windows 0.3.0a1 workflow: explicit LOD/physics imports, control readback, preview zoom/orbit, captures and cleanup. The public release does not add live platform acceptance. Verification record.
Contribute
Help improve installation, platform support, viewer tools or agent workflows. Open an issue with a small reproducible example, or use Discussions for questions and ideas.
Read CONTRIBUTING.md and AGENTS.md before a pull request. Keep credentials, private captures and product assets out of contributions.
Pull requests must pass CI and security checks. For private vulnerability reports and security boundaries, see SECURITY.md.
This independent project uses the MIT licence. Firestorm and other dependencies keep their own licences; see THIRD_PARTY.md.
Available Tools
43 toolsasset_inspectARead-only
Inspect a local COLLADA/glTF/GLB/texture export and record its SHA256. This checks file metadata, not upload eligibility, LOD quality, land impact or in-world appearance.
Inputs: filename (required).
avatar_movement_statusBRead-only
Read autopilot progress and current avatar position.
Inputs: no named parameters.
avatar_positionARead-only
Read avatar position/orientation from the viewer.
Inputs: no named parameters.
avatar_stopBDestructive
Cancel automatic movement and read its resulting state.
Inputs: no named parameters.
avatar_walk_toADestructive
Start walking to GLOBAL coordinates. Poll avatar_movement_status and verify position; this is not pathfinding success.
Inputs: global_position (required), allow_flying, stop_distance.
camera_releaseADestructive
Release scripted camera control. This returns to viewer camera behavior, not an exact saved manual camera pose.
Inputs: no named parameters.
camera_setBDestructive
Set a fixed camera and focus in REGION coordinates. Viewport capture is needed to verify composition.
Inputs: focus (required), position (required).
capabilities_refreshARead-only
Discover all APIs and operations exposed by this running viewer; refresh dynamic MCP tool discovery.
Inputs: no named parameters.
capture_manifest_readCRead-only
Read a saved capture manifest created by this server.
Inputs: filename (required).
capture_orbitCDestructive
Capture repeatable orbit views around a REGION-coordinate focus and save a manifest. Releases scripted camera in finally. Caller must identify whether the subject is local preview or a server asset.
Inputs: focus (required), label, views, radius, +3 more.
connection_statusARead-only
Check whether the local Firestorm LEAP helper is connected. Does not log in or change the viewer.
Inputs: no named parameters.
control_acquireBDestructive
Acquire a workflow control lease. Other clients can still read status/events. Renew before expiry and release in finally; human input remains possible.
Inputs: label, seconds.
control_releaseADestructive
Release this client's exclusive control lease.
Inputs: no named parameters.
events_readARead-only
Read subscribed viewer events after a cursor. The dropped flag identifies buffer overflow; do not infer missing events.
Inputs: after.
events_subscribeBDestructive
Subscribe to a named viewer event stream, such as StartupState or LLAutopilot. Events are bounded and remain local until read.
Inputs: source (required).
events_unsubscribeCDestructive
Stop subscribing to a viewer event stream.
Inputs: source (required).
floater_listARead-only
List registered viewer floaters and their XUI files.
Inputs: no named parameters.
floater_openCDestructive
Open a registered viewer floater and check its visibility.
Inputs: name (required).
image_compareADestructive
Compare two same-size images and save an absolute-difference PNG. Metrics do not establish semantic or material correctness.
Inputs: observed (required), reference (required).
inventory_searchARead-only
Search a specific inventory folder recursively, returning item metadata. Does not rez, purchase or upload anything.
Inputs: name (required), folder_id (required), limit, asset_type.
local_mesh_auto_reloadCDestructive
Set local mesh automatic reload so Blender exports can refresh in the viewer. Returns the previous settings for restoration.
Inputs: enabled (required), seconds.
local_mesh_openADestructive
Open Firestorm's Local Mesh panel. Its local replacements are visible only in this viewer and do not prove server upload.
Inputs: no named parameters.
local_mesh_statusARead-only
Read Local Mesh's selected item/object and displayed import log. This is local preview evidence, not a simulator upload.
Inputs: no named parameters.
mesh_preview_cameraADestructive
Drag the mesh uploader's preview camera; world camera stays unchanged. Fractions are bounded to -0.45..0.45 of the inspected rectangle. Positive vertical zooms in; zoom needs horizontal=0. Capture to verify. No exact pose readback or restoration.
Inputs: mode, vertical, horizontal.
mesh_upload_openADestructive
Open the standard mesh upload preview workflow. Does not submit an upload or authorize an upload fee.
Inputs: no named parameters.
mesh_upload_statusARead-only
Read importer LOD files/counts, physics, dimensions, warnings, weights, displayed fee and visibility. Does not calculate or upload. Readback is non-atomic; quote freshness and file bytes remain unverified.
Inputs: no named parameters.
native_file_chooseBDestructive
Select a file in a freshly discovered Windows Firestorm Open dialog. Checks ownership and filename; verify import afterward. Confirm which workflow opened it. Other platforms need manual selection.
Inputs: filename (required), dialog_id (required).
native_file_dialogsARead-only
List recognized Windows Open-file dialogs owned by this Firestorm installation. English common dialogs only; unsupported layouts require manual selection.
Inputs: no named parameters.
setting_getCRead-only
Read a named viewer setting; default group is Global.
Inputs: key (required), group.
setting_setBDestructive
Change a viewer setting and return before/after readback. Some settings persist across restarts.
Inputs: key (required), value (required), group.
snapshotBRead-only
Capture Firestorm's rendered image and return an MCP image plus saved PNG and hash. Render evidence alone does not prove upload or visibility to others.
Inputs: label, layer, width, height, +2 more.
ui_clickBDestructive
Click a visible, enabled control. A registered floater invokes a unique button callback; otherwise uses coordinates. observe_path returns before/after state. Verify the effect from readback.
Inputs: path (required), button, floater, observe_path.
ui_findBRead-only
Search paths or basenames, case-insensitively, within a narrow under path. max_depth=1 includes root and children. Follow next_offset for more results; each page still enumerates the requested subtree.
Inputs: query (required), limit, match, under, +4 more.
ui_get_valueARead-only
Read the value of a specific discovered UI control. Use targeted paths to avoid unrelated chat or private fields.
Inputs: path (required).
ui_inspectARead-only
Read a known UI path's geometry and enabled/visible state without opening or focusing it. Discover children with scoped ui_find.
Inputs: path.
ui_press_keyBDestructive
Focus a required visible, enabled path, press/release a key and read back state. Modifiers: CTL/ALT/SHIFT/MAC_CONTROL. Enter can commit forms. Human input and shortcuts can interfere; verify the result.
Inputs: path (required), keysym (required), modifiers, observe_path.
ui_selectADestructive
Select a visible enabled combobox item by actual value, when supported by the viewer, and compare selected-value readback. Older viewers require path-targeted ui_press_key with readback.
Inputs: path (required), value (required).
ui_set_textBDestructive
Replace text in a discovered edit control using viewer input, then read back its value. Does not press Enter.
Inputs: path (required), text (required).
viewer_api_inspectARead-only
Read the live description and required arguments for an API or operation. Discover before calling unfamiliar operations.
Inputs: api (required), operation.
viewer_callBDestructive
Invoke any discovered viewer API operation. arguments can contain typed LLSD values: {$uuid: string}, {$uri: string}, {$binary_base64: string}. Read state after writes; timeouts must not be blindly retried.
Inputs: api (required), operation (required), timeout, arguments, +1 more.
world_objectsBRead-only
List nearby objects as reported by the viewer. Availability depends on simulator interest and viewer loading.
Inputs: distance.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 43 tools
The descriptions are unusually careful about boundaries (e.g. local_mesh_status explicitly disclaims being a server upload, ui_get_value vs ui_inspect separate value/geometry reads). Still, the 9-tool ui_* group and the camera/snapshot/capture cluster have meaningful surface overlap where an agent could plausibly pick the wrong tool.
Everything is consistent snake_case grouped by subsystem (ui_*, events_*, camera_*, avatar_*, local_mesh_*). The only quirk is mixed ordering within groups (camera_set vs asset_inspect), but it remains predictable and readable.
43 tools is heavy even for a complex viewer-automation server; the ui_*, capture, and control/event groups in particular could be consolidated. The breadth is partly justified by the genuinely multi-subsystem domain, but the surface is large enough to feel unwieldy.
Coverage spans camera, avatar movement, UI interaction, events, settings, mesh import, inventory, native dialogs, and snapshots, with viewer_call/viewer_api_inspect acting as a catch-all for undiscovered operations. Minor gaps exist (no chat/IM or teleport/login lifecycle tools), but core workflows are covered.
Maintenance
Related MCP Connectors
Connect your AI assistant to Blender for 3D modeling, Geometry Nodes, materials, lighting, animation, rendering and export. Inspect real scenes and viewport images, refine the result and restore checkpoints. OAuth connects your chat to Blender Bridge Desktop on an online Windows 10/11 x64 computer running Blender 4.2+. The chat can run on another device. Requires an active Blender Bridge account; 7-day trial available. AI model access is separate.
Blender-as-a-service for agents: search 3D assets, run Blender Python, or brief the studio agent.
Control Unreal Engine to browse assets, import content, and manage levels and sequences. Automate…
Generate and edit images, video, voice, lip-sync and 3D models from your AI agent.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI agents to control and manipulate live 3D scenes across frameworks like Three.js, A-Frame, and Babylon.js using a comprehensive set of object and environment tools. It features an integrated in-world chat system that allows for real-time scene modifications directly from within the 3D canvas.3315 npm3MIT
- AlicenseAqualityDmaintenanceEnables AI-driven 3D modeling in Blender by providing tools to create primitives, apply modifiers and materials, set up lighting and cameras, capture viewport snapshots, export assets, inspect scenes, and execute Python commands via natural language.10MIT
- AlicenseNot gradedqualityBmaintenanceEnables natural language control of the Resonite social VR platform, allowing users to command worlds, customize avatars, inspect sessions, spawn inventory assets, and monitor telemetry through AI chat assistants.10MIT
- AlicenseAqualityBmaintenanceGives LLM agents spatial awareness inside Autodesk Maya, enabling scene inspection and measurement, aesthetic and engineering audits, camera planning, checkpoint/rollback safety, asset import, and viewport or render previews. Agents can also execute arbitrary Python in Maya to build and verify 3D scenes against engineering rules instead of writing blind.2576 PyPI5MIT