Skip to main content
Glama
emrgim

MCP3

by emrgim
README.md
# MCP3 (`ma3mcp`)

MCP per **grandMA3**: command line ufficiale via OSC `/cmd`, UI admin, scan IP, permessi per oggetto.

Repo GitHub: https://github.com/emrgim/MA3MCP  
Gemello MA2: https://github.com/emrgim/MA2MCP (dopo)

Manuale MA: [command syntax](https://help.malighting.com/grandMA3/2.4/HTML/command_syntax_keywords.html) · [gerarchia oggetti](https://help.malighting.com/grandMA3/2.4/HTML/csk_parent_child.html) · [OSC `/cmd`](https://help.malighting.com/grandMA3/2.1/HTML/remote_inputs_osc.html) · [Terminal App](https://help.malighting.com/grandMA3/2.4/HTML/onpc_terminal_app.html)

## Produzione — lista

1. Pacchetto Python 3.11+ (`ma3mcp`) — Linux / Windows / macOS stesso codice
2. Admin UI `http://127.0.0.1:7733` — chiave MCP, OpenAI, OpenAI-compatible URL+key
3. Target IP + porta OSC; scan porte (non MA-Net3: protocollo non pubblico)
4. Permessi oggetto × azione; **delete off** di default
5. Transport: OSC `/cmd` (Receive Command = Yes su onPC/console)
6. MCP stdio `ma3mcp mcp` per Hermes
7. Installer: pip/venv Linux ora; PyInstaller EXE Windows; app macOS dopo freeze CLI
8. Poi `ma2mcp` (Telnet/CLI MA2, stessa UI permessi)

## Install Linux

```bash
cd /home/domvs/projects/ma3mcp
python3 -m venv .venv
. .venv/bin/activate
pip install -e ".[dev]"
ma3mcp serve
```

Hermes `config.yaml`:

```yaml
mcp_servers:
  ma3:
    command: "/home/domvs/projects/ma3mcp/.venv/bin/ma3mcp"
    args: ["mcp"]
```

onPC: Menu → In & Out → OSC → Enable Input + **Receive Command = Yes**. Stessa porta di `osc_port`.

## Permessi

Oggetti: fixture, group, preset, sequence, cue, page, executor, macro, plugin, world, filter, layout, view, appearance, timecode, timer, stage, patch, datapool, user, station, camera, sound, media, showfile, programmer.

Azioni: list, create, update, **delete**, playback, patch, showfile, programmer, plugin.

`Delete Sequence 1` è bloccato finché in admin non spunti delete su sequence.

## Packaging

- Linux: `pip install` + systemd user unit (`packaging/linux/ma3mcp.service`)
- Windows: `pyinstaller --onefile -n MCP3 src/ma3mcp/__main__.py` → EXE; Inno Setup dopo
- macOS: stesso PyInstaller `onedir` + `.app`

## Cosa non è

Non è un binario `gma3 "Store Cue 1"`. Non scopre sessioni MA-Net3. Non parla MA2.