# IlluGen (mcpb · illugen-mcp-0.1.1.mcpb)

Build, edit and render JangaFX IlluGen node graphs (textures, VFX) from your AI agent.

- Trust score: 52/100 (low)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- mcpb · `illugen-mcp-0.1.1.mcpb`: 52/100 (this document), [markdown](https://verifymcp.io/servers/dokanc-illugen-mcp/illugen-mcp.md), [page](https://verifymcp.io/servers/dokanc-illugen-mcp/illugen-mcp)

## Channel facts

- Registry: `mcpb`
- Package: `https://github.com/dokaNc/illugen-mcp/releases/download/v0.1.1/illugen-mcp-0.1.1.mcpb`
- Version: `0.1.1`
- Transport: `stdio`
- SHA-256: `c3f05551aa69b9c0f47e9831c65f2fe85178030776efc3d3b145aafcc5247c2c`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 13/100
  - No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.
  - Known CVEs were checked across the 29 of 29 dependencies we could resolve, so this covers what we could see, not the whole tree.
  - Install-script risk not yet assessed.
  - 0 of 29 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 20 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 65/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 5427 tokens (~217/item across 25 items; 25 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 70/100
  - Stability observed for 21 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (4% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 26 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the IlluGen MCP server?

IlluGen ships as an MCPB bundle, a single file you download and open in an MCP host that supports MCPB bundles, such as Claude Desktop. The host reads the launch command from the bundle's own manifest, so there is no command to copy. Before opening it, check the file's SHA-256 matches the one the MCP registry declares for it, c3f05551aa69b9c0f47e9831c65f2fe85178030776efc3d3b145aafcc5247c2c; the commands to do that are on this page. If it does not match, do not open it.

- Download bundle: `https://github.com/dokaNc/illugen-mcp/releases/download/v0.1.1/illugen-mcp-0.1.1.mcpb`
- SHA-256: `c3f05551aa69b9c0f47e9831c65f2fe85178030776efc3d3b145aafcc5247c2c`

### Verify on macOS / Linux

```bash
echo "c3f05551aa69b9c0f47e9831c65f2fe85178030776efc3d3b145aafcc5247c2c  illugen-mcp-0.1.1.mcpb" | shasum -a 256 -c
```

### Verify on Windows (PowerShell)

```powershell
(Get-FileHash -Algorithm SHA256 .\illugen-mcp-0.1.1.mcpb).Hash -eq "c3f05551aa69b9c0f47e9831c65f2fe85178030776efc3d3b145aafcc5247c2c"
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-04 (score 52, +1)

No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-01 (score 51, +1)

No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-31 (score 50, 0)

- [functional regression] Security disclosure: unverified → fail

### 2026-10-30 (score 50, +1)

- [functional regression] Security disclosure: fail → unverified

### 2026-10-28 (score 49, +1)

No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-26 (score 48, +1)

No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-24 (score 47, +1)

No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-22 (score 46, +3)

- [functional improvement] Stability: unverified → 0.23

## MCP tools (25)

### `illugen_status` (~139 tokens)

IlluGen status

Reports whether IlluGen is installed and which node catalog this server uses.

Call it first when an engine tool (project_render, project_validate with engine=true, project_screenshot,
project_normalize) fails, or to find the folder of the shipped presets. Takes no arguments, does not start
IlluGen and changes nothing.
Returns: exe (path used, set with the ILLUGEN_EXE variable), installed (bool), running_instances (IlluGen
processes currently open, GUI ones included), catalog_illugen_version and node_types (IlluGen version and
node count of the bundled catalog), presets_dir.

### `list_node_types` (~175 tokens)

List node types

Lists the IlluGen node types this server can create, grouped by category.

Use it to find a type name for node_add, then describe_node_type for that type's parameters and pins.
Offline (IlluGen not needed) and read-only.
Returns {category: [type names]}, e.g. {"Grayscale": ["Node_Grayscale_Noise", ...]}; an empty object means
nothing matched the filters.

Input parameters:

- `category` (string): Keep only this category (exact name, case-insensitive): Grayscale, Color, UV, Normal, Geometry, Utils, Islands, Export, Import, Particle, Camera, Time or Misc. Empty = all categories.
- `search` (string): Keep only type names containing this text (case-insensitive), e.g. 'noise'. Empty = no filter.

### `describe_node_type` (~240 tokens)

Describe node type

Describes one node type: its parameters, curves and typed input/output pins.

Call it before node_add or node_set to get valid parameter names, value kinds, defaults, enum values and UI
ranges, and before link_add to get pin names and the data kind each pin carries. Offline and read-only.
Pin kinds: Grayscale, Color, UV, Normal, Islands, GeometryBuffer...; 'Inherit' takes the kind of whatever is
connected; 'Signal' is a modulator (Oscillator, Cycle, Constant...).
Returns: type, category, params {name: {kind, default, values for enums, min/max, label, modulatable}},
curves, pins {inputs, outputs, optional_inputs} and parameter_pins {pin name: parameter it drives when a
Signal is linked to it, e.g. 'Scale', 'Seed'}. An unknown type fails with close-match suggestions.

Input parameters:

- `node_type` (string, required): Node type name from list_node_types. Case, spaces and the 'Node_' prefix are optional, e.g. 'grayscale noise' for Node_Grayscale_Noise.

### `list_presets` (~119 tokens)

List presets

Lists the example projects shipped with IlluGen, usable as starting points.

Pass a returned name to project_new(from_preset=...) to get an editable copy; the presets themselves are
never modified. Read-only; reads the presets folder of the installed IlluGen.
Returns [{name, path}], sorted by name. The list is empty when nothing matches or when IlluGen is not found
(check illugen_status).

Input parameters:

- `search` (string): Keep only presets whose name contains this text (case-insensitive). Empty = all presets.

Output parameters:

- `result` (array)

### `project_new` (~171 tokens)

New project

Creates a new .illugen project file, blank or copied from a preset or another project.

Start every new graph here, then add nodes with node_add. Writes only the file at `path`; the copied preset
or project is left untouched, and a copied preset is made editable.
Returns the new file's path plus its summary (same shape as project_summary).

Input parameters:

- `from_preset` (string): Optional source to copy: a preset name from list_presets, or an absolute path to any .illugen file. Empty = blank project.
- `overwrite` (boolean): Replace the file if it already exists (its previous content is lost). Default false: fail instead.
- `path` (string, required): Absolute path of the project to create; must end in .illugen. Missing folders are created.

### `project_summary` (~198 tokens)

Project summary

Gives an overview of a project: its nodes, links, export settings, annotations and main settings.

Use it to get node ids before node_get, node_set or link_add, and to check the graph after edits; use
node_get for every value of a single node. Offline and read-only.
Returns: path, graph (scope shown), app_version, settings (frames_per_second, loop_region, default texture
size...), annotations {groups, notes} in index order, node_count and nodes [{id, type, label, pos, links
going out of the node, export settings for Node_Export_* nodes, subgraph_nodes for subgraphs}].

Input parameters:

- `graph` (string): Graph to work in: empty for the top-level graph, or the id or label of a Node_Subgraph node ('outer/inner' for nested subgraphs).
- `path` (string, required): Absolute path of the .illugen project file.

### `node_get` (~224 tokens)

Get node

Returns every detail of one node: parameter values, curves, gradients, spline points, pins and links.

Use it before node_set, curve_set, gradient_set, spline_set or node_set_data to see current values and exact
names; use project_summary for the whole graph. Offline and read-only.
Returns: id, type, label, pos, disabled, params {name: value} ('<driven by link>' when a Signal drives it),
curves {name: [[position, value], ...]}, gradients, spline_points, subgraph pins for subgraphs,
parameter_pins, outgoing and incoming links, known_inputs and known_outputs.

Input parameters:

- `graph` (string): Graph to work in: empty for the top-level graph, or the id or label of a Node_Subgraph node ('outer/inner' for nested subgraphs).
- `node_id` (string, required): Node id as a string (from project_summary or node_add), or the node's label if it is unique.
- `path` (string, required): Absolute path of the .illugen project file.

### `node_add` (~291 tokens)

Add node

Adds a node to the graph with IlluGen's default values, optionally setting some parameters.

Writes the project file in place. Parameter values are checked: an unknown name or invalid enum value fails
with suggestions and nothing is saved; a value outside the UI range is kept and reported in warnings.
Connect the new node with link_add afterwards.
Returns: id (string id of the new node), type, and warnings if any.

Input parameters:

- `graph` (string): Graph to work in: empty for the top-level graph, or the id or label of a Node_Subgraph node ('outer/inner' for nested subgraphs).
- `label` (string): Optional display label. A unique label can then replace the id in the other tools.
- `node_type` (string, required): Node type from list_node_types, e.g. 'Node_Grayscale_Noise' (case, spaces and 'Node_' prefix optional).
- `params`: Parameter values to set, {name: value}, names and kinds from describe_node_type. Vectors and colors as lists ([x, y], [r, g, b, a]), enums as strings. Omitted parameters keep IlluGen's defaults.
- `path` (string, required): Absolute path of the .illugen project file.
- `position`: [x, y] position in the node editor. Default: to the right of the right-most node.

### `node_set` (~278 tokens)

Set node

Changes an existing node's parameter values, label, position or disabled flag.

Only what you pass changes. Writes the project file in place; values are checked like in node_add. For
curves, gradients and spline points use curve_set, gradient_set and spline_set.
Returns: changed {name: new value} and warnings (value outside the UI range, or parameter currently driven
by a link, in which case the value only applies once unlinked).

Input parameters:

- `disabled`: true bypasses the node in IlluGen (a disabled export node is skipped by project_render); false re-enables it; omit to keep it.
- `graph` (string): Graph to work in: empty for the top-level graph, or the id or label of a Node_Subgraph node ('outer/inner' for nested subgraphs).
- `label`: New display label; omit to keep it.
- `node_id` (string, required): Node id as a string (from project_summary or node_add), or the node's label if it is unique.
- `params`: Parameter values to change, {name: value}, same format as node_add. Other parameters are left as is.
- `path` (string, required): Absolute path of the .illugen project file.
- `position`: New [x, y] position; omit to keep it.

### `node_remove` (~172 tokens)

Remove node

Deletes a node from the graph, with its outgoing links and every link from other nodes into it.

Writes the project file in place and cannot be undone: copy the file first if you may need the node back.
To bypass a node without losing it, use node_set(disabled=true) instead.
Returns: removed_links, the number of links from other nodes that pointed to the deleted node.

Input parameters:

- `graph` (string): Graph to work in: empty for the top-level graph, or the id or label of a Node_Subgraph node ('outer/inner' for nested subgraphs).
- `node_id` (string, required): Node id as a string (from project_summary or node_add), or the node's label if it is unique.
- `path` (string, required): Absolute path of the .illugen project file.

### `link_add` (~324 tokens)

Link pins

Connects an output pin of one node to an input pin of another.

Any existing connection into that input is replaced. Pin data kinds are checked (Grayscale, Color, UV...) and
a mismatch fails with an explanation. Parameter pins (e.g. 'Scale', 'Seed') let a Signal node (Oscillator,
Cycle, Constant...) drive a parameter; optional inputs (e.g. Levels 'In Low mod') are exposed automatically.
Subgraph pins are the labels of the subgraph's inner Node_Input/Node_Output nodes. Writes the project file in
place.
Returns: link {from_node, from_pin, to_node, to_pin} and warnings if any.

Input parameters:

- `from_node` (string, required): Source node id or unique label.
- `from_pin` (string, required): Output pin name on the source node (see describe_node_type).
- `graph` (string): Graph to work in: empty for the top-level graph, or the id or label of a Node_Subgraph node ('outer/inner' for nested subgraphs).
- `modulation_range`: Only for parameter pins: [min, max] in 0..1 of the parameter range the Signal sweeps, or one [min, max] pair per vector component. Default: the full range.
- `path` (string, required): Absolute path of the .illugen project file.
- `to_node` (string, required): Destination node id or unique label.
- `to_pin` (string, required): Input pin name on the destination node: a regular input, a parameter pin or a subgraph input.

### `link_remove` (~207 tokens)

Unlink pin

Disconnects an input pin: removes the link(s) arriving at `to_pin` of `to_node`.

Writes the project file in place. If the pin drove a parameter, the parameter gets a fixed value again (its
default if it had none). Removing nothing is not an error. node_get lists a node's incoming links.
Returns: removed, the number of links deleted (0 if the pin was not connected).

Input parameters:

- `from_node` (string): Optional: only remove links coming from this node (id or unique label). Empty = from any node.
- `graph` (string): Graph to work in: empty for the top-level graph, or the id or label of a Node_Subgraph node ('outer/inner' for nested subgraphs).
- `path` (string, required): Absolute path of the .illugen project file.
- `to_node` (string, required): Node id or unique label whose input is disconnected.
- `to_pin` (string, required): Input pin name to disconnect.

### `project_set_settings` (~218 tokens)

Project settings

Changes project-wide settings: frame rate, animation loop region and default texture size.

Only the values you pass change; omitted ones are kept. Applies to the whole project (top-level graph and
subgraphs). Writes the project file in place. The resolution of an individual export is set on its export
node with node_set.
Returns the resulting settings, same shape as project_summary.settings.

Input parameters:

- `default_texture_height`: Default texture height, same values as default_texture_width.
- `default_texture_width`: Default texture width, a power-of-two enum string from '_1' to '_16384', e.g. '_512', '_1024', '_2048'.
- `frames_per_second`: Animation frame rate, e.g. 30 or 60.
- `loop_region`: [start, end] of the animation loop, in seconds (e.g. [0, 2] = 2 s, 120 frames at 60 fps).
- `path` (string, required): Absolute path of the .illugen project file.

### `curve_set` (~242 tokens)

Set curve

Replaces all the keys of a node's curve (remap curves, custom oscillator waveforms...).

The previous keys are discarded. Writes the project file in place.
Returns: curve (name written) and keys (number of keys).

Input parameters:

- `curve` (string, required): Curve name as shown by node_get or describe_node_type, e.g. Noise 'Final remap', Levels 'Main remap', Oscillator 'custom_waveform'.
- `graph` (string): Graph to work in: empty for the top-level graph, or the id or label of a Node_Subgraph node ('outer/inner' for nested subgraphs).
- `interpolation` (string): Interpolation for keys that do not set their own.
- `node_id` (string, required): Node id as a string (from project_summary or node_add), or the node's label if it is unique.
- `path` (string, required): Absolute path of the .illugen project file.
- `points` (array, required): At least 2 keys: [[position, value], ...] (positions usually 0..1), or dicts {position, value, interpolation} to vary the interpolation per key.

### `gradient_set` (~235 tokens)

Set gradient

Replaces a node's color gradient (Color Ramp, Color Interpolate, Geometry Combine Color...).

The previous stops are discarded. Fails if the node has no gradient. Writes the project file in place.
Returns: stops (number written) and color_space.

Input parameters:

- `color_space` (string): Interpolation space between stops. Empty = keep the current one.
- `graph` (string): Graph to work in: empty for the top-level graph, or the id or label of a Node_Subgraph node ('outer/inner' for nested subgraphs).
- `index` (integer): Which gradient of the node, for nodes with several. 0 = first.
- `node_id` (string, required): Node id as a string (from project_summary or node_add), or the node's label if it is unique.
- `path` (string, required): Absolute path of the .illugen project file.
- `stops` (array, required): At least one stop: [[position 0..1, color], ...], color as [r, g, b, a] floats 0..1 or '#rrggbb[aa]'.

### `spline_set` (~263 tokens)

Set spline points

Replaces the control points of a spline, sweep, point-shape or lattice node.

Points are chained in order unless `edges` is given. The previous points are discarded. Fails if the node has
no spline or lattice points. Writes the project file in place.
Returns: points (number written) and edges (number of segments, when applicable).

Input parameters:

- `closed` (boolean): Connect the last point back to the first (closed shape).
- `edges`: Optional explicit segments [[i, j], ...] between point indexes, for branching shapes. Overrides the default chaining.
- `graph` (string): Graph to work in: empty for the top-level graph, or the id or label of a Node_Subgraph node ('outer/inner' for nested subgraphs).
- `node_id` (string, required): Node id as a string (from project_summary or node_add), or the node's label if it is unique.
- `path` (string, required): Absolute path of the .illugen project file.
- `points` (array, required): Control points in order: [x, y, z] in scene units for Grayscale_Spline, Geometry_Sweep and Geometry_Points_Shape; [x, y] in 0..1 for Utils_Lattice.

### `node_set_data` (~233 tokens)

Set raw node data

Low-level escape hatch: overwrites one raw field of a node's internal data block.

Use it only for fields that node_set, curve_set, gradient_set and spline_set do not cover. The value is
written without type checking, so run project_validate(engine=true) afterwards. Writes the project file in
place.
Returns {"ok": true}.

Input parameters:

- `graph` (string): Graph to work in: empty for the top-level graph, or the id or label of a Node_Subgraph node ('outer/inner' for nested subgraphs).
- `key` (string, required): Name of an existing field of the node's data block. An unknown name fails and lists the available fields.
- `node_id` (string, required): Node id as a string (from project_summary or node_add), or the node's label if it is unique.
- `path` (string, required): Absolute path of the .illugen project file.
- `value` (required): New value as tagged JSON, in the same form node_get uses: vectors as {"__vec__": "f3", "v": [x, y, z]}.

### `subgraph_expose_param` (~247 tokens)

Expose subgraph parameter

Shows a parameter of a node inside a subgraph on the subgraph node itself, so it can be tweaked from outside.

To build a subgraph: node_add('Subgraph'), then node_add and link_add with graph=<subgraph id> to add a
Node_Input (its label becomes an input pin name), the inner nodes and a Node_Output (its label becomes an
output pin name). Writes the project file in place.
Returns: id of the exposed parameter, node_id, param_name and label.

Input parameters:

- `graph` (string): Graph to work in: empty for the top-level graph, or the id or label of a Node_Subgraph node ('outer/inner' for nested subgraphs).
- `inner_node` (string, required): Id or unique label of the node inside the subgraph.
- `label` (string): Name shown on the subgraph node. Empty = the parameter name.
- `param` (string, required): Parameter name on the inner node (see describe_node_type).
- `path` (string, required): Absolute path of the .illugen project file.
- `subgraph` (string, required): Id or unique label of the Node_Subgraph node.

### `annotation_add` (~259 tokens)

Add annotation

Adds a comment to the node graph: a framed group around nodes, or a free text note.

Annotations only document the graph; they do not change the rendered result. Writes the project file in place.
Returns {"group": index} or {"note": index}, the index to pass to annotation_remove.

Input parameters:

- `around_nodes`: Groups: ids or labels of the nodes to frame; position and size are computed from them.
- `color_idx` (integer): Groups: color index of the frame. 0 = default color.
- `graph` (string): Graph to work in: empty for the top-level graph, or the id or label of a Node_Subgraph node ('outer/inner' for nested subgraphs).
- `kind` (string, required): 'group' = framed comment box drawn behind nodes; 'note' = free text label.
- `path` (string, required): Absolute path of the .illugen project file.
- `position`: [x, y] top-left corner. Required unless around_nodes is given.
- `size`: [width, height]. Default 600 x 400 for a group, 460 x 60 for a note.
- `text` (string, required): Comment of the group, or text of the note.

### `annotation_remove` (~150 tokens)

Remove annotation

Deletes one group or note annotation from the node graph.

The indexes of later annotations of the same kind shift down by one: re-read project_summary before removing
another. Fails if the index does not exist. Writes the project file in place.
Returns {"ok": true}.

Input parameters:

- `graph` (string): Graph to work in: empty for the top-level graph, or the id or label of a Node_Subgraph node ('outer/inner' for nested subgraphs).
- `index` (integer, required): Index in project_summary.annotations.groups or .notes (0-based).
- `kind` (string, required): Kind of annotation to remove.
- `path` (string, required): Absolute path of the .illugen project file.

### `project_render` (~259 tokens)

Render project

Renders the project with the real IlluGen: runs the export of every enabled Node_Export_* node.

IlluGen runs as a private, invisible instance (an IlluGen open on screen is not affected). The project file
itself is not modified; image files are written to output_dir or to the export nodes' folders, overwriting
files with the same names. Needs IlluGen installed and at least one enabled export node. Run project_validate
first when the graph is new.
Returns: a result {ok, items_written, seconds, files (written paths), exports (settings of each export node),
log_issues} followed by a preview image. On failure: {ok: false, error, log_issues, hint} plus screenshots of
IlluGen's error dialogs.

Input parameters:

- `output_dir` (string): Absolute folder to write every export to (created if needed). Empty = the folders set on the export nodes, usually next to the project.
- `path` (string, required): Absolute path of the .illugen project file.
- `preview` (boolean): Attach a downscaled preview of the first exported image.
- `timeout_s` (integer): Maximum time to wait for the export, in seconds.

### `project_screenshot` (~158 tokens)

Screenshot project

Opens the project in a private, invisible IlluGen and returns a screenshot of its window.

Shows the viewport and the node graph with each node's live preview: use it to check visually what a graph
does, or to see why a render fails. Use project_render to produce the actual image files. Works on a temporary
copy, so the project file is not modified. Needs IlluGen installed; takes a few seconds.
Returns {path} and a PNG image.

Input parameters:

- `height` (integer): Height of the invisible IlluGen window, in pixels.
- `path` (string, required): Absolute path of the .illugen project file.
- `width` (integer): Width of the invisible IlluGen window, in pixels.

### `project_validate` (~217 tokens)

Validate project

Checks a project for problems before rendering it.

Offline checks: unknown node types, unknown parameters, dangling links, missing export node. `legacy_params`
(informational) lists parameters of older project versions, such as the shipped presets, that IlluGen renames
or ignores on load. With engine=true, it also loads and re-saves a temporary copy in an invisible IlluGen,
runs a trial export, and reports what the real loader dropped (nodes, links), serialization errors from its log
and a screenshot of any load-issue dialog. The project file is never modified.
Returns: a report {ok, offline_issues, legacy_params, and with engine: dropped_nodes, dropped_links,
trial_export, engine_log_issues, load_dialog} followed by any screenshots.

Input parameters:

- `engine` (boolean): Also check the project in the real IlluGen (slower, needs IlluGen installed). Default false: offline checks only.
- `path` (string, required): Absolute path of the .illugen project file.

### `project_normalize` (~157 tokens)

Normalize project

Loads the project in a private, invisible IlluGen and saves it back in place, the way IlluGen writes it.

Fills in every default value, applies IlluGen's own fixes and refreshes the embedded thumbnail. Use it before
sharing a project built with this server, or to update a project made with an older IlluGen. Overwrites the
project file; a copy of the original is kept as <name>.illugen.bak (replacing any previous one). Needs IlluGen
installed.
Returns: path, backup (path of the .bak copy), log_issues from IlluGen and node_count.

Input parameters:

- `path` (string, required): Absolute path of the .illugen project file.

### `project_thumbnail` (~108 tokens)

Project thumbnail

Returns the preview image IlluGen embedded in the project file at its last save.

Instant and offline (IlluGen not needed), but it can be outdated or missing for a project edited only through
this server: project_normalize refreshes it, project_screenshot and project_render show the current state.
Read-only.
Returns a JPEG image, or {thumbnail: null, hint} when the file has none.

Input parameters:

- `path` (string, required): Absolute path of the .illugen project file.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/dokanc-illugen-mcp/illugen-mcp#diagnostics

## Score history

- 2026-11-05: 52
- 2026-11-04: 52
- 2026-11-03: 51
- 2026-11-02: 51
- 2026-11-01: 51
- 2026-10-31: 50
- 2026-10-30: 50
- 2026-10-29: 49
- 2026-10-28: 49
- 2026-10-27: 48
- 2026-10-26: 48
- 2026-10-25: 47
- 2026-10-24: 47
- 2026-10-23: 46
- 2026-10-22: 46
- 2026-10-21: 43
- 2026-10-20: 43
- 2026-10-19: 43
- 2026-10-18: 43
- 2026-10-17: 43
- 2026-10-16: 43
- 2026-10-15: 43

## Common questions

### What is the IlluGen MCP server?

IlluGen is an MCP server listed in the public MCP registry as io.github.dokaNc/illugen-mcp. Build, edit and render JangaFX IlluGen node graphs (textures, VFX) from your AI agent. This page covers its MCPB bundle (https://github.com/dokaNc/illugen-mcp/releases/download/v0.1.1/illugen-mcp-0.1.1.mcpb).

### Is the IlluGen MCP server safe to use?

IlluGen scores 52 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the IlluGen MCP server expose?

IlluGen exposes 25 tools: illugen_status, list_node_types, describe_node_type, list_presets, project_new, and 20 more. Their descriptions and schemas cost roughly 5,284 tokens of context every time the server is loaded.

### What licence is the IlluGen MCP server under?

IlluGen declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- Repository: https://github.com/dokaNc/illugen-mcp
- Changelog RSS feed: https://verifymcp.io/servers/dokanc-illugen-mcp/illugen-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/dokanc-illugen-mcp/illugen-mcp.json
- HTML version of this page: https://verifymcp.io/servers/dokanc-illugen-mcp/illugen-mcp
