maxmsp-mcp - an early experiment in driving Max from an LLM

Julien Bayle's icon

Sharing this early and tentatively, mostly to see what people think.

It's a small thing I've been working on: an LLM that builds and reads Max patches from natural language. I know it's not a new idea at all: there's the original MaxMSP-MCP-Server by Haokun Tian & Shuoyang Zheng, and ersatzben's extended fork. Mine is an independent attempt with a few different choices, not a fork of either, and I'm not claiming it does anything better at all !

The main differences, for what they're worth: it talks to Max over OSC/UDP into [thispatcher] rather than a Socket.IO bridge, writing via plain thispatcher scripting and reading via a [v8] object that walks the patcher with proper stock objects only, no externals. There's also a small chat window living inside Max itself ([node.script] + [jweb]), so you can use it without any external client, or go through Claude Desktop/Code if you prefer. And it can look up object signatures from a reference DB parsed from your own installed .maxref.xml, when it bothers to use it.

Being a Max trainer, what I was really curious about was whether an LLM could be nudged toward sane patching habits — naming objects, keeping a value separate from its trigger, reading the patch back. Honestly it's still inconsistent at that, and finding out where it falls down is half the reason I'm posting. But could really be better improved with kind of specific grounding from user guides etc.

Status: v0.4, a first public test. It works and has a few tests, but it's rough and has had very little real use. Expect things to break. Genuinely just looking for feedback from people who know Max well.