touchdesigner-agent-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., "@touchdesigner-agent-mcpcreate a circle TOP and connect it to a render TOP"
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.
ποΈ touchdesigner-agent-mcp
A premium, open-source Model Context Protocol (MCP) server that empowers LLMs (like Claude) to directly control, introspect, and build TouchDesigner networks in real-time.
With this server, an AI coding agent can create and connect operators, query parameters, capture the viewport to see what it built, automatically fix compile errors, and stream real-time data from TouchDesigner CHOPs.
ποΈ Architecture
This repository uses a zero-dependency, dual-process architecture:
βββββββββββββββββββββββββββββββββββ
β Claude / MCP Host β
ββββββββββββββββββ¬βββββββββββββββββ
β
β MCP (stdio)
βΌ
βββββββββββββββββββββββββββββββββββ
β touchdesigner-agent-mcp (Python Client) β
ββββββββββββββββββ¬βββββββββββββββββ
β
β HTTP (POST /mcp)
βΌ
βββββββββββββββββββββββββββββββββββ
β TouchDesigner Web Server DAT β (Installed via td/install.py)
ββββββββββββββββββ¬βββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββ
β TouchDesigner Operators β
βββββββββββββββββββββββββββββββββββThe TouchDesigner side is built completely in plain Python (exposed via a Web Server DAT), meaning no binary .tox files or opaque components. You can read, audit, and diff every single line of code running in your project.
Related MCP server: touchdesigner-mcp
β¨ Features
π Dual-Directional Integration
25 Tools: Full CRUD for nodes, wiring, force-cooking, viewport rendering, and GLSL editing.
4 Prompt Templates: Guiding instructions that teach LLMs the best tool combinations for node finding, error handling, operator connections, and network repairs.
4 Resource Templates: Native MCP
td://resources that let the LLM stream live data from CHOP channels, node parameters, and project metadata.
π‘οΈ Undo Safety (Ctrl+Z)
Every single tool invocation that mutates TouchDesigner is automatically wrapped in a transaction block (ui.undo). If the agent makes a mistake, deletes a critical node, or wires something incorrectly, you can instantly revert it by pressing Ctrl+Z inside TouchDesigner.
β‘ Progress Tracking
Long-running operations (like scene scaffolding, viewport captures, and force-cooking) report real-time progress to the MCP client via the report_progress API, showing you exactly what the server is doing.
π Zero-Config Security
On first installation, the installer auto-generates a secure, random Auth Token (secrets.token_urlsafe(32)) and binds it to the component. The token is preserved across reinstalls, keeping your TouchDesigner instance secure from unauthorized remote code execution (RCE).
ποΈ Tool Matrix
Category | Tools | Description |
System Info |
| Inspect TouchDesigner build, OS, and available tool schemas. |
Node CRUD |
| Create, read, update, and delete operators. |
Parameters & Errors |
| Read parameters, query errors, or trigger pulses/methods. |
Python RCE |
| Run arbitrary Python scripts directly inside the TouchDesigner execution context. |
Introspection |
| Let the LLM search TouchDesigner's Python API, docs, and help pages. |
Visual Vision |
| Captures any TOP/COMP or the active network pane as an image (Base64 or file path). |
Scene Scaffold |
| Scaffold complete pipelines (Feedback Loop, Instancing, Render Setup) in one click. |
Advanced Wiring |
| Family-validated operator wiring and automatic positioning without node overlaps. |
GLSL & Files |
| Author GLSL shaders, import/export |
Media Assets |
| Scan local project directories for video, audio, images, and geometry assets. |
π‘ Resources
MCP Clients can read or subscribe to real-time resources using the td:// URI scheme:
URI Template | Resource Type | Description |
| Dynamic CHOP Stream | Streams active float values for all channels in the target CHOP (e.g. |
| Node Parameters | Lightweight read endpoint for parameters and operator metadata. |
| Error State | Inspects compilation or wiring errors for the target node and its children. |
| Static Project Info | Metadata including project name, folder path, and the TouchDesigner app build. |
π Quick Start
1. Set Up TouchDesigner Side
Copy the
td/folder somewhere stable on your disk.In TouchDesigner, open the Textport (
Alt+T) and run the installer:import sys sys.path.append('/ABSOLUTE/PATH/TO/td') import install install.install()This creates
/project1/td_agent_mcpwith a Web Server DAT running on port9981.Note the secure Auth Token printed in the Textportβyou will need this for step 3.
If you make changes to the scripts in thetd/ directory, you can reload and reinstall them instantly using:
import importlib; importlib.reload(install); install.install()
2. Install the MCP Server
Build and run the server using uv (recommended):
# To run locally
uv sync
uv run touchdesigner-agent-mcp --stdio3. Register the Server with Your Client
Claude Desktop
Add the server configuration to your claude_desktop_config.json:
{
"mcpServers": {
"touchdesigner-agent-mcp": {
"command": "uv",
"args": [
"run",
"--directory",
"/ABSOLUTE/PATH/TO/touchdesigner-agent-mcp",
"touchdesigner-agent-mcp",
"--stdio"
],
"env": {
"TD_AUTH_TOKEN": "YOUR_AUTO_GENERATED_TOKEN_HERE"
}
}
}
}Claude Code (CLI)
Install the bundled marketplace plugin:
/plugin marketplace add axysar/touchdesigner-agent-mcpβοΈ Configuration Reference
You can configure the client using environment variables or command-line flags:
Environment Variable | CLI Flag | Default | Description |
|
|
| The hostname/IP of the machine running TouchDesigner. |
|
|
| The port of the Web Server DAT. |
|
| (empty) | Security token matching the |
|
|
| Request timeout in seconds. |
π Security Hardening
Because the server allows arbitrary Python execution inside TouchDesigner (giving the LLM full RCE capabilities on your local system), security is critical:
Token Auth: All incoming HTTP requests require a valid
Authorization: Bearer <token>header.Auto-Generation: If a token isn't manually specified, the installer automatically generates a cryptographically secure 32-character token.
CORS Protection: The TouchDesigner Web Server DAT strictly rejects requests from arbitrary browser origins.
Traversals: Asset scanning is restricted to a maximum depth of
5levels to prevent system performance issues or directory leaks.
π οΈ Development & Contributing
See CLAUDE.md for quick-start development guidelines.
Running Tests
To run registration, schema validation, and resource-binding checks without requiring TouchDesigner to be active:
uv run pytestCode Style
We use ruff to enforce linting and formatting standards:
uv run ruff check .
uv run ruff format .π License & Attribution
This project is licensed under the MIT License β see LICENSE.
It synthesizes and extends two outstanding prior open-source works:
@8beeeaaat/touchdesigner-mcp (Dual-process structure and baseline CRUD operations).
@satoruhiga/claude-touchdesigner (TouchDesigner helper libraries).
TouchDesigner is a registered trademark of Derivative.
Maintenance
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
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/axysar/touchdesigner-agent-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server