TouchDesigner MCP
OFFICIAL SERVERBuild, wire and inspect operators and set parameters inside a running TouchDesigner project
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
Opens the app, which asks before it adds the server.
claude mcp add touchdesigner -- npx -y touchdesigner-mcp-server@latest{
"mcpServers": {
"touchdesigner": {
"command": "npx",
"args": [
"-y",
"touchdesigner-mcp-server@latest"
]
}
}
}{
"mcpServers": {
"touchdesigner": {
"command": "npx",
"args": [
"-y",
"touchdesigner-mcp-server@latest"
]
}
}
}{
"servers": {
"touchdesigner": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"touchdesigner-mcp-server@latest"
]
}
}
}[mcp_servers.touchdesigner]
command = "npx"
args = ["-y", "touchdesigner-mcp-server@latest"]gemini mcp add --scope user touchdesigner npx -- -y touchdesigner-mcp-server@latestTouchDesigner 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.
| Runtime | Node.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.
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.
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.
create_td_nodedelete_td_nodedescribe_td_toolsexec_node_methodexecute_python_scriptget_td_class_detailsget_td_classesget_td_infoget_td_module_helpget_td_node_errorsget_td_node_parametersget_td_nodesget_top_imageupdate_td_node_parameters