Usar do TouchDesigner (LOPs)
O "MCP Client" (LOPs) da dotsimulate roda dentro do TouchDesigner e fala com qualquer servidor MCP. Aponte ele para o tdmcp e um agente que vive na sua rede do TD pode criar, conectar, inspecionar e dar preview de operadores nesse mesmo projeto — fechando o ciclo TD (MCP Client dos LOPs) → servidor tdmcp → ponte do tdmcp → a sua rede.
Isto não é trocar o modelo de IA: os LOPs trazem o próprio modelo (OpenAI / Claude / Ollama); o tdmcp são as ferramentas que ele chama, exatamente como o Claude ou o Cursor fariam.
O que você ganha
O cliente LOPs recebe a superfície completa de ferramentas do tdmcp — as ferramentas de criar/inspecionar/dar preview mais as ferramentas da base de conhecimento (get_td_classes, get_td_class_details, get_module_help, search_operators, find_td_nodes). Essas ferramentas de KB cobrem parte do que o dotContext da dotsimulate oferece, então você não precisa de uma camada separada de referência de operadores junto do tdmcp.
Quando você conecta pelo launcher recomendado (abaixo), o tdmcp inicia no perfil safe — as ferramentas destrutivas ficam ocultas para que um agente autônomo dentro do TD não apague nós nem rode código sem revisão por acidente.
Pré-requisitos
- A ponte do tdmcp está instalada e rodando dentro da mesma instância do TouchDesigner — veja o passo 3 da instalação, "ligue a ponte".
- Node.js 20+ no seu PATH — os LOPs vão iniciar o
node. - Você rodou
npm run buildno seu clone do tdmcp, então odist/index.jsexiste. - Os LOPs da dotsimulate estão instalados, com o componente MCP Client.
Conectar (recomendado: o launcher)
O servers_config.json da dotsimulate documenta transport, command, args, cwd e description — mas nenhum campo env — então não dá para definir as variáveis de reforço do tdmcp direto pela configuração. O tdmcp inclui um pequeno launcher, scripts/tdmcp-lops.mjs, que define essas variáveis por você e então inicia o servidor. Aponte o cliente LOPs para ele:
{
"mcpServers": {
"tdmcp": {
"transport": "stdio",
"command": "node",
"args": ["/abs/path/to/tdmcp/scripts/tdmcp-lops.mjs"],
"cwd": "/abs/path/to/tdmcp",
"description": "tdmcp — build & inspect this TouchDesigner project (hardened: safe profile)"
}
}
}Troque /abs/path/to/tdmcp pela pasta onde você clonou o tdmcp (rode pwd dentro dela). Use o caminho absoluto completo tanto em command/args quanto em cwd — os LOPs resolvem o cwd de um jeito diferente dos clientes de linha de comando, então não confie em caminhos relativos. O launcher tdmcp-lops.mjs define o perfil safe por você.
Alternativa: um bloco env (se a sua versão dos LOPs aceitar)
O esquema publicado da dotsimulate não documenta um campo env, então o launcher acima é o padrão seguro. Se a sua versão dos LOPs por acaso repassar um bloco env, você pode em vez disso apontar args direto para o dist/index.js e definir as variáveis você mesmo:
{
"mcpServers": {
"tdmcp": {
"transport": "stdio",
"command": "node",
"args": ["/abs/path/to/tdmcp/dist/index.js"],
"cwd": "/abs/path/to/tdmcp",
"env": {
"TDMCP_RAW_PYTHON": "off",
"TDMCP_TOOL_PROFILE": "safe"
},
"description": "tdmcp — hardened for an in-TD agent"
}
}
}Se o bloco env for ignorado (você vai ver as ferramentas destrutivas ainda listadas), volte para o launcher.
Observação de reforço (hardening)
Para um agente autônomo dentro do TD — sem ninguém revisando cada chamada — reforce a superfície:
TDMCP_RAW_PYTHON=offremove as duas ferramentas de Python cru (execute_python_script,exec_node_method), em que o cliente escreve o código. Isto não é um botão que desliga toda execução de código: muitas ferramentas de nível mais alto ainda mandam o próprio Python em template para a ponte.TDMCP_TOOL_PROFILE=safevai além e também esconde ferramentas destrutivas (deleção de nós, reescrita de DATs, writes de checkpoint/componente/pacote, writes de previews e controles de panic) — um superconjunto estrito deRAW_PYTHON=off. O launcher define isto por você. Veja Variáveis de ambiente (em inglês).- Para realmente fechar a execução de código, defina
TDMCP_BRIDGE_ALLOW_EXEC=0no ambiente do próprio TouchDesigner — essa é a trava autoritativa, do lado da ponte, e ela vale até contra um chamador direto na rede.
Como funciona
Tanto o cliente LOPs quanto a ponte do tdmcp vivem no mesmo processo do TouchDesigner. O cliente LOPs inicia o node dist/index.js (o servidor tdmcp) por stdio; esse servidor então fala HTTP com a ponte em 127.0.0.1:9980 — o mesmíssimo TD — que manipula a sua rede. Nenhuma troca de transporte é necessária; stdio é o padrão do tdmcp. O servidor iniciado é de vida curta, atrelado ao ciclo de vida do cliente MCP. Veja Arquitetura (em inglês).
Isto não substitui o tdmcp chat
O copiloto local (tdmcp chat) é uma superfície separada — o tdmcp rodando o próprio modelo local. Os LOPs são um cliente que consome o próprio modelo (OpenAI / Claude / Ollama) e chama as ferramentas do tdmcp; não é um substituto para o modelo do copiloto. Use o que encaixar melhor no seu fluxo de trabalho.
Algum problema?
- "node not found" — os LOPs não acharam o Node no PATH. Instale o Node.js 20+ e garanta que ele está no PATH que o processo do TD herda.
- "dist/index.js not found" — o launcher imprime isto no stderr quando o build está faltando. Rode
npm run buildna sua pasta do tdmcp. - "bridge not reachable" — a ponte do tdmcp não está rodando neste TD, ou está em outro host/porta. Confira de novo o passo 3 da instalação e a Solução de problemas.