物质设计师MCP
Adobe Substance 3D Designer的第一个MCP(模型上下文协议)集成。
从任何兼容MCP的AI客户端(Claude Code、Claude Desktop、Cursor)控制物质设计器——创建图形、构建节点、连接它们、设置参数、从单个提示生成完整的PBR材料图。
______________________________________________________________________
它做什么
- 自然语言→ SD图:“制造开裂的混凝土材料”→ 44-节点PBR图,包括高度、法线、粗糙度、AO、基色、金属输出
- 79种内置材料配方:使用与专业SD艺术家相同的节点架构的专业级材料
- 16个MCP工具:在一次调用中获取场景信息、创建/删除图形、创建节点、连接节点、设置参数、构建完整材质
- 库节点支持:云、细胞、Perlin噪声、多边形、边缘检测、洪水填充、多向扭曲等。
- 线程安全:所有SD API调用通过Signal/Slot排队连接发送到Qt主线程
______________________________________________________________________
建筑
AI Client (Claude / Cursor)
│ stdio (MCP protocol)
▼
sd_mcp_bridge.py (FastMCP server, Python 3.12)
│ TCP localhost:9881 (length-prefix framing)
▼
SD Plugin __init__.py (Python 3.11, runs inside SD)
│ sd.api
▼
Adobe Substance 3D Designer 15.x网桥和插件通过简单的长度前缀成帧协议进行通信: [4-byte big-endian length][JSON payload]每个命令都使用一个新的TCP套接字——没有持久连接,没有过时状态。
______________________________________________________________________
需求
- Adobe Substance 3D Designer 15.x (15.0.3测试)
- Python 3.12+ 桥(通过管理 紫外线)
- 紫外线 包管理器:
pip install uv或winget install astral-sh.uv - MCP兼容客户端: 克劳德代码, 克劳德桌面版,或 光标
______________________________________________________________________
安装
步骤1--安装SD插件
复制 plugin/ 将文件夹内容保存到SD用户脚本目录:
窗户:
%USERPROFILE%\Documents\Adobe\Adobe Substance 3D Designer\python\sduserplugins\sd_mcp_plugin\目录必须包含:
sd_mcp_plugin/
├── __init__.py ← main plugin (TCP listener, all MCP tools)
└── recipes.py ← 79 material recipesSD自动加载来自的所有插件 sduserplugins/ 在启动时。无需额外配置。
步骤2——安装网桥服务器
cd server/
uv sync # installs mcp[cli] into .venv或者使用pip:
pip install "mcp[cli]>=1.4.1"步骤3--配置MCP客户端
克劳德代码 (~/.claude/settings.json):
{
"mcpServers": {
"substance_designer": {
"command": "C:\\Users\\YOUR_USERNAME\\.local\\bin\\uv.exe",
"args": [
"run",
"--directory",
"C:\\PATH\\TO\\substance-designer-mcp\\server",
"python",
"sd_mcp_bridge.py",
"--port",
"9881"
]
}
}
}看 config/ Claude Desktop和Cursor示例的文件夹。
步骤4--在AI客户端之前启动SD
SD必须在MCP网桥启动之前运行。 该插件在SD启动时绑定TCP端口9881。如果Claude/Cursor启动时SD未运行,则网桥将无法连接。
______________________________________________________________________
用法
连接后,您可以要求您的AI客户端:
Build a weathered steel material with surface oxidationCreate a cliff heightmap with high detail and disorderMake a new graph called MyRock, add a clouds node and a slope blur, connect themList all available material recipes可用的MCP工具
| 工具 | 说明 |
|---|---|
get_scene_info | 列出所有打开的包和图表 |
create_graph | 创建新的合成图 |
get_graph_info | 获取图中的所有节点和连接 |
list_node_definitions | 搜索可用节点类型 |
create_node | 创建原子节点(混合、级别、模糊等) |
create_instance_node | 创建库节点(云、细胞、Perlin等) |
create_output_node | 创建PBR输出(基色、法线、高度等) |
connect_nodes | 通过端口连接两个节点 |
disconnect_nodes | 删除连接 |
set_parameter | 设置节点参数 |
get_node_info | 获取节点的端口和参数 |
delete_node | 删除节点 |
move_node | 重新定位节点 |
duplicate_node | 复制原子节点 |
delete_graph | 从包中删除图形 |
open_graph | 在SD编辑器中打开图形 |
save_package | 将包保存到磁盘 |
execute_sd_code | 在SD的上下文中执行任意Python |
build_material_graph | 在一次通话中构建完整的PBR材料 |
build_heightmap_graph | 在一次调用中构建一个仅包含高度图的图形 |
list_recipes | 列出所有79种可用的材料配方 |
get_recipe_info | 获取特定食谱的详细信息 |
apply_recipe | 将配方应用于现有图形 |
材料配方
build_material_graph(graph_name="MySteel", recipe_name="pro_steel")
# → 37-node PBR graph: height + normal + roughness + AO + baseColor + metallic
build_heightmap_graph(graph_name="CliffHM", style="cliff", detail_level=3, scale=5.0, disorder=0.5)
# → 9-node heightmap graph专业配方(37-44个节点,专业架构): pro_granite, pro_limestone, pro_sandstone, pro_basalt, pro_slate, pro_steel, pro_iron, pro_copper, pro_concrete, pro_concrete_aged, pro_concrete_smooth
核心材料: steel, iron, copper, gold, silver, aluminum, brass, granite, marble, sandstone, limestone, slate, basalt, wood, wood_oak, moss, bone, leather, fabric_cotton, fabric_silk, fabric_wool, fabric_denim, fabric_burlap, sand, mud, gravel, clay, soil, ice, snow, frost, water, diamond, ruby, sapphire, emerald, amethyst, concrete, brick, lava, asphalt, plaster, tile, painted_metal, carbon_fiber, terracotta, obsidian, ...
高度图样式: cliff, rock, sand, cracked, mud, mountain, cobblestone, terrain
______________________________________________________________________
关键规则(SD 15.x)
这些是SD 15.x API的硬约束-违反它们挂起或崩溃SD:
- 一次调用一个工具 --从不并行调用SD工具
SDUsage.sNew()永久悬挂SD 15 --已从插件中删除newNode(unknown_definition)永久悬挂SD 15 --插件在调用前进行验证arrange_nodes()销毁所有连接 --使用move_node()相反- 库节点输出为 从不
"unique_filter_output"--总是打电话get_node_info第一 directionalwarp扭曲贴图端口="inputintensity"(不是inputgradient)- 中的端口ID错误
connect_nodes=crash--插件在调用SD之前进行验证
______________________________________________________________________
已知库节点端口(SD 15.0.3)
| 节点 | 输出 | 关键输入 |
|---|---|---|
clouds_2 | output | scale, disorder |
cells_1 | output | scale, disorder |
perlin_noise | output | scale, disorder |
polygon_2 | output | Sides, Scale, Gradient |
gradient_linear_1 | Simple_Gradient | Tiling, rotation |
gradient_axial | output | point_1, point_2 |
slope_blur_grayscale_2 | Slope_Blur | Samples, Source, Effect |
blur_hq_grayscale | Blur_HQ | Intensity, Source |
non_uniform_blur_grayscale | Non_Uniform_Blur | Intensity, Anisotropy, Source |
edge_detect | output | edge_width, tolerance, input |
flood_fill | output | mask |
flood_fill_to_gradient_2 | output | angle, input, angle_input |
flood_fill_to_grayscale | output | luminance_random, input |
multi_directional_warp_grayscale | output | intensity, directions, input, intensity_input |
highpass_grayscale | Highpass | Radius, Source |
histogram_scan | Output | Position, Contrast, Input_1 |
invert_grayscale | Invert_Grayscale | Source |
crystal_1 | output | scale, disorder |
______________________________________________________________________
故障排除
网桥无法连接到SD:
- 在启动AI客户端之前,确保SD正在运行并已完全加载
- 检查SD日志:
%LOCALAPPDATA%\Adobe\Adobe Substance 3D Designer\log.txt(寻找[SD-MCP]) - 验证插件是否正确
sduserplugins目录
SD在收到命令后挂起:
- 可能使用了错误的节点定义。重新启动SD。
- 该插件在调用SD之前验证节点定义,但库节点需要正确
pkg://URL。
错误端口:
- 插件正在监听 9881 默认情况下。桥梁必须使用
--port 9881.
插件未加载:
- 删除
__pycache__/在插件目录中,然后重新启动SD。
______________________________________________________________________
许可证
MIT许可证——见 许可证
______________________________________________________________________
作者
基于专业Substance Designer节点图模式深入分析的Pro配方架构:clouds_2→ slope_blur→ 边缘检测→ 洪水泛滥→ 多向扭曲→ 定向曲链。
______________________________________________________________________
贡献
PR欢迎。需要改进的关键领域:
- 更多材料配方
- 彩色图形支持(当前以高度/灰度为重点)
- 插件安装的Windows+macOS路径处理
- SD插件的自动安装脚本
