Token导航 LogoToken导航TokenDH.com
Companion MCP logo
音视频stdio官方级别未说明来源级核验

Companion MCP

MCP Server

一个为Bitfocus Companion设计的MCP服务器,提供53种工具,用于控制按钮、样式管理、页面发现、运行时摘要、库存差异、检查点回滚/恢复工作流、预设管理、变量管理和批量节目编程,使AI助手能够通过Companion的当前API操作Stream Deck表面和其他Companion连接的设备。

工具数

53

提示词数

0

GitHub Stars

4

资源数

0
PythonAI驱动语音音频

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

drohi-r

提供方

drohi-r

最后核验

2026/5/17 20:23

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uv run python -m companion_mcp

详细介绍

配套MCP

MCP服务器 Bitfocus伴侣.公开了53个工具,涵盖了经过验证的按钮控制、样式、页面发现、运行时摘要、库存差异、检查点回滚/恢复工作流、预设管理、变量管理和批处理显示编程,因此AI助手可以通过Companion的当前API操作Stream Deck表面和其他Companion连接的设备。

该仓库还包括一个轻量级的本地浏览器UI,供那些希望在不手动发出MCP工具调用的情况下获得相同验证流的人使用。

为什么存在

Companion是将实时生产堆栈连接在一起的物理按钮层。操作员按下Stream Deck按钮,它会发出grandMA2提示,触发Resolume片段,或启动激光序列。但是对这些按钮进行编程是手动的——你一次点击一个按钮,配置操作、标签和颜色。

这个MCP服务器允许AI完成这项工作。它可以读取您当前的按钮布局,在应用更改之前预览更改,并在几秒钟内对整个页面进行批处理。结合MA2 Agent和Resolume MCP,AI助手可以从一次对话中对整个节目控制界面进行编程。

快速开始

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

浏览器用户界面

运行本地操作员UI:

uv run companion-mcp-ui

然后打开:

http://127.0.0.1:8088

UI首先是本地的。它与MCP工具位于相同的后端逻辑之上,因此经过验证的写入、快照、预设和回滚在浏览器中的行为与通过MCP的行为相同。

确保Companion正在目标主机和端口上运行。当前Companion版本使用:

  • 用于按钮操作和样式写入的HTTP端点
  • websocket-tRPC位于 /trpc 用于更丰富的读取、发现、预览和变量检查

配置

变量默认值描述
COMPANION_HOST127.0.0.1配套实例IP
COMPANION_PORT8000配套HTTP和websocket端口
COMPANION_TIMEOUT_S10.0HTTP请求超时(秒)
COMPANION_ALLOWED_HOSTS127.0.0.1,localhost,::1目标主机的逗号分隔的列表。集 * 允许任何。
COMPANION_WRITE_ENABLED1设置为 0 用于只读模式
COMPANION_TRANSPORTstdioMCP传输(stdio, sse, streamable-http)
COMPANION_UI_HOST127.0.0.1浏览器UI绑定地址
COMPANION_UI_PORT8088浏览器UI端口

建筑

graph TD
    A["Companion MCP Server
companion_mcp
53 tools · safety gate"] --> B
    B["HTTP Client
Button actions · style writes"] --> D
    A --> C
    C["WebSocket tRPC Client
Discovery · preview · variables"] --> D
    D["Bitfocus Companion
HTTP + WebSocket at /trpc"]

    E["Browser UI
companion-mcp-ui
Local operator console"] -.-> A
    F["Snapshot Engine
Inventory · presets · rollback"] -.-> A
    G["Verification Layer
Render polling · diff · transactions"] -.-> A

    style A fill:#1a1a2e,stroke:#14B8A6,color:#fff
    style B fill:#1a1a2e,stroke:#14B8A6,color:#fff
    style C fill:#1a1a2e,stroke:#14B8A6,color:#fff
    style D fill:#1a1a2e,stroke:#0f3460,color:#fff
    style E fill:#0f3460,stroke:#0f3460,color:#fff
    style F fill:#0f3460,stroke:#0f3460,color:#fff
    style G fill:#0f3460,stroke:#0f3460,color:#fff

工具

发现和阅读

用于了解Companion当前状态的安全只读工具。

工具它做什么
get_server_config返回当前MCP服务器配置和安全设置
health_checkProbe Companion API可达性和返回状态
list_surfaces列出连接的控制面(流甲板等)
get_button_info读取特定按钮的当前控件和预览状态
get_button_runtime_summary返回按钮的紧凑的面向操作员的运行时摘要
get_page_grid从页面读取矩形按钮网格
snapshot_page_inventory导出具有简洁按钮摘要、样式、反馈和预览哈希的页面区域
save_page_inventory_snapshot将命名页面清单检查点保存到磁盘
load_page_inventory_snapshot从磁盘加载已保存的页面清单检查点
list_page_inventory_snapshots列出已保存的页面库存检查点文件
delete_page_inventory_snapshot删除已保存的页面清单检查点文件
diff_page_inventory比较两页库存快照并总结更改的按钮
preview_restore_page_style_from_inventory将保存的库存快照转换为还原计划,而无需写入Companion
preview_restore_page_style_from_snapshot从已命名的已保存快照预览还原计划
save_page_style_preset将当前页面样式条目另存为可重复使用的预设
load_page_style_preset加载已保存的页面样式预设
list_page_style_presets列出已保存的页面样式预设
delete_page_style_preset删除已保存的页面样式预设
preview_apply_page_style_preset预览应用带有可选偏移量的已保存页面样式预设
find_buttons按可见文本、控件id、控件类型、连接id或定义id搜索页面区域
export_page_layout将页面区域导出为可重用的布局有效负载
get_custom_variable读取Companion自定义变量
get_module_variable从Companion模块连接读取变量
snapshot_custom_variables在一次调用中读取自定义变量的命名列表
verify_button_render_change将当前按钮预览哈希与上一个进行比较

预览(写作前计划)

无需触摸Companion即可验证和预览操作。使用这些来检查批处理操作在提交之前会做什么。

工具它做什么
preview_page_style验证并预览页面样式批处理
preview_label_button_grid将标签网格解析为坐标
preview_button_template将可重复使用的模板放置在原点并预览结果

按钮操作

要求 COMPANION_WRITE_ENABLED=1 (默认)。

工具它做什么
press_button按下并松开按钮
press_button_verified按下按钮并轮询可见/运行时状态更改
hold_button按住(仅向下操作)
release_button松开按住的按钮(向上动作)
rotate_left向左旋转编码器
rotate_right将编码器向右旋转
set_step设置当前操作步骤

按钮样式

工具它做什么
set_button_text更改按钮显示文本
set_button_color更改文本和/或背景颜色(6位十六进制)
set_button_style一次设置多个样式属性
set_button_style_verified应用样式更改并轮询,直到渲染完成或超时到期

批量操作

工具它做什么
press_button_sequence按顺序按下多个按钮,延迟可配置
set_page_style在页面上的多个按钮上批量设置样式
set_page_style_verified在页面上批量设置样式,按按钮返回验证以及库存差异
restore_page_style_from_inventory从以前捕获的页面清单中恢复按钮样式
restore_selected_page_style_from_inventory仅从库存快照中还原选定的坐标
restore_page_style_from_snapshot从已命名的已保存快照还原样式
apply_page_style_transaction保存回滚检查点,应用已验证的样式,并返回回滚元数据
rollback_page_style_transaction回滚命名事务快照
apply_page_style_preset应用带有可选偏移量的已保存页面样式预设
label_button_grid从简单的名称列表中标记按钮网格
apply_button_template在页面原点应用可重用的按钮模板

变量和系统

工具它做什么
set_custom_variable编写Companion自定义变量
rescan_surfaces重新扫描连接的USB表面
press_bank_button传统银行API(已弃用,仍然有效)

克劳德桌面版

{
  "mcpServers": {
    "companion": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/companion-mcp", "python", "-m", "companion_mcp"],
      "env": {
        "COMPANION_HOST": "127.0.0.1",
        "COMPANION_PORT": "8000"
      }
    }
  }
}

VS代码/光标

{
  "servers": {
    "companion": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/companion-mcp", "python", "-m", "companion_mcp"],
      "env": {
        "COMPANION_HOST": "127.0.0.1",
        "COMPANION_PORT": "8000"
      }
    }
  }
}

法典

创建一个 codex.json MCP配置文件:

{
  "mcpServers": {
    "companion": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/companion-mcp", "python", "-m", "companion_mcp"],
      "env": {
        "COMPANION_HOST": "127.0.0.1",
        "COMPANION_PORT": "8000"
      }
    }
  }
}

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

codex --mcp-config codex.json

安全生产

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

  • 主机分配 --只有 127.0.0.1, localhost,以及 ::1 默认情况下是允许的。通过以下方式显式添加LAN主机 COMPANION_ALLOWED_HOSTS.
  • 写控制 --set COMPANION_WRITE_ENABLED=0 以阻止所有写入操作。读取和预览工具仍然可用。
  • 应用前预览 --每个批处理操作都有一个相应的预览工具,可以验证输入并准确显示将要更改的内容,而无需触摸Companion。
  • 已验证写入 --更喜欢 press_button_verifiedset_button_style_verified 当你关心实际的可见或运行时状态变化时,而不仅仅是HTTP接受度。
  • 快照和差异工作流 --使用 snapshot_page_inventory 批量更改前后,或让 set_page_style_verified 自动生成库存差异。
  • 回滚路径 --使用以下命令捕获页面 snapshot_page_inventorysave_page_inventory_snapshot,检查恢复计划 preview_restore_page_style_from_inventorypreview_restore_page_style_from_snapshot,然后使用匹配还原工具将样式干净地回滚。
  • 交易流程apply_page_style_transaction 在写入之前创建一个命名的回滚检查点。 rollback_page_style_transaction 从该命名快照恢复。
  • 预设工作流程 --使用保存可重用的页面样式 save_page_style_preset,检查 preview_apply_page_style_preset,并使用进行部署 apply_page_style_preset.
  • 输入验证 -页面、行、列、颜色十六进制、延迟边界和模板结构都在进行任何API调用之前进行验证。无效输入返回结构化JSON错误,从不返回原始异常。
  • 错误隔离 --所有工具都包裹在 _handle_errors。返回网络故障、JSON解析错误和验证失败 {"ok": false, "error": "...", "blocked": true} 而不是使MCP会话崩溃。

现场行为记录

  • 成功的HTTP写入并不总是意味着按钮会立即发生明显的变化。
  • 当前的Companion版本可以先更新存储的样式状态,然后在短时间内重新绘制预览。
  • set_button_style_verifiedpress_button_verified 包括有界轮询,以便MCP可以区分:

- 已接受写入,但未观察到任何变化 - 写入已接受,预览在短暂延迟后更改 - 写入已接受,样式状态已更改,但可见渲染仍未更改

为什么UI有帮助

MCP后端已经是真正的产品了。UI不会取代它;它使人类更快、更安全:

  • 点击页面网格中的按钮,而不是记住 page,row,column
  • 在一个地方检查预览、样式、运行时摘要和上次验证的响应
  • 保存和浏览快照和预设,而无需打开JSON文件
  • 在节目准备期间从浏览器运行经过验证的样式更改和事务回滚
  • 将系统交给不会手动键入MCP呼叫的操作员

发展

uv sync
uv run python -m pytest -v

许可证

Apache 2.0

目录标签

目录标签

PythonAI驱动语音音频MCP服务器本地部署按钮控制样式管理直播制作

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

53

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP