MADRIX MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MADRIX MCPset master to 75%"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MADRIX MCP
An MCP server for MADRIX LED lighting software. Exposes 108 tools covering storage/deck control, layer management, cue lists, timelines, groups, audio, output, global colors, ticker/BPM, and generated layer control families — all via the MADRIX Remote HTTP interface.
Built for live production. Pairs with grandMA2 MCP, Resolume MCP, Companion MCP, and Beyond MCP for full AI-driven show control.
Official MADRIX Remote HTTP docs:
Quick start
git clone https://github.com/drohi-r/madrix-mcp && cd madrix-mcp
uv sync
uv run python -m madrix_mcpMake sure MADRIX Remote HTTP is enabled and reachable on the configured HTTP port.
For remote control:
use LAN or WireGuard, not the public internet
set
MADRIX_HOSTto the MADRIX machineinclude that host in
MADRIX_ALLOWED_HOSTS
Related MCP server: propresenter-mcp
Configuration
Variable | Default | Description |
|
| MADRIX instance IP |
|
| MADRIX Remote HTTP port |
|
| MADRIX Remote HTTP command path |
|
| Comma-separated allowlist for target hosts. Set |
|
| Safety preset: |
|
| Set to |
|
| Set to |
|
| HTTP timeout |
|
| MCP transport ( |
Architecture
graph TD
A["MADRIX MCP Server<br/><code>madrix_mcp</code><br/>108 tools · safety gate"] --> B
B["HTTP Remote Client<br/>GET/SET commands"] --> C
C["MADRIX<br/>Remote HTTP on port 80"]
D["Safety Profiles<br/>lab · show-safe · read-only"] -.-> A
E["Layer Control<br/>Generated tool families<br/>index + current-layer variants"] -.-> A
style A fill:#1a1a2e,stroke:#00E0A4,color:#fff
style B fill:#1a1a2e,stroke:#00E0A4,color:#fff
style C fill:#1a1a2e,stroke:#0f3460,color:#fff
style D fill:#0f3460,stroke:#0f3460,color:#fff
style E fill:#0f3460,stroke:#0f3460,color:#fffSafety profiles
lab — read/write enabled, no extra destructive confirmation
show-safe — read/write enabled, destructive operations require
confirm=trueread-only — blocks all write operations, leaves health/config/read tools available
Tools
Transport and safety
Tool | What it does |
| Return current MCP server configuration and safety settings |
| Probe MADRIX Remote HTTP reachability |
| Raw HTTP GET escape hatch for any MADRIX Remote function |
| Raw HTTP SET escape hatch for any MADRIX Remote function |
Identity and global state
Tool | What it does |
| Return MADRIX product name |
| Return MADRIX version string |
| Return the MADRIX host label |
Playback and state reads
Tool | What it does |
| Return current storage deck, place, and position info |
| Return audio input level and settings |
| Return DMX output state |
| Return cue list state and entries |
| Return timeline state and position |
| Return group names and values |
| Return global color values |
| Return storage place name and effect info |
| Return preview window state |
Fade and master control
Tool | What it does |
| Return current crossfade type |
| Return current crossfade position |
| Set the crossfade type |
| Set the crossfade position |
| Return master brightness |
| Set master brightness |
| Return blackout state |
| Toggle blackout on/off |
Storage and deck control
Tool | What it does |
| Switch to a storage place by index |
| Switch active deck (A/B) |
| Rename a storage place |
Cue list control
Tool | What it does |
| Start/stop cue list playback |
| Trigger next cue |
| Go to previous cue |
| Jump to a specific cue entry |
| Add a new cue list entry |
| Remove a cue list entry |
| Edit an existing cue list entry |
Audio and output control
Tool | What it does |
| Set audio input source |
| Enable or disable DMX output |
Group control
Tool | What it does |
| Set a group's value by index |
| Apply a preset to a group |
Timeline control
Tool | What it does |
| Start/stop timeline |
| Seek to a timeline position |
Global color control
Tool | What it does |
| Set a global color by index |
Deck storage-place control
Tool | What it does |
| Switch storage place on a specific deck |
Ticker and BPM control
Tool | What it does |
| Set the BPM value |
| Enable or disable the beat ticker |
Layer control (generated families)
Each family provides both index-based and current-layer variants:
Tool | What it does |
| Set layer opacity |
| Set layer submaster |
| Set layer blind state |
| Set layer solo state |
| Set layer mix mode |
| Set layer filter |
Claude Desktop
{
"mcpServers": {
"madrix": {
"command": "uv",
"args": ["run", "--directory", "/path/to/madrix-mcp", "python", "-m", "madrix_mcp"],
"env": {
"MADRIX_HOST": "127.0.0.1",
"MADRIX_HTTP_PORT": "80",
"MADRIX_SAFETY_PROFILE": "show-safe"
}
}
}
}VS Code / Cursor
{
"servers": {
"madrix": {
"command": "uv",
"args": ["run", "--directory", "/path/to/madrix-mcp", "python", "-m", "madrix_mcp"],
"env": {
"MADRIX_HOST": "127.0.0.1",
"MADRIX_HTTP_PORT": "80",
"MADRIX_SAFETY_PROFILE": "show-safe"
}
}
}
}Codex
Create a codex.json MCP config file:
{
"mcpServers": {
"madrix": {
"command": "uv",
"args": ["run", "--directory", "/path/to/madrix-mcp", "python", "-m", "madrix_mcp"],
"env": {
"MADRIX_HOST": "127.0.0.1",
"MADRIX_HTTP_PORT": "80",
"MADRIX_SAFETY_PROFILE": "show-safe"
}
}
}
}Then run Codex with:
codex --mcp-config codex.jsonProduction safety
This server is designed for live show environments where accidental writes can disrupt a running LED installation.
Host allowlisting — only
127.0.0.1,localhost, and::1are permitted by default. Add LAN hosts explicitly viaMADRIX_ALLOWED_HOSTS. Set*to allow any host.Read-only mode — set
MADRIX_READ_ONLY=1to block all write operations. Health, config, and read tools remain available.Confirm-destructive gating — set
MADRIX_CONFIRM_DESTRUCTIVE=1to requireconfirm=trueon destructive operations includingSetBlackout,SetMaster, storage deck switches, and cue-list play changes.Safety profiles —
MADRIX_SAFETY_PROFILEgives you a sane starting point:lab(wide open),show-safe(destructive confirmation), orread-only(no writes).Raw escape hatches —
get_remoteandset_remoteallow any MADRIX Remote HTTP function, but are still gated by the same safety model.Input validation — all tools validate parameters before any HTTP call is made. Invalid inputs return structured JSON errors, never raw exceptions.
Error isolation — all tools are wrapped in error handlers. Network failures, validation failures, and unexpected exceptions return
{"ok": false, "error": "..."}instead of crashing the MCP session.
Live validation
Validated against a real MADRIX instance on 192.168.20.179:80:
health_check,get_product,get_cuelist_summary,get_storage_stateget_audio_state,get_output_state,get_timeline_summary,get_group_summaryget_storage_place_details,set_master,set_fade_valueGenerated group write path via
SetGroupValue
Development
uv sync
uv run python -m pytest -v # 67 testsLicense
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Appeared in Searches
Latest Blog Posts
- 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/drohi-r/madrix-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server