Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
VFX_LAB_PORTNoThe port of the local lab page (127.0.0.1 only). Default: `4518`. A lab that already runs on that port is used as it is.4518
VFX_LAB_LIBRARYNoThe library folder: `shaders/` for nodes, `bakes/` for PNGs and recipes. Default: `~/roblox-vfx-lab`.~/roblox-vfx-lab
ROBLOX_STUDIO_MCPNoThe command that starts Roblox's Studio MCP. Use double quotes around a path with spaces. Default on Windows: `cmd.exe /c %LOCALAPPDATA%\Roblox\mcp.bat`; default on macOS: `/Applications/RobloxStudio.app/Contents/MacOS/StudioMCP`.

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

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
vfx_guideA

How to write, render, bake, upload, apply and preview VFX lab nodes (WGSL baked into Roblox textures). Without section: the index and the overview. Sections: overview, node, helpers, examples, quality, roblox. Read overview and node first.

vfx_shader_listA

Every node in the VFX library ($VFX_LAB_LIBRARY, default ~/roblox-vfx-lab/shaders): its hash, state (clean, or problems at line:column) and parameters with type, range and default. Compiles each on the GPU.

vfx_shader_readA

A node's source, its hash (what vfx_shader_write's replaces names), its state and problems, and its parameters.

vfx_shader_writeA

Creates a node, or replaces one whole. Replacing needs replaces: the hash from vfx_shader_read or your last write or edit; if the file changed since, nothing is written and the current hash comes back. Answers the new hash and the verdict (state, problems with line:column in your source, parameters). Read vfx_guide node first.

vfx_shader_editA

Changes a node by exact text replacements, applied in order to the latest version, all or nothing. Each old must occur exactly once, or at least once with all: true. Answers the new hash and the verdict; the source is not echoed back.

vfx_renderA

Renders a node on the GPU and shows it as one image, cells in reading order with grey lines between them. Default: the clip as a flipbook would play it (frames cells across phase 0..1). phases: chosen moments instead. sweep: { param, from?, to?, count?, phase? } renders one f32 parameter across a range (default its own range) at one phase. Answers per-cell stats (coverage, peak, edge alpha, full-white share, change) and, for a clip, the quality warnings. backdrop: dark (default, how it reads in game), light, checker, or alpha (the shape as grey). The file is not changed.

vfx_bakeA

Renders a node into its final PNG: grid 1 (a still) or a 2x2, 4x4 or 8x8 flipbook sheet at size 256, 512 or 1024, or a still sharper than Roblox's 1024 cap as tiles x tiles PNGs of size px (bakes/--), to lay out in one gui, supersampled, straight alpha with the colour spread into transparent pixels (no dark halos). Writes bakes/.png and bakes/.json (the recipe: node, hash, values, grid, mode, duration, stats, warnings, uploads). Answers the paths, the flipbook settings, the warnings and a preview over the dark backdrop. Upload it with vfx_upload.

vfx_uploadA

Uploads a baked PNG through Roblox's own Studio MCP (upload_image, under the Studio user's account) and records the asset id in the recipe. Uploads are public, moderated and permanent: only on an explicit request, after the look is settled. The same PNG is never uploaded twice: the recorded id comes back unless force is true.

vfx_applyA

Puts an uploaded bake (or any texture id) on instances in Studio, with the flipbook settings a sheet needs (FlipbookLayout, FlipbookMode, FlipbookFramerate for a loop) on a ParticleEmitter; Texture on a Beam, Trail or Decal, TextureID on a MeshPart. targets: existing instances; create: { parent, name?, className? } makes a new one (default ParticleEmitter). properties: more values set in the same call (same format as set_properties).

vfx_previewA

Plays the ParticleEmitters at or under targets in the Edit viewport and freezes them (TimeScale 0) at each moment in at (seconds after the emit), then captures the screen: one image per moment. Burst emitters (Enabled false) emit EmitCount (attribute, default 1, or emit) after EmitDelay; Enabled emitters run from empty. The camera frames the emitters unless camera_position and look_at_position are given. TimeScales are restored after.

vfx_deleteA

Deletes a node (shaders/.wgsl) or a bake (bakes/.png and its recipe) from the library for good. Only on the developer's request: there is no undo. A bake stays when its node is deleted, and an uploaded asset stays on Roblox.

vfx_viewerA

Starts the local lab page (once per machine) and answers its URL, for the artist to open in a WebGPU browser (Chrome, Edge, Safari 26, Firefox 141 on Windows). It renders every node live with WebGPU (play, scrub, parameter sliders, flipbook sheet view, alpha view), has a WGSL editor, plays baked sheets as Roblox plays them, and has Export to Roblox (upload, then apply to the Studio selection). It follows the library live: a node or bake that changes updates the open page. With Auto bake on, the page re-bakes bakes/.png after each change the artist makes. Port: $VFX_LAB_PORT, default 4518.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 12 tools

Disambiguation4/5

The tools mostly target distinct stages of the VFX pipeline: node CRUD, GPU render, final bake, upload, Studio apply, Studio capture, and local viewer. The closest overlaps are vfx_render vs vfx_bake and vfx_preview vs vfx_viewer, but the descriptions make the boundaries clear.

Naming Consistency4/5

All tool names use lower snake_case with a consistent vfx_ prefix, which makes the set readable. There are minor deviations: the shader CRUD tools use a shader_ infix while vfx_delete is generic, and vfx_viewer/vfx_guide are noun-like rather than verb-like.

Tool Count5/5

Twelve tools is well within the ideal range and each one maps to a distinct step in the workflow. Nothing appears redundant or padded.

Completeness4/5

The surface covers the full node lifecycle (list/read/write/edit/delete) plus rendering, baking, uploading, applying, previewing, viewing, and guidance. A minor gap is the lack of explicit bake listing/reading tools, though bakes can be inspected through the viewer or filesystem.

Maintenance

ActivityMaintained
ResponsivenessNo issues