TouchDesigner 控制
通过 twozero MCP 控制运行中的 TouchDesigner 实例。
关键规则
- 绝不猜测参数名。先为 op 类型调用
td_get_par_info。 - 如果
tdAttributeError触发,停止。在继续之前对失败的节点调用td_get_operator_info。 - 绝不在脚本回调中硬编码绝对路径。使用
me.parent()/scriptOp.parent()。 - 优先使用原生 MCP 工具而非 td_execute_python。使用
td_create_operator、td_set_operator_pars、td_get_errors等。 - 构建前调用
td_get_hints。它返回你正在使用的 op 类型特定的模式。
架构说明
Hermes Agent -> MCP (Streamable HTTP) -> twozero.tox (port 40404) -> TD Python
36 个原生工具。免费插件(无付费/许可证)。
上下文感知(知道选中的 OP、当前网络)。
安装配置(自动化)
运行设置脚本处理所有内容:
bash "${HERMES_HOME:-$HOME/.hermes}/skills/creative/touchdesigner-mcp/scripts/setup.sh"
手动步骤(一次性)
- 将
~/Downloads/twozero.tox拖入 TD 网络编辑器 → 点击 Install - 启用 MCP:点击 twozero 图标 → Settings → mcp → "auto start MCP" → Yes
- 重启 Hermes 会话以拾取新的 MCP 服务器
环境要求
- 非商业 TD分辨率上限为 1280×1280。使用
outputresolution = 'custom'并明确设置 width/height。 - 编解码器:
prores(macOS 上首选)或mjpa作为后备。H.264/H.265/AV1 需要商业许可证。 - 设置参数前始终调用
td_get_par_info——名称因 TD 版本而异。
工作流程
步骤 0:发现(构建任何东西之前)
Call td_get_par_info with op_type for each type you plan to use.
Call td_get_hints with the topic you're building.
Call td_get_focus to see where the user is and what's selected.
Call td_get_network to see what already exists.
步骤 1:清理 + 构建
重要:将清理和创建分成单独的 MCP 调用。
为每个节点使用 td_create_operator:
td_create_operator(type="noiseTOP", parent="/project1", name="bg", parameters={"resolutionw": 1280, "resolutionh": 720})
td_create_operator(type="levelTOP", parent="/project1", name="brightness")
td_create_operator(type="nullTOP", parent="/project1", name="out")
步骤 2:设置参数
td_set_operator_pars(path="/project1/bg", parameters={"roughness": 0.6, "monochrome": true})
步骤 3:连线
使用 td_execute_python——无原生连线工具:
op('/project1/bg').outputConnectors[0].connect(op('/project1/fx').inputConnectors[0])
步骤 4:验证
td_get_errors(path="/project1", recursive=true)
td_get_perf()
td_get_operator_info(path="/project1/out", detail="full")
步骤 5:显示/捕获
td_get_screenshot(path="/project1/out")
MCP 工具快速参考
核心(最常用):
| 工具 | 功能 |
|---|---|
td_execute_python | 在 TD 中运行任意 Python。完整 API 访问。 |
td_create_operator | 带参数创建节点 + 自动定位 |
td_set_operator_pars | 安全设置参数(验证,不会崩溃) |
td_get_operator_info | 检查一个节点:连接、参数、错误 |
td_get_network | 查看路径上的网络结构 |
td_get_errors | 递归查找错误/警告 |
td_get_par_info | 获取 OP 类型的参数名 |
td_get_hints | 构建前获取模式/提示 |
视觉:
| 工具 | 功能 |
|---|---|
td_get_screenshot | 捕获一个 OP 查看器到文件 |
td_navigate_to | 跳转网络编辑器到 OP |
音频响应式 GLSL(经验证配方)
正确信号链
AudioFileIn CHOP (playmode=sequential)
→ AudioSpectrum CHOP (FFT=512, outputmenu=setmanually, outlength=256, timeslice=ON)
→ Math CHOP (gain=10)
→ CHOP to TOP (dataformat=r, layout=rowscropped)
→ GLSL TOP input 1 (spectrum texture, 256x2)
关键音频响应规则
- AudioSpectrum 的 TimeSlice 必须保持开启。关闭 = 处理整个音频文件 → 溢出。
- 手动设置 Output Length 为 256。
- 不要使用 Lag CHOP 进行频谱平滑。在 GLSL 着色器中完成。
- CHOP to TOP dataformat = 'r',layout = 'rowscropped'。
Operator 快速参考
| 家族 | 颜色 | Python 类 | 后缀 |
|---|---|---|---|
| TOP | 紫色 | noiseTOP, glslTOP, levelTOP, nullTOP | TOP |
| CHOP | 绿色 | audiofileinCHOP, audiospectrumCHOP, mathCHOP | CHOP |
| SOP | 蓝色 | gridSOP, sphereSOP, transformSOP | SOP |
| DAT | 白色 | textDAT, tableDAT, scriptDAT | DAT |
| MAT | 黄色 | phongMAT, pbrMAT, glslMAT | MAT |
| COMP | 灰色 | geometryCOMP, containerCOMP, windowCOMP | COMP |
安全说明
- MCP 仅在 localhost 运行(端口 40404)。无认证。
td_execute_python可无限制访问 TD Python 环境和文件系统。- 此 skill 从不向 localhost 外发送数据。所有 MCP 通信都是本地的。
安装指南
复制下方命令,在终端运行即可安装:
# 安装到当前项目
npx skills add touchdesigner-mcp
# 全局安装 — 所有项目可用
npx skills add touchdesigner-mcp -g
使用指南
安装完成后,在对话框中直接使用此技能。