Skip to main content

dcc-mcp-touchdesigner

DCC-MCP · TouchDesigner

Typed, main-thread-safe TouchDesigner control for the DCC Model Context Protocol.

The adapter embeds the DCC-MCP HTTP runtime in TouchDesigner, registers the instance with the local gateway, and executes TouchDesigner API work through the documented td.run() scheduler. Agents can inspect and edit operator networks, parameters, Unicode DAT content, and root timeline state, then save projects and export TOP images without sending TouchDesigner objects to background threads.

Typed request flows through a main-thread operator graph into a verified visual, project, and PNG artifact

Illustrative workflow visualization generated with OpenAI ImageGen from the retained source in docs/images/sources. It is not a TouchDesigner screenshot or host-validation artifact. The header uses an approved operator-network reference motif rather than an official host mark.

Install

TouchDesigner 2025 uses Python 3.11. Install this package into the interpreter that TouchDesigner will import, inspect the machine-readable plan, and apply the receipt-owned integration:

python -m pip install --upgrade dcc-mcp-touchdesigner
dcc-mcp-touchdesigner install --dry-run --json
dcc-mcp-touchdesigner install --yes --json
dcc-mcp-touchdesigner verify --json

TouchDesigner physically stores startup callbacks in a project Execute DAT, so the installer returns one structured file_edit and exit code 50 until that edit and a restart are complete. See install.md for supported platforms, exact flags and exit codes, the TDPyEnvManager/Preferences manual route, upgrade, uninstall, verification, and recovery.

Start in TouchDesigner

Run this from the Textport or an Execute DAT onStart() callback:

import dcc_mcp_touchdesigner

server = dcc_mcp_touchdesigner.start_server()
print(server.mcp_url)

start_server() is idempotent inside one TouchDesigner process. It loads the bundled skill by default, selects an OS-assigned loopback port, starts the main-thread pump, and advertises the instance to a running DCC-MCP gateway. Stop it explicitly during project teardown when needed:

dcc_mcp_touchdesigner.stop_server()

Typed tools

Tool Contract Risk
get_project_info Read redacted host/project identity, cook rate, real-time mode, and root count Read-only
list_operators List bounded direct/recursive operators with an optional family/type filter Read-only
inspect_operator / inspect_connections Read flags, cook diagnostics, and connector topology Read-only
get_op_parameters Read selected or bounded parameters from one operator Read-only
create_operator Create a documented operator type under an explicit COMP Mutation
connect_operators Connect an explicit output connector to an explicit input Mutation
disconnect_operator_input Disconnect one exact input without touching sibling connections Idempotent mutation
set_op_parameter Set one parameter and return its evaluated value Idempotent mutation
pulse_op_parameter Pulse one exact parameter with bounded frame/second duration Mutation
set_operator_flags Atomically update allowlisted flags with rollback Idempotent mutation
set_operator_layout Atomically set bounded Network Editor position/size fields with rollback Idempotent mutation
get_dat_content / set_dat_content Read/write bounded, language-independent Unicode Text/Table DAT content with SHA-256 concurrency Read / mutation
get_timeline_state / set_timeline_state Read or atomically update root frame/play/cook controls Read / mutation
capture_top Save one TOP to an explicit PNG path with size and SHA-256 metadata File write
save_project Save the current project to an explicit .toe path File write
delete_operator Delete one explicitly addressed non-root operator Destructive

All 19 tools have JSON input/output contracts and are dispatched on TouchDesigner's main thread. File-writing tools require an explicit absolute path and reject accidental overwrite unless overwrite=true is supplied. Root deletion and executable-DAT mutation are always rejected. The catalog exposes no arbitrary Python or expression-evaluation tool.

Security controls

The public contract is typed-only: it has no arbitrary Python escape hatch. Recursive graph, parameter, connector, JSON, and DAT operations are bounded; DAT writes use optional SHA-256 optimistic concurrency and only target Text/Table DATs. DAT text is treated as arbitrary Unicode data rather than a finite language list: RTL text, combining marks, ZWJ sequences, and non-BMP characters are preserved without language detection or normalization. Operator and parameter identifiers still follow TouchDesigner's own naming rules. The adapter binds to loopback by default. Do not expose the per-instance port directly to an untrusted network. Use the DCC-MCP gateway when multiple instances or attributable agent sessions are required.

Runtime configuration

Variable Purpose
DCC_MCP_TOUCHDESIGNER_SKILL_PATHS Additional skill directories
DCC_MCP_TOUCHDESIGNER_METRICS Enable Prometheus /metrics
DCC_MCP_TOUCHDESIGNER_ENABLE_GATEWAY_FAILOVER Enable gateway failover; on by default

Development

py -3.11 -m pip install -e ".[dev]"
pytest
ruff check .
ruff format --check .
dcc-mcp-cli lint src/dcc_mcp_touchdesigner/skills/touchdesigner-scripting --warnings-as-errors
python -m build
python -m twine check dist/*

Unit and contract tests use a deterministic TouchDesigner API double. A release additionally requires a real TouchDesigner process, six readiness checks, discovery of all 19 typed tools, and a create/connect/layout/set/pulse/DAT/timeline/capture/save/delete chain through dcc-mcp-cli; simulation alone is not release evidence.

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dcc_mcp_touchdesigner-0.1.2.tar.gz (133.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dcc_mcp_touchdesigner-0.1.2-py3-none-any.whl (54.4 kB view details)

Uploaded Python 3

File details

Details for the file dcc_mcp_touchdesigner-0.1.2.tar.gz.

File metadata

  • Download URL: dcc_mcp_touchdesigner-0.1.2.tar.gz
  • Upload date:
  • Size: 133.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for dcc_mcp_touchdesigner-0.1.2.tar.gz
Algorithm Hash digest
SHA256 9608806c53bf53f4e12e25b882e7ab149347be9be49ceca683323ba49fedc0fc
MD5 df975839e79c1d026da201293d17f06d
BLAKE2b-256 89e4bd8253e21cf3c209211f36eb37ef5a47ba614a1165ff551f4f7ced0046cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for dcc_mcp_touchdesigner-0.1.2.tar.gz:

Publisher: release.yml on dcc-mcp/dcc-mcp-touchdesigner

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dcc_mcp_touchdesigner-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for dcc_mcp_touchdesigner-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d206469cc70d4733288d5f8731884a78e32d095548cb74b1646fdb04d8964f57
MD5 7a96cd9bc448c01eda6a26265b40c7e6
BLAKE2b-256 988e73bc17a11237061048279a37d1fadc915dc79bcc63f4026ead152f58a7b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for dcc_mcp_touchdesigner-0.1.2-py3-none-any.whl:

Publisher: release.yml on dcc-mcp/dcc-mcp-touchdesigner

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page