Skip to main content
Glama
substance-designer-mcp

substance-designer-mcp

by PropGon

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
SD_MCP_HOMENoDirectory containing config.json and bridge.json.~/.substance-designer-mcp
SD_MCP_PORTNoPort used by the Designer plugin bridge. Overrides bridge_port in config.json.9817
SD_MCP_SAT_DIRNoPath 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_DIRSNoAllowed 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_DIRNoPath 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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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 sd y app; asigna a result lo que quieras devolver.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.3/5.0

Scored across 22 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count4/5

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.

Completeness4/5

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.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues