TouchDesigner MCP Server
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 MCP Serverwrite a script to generate a reaction diffusion network"
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 MCP Server
A powerful Model Context Protocol (MCP) server that brings comprehensive TouchDesigner operator documentation, Python API references, and tutorials directly to your AI coding assistant.
I personally use it with VS Code/Codium and the Roo Code Extension alongside my favorite LLMs like Claude Opus and GPT-5. While the server should theoretically work with other applications like Docker or Claude Desktop, I haven't thoroughly tested those integrations yet.
The Story So Far: The catalyst for this project was simple -- A few months ago I decided I wanted an AI tool that could develop visuals in TouchDesigner for me. I've been making some basic things in TD for awhile but it has one of the steepest learning curves of any creative software I've ever used. How nice would it be just to ask an LLM "Please make a 720p, animated in realtime, constantly evolving, reaction diffusion simulation in TouchDesigner." and then just have it spit one out? Super duper nice is the answer in my opinion.
Like every project I undertake where I know very little, I thought it would be pretty straight forward! LOL! When I started I had no idea just how much time and tokens I would end up sinking into this one. And I still have a ways to go before I consider it complete with full integration into TouchDesigner itself and very little margin of error.
However as far as querying information about operators and their parameters goes -- it works pretty darn well! The major challenge I face with getting any LLM to use this tool effectively for developing networks with real complexity is that the models tend to forget to use the MCP server and fall back on their outdated trained knowledge of much older TouchDesigner versions. If anyone has suggestions on how to overcome this particular wrinkle, I'd absolutely love to hear your feedback!
How to Use It (My Current Workflow)
Right now, I'm focused on ensuring the server returns useful and accurate Python API information. Here's my workflow: I describe the network I want to create -- for example, a reaction diffusion visualization -- and then ask the AI to write a Python script that generates the network inside TouchDesigner using the textport. Once that's complete, I get an 'exec' command that lets me copy and paste just one line into the textport, and voila -- a network is generated!
My ultimate dream, however, is full integration directly into TouchDesigner itself. I experimented with a web server and WebSocket approach, which sort of worked, but since the LLMs I was testing weren't generating correct Python code and kept hallucinating information while not utilizing the MCP server to its fullest potential, I've temporarily shelved this part of the project. Once it's working reliably and generating solid visualizations or networks, then full integration will be the final step!
Related MCP server: touch-mcp
Features
630 TouchDesigner Operators - Complete documentation including 90+ experimental POP operators
14 Interactive Tutorials - Comprehensive TouchDesigner learning guides
69 Python API Classes - Full Python scripting documentation with 1,510+ methods
21 MCP Tools - Across five functional groups: operator reference, tutorials, Python API, version system, and experimental content
32 Workflow Patterns - Curated operator chain patterns with 72 common transitions
Version System
Version History - All stable TD releases documented from 099 through 2024
Compatibility Tracking - Per-operator and per-method version compatibility data
Python Timeline - Full Python version history bundled with each TD release
Release Highlights - Key features and breaking changes per major release
Experimental Techniques Knowledge Base
7 Technique Categories - GLSL, GPU compute, machine learning, generative systems, audio-visual, networking, Python advanced
2,000+ Lines of Code - Working, paste-ready code snippets for advanced techniques
16 Named GLSL Patterns - Complete shader code for raymarching, reaction-diffusion, feedback, and more
Difficulty Ratings - Each technique rated with minimum TD version requirements
Core Enhancements
Operator Wiring Guides - Exact port-level connection instructions for 20+ common operators
Network Templates - Five ready-to-build network templates with Python generation scripts
Version-Aware Search - Filter operators and Python API by TD release compatibility
Smart Workflow Suggestions - Port wiring, complexity ratings, and node count estimates
Experimental Build Support
6 Experimental Build Series - Documented from builds 20000 through current (2025.10000)
Feature Flag Tables - Opt-in/opt-out flags for each experimental series
Graduation Tracking - Which experimental features graduated into stable releases
Breaking Change Logs - Per-series breaking changes versus the stable baseline
Core Server Features
Smart Search - Direct search with category filtering, parameter search, and version filtering
Zero Configuration - Works immediately after installation
Pure MCP Implementation - Clean stdio-based server, no web server overhead
Local Data Processing - All documentation served from local JSON files, no network requests
Installation
Global Installation (Recommended)
npm install -g @bottobot/td-mcpLocal Installation
npm install @bottobot/td-mcpQuick Start
Using with VS Code/Codium and Claude
Install the MCP server globally:
npm install -g @bottobot/td-mcpConfigure Claude/MCP in VS Code: Add the server to your MCP settings configuration file:
{ "td-mcp": { "command": "npx", "args": ["@bottobot/td-mcp"] } }Start using TouchDesigner tools in your conversations with Claude!
Running Standalone
# If installed globally
td-mcp
# If installed locally
npx @bottobot/td-mcpAvailable MCP Tools (21 Total)
Core Operator Tools
get_operator
Get comprehensive details about a specific TouchDesigner operator including all parameters, tips, and code examples.
Parameter | Type | Required | Description |
| string | Yes | Operator name (e.g., 'Noise CHOP', 'Movie File In TOP') |
| boolean | No | Show code examples and usage |
| boolean | No | Show tips and performance notes |
| string | No | Include compatibility block showing when the operator was added or changed for this TD version |
Example: "Get detailed information about the Noise CHOP operator"
Example: "Get the Engine COMP documentation for TD 2022"search_operators
Search for operators using contextual analysis and relevance ranking.
Parameter | Type | Required | Description |
| string | Yes | Search query |
| string | No | Filter by category (CHOP, DAT, SOP, TOP, MAT, COMP, POP) |
| string | No | Filter by subcategory (e.g., 'Audio', 'Filters') |
| string | No | Search mode: 'fuzzy' (default), 'exact', or 'tag' |
| string | No | Filter to operators compatible with a specific TD version (e.g., '2022') |
| boolean | No | Search within parameter names and descriptions |
| boolean | No | Show detailed results with keywords |
| number | No | Maximum results (default: 10, max: 50) |
Example: "Search for audio processing operators in the CHOP category"
Example: "Find operators added in TD 2022"list_operators
List available TouchDesigner operators with optional category filtering.
Parameter | Type | Required | Description |
| string | No | Filter by operator category |
Example: "List all TOP operators"compare_operators
Compare two operators side by side -- parameters, categories, shared/unique features.
Parameter | Type | Required | Description |
| string | Yes | First operator name |
| string | Yes | Second operator name |
| boolean | No | Include parameter comparison (default: true) |
Example: "Compare Blur TOP with Luma Blur TOP"get_operator_examples
Get Python code examples, expressions, and usage patterns for a specific operator.
Parameter | Type | Required | Description |
| string | Yes | Operator name |
| string | No | Type: 'all', 'python', 'expressions', or 'usage' |
Example: "Get Python examples for Movie File In TOP"suggest_workflow
Get workflow suggestions for what operators commonly follow the current operator.
Parameter | Type | Required | Description |
| string | Yes | Current operator name |
Example: "What operators typically follow a Movie File In TOP?"Tutorial Tools
get_tutorial
Access detailed TouchDesigner tutorial content with full sections, code, and links.
Parameter | Type | Required | Description |
| string | Yes | Tutorial name |
| boolean | No | Include full content sections |
| boolean | No | Include table of contents |
| boolean | No | Include related links |
Example: "Get the 'Write a GLSL TOP' tutorial"list_tutorials
List all available TouchDesigner tutorials with optional filtering.
Parameter | Type | Required | Description |
| string | No | Search term to filter tutorials |
| number | No | Maximum results |
| boolean | No | Show tutorial summaries and keywords |
Example: "List all available tutorials"search_tutorials
Search through tutorial content by keyword, topic, or content.
Parameter | Type | Required | Description |
| string | Yes | Search query |
| boolean | No | Search within section content (default: true) |
| number | No | Maximum results (default: 10) |
Example: "Search tutorials for GLSL shader examples"Python API Tools
get_python_api
Get documentation for a TouchDesigner Python class including members and methods.
Parameter | Type | Required | Description |
| string | Yes | Python class name (e.g., 'CHOP', 'Channel', 'App') |
| boolean | No | Show class members/properties |
| boolean | No | Show class methods |
| boolean | No | Show inherited members and methods |
| string | No | Annotate each method/member with its introduction version and exclude API added after this TD version |
Example: "Get Python documentation for the CHOP class"
Example: "Get Python API for the App class as of TD 2021"search_python_api
Search across TouchDesigner Python classes, methods, and members.
Parameter | Type | Required | Description |
| string | Yes | Search query |
| string | No | Where to search: 'all', 'classes', 'methods', 'members' |
| string | No | Filter by category |
| string | No | Filter classes, methods, and members to those available in the specified TD version |
| number | No | Maximum results |
Example: "Search Python API for audio methods"
Example: "Find Python API methods available in TD 2020"list_python_classes
List all available Python API classes grouped by category.
Parameter | Type | Required | Description |
| string | No | Filter by category (e.g., 'Operator', 'General') |
| string | No | Search term to filter classes |
| boolean | No | Show member/method counts |
Example: "List all Python API classes in the Operator category"Version System Tools
get_version_info
Get detailed information about a specific TouchDesigner stable release: which Python version it bundles, new operators introduced, key features, Python API additions, and breaking changes.
Parameter | Type | Required | Description |
| string | Yes | TD version string (e.g., '2024', '2022', '2019', '099') |
Example: "What Python version does TouchDesigner 2022 use?"
Example: "What operators were added in TouchDesigner 2023?"list_versions
List all supported TD versions (099, 2019, 2020, 2021, 2022, 2023, 2024) with a quick-reference table showing the bundled Python version and support status for each release, plus the full Python version timeline.
Parameter | Type | Required | Description |
(none required) | — | — | Returns all versions with highlights |
Example: "List all supported TouchDesigner versions"
Example: "Show the Python version timeline for TouchDesigner"Experimental Techniques Tools
get_experimental_techniques
Browse a curated library of advanced TouchDesigner techniques by category. Returns descriptions, difficulty ratings, version requirements, operator chains, uniform tables, and full working code snippets.
Parameter | Type | Required | Description |
| string | Yes | Technique category. Aliases accepted: 'glsl', 'gpu-compute', 'machine-learning', 'generative-systems', 'audio-visual', 'networking', 'python-advanced' |
| string | No | ID of a specific technique within the category |
Example: "Show me GLSL raymarching techniques in TouchDesigner"
Example: "Get GPU compute techniques using numpy"Available Categories:
Category | Alias(es) | Techniques |
glsl | shader, raymarching, sdf | Raymarching, reaction-diffusion, feedback, procedural noise |
gpu-compute | gpu, cuda | Script TOP numpy, CUDA, Shared Memory, GPU instancing |
machine-learning | ml, ai | Engine COMP, ONNX, Stable Diffusion, MediaPipe, Body Track |
generative-systems | generative, lsystem | L-systems, Game of Life, strange attractors, boids |
audio-visual | audio, fft | FFT geometry, beat detection, granular synthesis, MIDI |
networking | network, osc, ndi | OSC, WebSocket, NDI, TDAbleton, multi-machine |
python-advanced | python, numpy, opencv | asyncio, tdu.Dependency, threading, numpy, OpenCV |
search_experimental
Full-text search across all 7 experimental technique categories. Results ranked by weighted field scoring (name, tags, description, notes, code).
Parameter | Type | Required | Description |
| string | Yes | Search query |
| string | No | Restrict search to one category |
| boolean | No | Include code snippets in results |
| number | No | Maximum results (default: 10, max: 30) |
Example: "Search experimental techniques for reaction diffusion"
Example: "Find GPU instancing examples in the experimental library"get_glsl_pattern
Retrieve a specific named GLSL pattern with complete, paste-ready shader code. Covers 16
named patterns across raymarching, reaction-diffusion, feedback, procedural noise, cellular
automata, and GPU particle simulation. Also provides three reusable GLSL utility libraries.
Use pattern: "list" to enumerate all available patterns.
Parameter | Type | Required | Description |
| string | Yes | Pattern name or 'list' to see all available patterns |
| boolean | No | Include GLSL utility library code (default: false) |
Example: "Get the raymarching GLSL pattern"
Example: "List all available GLSL patterns"
Example: "Get the reaction diffusion shader pattern"Core Enhancement Tools
get_operator_connections
Get a wiring guide for a specific operator: what operators typically connect upstream as inputs and downstream as outputs, with exact port numbers, rationale, and workflow pattern names. Covers 20+ common operators across all families.
Parameter | Type | Required | Description |
| string | Yes | Operator name (with or without family suffix; case-insensitive) |
Example: "What connects to and from a Render TOP?"
Example: "Show me the typical connections for a Noise CHOP"get_network_template
Return a complete, ready-to-use network template for a common TouchDesigner use case.
Each template includes an operator list, a port-level connection table, parameter settings,
and a ready-to-paste Python script that builds the network. Use template: "list" to see
all available templates.
Parameter | Type | Required | Description |
| string | Yes | Template name or 'list' to enumerate all templates |
Available Templates:
Template | Description |
| File-based video playback with level and output controls |
| Noise-driven generative visual network |
| Audio analysis feeding visual parameters |
| Table DAT driven chart and display network |
| Multi-layer compositing setup for live use |
Example: "Give me a network template for audio-reactive visuals"
Example: "List all available network templates"Experimental Build Tools
TouchDesigner ships two parallel release tracks: stable annual releases (2019–2024) and experimental/beta build series with unreleased features. These tools give you full access to the experimental track.
get_experimental_build
Get detailed information about a specific experimental TD build series or the latest experimental series.
Parameter | Type | Required | Description |
| string | No | Experimental series ID (e.g. '2025.10000'). Omit for the latest experimental series. |
| boolean | No | Include new features list (default: true) |
| boolean | No | Include breaking changes vs stable (default: true) |
| boolean | No | Include Python API additions (default: true) |
| boolean | No | Include experimental operators (default: true) |
Example: "What new features are in the latest experimental TouchDesigner build?"
Example: "Get breaking changes for experimental series 2024.50000"list_experimental_builds
List recent experimental TD build series grouped by feature area (rendering, Python API, operators, UI, networking).
Parameter | Type | Required | Description |
| string | No | Filter by area: 'rendering', 'Python API', 'operators', 'UI', 'networking' |
| string | No | 'experimental' (active) or 'graduated' (became stable) |
| boolean | No | Include feature flag tables (default: false) |
| boolean | No | Include experimental operator lists (default: true) |
| boolean | No | Include breaking change summaries (default: false) |
Example: "List experimental TD builds with rendering changes"
Example: "Which experimental build series introduced the Engine COMP?"Tracked Experimental Series:
Series ID | Year | Status | Headline Feature |
2025.10000 | 2025 | Active Experimental | Vulkan renderer default, Python 3.12, POP GPU Solver |
2024.50000 | 2024 | Graduated (TD 2024) | Python 3.11, Engine COMP async, TouchEngine v2 |
2023.11000 | 2023 | Graduated (TD 2023) | POP system preview, GLSL 4.50, NVIDIA DLSS TOP |
2022.32000 | 2022 | Graduated (TD 2022) | Engine COMP, USD COMP, NDI 5, WebRTC DAT |
2021.15000 | 2021 | Graduated (TD 2021) | Body Track CHOP, ONNX Runtime, Python 3.8 |
2020.20000 | 2020 | Graduated (TD 2020) | Bullet physics, GPU instancing v2, GLSL 4.40 |
Operator Categories
Category | Count | Description |
CHOP | 166 | Channel Operators - Audio, control signals, and data streams |
TOP | 140 | Texture Operators - 2D image and video processing |
SOP | 112 | Surface Operators - 3D geometry creation and manipulation |
DAT | 69 | Data Operators - Text, tables, and data handling |
COMP | 41 | Component Operators - UI elements and containers |
MAT | 13 | Material Operators - 3D rendering materials and shaders |
POP | 90 | Point Operators - Particle systems (experimental) |
Available Tutorials
Core Tutorials
Anatomy of a CHOP - Understanding channel operator internals
Build a List COMP - Create dynamic UI lists
Introduction to Python Tutorial - Essential guide for TouchDesigner Python scripting
Advanced Development
Write a GLSL TOP - Create custom GPU-accelerated image effects
Write a GLSL Material - Custom GLSL materials for rendering
Write a C++ CHOP - Develop native audio/data processing operators
Write a C++ TOP - Build custom texture operators in C++
Write a C++ Plugin - Advanced C++ integration for TouchDesigner plugins
Write a CUDA DLL - GPU programming with CUDA for TouchDesigner
Inter-Process Communication
Write a Shared Memory CHOP - Inter-process data communication
Write a Shared Memory TOP - Share textures between processes
Video & Integration
Video Streaming User Guide - Complete guide for video streaming workflows
TouchDesigner Video Server Specification Guide - Professional video server setup
TDBitwig User Guide - Integration with Bitwig Studio DAW
Python API Documentation
The server includes documentation for 69 Python API classes with 1,510+ methods covering:
Core operator classes (CHOP, TOP, SOP, DAT, MAT, COMP)
Utility classes (Channel, Cell, Page, etc.)
System classes (App, Project, Monitor, etc.)
UI classes (Panel, Widget, etc.)
Advanced features (WebRTC, NDI, MIDI, OSC, etc.)
Architecture
The TD-MCP server is built with:
Pure MCP Implementation - Clean stdio-based server following MCP standards
Direct Search Algorithm - Fast, reliable search without external index dependencies
OperatorDataManager - Centralized data management with 630 operators loaded into memory
Local Data Processing - All operator data is processed and served locally
Modular Tool System - Each of the 21 MCP tools is independently maintained
Dual Release Track Support - Stable annual releases (2019–2024) and experimental build series both fully documented
Project Structure
td-mcp/
├── index.js # Main MCP server entry point (21 tools)
├── tools/ # MCP tool implementations (21 tools)
│ ├── get_operator.js # Full operator documentation
│ ├── search_operators.js # Operator search with ranking
│ ├── suggest_workflow.js # Workflow chain suggestions
│ ├── list_operators.js # List/filter operators
│ ├── get_tutorial.js # Tutorial content access
│ ├── list_tutorials.js # Tutorial listing
│ ├── search_tutorials.js # Tutorial content search
│ ├── get_python_api.js # Python class documentation
│ ├── search_python_api.js # Python API search
│ ├── list_python_classes.js # Python class browsing
│ ├── get_operator_examples.js # Code examples per operator
│ ├── compare_operators.js # Side-by-side comparison
│ ├── get_version_info.js # Stable version details
│ ├── list_versions.js # All stable versions
│ ├── get_experimental_techniques.js # Advanced technique library
│ ├── search_experimental.js # Search techniques
│ ├── get_glsl_pattern.js # Named GLSL shader patterns
│ ├── get_operator_connections.js # Operator wiring guide
│ ├── get_network_template.js # Full network templates
│ ├── get_experimental_build.js # Experimental build series details
│ └── list_experimental_builds.js # List experimental series by area
├── wiki/ # Documentation system
│ ├── data/
│ │ ├── processed/ # 630 operator JSON files
│ │ ├── tutorials/ # 14 tutorial JSON files
│ │ ├── python-api/ # 69 Python class JSON files
│ │ ├── experimental/ # 7 advanced technique JSON files
│ │ ├── search-index/ # Search index data
│ │ └── versions/ # Version compatibility data
│ │ ├── version-manifest.json
│ │ ├── operator-compatibility.json
│ │ ├── python-api-compatibility.json
│ │ ├── release-highlights.json
│ │ └── experimental-builds.json # Experimental track data
│ ├── utils/
│ │ └── version-filter.js # Version utilities + experimental support
│ ├── operator-data-manager.js # Core documentation engine
│ └── operator-data-python-api.js # Python API data manager
├── data/
│ └── patterns.json # 32 workflow patterns + transitions
├── scripts/ # Data maintenance scripts
│ ├── clean-operator-data.js # Clean parameter descriptions
│ └── enrich-top-operators.js # Add tips/examples to operators
└── package.jsonTroubleshooting
Server won't start
Ensure Node.js 18.0+ is installed:
node --versionTry reinstalling:
npm install -g @bottobot/td-mcpCheck for port conflicts if running other MCP servers
Search returns no results
Try broader search terms
Remove category filters
Enable
parameter_searchto search within parameter namesCheck spelling of operator names
Operator not found
Use the full operator name including family:
Noise CHOPnot justNoiseUse
search_operatorsfirst to find the exact nameUse
list_operatorswith a category filter to browse available operators
LLM not using the MCP tools
Explicitly mention TouchDesigner in your prompt
Ask the LLM to "use the td-mcp tools" to look up operator information
Remind the LLM to check parameters with
get_operatorbefore generating code
Requirements
Node.js 18.0 or higher
npm package manager
VS Code/Codium with MCP-compatible extension (e.g., Claude Dev, Roo Code)
Development
To contribute or modify the server:
# Clone the repository
git clone https://github.com/bottobot/touchdesigner-mcp-server.git
# Install dependencies
cd touchdesigner-mcp-server
npm install
# Run the server locally
node index.js
# Validate syntax
node --check index.js
# Clean operator data (removes HTML dumps from parameter descriptions)
node scripts/clean-operator-data.js
# Enrich top operators with tips and examples
node scripts/enrich-top-operators.jsAdding a New Tool
Create a new file in
tools/following the existing pattern (exportschemaandhandler)Import and register the tool in
index.jsUpdate this README with the tool documentation
Adding Operator Data
Operator data lives in wiki/data/processed/ as JSON files. Each file follows the schema with fields: id, name, displayName, category, subcategory, description, parameters, tips, warnings, pythonExamples, codeExamples, and version.
Support
Issues: GitHub Issues
Documentation: TouchDesigner Official Docs
NPM Package: @bottobot/td-mcp
License
MIT License - See LICENSE file for details.
Acknowledgments
TouchDesigner by Derivative
Model Context Protocol by Anthropic
Built for the TouchDesigner community
Current Version: 2.8.0 Operators: 630 (with cleaned parameter descriptions) Tutorials: 14 Python API Classes: 69 MCP Tools: 21 Workflow Patterns: 32 Experimental Build Series: 6 (builds 20000-current) Last Updated: February 2026
This server cannot be installed
Maintenance
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/bottobot/touchdesigner-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server