tdmcp is a Model Context Protocol (MCP) server for TouchDesigner — build TouchDesigner from plain language. You describe a visual to an AI assistant (Claude, Claude Code, Cursor, Codex); the AI builds the actual network of nodes inside your project, checks it for errors, and shows you a preview.
"Create a feedback tunnel from noise with blur and displace, then add bloom and output it to a window."
…and the nodes appear, wired up, in your /project1.
It works because it pairs two things every other tool was missing:
- Real knowledge — an embedded reference of 629 operators, 68 Python classes, workflow patterns, GLSL techniques and tutorials, so the AI uses real TouchDesigner operators instead of guessing.
- Real execution — a small bridge running inside TouchDesigner that actually creates, connects, inspects and previews nodes — with a create → verify → preview loop so the AI can see and fix its own work. Every generated network is auto-arranged into a readable left→right layout.
Full guides and reference live on the docs site → https://pantani.github.io/tdmcp/
| For artists / musicians | For developers |
|---|---|
| What is tdmcp? | Architecture |
| Install (no terminal) | Tools reference |
| Your first visual | Environment variables |
| Prompt cookbook | CLI & local copilot |
| Recipe gallery | Bridge & REST API |
| Troubleshooting | Roadmap · Deployment |
🇧🇷 Documentação em português: https://pantani.github.io/tdmcp/pt/
Three pieces talk to each other on your computer:
You + your AI tdmcp server TouchDesigner
(Claude / Cursor) ─▶ (a small program) ─▶ (the bridge inside TD)
"make a feedback builds real nodes
tunnel from noise" in /project1
- Your AI assistant — where you type what you want.
- The tdmcp server — a small Node program that gives the AI a set of TouchDesigner "tools" and the operator knowledge base. You install it once.
- The bridge — a tiny piece that runs inside TouchDesigner so the server can actually drive it. You switch it on once per machine.
- TouchDesigner — the free non-commercial edition is fine.
- An MCP-capable AI assistant: Claude Desktop (easiest), Claude Code, Codex, or Cursor.
Node.js is only needed for the build-from-source path (Node 20+).
The one-click Claude Desktop extension needs nothing extra — the server is bundled
inside the .mcpb (formerly .dxt; legacy .dxt files still install).
You set up two sides: your AI (so it gets the tdmcp tools) and TouchDesigner (so the AI can drive it).
🤖 Easiest — let your AI install it. Using Claude Code, Codex, or Cursor? Paste this one message in:
Install and connect tdmcp for me by reading and following
https://raw.githubusercontent.com/Pantani/tdmcp/main/tdmcp-install-prompt.md
Do every step yourself; only stop when you need me to paste one line into TouchDesigner.
It clones, builds and wires everything up; the only manual step is pasting one line into TouchDesigner (Step 2 below).
🟢 Claude Desktop — one-click .mcpb (no terminal, no Node). Download
tdmcp.mcpb,
then in Claude Desktop open Settings → Extensions and install it (drag it in or
Install from file). Leave host/port at 127.0.0.1 / 9980. Full walkthrough:
the install guide.
🛠️ Claude Code / Codex / Cursor — build from source.
git clone https://github.com/Pantani/tdmcp.git
cd tdmcp
npm run setup # installs, builds, and prints the exact line to connect your clientOpen TouchDesigner, open the Textport (Dialogs → Textport and DATs), paste
this one line and press Enter:
import urllib.request; exec(urllib.request.urlopen("https://raw.githubusercontent.com/Pantani/tdmcp/main/td/bootstrap.py").read().decode())You should see [tdmcp] bridge running on port 9980 (/project1/tdmcp_bridge). ✅
It's safe and reversible — it adds one tidy component; remove it later with
from mcp import install; install.uninstall(). Other install methods (module
path, terminal, reusable .tox) are in the
bridge docs.
With TouchDesigner open and your AI connected, ask in plain language:
"Create an audio-reactive particle galaxy and show me a preview."
The AI builds the network, checks it for errors, and returns a thumbnail. Iterate: "make it warmer," "add a feedback trail," "output it fullscreen." More ideas in the prompt cookbook.
Not connecting? The two most common fixes: make sure the bridge is on (
curl http://127.0.0.1:9980/api/inforeturns JSON), and restart your AI client after adding the server. Full troubleshooting.
102+ tools across three layers, plus an Obsidian vault integration — from
one-line artist generators (create_feedback_network, create_audio_reactive,
create_particle_system, create_generative_art, …) to building blocks
(create_control_panel, animate_parameter, create_external_io for
OSC/MIDI/DMX/NDI, …) down to atomic node CRUD and inspection. Many systems arrive
already playable, with a control panel you can tweak, preset, or map to a
controller. See the full, always-current
tools reference and the
recipe gallery.
The bridge runs arbitrary Python inside your TD process and listens on port
9980 on all interfaces — treat it like an open door to that machine. Run it only
on a trusted network, and for untrusted networks turn on bridge auth
(TDMCP_BRIDGE_TOKEN) and/or disable the exec endpoints
(TDMCP_BRIDGE_ALLOW_EXEC=0). Details:
Security.
Build with npm install && npm run build; run npm test, npm run typecheck,
npm run lint. Work on the docs with npm run docs:dev (the
tools reference is generated by
scripts/gen-tool-docs.ts). See CONTRIBUTING.md,
CHANGELOG.md, and the roadmap.
MIT — see LICENSE.