structuresynth-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SSYNTHGEN_PATH | No | Path to the ssynthgen binary. Only needed if ssynthgen is not on PATH. |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| engine_statusA | Report the path of the ssynthgen engine binary, or install help if missing. |
| list_examplesB | List bundled EisenScript examples with short descriptions. |
| get_exampleA | Return the full EisenScript source of a bundled example by name. |
| validate_scriptB | Check an EisenScript for syntax/parse errors without keeping geometry. Returns 'OK' or an error message. |
| render_scriptA | Render EisenScript to a Wavefront OBJ mesh. Args:
script: Full EisenScript source (rules, primitives, transformations).
output_path: Where to write the .obj. Empty = temp file under the
system temp dir (path is returned).
seed: Optional RNG seed; injected as Returns a summary: OBJ path, vertex/face counts, bounding box. |
| analyze_scriptA | Lint an EisenScript without running it. Detects: unbalanced braces, unknown actions, primitives unsupported by this backend (torus/cone/tube/helix/circle/point), recursion cycles with no maxdepth (timeout risk), unused rules. Returns a human-readable report. |
| eisenscript_referenceA | EisenScript language cheat sheet: primitives, transformations, modifiers, preprocessor, and timeout-avoidance tips (libssynth backend). |
| export_mesh_toolA | Convert a rendered OBJ to another mesh format (stl, glb, gltf, ply, off). Requires the optional dependency |
| preview_scriptB | Render an EisenScript and return a PNG preview image path (plus the OBJ). Uses matplotlib Agg (CPU only, no GPU). Group colors from the grammar are preserved when present. |
| preview_objA | Render an existing OBJ file to a PNG preview (matplotlib Agg, CPU only). |
| render_galleryA | Batch-render every bundled example to OBJ (+ PNG) in a directory. Useful for building a visual gallery or checking regressions. |
| send_to_unrealA | Import a rendered OBJ into a running Unreal Engine editor via TCP bridge. Requires Unreal running with the MCP plugin listening on 127.0.0.1:55557. The asset lands in the content browser at dest_path (default /Game/Imported). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 12 tools
Most tools target clear, distinct pipeline stages (validate → analyze → render → preview → export → import). The closest overlap is validate_script vs analyze_script and preview_script vs render_script, but the descriptions explicitly distinguish them (syntax errors vs lint report; PNG preview vs OBJ output).
The set largely follows a snake_case verb_noun pattern (preview_script, render_script, get_example, list_examples, validate_script). A few deviate: engine_status and eisenscript_reference are noun-first, and export_mesh_tool appends a redundant '_tool' suffix.
Twelve tools is well within the sweet spot and every tool maps to a distinct step in the EisenScript workflow, with no obvious filler. Setup, authoring, validation, rendering, and output tools each earn their place.
The lifecycle is well covered: discovery (list/get examples, reference), authoring support (validate/analyze), rendering (render/preview/gallery), and output (export_mesh_tool, send_to_unreal). Minor gaps: no tool to inspect existing OBJ stats or manage/clean up rendered temp files, which agents must work around manually.