TouchDesigner MCP

Build, wire and inspect operators and set parameters inside a running TouchDesigner project

Official · TouchDesigner Python Local · Streamable HTTP DesignMediaDeveloper tools

31 popularity score ★ 88

Connect your client

Local (once it is running)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude CodeTerminal
claude mcp add --transport http touchdesigner http://127.0.0.1:13316/mcp
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "touchdesigner": {
      "url": "http://127.0.0.1:13316/mcp"
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "touchdesigner": {
      "type": "http",
      "url": "http://127.0.0.1:13316/mcp"
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.touchdesigner]
url = "http://127.0.0.1:13316/mcp"
Gemini CLITerminal
gemini mcp add --scope user --transport http touchdesigner http://127.0.0.1:13316/mcp

What it does

TDMCP is Derivative's own MCP server for TouchDesigner. It lives inside the app. You download TDMCP.tox from the GitHub Releases page, drag it into the root of your project and switch on Active. From then on the component answers streamable-HTTP MCP at http://127.0.0.1:13316/mcp, with the port and server name both changeable on its MCP page.

The component reference lists 26 tools. Most of them build and edit networks: creating and wiring operators, moving and annotating them, setting or pulsing parameters, adding custom parameters and writing DAT text. The rest read things back, like CHOP channels, TOP pixels, cook errors and cook times, or capture an operator as an image. There is also get_docs for the TouchDesigner documentation and execute_code for arbitrary Python. Each edit is one undo step. The network editor also pans to whatever the agent touched and flashes it so you can follow along while it works.

For Claude Code, Codex, Antigravity, OpenCode and Cursor the component writes out the registration command for you. Claude Desktop instead gets a TDMCP.mcpb extension (added in 1.1.56) that you drag onto its Extensions page. A separate skills library from the TDMCPSkills repository can be installed into each client's skills folder with one button.

Since 1.1.56 every new client has to be approved in a consent panel inside TouchDesigner. An unanswered request expires after five minutes and an approved client's token lasts 24 hours, per the security docs. The changelog also notes that deleting operators skips its confirmation dialog by default since 1.1.51. The project is a public beta, and its Shared Use License lets you modify it but not redistribute TDMCP itself as a product.

What it needs

Runs onmacOS, Windows
Also
  • TouchDesigner 2025.33230 or newer, running with the TDMCP.tox component Active

Download TDMCP.tox from the repository's Releases, drop it into the project root and turn on Active. Claude Desktop uses TDMCP.mcpb from the same release instead. A manual Claude Desktop config through the mcp-remote bridge needs Node.js 18+. HTTPS needs mkcert, with `mkcert -install` run once by hand.

Limits

  • Early release Public beta: its makers say the interface may still change.
  • Platform Runs only where TouchDesigner runs. The docs give paths for Windows and macOS only.
  • Not covered Listens on 127.0.0.1 by default. LAN access is answered only when both Use HTTPS and Ask for authentication are on.
  • Limit Two TouchDesigner instances need different Server Name values, or one silently shadows the other.
  • Limit Skills install for Claude Code, Codex, Antigravity and OpenCode v2. Cursor and OpenCode v1 are connection-only.
  • Limit Shared Use License: free to use and modify, but TDMCP itself may not be redistributed as a product.

Who it suits

Suits TouchDesigner users who want a coding agent to build and debug networks in the project they have open, with each change landing in the undo stack. It is published by Derivative and runs entirely on your own machine with no account. Because it can run any Python inside TouchDesigner, it is closer to giving the agent a shell than a narrow tool set. Keep authentication on, or leave it out of projects you cannot afford to have edited.

Tools 26

13 only read, 12 change things, 1 can delete or overwrite.

project_info
Reports the project, panes and server details, meant as the first call
list_operators
Lists the operators inside a component
search_operators
Finds operators across the project by type, family or name
get_operator_info
Gives one operator's type, position, size, changed parameters and connections
get_connections
Shows an operator's wiring or a component's whole signal flow
get_help
Looks up parameter names, types and menu values for operator types
get_docs
Reads TouchDesigner's Python API and operator docs, falling back to derivative.ca
get_parameters
Reads parameter values from one or more operators
set_parameters changes
Changes parameter values on one or more operators
pulse_parameter changes
Triggers a pulse-type parameter
edit_custom_parameters changes
Adds, edits, sorts, renames or removes custom parameters on a COMP
create_operator changes
Creates an operator at a position with given parameters
build_network changes
Creates and wires several operators in a single call
wiring changes
Connects or disconnects operators
edit_operator changes
Renames, copies, moves, retypes, flags or colours an operator
reposition_operators changes
Moves several operators at once
delete_operator changes
Removes an operator, with no confirmation unless Auto-accept deletion is off
annotation changes
Creates or edits annotation boxes in the network
get_dat_content
Reads a DAT's text or table
set_dat_content changes
Writes or edits a DAT, optionally kept in sync with a file on disk
get_errors
Lists cook errors and warnings for an operator and its children
inspect_values
Reads runtime values such as channels, pixels, points or cells
view_operator
Captures an operator's output as an image
get_cook_performance
Reports cook times to find slow parts of a network
execute_code deletes
Runs any Python inside TouchDesigner
save_project changes
Saves the project file, refusing to replace another file unless overwrite is true

Similar servers