substance-designer-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SD_MCP_HOME | No | Directory containing config.json and bridge.json. | ~/.substance-designer-mcp |
| SD_MCP_PORT | No | Port used by the Designer plugin bridge. Overrides bridge_port in config.json. | 9817 |
| SD_MCP_SAT_DIR | No | Path to the directory containing sbsrender and sbscooker, if using a separate Automation Toolkit. Defaults to the tools bundled with Designer. Overrides sat_dir in config.json. | |
| SD_MCP_ALLOWED_DIRS | No | Allowed directories for file operations, separated by ';' on Windows and ':' on macOS. Defaults to ~/Documents/SubstanceDesignerMCP. Overrides allowed_dirs in config.json. | ~/Documents/SubstanceDesignerMCP |
| SD_MCP_DESIGNER_DIR | No | Path to the Adobe Substance 3D Designer installation directory. Auto-detected by default. Overrides designer_dir in config.json. |
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
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_app_infoA | Devuelve la version de Designer, el grafo y paquete activos y las herramientas detectadas. Requiere Designer abierto. |
| list_graphsA | Lista los paquetes abiertos y sus grafos de composicion. Oculta las bibliotecas de Adobe. |
| open_graphB | Abre un grafo en el editor. file_path carga antes un .sbs de una carpeta permitida; package es un uid o ruta. |
| create_graphA | Crea un grafo de composicion y lo abre. Sin package crea un paquete nuevo sin guardar. width y height son el tamano en Designer, en potencias de 2. No viajan al .sbsar: al renderizar, indicalos otra vez en render_outputs. format: 8_bits_per_channel, 16_bits_per_channel, hdr_low_precision o hdr_high_precision. |
| list_nodesC | Lista nodos, frames y comentarios de un grafo (por defecto, el activo). |
| get_node_infoB | Devuelve id, definicion, entradas, salidas, parametros con sus valores y conexiones de un nodo. |
| create_nodeB | Crea un nodo. Indica definition para nodos atomicos (p. ej. sbs::compositing::blend) o library para filtros de la biblioteca de Adobe (p. ej. noise_perlin_noise), con library_graph si el paquete contiene varios. Devuelve el id del nodo. |
| delete_nodeC | Borra un nodo y sus conexiones. |
| connect_nodesC | Conecta una salida con una entrada. Sin from_output usa la primera salida. get_node_info muestra los ids. |
| set_node_parameterB | Cambia un parametro del nodo. Vectores y colores van como lista; los enums por su id. $outputsize usa log2: [10, 10] significa 1024x1024. |
| get_node_parameterC | Lee el valor y el tipo de un parametro de un nodo. |
| create_frameB | Crea un frame. Agrupa solo visualmente: la API no asocia nodos a frames, asi que colocalo alrededor de ellos. |
| create_commentB | Crea un comentario suelto o, con node_id, unido a un nodo (x e y son entonces relativas a el). |
| auto_layoutB | Ordena los nodos en columnas de izquierda a derecha. Es un layout propio: la API no ofrece uno. No mueve frames ni comentarios, asi que usalo antes de crear los frames. |
| expose_parameterB | Crea un parametro del grafo y, con node_id y node_parameter, hace que controle ese parametro del nodo. Sin default, un parametro enlazado toma el valor actual del nodo. type: float, float2, float3, float4, color, int, int2, int3, int4, bool o string. |
| create_output_nodeC | Crea un nodo de salida con usage: baseColor, normal, roughness, metallic, height o ambientOcclusion. Con source_node lo conecta a esa fuente. |
| save_packageC | Guarda un paquete. Un paquete nuevo necesita path (.sbs) dentro de una carpeta permitida. |
| export_sbsarB | Exporta un paquete abierto a .sbsar desde Designer. Sin Designer abierto, usa cook_sbs. |
| cook_sbsB | Cocina un .sbs a .sbsar con sbscooker. No necesita Designer abierto. |
| render_outputsA | Renderiza los mapas de un .sbsar con sbsrender. No necesita Designer abierto. parameters es {identificador: valor}; los vectores van como lista. Rechaza parametros que el archivo no exponga. bit_depth: 8, 16, 16f o 32f. Indica width y height (potencias de 2): sin ellos, sbsrender usa 256x256, no el tamano del grafo. |
| batch_renderA | Renderiza varios .sbsar con varios juegos de parametros. No necesita Designer abierto. parameter_sets es una lista de {"name": str, "parameters": {...}}. Los archivos quedan en output_dir//. Un fallo no detiene el resto; revisa "failed" y "jobs". Indica width y height: sin ellos, sbsrender usa 256x256. |
| run_pythonA | Ejecuta codigo Python arbitrario dentro de Designer, en su hilo principal. REQUIERE CONFIRMACION EXPLICITA: muestra el codigo al usuario y espera su aprobacion antes de
llamar con confirmed=true. Puede leer, modificar o borrar cualquier cosa a la que Designer tenga
acceso; la restriccion de carpetas permitidas NO aplica dentro de este codigo. Usala solo cuando
ninguna otra herramienta sirva. Dispones de |
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 22 tools
Most tools target distinct actions on distinct resources (graphs, nodes, parameters, outputs). A couple of pairs could be momentarily confused—export_sbsar vs cook_sbs (both produce .sbsar, differing only by Designer requirement) and render_outputs vs batch_render—but the descriptions clearly distinguish them. The run_python escape hatch is well-flagged as a last resort.
Almost all names follow a clean verb_noun snake_case pattern (list_graphs, create_node, set_node_parameter, save_package, cook_sbs). Minor deviations: batch_render is noun_verb where render_batch would be consistent, and auto_layout uses an adjective as the verb. Still highly readable and predictable overall.
22 tools is on the heavy side of the ideal 3-15 range but justified by a genuinely complex node-graph editor domain with graph, node, parameter, layout, and render lifecycle operations. No tool appears redundant; each earns its place. Slightly over but reasonable.
Strong lifecycle coverage: graph open/create/save, node CRUD, connections, parameter get/set, frames/comments, layout, output nodes, and multiple render/export paths plus a run_python escape hatch. Minor gaps exist—no delete_graph/close_graph, no delete_frame/delete_comment, no disconnect_nodes, and no way to list available node definitions for create_node. These are workaroundable via run_python or by overwriting.