touch-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@touch-mcpcreate a noise CHOP and connect it to a null CHOP"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
touch-mcp
High-performance MCP server for TouchDesigner — live control via WebSocket from any MCP-compatible AI (Claude, etc.)
Claude/LLM ←── stdio (MCP) ──→ touch-mcp ←── WebSocket ──→ TouchDesigner (.tox)Why touch-mcp
The most comprehensive MCP server for TouchDesigner available. Unlike simpler alternatives, touch-mcp offers:
Persistent WebSocket connection — every tool call is a lightweight message, not a full HTTP round-trip
37 tools covering nodes, parameters, connections, data access, scripting, timeline, rendering, layout, and more
Batching — bundle multiple operations into a single round-trip with
td_batch, critical for building complex networks fastAuto-reconnection — survives TD restarts and network hiccups
Auto-positioning — new nodes are placed intelligently in the network editor
Full Python access — execute arbitrary Python inside TD with
td_execute_script, with access to all operator types and globals
Quick Start
1. Install touch-mcp
pip install touch-mcpOr from source:
git clone https://github.com/benoitliard/touch-mcp.git
cd touch-mcp
pip install -e ".[dev]"2. Install the TouchDesigner bridge component
Open TouchDesigner (2024+), then drag TouchMCPBridge.tox from the td/ folder into your project. The component starts a WebSocket server on port 9980 automatically.
For instructions on building the .tox from source, see td/BUILD_TOX.md.
3. Configure your MCP client
See the configuration sections below, then start a conversation — touch-mcp connects to TouchDesigner on first use.
Configuration
Claude Desktop
Add the following to your claude_desktop_config.json:
{
"mcpServers": {
"touchdesigner": {
"command": "touch-mcp",
"args": ["--td-port", "9980"]
}
}
}The config file is located at:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Claude Code
Create or edit .mcp.json in your project root:
{
"mcpServers": {
"touchdesigner": {
"command": "touch-mcp",
"args": ["--td-host", "localhost", "--td-port", "9980", "--timeout", "30"]
}
}
}Available Tools
37 tools organised by category.
Nodes
Tool | Description |
| Create a new operator node (auto-positioned in the network) |
| Delete a node and all its children |
| List child nodes under a path, optionally filtered by family |
| Get detailed metadata for a node (type, position, connections) |
| Copy a node with all its parameters to a new location |
| Rename a node without destroying it |
| Search for nodes by name, type, or family recursively |
| Get errors and warnings for a node (and optionally its children) |
| Set display, render, and/or bypass flags on a node |
Parameters
Tool | Description |
| Read current parameter values for a node |
| Set one or more parameter values on a node |
| Get parameter schema (style, range, menu options, defaults) |
| Set a parameter to expression mode with a Python expression |
| Pulse a parameter (trigger reload, reset, etc.) |
Connections
Tool | Description |
| Wire two nodes together by output and input index |
| Disconnect a node's input or output connector |
| List all wires entering and leaving a node |
Data
Tool | Description |
| Read channel sample data from a CHOP node |
| Read TOP metadata (resolution, aspect) |
| Read point and primitive geometry from a SOP node |
| Read text or table contents from a DAT node |
| Write text or append rows to a DAT node |
Scripts
Tool | Description |
| Execute arbitrary Python inside the live TouchDesigner instance |
| List all TD Python classes available in the environment |
| Inspect methods and properties of a TD Python class |
| Get |
Timeline
Tool | Description |
| Get the current timeline state (frame, fps, range, loop) |
| Set one or more timeline properties (frame, fps, range, loop) |
| Start timeline playback |
| Pause timeline playback |
Render
Tool | Description |
| Save a TOP's current frame as a PNG file on disk |
| Export a rendered TOP frame to a file on disk |
Project
Tool | Description |
| Get project metadata (name, path, fps, TD build/version) |
| Save the project in place or to a new path |
Layout
Tool | Description |
| Set network-editor x/y positions for one or more nodes |
| Evenly distribute nodes along a horizontal or vertical axis |
Batch
Tool | Description |
| Execute multiple operations in a single WebSocket round-trip |
CLI Options
touch-mcp [OPTIONS]
Options:
--td-host TEXT TouchDesigner WebSocket host (default: localhost)
--td-port INT TouchDesigner WebSocket port (default: 9980)
--timeout FLOAT Per-request timeout in seconds (default: 30.0)
--debug Enable debug loggingDevelopment
git clone https://github.com/benoitliard/touch-mcp.git
cd touch-mcp
pip install -e ".[dev]"
pytestStatic analysis:
ruff check src/License
MIT
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/benoitliard/touch-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server