MADRIX MCP
MCP服务器 马德里克斯 LED照明软件。通过MADRIX Remote HTTP接口公开108个工具,涵盖存储/甲板控制、层管理、提示列表、时间线、组、音频、输出、全局颜色、自动收报机/BPM和生成的层控制系列。
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
madrix_mcp
108 tools · safety gate"] --> B
B["HTTP Remote Client
GET/SET commands"] --> C
C["MADRIX
Remote HTTP on port 80"]
D["Safety Profiles
lab · show-safe · read-only"] -.-> A
E["Layer Control
Generated tool families
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_stateget_audio_state, get_output_state, get_timeline_summary, get_group_summaryget_storage_place_details, set_master, set_fade_value- 通过生成组写入路径
SetGroupValue
发展
uv sync
uv run python -m pytest -v # 67 tests
许可证
Apache 2.0