TouchDesigner AI Companion
TouchDesigner AI Companion
A local desktop tool that captures your TouchDesigner node network via hotkey, sends the screenshot to Claude (with vision + function calling), and returns targeted, context-aware answers about your patches — with full session memory and Langfuse observability.
Stack
Layer | Tool |
Language | Python 3.11+ |
Screenshot |
|
Hotkey listener |
|
MCP server |
|
LLM | Claude Sonnet 4 ( |
Observability | Langfuse |
Session storage | SQLite |
How to run
# 1. Clone and enter the project
git clone <repo-url> td-companion
cd td-companion
# 2. Install dependencies
pip install -r requirements.txt
# 3. Set your API keys
cp .env.example .env
# Edit .env with your ANTHROPIC_API_KEY and Langfuse keys
# 4. Launch
python main.py
# 5. Focus your TouchDesigner window, press Ctrl+Shift+T,
# type your question, and get an answer.macOS: Grant Accessibility permissions to your terminal app when prompted by
pynput.
How it works
Hotkey → Screenshot — Pressing
Ctrl+Shift+Ttriggersmssto capture your full screen. The PNG bytes are held in memory and sent to Claude as a base64 image.Claude with function calling — The image + question + full session history are sent to Claude Sonnet 4. Claude can invoke four MCP-defined tools (
analyze_network,suggest_next_node,diagnose_problem,explain_node) by extracting what it sees in the screenshot and routing the question to the right analytical frame.Session persistence + observability — Every turn (user question + assistant answer) is saved to a local SQLite database and logged as a Langfuse trace with model, token usage, and I/O metadata for debugging and cost tracking.
Project structure
td-companion/
├── main.py # Entry point, hotkey listener, main loop
├── screenshot.py # mss screen capture → PNG bytes
├── agent.py # Claude API with vision + function calling
├── session.py # SQLite session read/write
├── observability.py # Langfuse trace logging
├── mcp_server/
│ ├── __init__.py
│ └── tools.py # 4 FastMCP tools + Anthropic tool schemas
├── .env.example
├── .gitignore
└── requirements.txtLatest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/LindaEng/mcp_touch'
If you have feedback or need assistance with the MCP directory API, please join our Discord server