超越MCP
MCP服务器 穿山甲BEYOND 激光软件。通过OSC展示20个类别的117个工具,涵盖演出控制、线索管理、区域配置、几何校正、现场参数控制、效果、投影仪对齐、安全限制器等。
为现场制作而建。与配对 grandMA2 MCP , Resolume MCP , MADRIX MCP ,以及 配套MCP 完全由人工智能驱动的节目控制。
为什么存在
Pangolin BEYOND是行业标准的激光表演软件,但编程激光提示、调整区域和调整实时参数完全是手动的。操作员点击BEYOND UI,一次一个参数,跨越数十个区域和提示。
此MCP服务器允许AI助手通过OSC控制BEYOND。它可以触发提示、调整主亮度、静音区域、设置BPM、控制投影仪对齐、应用几何校正、管理安全限制器和控制实时参数——所有这些都可以通过一次对话完成。结合MA2 Agent、Resolume MCP和Companion MCP,AI助手可以编排整个节目控制堆栈。
快速开始
复制 git clone https://github.com/drohi-r/beyond-mcp && cd beyond-mcp
uv sync
uv run python -m beyond_mcp
确保BEYOND在启用OSC输入的情况下运行(可通过以下方式配置 BEYOND_OSC_PORT,默认为12000)。
对于远程控制:
使用局域网或WireGuard,而不是公共互联网
允许UDP BEYOND_OSC_PORT
集 BEYOND_HOST 连接到远程计算机并将其包含在 BEYOND_ALLOWED_HOSTS
实时验证的构建说明
这个仓库已经在局域网上对一个真正的BEYOND实例进行了测试,而不仅仅是模拟的单元测试。
已验证版本上的实时确认工具:
display_popup
set_bpm
select_next_page / select_prev_page
select_next_tab / select_prev_tab
start_cue_by_name / stop_cue_by_name
set_master_brightness
构建特定注释:
load_cue 发送干净,但在测试工作区中没有产生明显的可见状态变化。
display_preview("main", ...) 发送得很干净,但 main 似乎不是已验证BEYOND设置的正确预览标识符。
完整注释: docs/live-validation.md
另请参见:
配置
变量
默认值
描述
BEYOND_HOST
127.0.0.1
BEYOND实例IP
BEYOND_OSC_PORT
12000
OSC接收端口
BEYOND_ALLOWED_HOSTS
127.0.0.1,localhost,::1
目标主机的逗号分隔的列表。集 * 允许任何。
BEYOND_SAFETY_PROFILE
lab
安全预设: lab, show-safe,或 read-only
BEYOND_READ_ONLY
0
设置为 1 用于只读模式(阻止所有写入操作)
BEYOND_CONFIRM_DESTRUCTIVE
0
设置为 1 要求 confirm=true 破坏性操作(停电、全面停工等)
BEYOND_TRANSPORT
stdio
MCP传输(stdio, sse, streamable-http)
建筑
复制 graph TD
A["Beyond MCP Server<br/><code>beyond_mcp</code><br/>117 tools · 20 categories · safety gate"] --> B
B["OSC Client<br/>UDP fire-and-forget"] --> C
C["Pangolin BEYOND<br/>OSC input on port 12000"]
D["Safety Profiles<br/>lab · show-safe · read-only"] -.-> A
E["Preview Engine<br/>Dry-run OSC inspection"] -.-> A
F["Bundle Support<br/>Atomic multi-message delivery"] -.-> B
style A fill:#1a1a2e,stroke:#F59E0B,color:#fff
style B fill:#1a1a2e,stroke:#F59E0B,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
style F fill:#0f3460,stroke:#0f3460,color:#fff
安全简介
BEYOND_SAFETY_PROFILE 给你一个理智的起点,而不必记住多个标志:
lab
read_only = false
confirm_destructive = false
show-safe
read_only = false
confirm_destructive = true
read-only
read_only = true
confirm_destructive = true
如果您需要覆盖配置文件,显式环境标志仍然有效:
复制 BEYOND_SAFETY_PROFILE=show-safe \
BEYOND_CONFIRM_DESTRUCTIVE=0 \
uv run python -m beyond_mcp
工具
系统
工具
它做什么
get_server_config
返回当前MCP服务器配置和安全设置
health_check
检查BEYOND目标是否可访问,并报告已解析的套接字详细信息
send_osc_raw
为任何未被命名工具包装的地址发送原始OSC消息
send_osc_bundle
将多个OSC消息作为原子包发送
preview_osc
预览OSC消息而不发送它(干运行检查)
preview_osc_bundle
预览OSC捆绑包而不发送它
主控制
工具
它做什么
set_master_brightness
设置主亮度(0-100)
blackout
激活断电——禁用所有激光输出
enable_laser_output
启用激光输出(取消断电)
disable_laser_output
禁用激光输出
master_pause
暂停或取消暂停主播放
master_pause_time
暂停或取消暂停带有时间同步的主播放
set_master_speed
设置主播放速度(0-10)
stop_all_now
立即停止所有播放
stop_all_sync
停止所有同步淡入淡出播放
stop_all_async
使用淡入淡出异步停止所有播放
BPM/节拍
工具
它做什么
set_bpm
设置BPM速度值(1-999)
set_bpm_delta
按增量值调整BPM
beat_tap
注册节拍检测
beat_resync
重新同步节拍计时
beat_source_timer
将节拍源设置为内部计时器
beat_source_audio
将节拍源设置为音频输入
beat_source_manual
将节拍源设置为手动轻击
提示模式
工具
它做什么
set_cue_mode_single
将提示模式设置为单提示(一次一个活动提示)
set_cue_mode_one_per
将提示模式设置为“一人一组”
set_cue_mode_multi
将提示模式设置为多提示(多个同时提示)
点击行为
工具
它做什么
click_mode_select
将单击行为设置为“选择”模式
click_mode_toggle
将单击行为设置为切换模式
click_mode_restart
将单击行为设置为“重新启动”模式
click_mode_flash
将点击行为设置为Flash模式
click_mode_solo_flash
将点击行为设置为单独闪光模式
click_mode_live
将点击行为设置为实时模式
set_click_scroll
设置点击滚动参数(缩放、大小、淡入淡出、vpoints、扫描率、颜色、速度、红色、绿色、蓝色、阿尔法)
过渡
工具
它做什么
set_transition_type
按索引设置转换类型
set_master_transition_index
设置主过渡效果指标
set_master_transition_time
设置主转换时间(秒)
线索/细胞控制
工具
它做什么
select_cue
按名称选择线索
start_cue_by_name
按名称开始提示
stop_cue_by_name
按名称停止提示
stop_cue_now
立即停止特定提示
stop_cue_sync
使用同步淡出功能停止特定提示
cue_down
向下导航提示选择
cue_up
向上导航提示选择
pause_cue
暂停或取消暂停提示
restart_cue
从头开始重新启动提示
focus_cell
逐页关注单元格并提示坐标
focus_cell_index
通过线性指数聚焦于一个单元格
start_cell
启动当前聚焦的单元格
restart_cell
重新启动当前聚焦的单元格
stop_cell
停止当前聚焦的单元格
shift_focus
通过方向偏移移动单元格焦点
move_focus
通过增量X和Y移动单元格焦点
unselect_all_cues
取消选择所有活动提示
工作区
工具
它做什么
load_cue
按名称加载提示而不启动它
load_workspace
按名称加载工作区
页面/选项卡/类别导航
工具
它做什么
select_page
按索引选择页面
select_next_page
导航到下一页
select_prev_page
导航至上一页
select_tab
按索引选择选项卡
select_tab_by_name
按名称选择选项卡
select_next_tab
导航到下一个选项卡
select_prev_tab
导航到上一个选项卡
select_all_categories
选择所有内容类别
select_category
按索引选择内容类别
select_category_by_name
按名称选择内容类别
select_next_category
导航到下一个内容类别
select_prev_category
导航到上一个内容类别
网格化管理
工具
它做什么
set_grid_size
设置提示网格尺寸
select_grid
按索引选择网格
区域控制
工具
它做什么
mute_zone
按索引将投影区域静音
unmute_zone
按索引取消投影区域的静音
toggle_mute_zone
切换投影区域的静音状态
unmute_all_zones
取消所有投影区域的静音
stop_zone
在具有可选淡入淡出时间的区域上停止输出
stop_zone_by_name
按名称停止区域上的输出
stop_zones_of_projector
停止分配给投影仪的所有区域
stop_projector_by_name
按名称停止投影仪的所有区域
select_zone
选择投影区域
select_zone_by_name
按名称选择投影区域
unselect_zone
取消选择投影区域
unselect_all_zones
取消选择所有投影区域
toggle_select_zone
切换投影区域的选择状态
store_zone_selection
存储当前区域选择以供以后调用
restore_zone_selection
恢复以前存储的区域选择
set_zone_brightness
设置特定区域的亮度(0-100)
实时控制参数(主范围)
工具
它做什么
set_master_size
设置主尺寸X和Y(-400到400)
set_master_position
设置主位置X和Y(-32768至32768)
set_master_rotation
设置主旋转角度X、Y、Z(-2880至2880)
set_master_rotation_speed
设置主连续转速X、Y、Z(-1440至1440)
set_master_color
设置主色RGB(每个0-255)
set_master_alpha
设置主阿尔法/不透明度(0-255)
set_master_zoom
设置主变焦(0-100)
set_master_scan_rate
设置主扫描速率(10-200)
set_master_visible_points
设置主可见点百分比(0-100)
set_master_color_slider
设置主颜色滑块(0-255)
set_master_animation_speed
设置主动画速度(0-400)
现场控制:效果(主范围)
工具
它做什么
set_master_effect
在主FX插槽(插槽1-4,effect_index-1..47)上设置效果
set_master_effect_action
设置主FX插槽的动作/强度(插槽1-4,值0-100)
投影机控制
工具
它做什么
set_projector_size
设置投影仪输出大小X和Y(-100到100)
set_projector_position
设置投影仪输出位置X和Y(-100到100)
projector_swap_xy
切换投影仪X/Y轴交换
projector_invert_x
切换投影仪X轴反转
projector_invert_y
切换投影仪Y轴反转
区域设置/几何校正
工具
它做什么
zone_setup_select
选择一个区域进行几何设置
zone_setup_next_zone
导航到设置中的下一个区域
zone_setup_prev_zone
导航到设置中的上一个区域
zone_setup_select_param
按索引选择几何参数进行编辑
zone_setup_next_param
导航到下一个几何参数
zone_setup_prev_param
导航到上一个几何参数
zone_setup_set
设置区域几何校正参数(xsize、ysize、exposition、yposition、zrotation、梯形失真、挤压、弓形、剪切等)
安全限制器
工具
它做什么
set_limiter
设置安全限制器(轮廓、每个区域、每个网格、闪光、保持、光束、dmx、显示)
显示
工具
它做什么
display_popup
在BEYOND中显示弹出消息
display_preview
显示或隐藏命名预览窗口
DMX/通道输出
工具
它做什么
channel_out
将值发送到BEYOND输出通道
控制范围
工具
它做什么
set_control_scope
设置实时控制目标范围(主控、提示、区域、轨道、投影仪、智能)
虚拟LJ
工具
它做什么
virtual_lj
启用或禁用虚拟LJ模式
virtual_lj_fx
触发虚拟LJ效果
克劳德桌面
复制 {
"mcpServers": {
"beyond": {
"command": "uv",
"args": ["run", "--directory", "/path/to/beyond-mcp", "python", "-m", "beyond_mcp"],
"env": {
"BEYOND_HOST": "127.0.0.1",
"BEYOND_OSC_PORT": "12000"
}
}
}
}
VS代码/光标
复制 {
"servers": {
"beyond": {
"command": "uv",
"args": ["run", "--directory", "/path/to/beyond-mcp", "python", "-m", "beyond_mcp"],
"env": {
"BEYOND_HOST": "127.0.0.1",
"BEYOND_OSC_PORT": "12000"
}
}
}
}
更多示例,包括针对局域网的设置: docs/mcp-config-examples.md
法典
创建一个 codex.json MCP配置文件:
复制 {
"mcpServers": {
"beyond": {
"command": "uv",
"args": ["run", "--directory", "/path/to/beyond-mcp", "python", "-m", "beyond_mcp"],
"env": {
"BEYOND_HOST": "127.0.0.1",
"BEYOND_OSC_PORT": "12000"
}
}
}
}
然后使用以下命令运行Codex:
复制 codex --mcp-config codex.json
安全生产
此服务器专为现场表演环境而设计,在这种环境中,意外命令可能会中断正在进行的激光表演。所有117个工具都包括完整的参数验证。
UDP即发即弃 --BEYOND OSC控件使用UDP,这意味着命令在没有确认的情况下发送。没有回滚。每次工具调用都是对激光系统的实际操作。
主机分配 --只有 127.0.0.1, localhost,以及 ::1 默认情况下是允许的。通过以下方式显式添加LAN主机 BEYOND_ALLOWED_HOSTS.Set * 允许任何主机。
只读模式 --set BEYOND_READ_ONLY=1 以阻止所有写入操作。仅 get_server_config, health_check, preview_osc,以及 preview_osc_bundle 保持可用。
确认破坏性浇口 --set BEYOND_CONFIRM_DESTRUCTIVE=1 要求 confirm=true 破坏性操作,包括原始/捆绑发送破坏性OSC地址和破坏性命名工具,如 load_workspace, stop_zone,以及 stop_projector_by_name.
健康检查 -- health_check 通过DNS解析和UDP套接字测试验证BEYOND目标可达性,并报告解析的地址族/套接字目标。
OSC捆绑包支持 -- send_osc_bundle 将多个OSC消息作为原子包发送,确保协调的多参数更改的全部或全部交付。
发送前预览 -- preview_osc 和 preview_osc_bundle 在不传输任何内容的情况下返回确切的数据包详细信息。在高风险现场操作之前使用它们。
输入验证 --所有117个具有记录参数范围的工具在构建任何OSC消息之前都会强制执行边界。亮度、缩放、扫描速率、大小、位置、旋转、颜色、BPM、速度、淡入淡出时间、效果槽、限制器类型、几何校正参数和非负索引都经过范围检查。无效输入返回结构化JSON错误,从不返回原始异常。
错误隔离 --所有工具都包裹在 _handle_errors.OSC发送失败、JSON解析错误、验证失败和意外异常返回 {"ok": false, "error": "...", "blocked": true} 而不是使MCP会话崩溃。
运输验证 --只有 stdio, sse,以及 streamable-http 运输被接受。无效的传输值在启动时立即升高。
端口验证 -- BEYOND_OSC_PORT 在配置加载时被验证为1-65535范围内的整数。
原始逃生舱口 -- send_osc_raw 允许任何OSC地址覆盖指定工具之外的范围,但需要显式的JSON数组输入,并在发送前验证结构。
建议的操作流程
首次在新的BEYOND机器上使用:
get_server_config
health_check
display_popup
set_bpm
页面/标签导航
非关键线索开始/停止
主亮度等实时参数测试
更实用的序列: docs/operator-workflows.md
发展
复制 uv sync
uv run python -m pytest -v
许可证
Apache 2.0