TouchDesigner MCP

Builds, inspects and edits TouchDesigner node networks from an MCP client

By sadao komaki (individual) TypeScript Local · stdio MediaDesign

70 popularity score ★ 619 ↓ 3.1k/wk

Connect your client

Local (npm)

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 touchdesigner -- npx -y touchdesigner-mcp-server@latest
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "touchdesigner": {
      "command": "npx",
      "args": [
        "-y",
        "touchdesigner-mcp-server@latest"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "touchdesigner": {
      "command": "npx",
      "args": [
        "-y",
        "touchdesigner-mcp-server@latest"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "touchdesigner": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "touchdesigner-mcp-server@latest"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.touchdesigner]
command = "npx"
args = ["-y", "touchdesigner-mcp-server@latest"]
Gemini CLITerminal
gemini mcp add --scope user touchdesigner npx -- -y touchdesigner-mcp-server@latest

What it does

TouchDesigner MCP connects an MCP client to a running TouchDesigner project. It does not open .toe files by itself: you first import a component it ships (mcp_webserver_base.tox) into the project, and that component starts a WebServer DAT. The Node.js server then sends its requests to that DAT over HTTP, by default at http://127.0.0.1:9981.

Through it an assistant can list the nodes under a path, read and change node parameters, create and delete nodes, call Python methods on a node, check a node and its children for errors and warnings, and look up TouchDesigner's Python classes and help text. One tool runs any Python script inside TouchDesigner, and get_top_image returns the current output of a TOP node as a JPEG, so the assistant can see what the network renders. The source at v2.1.0 caps that capture at 4096 px on the longer side (maxSize), and get_td_classes returns 50 entries unless a limit is given. The server also has three prompts (search a node, connect nodes, check node errors) and no resources.

The server and the .tox component are versioned apart. Each release checks the component's API version: an older but supported component gets an update notice in replies, while one below the minimum (1.3.0) or a major version ahead stops the tools until one side is updated. It runs over stdio by default; with --mcp-http-port it serves Streamable HTTP instead, bound to 127.0.0.1 unless --mcp-http-host is given.

What it needs

RuntimeNode.js 22+

TouchDesigner installed and running, with mcp_webserver_base.tox from the release's touchdesigner-mcp-td.zip imported into the project and its folder layout left intact. Node.js 22.18+, 24.x or 26+ for the npx command (odd releases like 23.x and 25.x are not supported). Docker and Docker Compose plus a clone of the repository for the container route. Claude Desktop users can install the .mcpb bundle instead of using Node.

Limits

Works only on a TouchDesigner instance that is already running with its component loaded; it cannot open or launch a project on its own (the Claude Code and Codex plugins add a launch command that starts a fresh project). The component must match the server's API version, or tools stop with an error. A failed connection check is cached for 60 seconds before it retries. get_top_image downsizes to at most 4096 px when maxSize is set and returns JPEG only. No MCP resources are implemented.

Who it suits

Suits TouchDesigner artists and developers who want an assistant to build or debug node networks in a project open on their own machine, and who are fine giving it full Python access inside TouchDesigner. It is a community project, not one from Derivative, the maker of TouchDesigner. It is of no use without a local TouchDesigner install. If you want an assistant that only reads a project, note that execute_python_script and the node edit tools are always registered; the server has no read-only mode.

Tools 14

create_td_node
Adds a new node of a given type under a parent path
delete_td_node
Removes a node from the project
describe_td_tools
Lists the server's TouchDesigner tools as a manifest, with an optional keyword filter
exec_node_method
Calls a Python method on a chosen node
execute_python_script
Runs any Python script inside TouchDesigner and returns the result
get_td_class_details
Shows the members of one TouchDesigner Python class or module
get_td_classes
Lists TouchDesigner Python classes and modules, 50 by default
get_td_info
Reports details of the running TouchDesigner and its server
get_td_module_help
Returns Python help() text for a TouchDesigner module or class
get_td_node_errors
Collects errors and warnings for a node and everything under it
get_td_node_parameters
Reads the parameters of one node
get_td_nodes
Lists nodes under a parent path, with optional filters and limit
get_top_image
Captures a TOP node's current output as a JPEG image
update_td_node_parameters
Changes parameter values on a node

Similar servers