About Touchdesigner MCP Server
Touchdesigner MCP Server is an MCP server published by familienak-tech in the Blockchain category: mCP server integration for TouchDesigner in order to create patches from Claude Code/ Codex/ Visual Studio.
The repository has 12 stars and 0 forks, with the last commit 16 days ago. Recent commit activity is the strongest signal that reported issues will get attention.
Install
git clone https://github.com/familienak-tech/Touchdesigner---MCP-serverThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about Touchdesigner MCP Server
Powered by Claude · Grounded in docs
Security checks
Static checks derived from the repository 2 days ago. Heuristics on the source, not an audit.
- ✓README presentThe repository ships documentation.
- !License declaredNo license file. Legally you have no right to use it in a product.
- ✓Tests presentA test suite exists in the repository.
- ✓Dependencies pinnedA lockfile pins dependency versions.
- !No dynamic code executionSource scan found eval or shell execution. Review how tool inputs reach it before granting credentials.
1 check has not been run yet.
README
TD-Codex Ultimate MCP
An MCP server for TouchDesigner. It lets Claude Code, Codex, Cursor, VS Code and other MCP clients inspect and build networks in a running TouchDesigner session.
It has two parts:
| Part | Where | What it does |
|---|---|---|
| TD_mcp bridge | td-bridge/ (runs inside TouchDesigner) |
A Web Server DAT serving MCP at http://127.0.0.1:5326/mcp, with 68 td_* tools: create/connect/inspect operators, parameters, DATs, Python, validation, snapshots, knowledge packs. |
| Hub | packages/mcp-server/ (Node.js) |
An MCP server at http://127.0.0.1:3000/mcp that forwards all 68 bridge tools and adds 43 of its own: creative-prompt pipeline, vision, performance, show control, LED planning, media servers. |
Connect your client to the hub to get everything, or straight to the bridge for just the td_* tools.
Quick start
Requirements: TouchDesigner 2025 or later, Node.js 18 or later.
1. Start the bridge in TouchDesigner
-
Drag
td-bridge/TD_mcp.toxinto your project. -
On the COMP's TD_mcp page, set Modules Folder to this repo's
td-bridge/modulesfolder. You can leave it empty if the.toxis loaded as an external tox fromtd-bridge/, or if themodulesfolder sits next to your.toe. -
Check the bridge is up:
curl http://127.0.0.1:5326/health # {"status": "ok", "modules": ".../td-bridge/modules", "error": null}
The COMP has Port (default 5326) and Active parameters. If the bridge can't start, /health
returns the Python traceback.
To build the bridge by hand instead: create a Web Server DAT and set its Callbacks DAT to a Text DAT
holding td-bridge/modules/mcp_webserver_script.py. The modules folder is found from (in order) the
TD_MCP_MODULES environment variable, a Modulesfolder parameter on the parent COMP, the callbacks
DAT's synced file location, the external .tox location, and the project folder.
2. Start the hub
cd packages/mcp-server
npm install
npm start
| Variable | Default | Purpose |
|---|---|---|
PORT |
3000 |
Hub port |
TD_MCP_URL |
http://127.0.0.1:5326/mcp |
Bridge endpoint |
TD_REQUEST_TIMEOUT_MS |
15000 |
Timeout per bridge call |
The hub starts and accepts MCP connections even while TouchDesigner is down: the bridge tools appear once TD is reachable, and tool calls that need TD return an error result until then.
3. Connect a client
The .mcp.json at the repo root points MCP clients at the hub:
{ "mcpServers": { "td-codex": { "type": "http", "url": "http://127.0.0.1:3000/mcp" } } }
For Claude Code from anywhere: claude mcp add --transport http td-codex http://127.0.0.1:3000/mcp
Tools
Bridge tools (td_*, 68)
Live operator control (td_create_node, td_connect_nodes, td_set_node_parameter, td_exec_python_script,
...), DAT text, Python class/module help, operator and palette reference, snapshots and .tox export,
scene/layout validation, release packaging, and curated knowledge, rule and workflow packs.
Call td_get_connection_protocol first: it returns the rules the bridge expects agents to follow.
Hub tools (43)
| Group | Tools | Touches TD? |
|---|---|---|
| Pipeline | td_creative_prompt: knowledge → blueprint → validation → build under rootPath (default /project1), with optional vision check |
Yes |
| Knowledge / compiler / validator / runtime | td_knowledge_*, td_compiler_*, td_validator_*, td_runtime_* (blueprints are template-based scaffolds: containers, nulls and controls, not finished effects) |
Runtime tools only |
| Vision | td_vision_capture_screenshot returns a real PNG/JPEG of any TOP as MCP image content; td_vision_analyze_output / _analyze_and_suggest / _generate_corrections compute real pixel statistics and give rule-based suggestions (no semantic image understanding) |
Read only |
| Performance | td_performance_collect_metrics (fps, frame time, dropped frames, GPU memory, slowest operators), _analyze, _get_report, _get_thresholds, _set_thresholds |
Read only (uses a temporary Perform CHOP) |
| Show control | td_showcontrol_create_artnet_output, _sacn_output, _osc_receiver, _osc_sender, _midi_input, _midi_output, _setup_timecode_sync, _get_protocol_status build real DMX Out / OSC / MIDI / LTC / Timecode operators under parentPath. Outputs are created inactive unless you pass active: true |
Yes |
| Media servers | td_media_connect_millumin / _connect_resolume create an OSC Out DAT (default ports 5000 / 7000); _send_millumin_command / _send_resolume_command send real OSC; _get_connection_status, _list_connections, _disconnect |
Yes |
| LED planning | td_led_*: wall / strip / voxel / pixel-mapper layouts, universe allocation (170 RGB or 128 RGBW pixels per universe), CSV/JSON channel maps |
No: planning helpers only (modifiesTouchDesigner: false) |
Not supported: VITC timecode (TD has no VITC operator), decoding incoming MTC (needs a script), and Notch / Disguise (they need proprietary SDKs).
REST
Every tool is also available as POST /tools/<toolName> with the arguments as the JSON body. The older
paths (/vision/capture-screenshot, /showcontrol/create-artnet-output, /media/connect-millumin, ...)
and POST /mcp/creative-prompt still work. GET /health reports hub and TD status.
Tests
| Command | Needs TD | Covers |
|---|---|---|
npm test (in packages/mcp-server) or node tests/hub_protocol_test.js |
Optional | MCP protocol: handshake, notifications, batches, errors, TD proxying |
python3 tests/td_bridge_smoke.py |
Yes | Calls every bridge tool in a sandbox COMP (--root, default /td_mcp_test, must exist) |
node tests/hub_vision_performance_test.js |
Yes | Real screenshots and metrics |
node tests/hub_showcontrol_test.js |
Yes | Show-control operators, including a live OSC round trip |
node tests/hub_led_media_test.js (--skip-td for LED maths only) |
Yes | LED maths, real OSC packets to a UDP listener |
The TD tests only create operators under /td_mcp_test and delete them afterwards.
Notes
- The bridge's Python packages are called
td_mcpandtd_mcp_utils, notmcp/utils, so they don't shadow the officialmcpSDK that other tools (e.g. Envoy) load into the same TouchDesigner process. td_exec_python_scriptruns in a fresh namespace with TouchDesigner's names (op,noiseTOP,absTime, ...). Setresult = ...to return data. Scripts that create operators get a layout validation report for what they created.packages/embedded-mcp-server/,td_codex_ultimate_production_patch/, the rootexamples/andSUMMARY.md/IMPLEMENTATION_SUMMARY.mddescribe older designs (WebSocket server on 8765, bridge on 9980). They are not part of the supported setup above.
License
MIT
README fetched from the repository 2 days ago. The original is authoritative.