touchdesigner-mcp

Controls TouchDesigner via the twozero MCP server to build, wire, and record node networks.

6|1|Updated May 11, 2026
One-click install
npx skills add https://github.com/yakeworld/Synthos --skill touchdesigner-mcp-yakeworld
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: touchdesigner-mcp
Source: https://github.com/yakeworld/Synthos/tree/main/skills/extended/external-automation/creative/web-code/touchdesigner-mcp
Command: npx skills add https://github.com/yakeworld/Synthos --skill touchdesigner-mcp-yakeworld

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) components.

What problem does it solve? Building TouchDesigner networks programmatically is error-prone because parameter names change between TD versions and naive scripting causes crashes like "Invalid OP object" errors. This Skill provides a verified workflow for driving TouchDesigner 2025.32 through the twozero MCP server (localhost:40404) with 36 native tools, eliminating guesswork around parameter names, wiring, and video recording. ## Core Features & Use Cases - Safe Node Construction: Enforces discovery-first rules (td_get_par_info, td_get_hints) before creating operators, setting parameters, and wiring TOP/CHOP/SOP/DAT/MAT/COMP networks. - Audio-Reactive GLSL Recipes: Provides a tested signal chain (AudioFileIn → AudioSpectrum → Math → CHOP to TOP → GLSL TOP) with verified parameters for spectrum-driven shaders. - Video Recording & Export: Guides MovieFileOut-based recording with ProRes/MJPEG codecs compatible with Non-Commercial licenses, including pre-record FPS and black-frame checks. - Use Case: Ask the agent to build an audio-reactive GLSL visual in TouchDesigner and record 120 frames of ProRes video; the Skill sets up the MCP connection, builds the network with validated parameters, verifies no errors, and records the output. ## Quick Start Run the setup script at scripts/setup.sh, drag twozero.tox into TouchDesigner, enable MCP auto-start, then ask the agent to build a noise-to-level-to-null TOP chain and screenshot the output.

Frequently Asked Questions about touchdesigner-mcp

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I control TouchDesigner from an AI agent?

Use the twozero MCP server, a free TouchDesigner plugin that exposes 36 native tools over Streamable HTTP on localhost port 40404. After installing the .tox component and enabling MCP auto-start, the agent can create operators, set parameters, wire nodes, and capture screenshots.

How to build an audio-reactive GLSL shader in TouchDesigner?

Chain AudioFileIn CHOP into AudioSpectrum CHOP (FFT=512, outlength=256, timeslice on), then Math CHOP with gain 10, then CHOP to TOP feeding a GLSL TOP. Never use Lag or Filter CHOPs for spectrum smoothing since timeslice mode averages values to near-zero.

Why does TouchDesigner give Invalid OP object errors when scripting?

This happens when destroying and recreating same-named nodes inside a single td_execute_python script. Split cleanup and creation into separate MCP calls so stale object references are released before new nodes are created.

What video codecs work with TouchDesigner Non-Commercial license?

Use ProRes on macOS or MJPA as a fallback, since H.264, H.265, and AV1 encoding require a Commercial license. Non-Commercial also caps resolution at 1280x1280 unless you set outputresolution to custom with explicit width and height.

Why is my TouchDesigner parameter script failing with tdAttributeError?

Parameter names vary between TD versions, so training-data guesses are often wrong for TD 2025.32. When tdAttributeError fires, stop immediately and call td_get_operator_info on the failing node, then use td_get_par_info to get correct parameter names.

Is the twozero MCP server secure to run locally?

The MCP server binds to localhost only with no authentication, meaning any local process can send commands, and td_execute_python has unrestricted access to the TD Python environment. It never sends data outside localhost, but avoid exposing the port on shared machines.