› cavi-ai/
GitHub ↗

Configuration

All configuration is through environment variables on the server entries in your MCP client, for example "env": {"CAVI_SUBSTANCE_WORKSPACE": "/absolute/path"}.

VariableServerDefaultMeaning
CAVI_SUBSTANCE_WORKSPACEall~/Documents/SubstanceMCPAsset workspace every tool reads from and writes to
CAVI_PAINTER_PORTPainter60041Painter's local scripting port
CAVI_PAINTER_APPPainterstandard Adobe installationPainter app bundle that runtime start launches
CAVI_DESIGNER_BIN_DIRDesigner—Folder holding sbscooker, sbsrender and substance3d_baker
CAVI_DESIGNER_APPDesignerstandard install dirDesigner .app path, used when CAVI_DESIGNER_BIN_DIR is unset
CAVI_SAMPLER_BINSampler—Exact Sampler executable
CAVI_SAMPLER_APPSamplerstandard install pathSampler .app path, used when CAVI_SAMPLER_BIN is unset
CAVI_SAMPLER_SCRIPT_PATHSamplerSampler's per-user scripts folderStartup-scripts folder that sampler_status reports

Workspace#

The default workspace is created the first time a tool writes to it. A workspace you set yourself must already exist; a missing one is refused instead of created. Read-only tools never create it; the one exception is that a Sampler call holds its lock file in the workspace, so it creates the default first. Inputs and outputs stay inside it, including through symbolic links. Export and copy operations require a new destination directory and refuse existing ones. All three servers share the one workspace, so the output of one application is an input to the next.

Painter connection#

Connections use 127.0.0.1 directly, without HTTP proxies or redirects. See the Security model.

Application discovery#

  • Designer binaries: CAVI_DESIGNER_BIN_DIR, else CAVI_DESIGNER_APP, else the standard

install dir for macOS, Windows or Linux, else sbsrender on PATH. An override is final: a wrong one is reported as not found, not replaced.

  • Sampler executable: CAVI_SAMPLER_BIN, else CAVI_SAMPLER_APP, else the standard

install path for macOS, Windows or Linux, else the executable on PATH. Each Sampler launch also sets Adobe's own SAMPLER_SCRIPT_PATH for the Sampler it starts; that variable is Adobe's, not ours.