MADRIX MCP服务器

MADRIX MCP是一个为MADRIX LED照明软件设计的服务器,提供108种工具用于存储/控制台控制、层管理、提示列表、时间线、组、音频、输出、全局颜色、节拍器/BPM和生成层控制等功能,通过MADRIX远程HTTP接口实现。

  • by drohi-r
  • Python
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 drohi-r/madrix-mcp

使用说明

MADRIX MCP

MCP服务器 马德里克斯 LED照明软件。通过MADRIX Remote HTTP接口公开108个工具,涵盖存储/甲板控制、层管理、提示列表、时间线、组、音频、输出、全局颜色、自动收报机/BPM和生成的层控制系列。

为现场制作而建。与配对 grandMA2 MCP, Resolume MCP, 配套MCP,以及 超越MCP 完全由人工智能驱动的节目控制。

MADRIX远程HTTP官方文档:

快速开始

git clone https://github.com/drohi-r/madrix-mcp && cd madrix-mcp
uv sync
uv run python -m madrix_mcp

确保MADRIX Remote HTTP已启用,并且可以在配置的HTTP端口上访问。

对于远程控制:

  • 使用局域网或WireGuard,而不是公共互联网
  • 集 MADRIX_HOST MADRIX机器
  • 将该主机包含在 MADRIX_ALLOWED_HOSTS

配置

变量 默认值 描述
MADRIX_HOST 127.0.0.1 MADRIX实例IP
MADRIX_HTTP_PORT 80 MADRIX远程HTTP端口
MADRIX_REMOTE_PATH /RemoteCommands/ MADRIX远程HTTP命令路径
MADRIX_ALLOWED_HOSTS 127.0.0.1,localhost,::1 目标主机的逗号分隔的列表。集 * 允许任何。
MADRIX_SAFETY_PROFILE lab 安全预设: lab, show-safe,或 read-only
MADRIX_READ_ONLY 0 设置为 1 用于只读模式
MADRIX_CONFIRM_DESTRUCTIVE 0 设置为 1 要求 confirm=true 论破坏行为
MADRIX_TIMEOUT_SECONDS 5.0 HTTP超时
MADRIX_TRANSPORT stdio MCP传输(stdio, sse, streamable-http)

建筑

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:#fff

安全简介

  • 实验室 --已启用读/写,无需额外的破坏性确认
  • 显示安全 --启用读/写,需要进行破坏性操作 confirm=true
  • 只读 --阻止所有写入操作,保留健康/配置/读取工具可用

工具

运输和安全

工具 它做什么
get_server_config 返回当前MCP服务器配置和安全设置
health_check 探测MADRIX远程HTTP可达性
get_remote 任何MADRIX Remote函数的原始HTTP GET转义舱口
set_remote 任何MADRIX Remote功能的原始HTTP SET逃逸窗口

身份和全球状态

工具 它做什么
get_product 返回MADRIX产品名称
get_version 返回MADRIX版本字符串
get_host_label 返回MADRIX主机标签

播放和状态读取

工具 它做什么
get_storage_state 返回当前存储甲板、位置和方位信息
get_audio_state 返回音频输入电平和设置
get_output_state 返回DMX输出状态
get_cuelist_summary 返回提示列表状态和条目
get_timeline_summary 返回时间线状态和位置
get_group_summary 返回组名和值
get_global_colors 返回全局颜色值
get_storage_place_details 返回存储地点名称和效果信息
get_preview_info 返回预览窗口状态

淡入淡出和主控

工具 它做什么
get_fade_type 回流横流类型
get_fade_value 返回当前交叉火力位置
set_fade_type 设置交叉火力类型
set_fade_value 设置交叉火力位置
get_master 返回主亮度
set_master 设置主亮度
get_blackout 返回断电状态
set_blackout 打开/关闭遮光

储存和甲板控制

工具 它做什么
set_storage_place 按索引切换到存储位置
set_deck 切换活动甲板(A/B)
set_storage_place_name 重命名存储位置

线索列表控制

工具 它做什么
set_cuelist_play 开始/停止播放提示列表
set_cuelist_go 触发下一个提示
set_cuelist_back 转到上一个提示
set_cuelist_entry 跳转到特定的提示条目
add_cuelist_entry 添加新的提示列表条目
remove_cuelist_entry 删除提示列表条目
edit_cuelist_entry 编辑现有提示列表条目

音频和输出控制

工具 它做什么
set_audio_input 设置音频输入源
set_output_enabled 启用或禁用DMX输出

群控

工具 它做什么
set_group_value 按索引设置组的值
set_group_preset 将预设应用于组

时间线控制

工具 它做什么
set_timeline_play 开始/停止时间线
set_timeline_position 寻找时间线位置

全局颜色控制

工具 它做什么
set_global_color 按索引设置全局颜色

甲板存放位置控制

工具 它做什么
set_deck_storage_place 在特定甲板上切换存储位置

Ticker和BPM控制

工具 它做什么
set_bpm 设置BPM值
set_ticker_enabled 启用或禁用节拍收报机

图层控制(生成的族)

每个族都提供基于索引的图层变体和当前图层变体:

工具 它做什么
set_layer_opacity / set_current_layer_opacity 设置图层不透明度
set_layer_submaster / set_current_layer_submaster 设置图层子主控
set_layer_blind / set_current_layer_blind 设置图层盲状态
set_layer_solo / set_current_layer_solo 设置图层单独状态
set_layer_mixmode / set_current_layer_mixmode 设置图层混合模式
set_layer_filter / set_current_layer_filter 设置图层过滤器

克劳德桌面版

{
  "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代码/光标

{
  "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.json MCP配置文件:

{
  "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"
      }
    }
  }
}

然后使用以下命令运行Codex:

codex --mcp-config codex.json

安全生产

此服务器专为现场表演环境而设计,意外写入可能会中断正在运行的LED安装。

  • 主机分配 --只有 127.0.0.1, localhost,以及 ::1 默认情况下是允许的。通过以下方式显式添加LAN主机 MADRIX_ALLOWED_HOSTS.Set * 允许任何主机。
  • 只读模式 --set MADRIX_READ_ONLY=1 以阻止所有写入操作。运行状况、配置和读取工具仍然可用。
  • 确认破坏性浇口 --set MADRIX_CONFIRM_DESTRUCTIVE=1 要求 confirm=true 关于破坏性行动,包括 SetBlackout, SetMaster、存储甲板开关和提示列表播放更改。
  • 安全简介 — MADRIX_SAFETY_PROFILE 给你一个理智的起点: lab (全开), show-safe (破坏性确认),或 read-only (没有写)。
  • 原始逃生舱口 — get_remote 和 set_remote 允许任何MADRIX远程HTTP功能,但仍由相同的安全模型控制。
  • 输入验证 --所有工具在进行任何HTTP调用之前都会验证参数。无效输入返回结构化JSON错误,从不返回原始异常。
  • 错误隔离 --所有工具都包含在错误处理程序中。网络故障、验证失败和意外异常返回 {"ok": false, "error": "..."} 而不是使MCP会话崩溃。

实时验证

针对真实的MADRIX实例进行了验证 192.168.20.179:80:

  • health_check, get_product, get_cuelist_summary, get_storage_state
  • get_audio_state, get_output_state, get_timeline_summary, get_group_summary
  • get_storage_place_details, set_master, set_fade_value
  • 通过生成组写入路径 SetGroupValue

发展

uv sync
uv run python -m pytest -v   # 67 tests

许可证

Apache 2.0