外部 Agent 接入
通过 BeefTV MCP 将 Codex、Claude Code、Claude Desktop、Cursor 等外部 Agent 接入本地工作区
除了使用内置创作助手,你也可以通过 BeefTV MCP 把 Codex、Claude Code、Claude Desktop、Cursor 或其他支持 MCP(Model Context Protocol)的外部 Agent 接入当前正在运行的 BeefTV 本地工作区,直接读取画布、查看图片与音频素材、整理节点或调用底层业务接口。
底层命令行用法与纯脚本批量调用见 beeftv 命令行基础使用。
1. 在侧栏「BeefTV MCP」页生成连接配置
- 打开 BeefTV 桌面端并保持运行,点击左侧边栏的 「BeefTV MCP」。
- 在列表中选择你要连接的客户端(Codex、Claude Code、Claude Desktop、Cursor 或 其他 MCP 客户端),点击右侧的 「连接」 → 「生成连接配置」。
- 按页面给出的方式完成接入:
- Codex / Claude Code:页面生成一条终端命令,直接复制粘贴到终端运行(Windows 请使用 PowerShell)。
- Claude Desktop:打开 Claude Desktop 的「设置 → 开发者 → 编辑配置」,将生成的
beeftv项合并到mcpServers(保留已有服务),然后完全退出并重新打开 Claude。 - Cursor / 其他 MCP 客户端:将生成的 JSON 配置粘贴到
~/.cursor/mcp.json或对应工具的 MCP 配置文件中。
生成的命令或 JSON 配置里已经包含随包 CLI 的绝对路径(macOS 为 /Applications/BeefTV.app/Contents/MacOS/cli/beeftv,Windows 为安装目录下的 cli\beeftv.exe,Linux 为 BeefTV-linux/cli/beeftv)以及工作区数据目录与专属客户端凭据(BEEFTV_DATA_DIR、BEEFTV_CLIENT_ID、BEEFTV_CLIENT_TOKEN)。
需要注意:
- 凭证只展示一次:服务端只保存 token 哈希,关闭配置面板后无法再次查看明文 token;如需重新配置,可在该客户端的「管理」中点击「断开」或「新增连接」重新生成。
- 保持 BeefTV 开启:外部 Agent 通过本地回环接口访问正在运行的桌面工作区;首次成功访问后,页面状态会从「等待连接」变为「已验证连接」,并显示最近使用时间。
- 随时断开:在「BeefTV MCP」页点击已连接客户端的「管理」→「断开」,即可立即吊销该客户端凭据,断开后它无法再读取或修改画布。
2. 默认提供的工具与 --all-business-tools
beeftv mcp serve 默认采用精简工具集(共 40 个工具),避免把上百个底层路由一次性塞满外部 Agent 的上下文窗口:
- 创作业务操作(38 个):与内置创作助手共用同一套高频操作面(默认省去面向桌面面板的
conversation.*与skill.publish.*),直接覆盖画布读写(canvas.*)、素材查询与整理(asset.*)、媒体检查(media.*)与技能查询(skill.*)。 - 底层业务接口的两个统一入口(2 个):
business.list:按关键字(query,匹配接口 ID、说明或路径,例如assets、folders、timeline)和读写属性(readOnly)检索本地工作区的底层业务接口,返回接口 ID、说明、HTTP 方法、路径和参数结构。business.call:按business.list查到的接口toolID 调用对应底层接口,参数支持path、query、body、filePath(由本机 CLI 读取本地文件上传,单文件上限 64 MiB)或file(base64 文件内容,与filePath二选一)以及operationId。
画布、素材、媒体、技能优先使用专门的业务操作工具;专门工具未覆盖的底层能力(如文件夹、项目、任务、时间线、设置等),先用 business.list 查找接口 ID,再用 business.call 调用。
--all-business-tools 的作用
如果你使用的客户端需要把每个底层业务 REST 接口都单独列成独立的 MCP 工具(共 210+ 个工具,此时不再注册 business.list 与 business.call),可以在 MCP 启动命令中加上 --all-business-tools,或设置环境变量 BEEFTV_MCP_ALL_BUSINESS_TOOLS=1:
beeftv mcp serve --all-business-tools3. 看图结果以图片形式返回
外部 Agent 检查画布素材或生成结果时,MCP 服务会把图片和音频转换为原生多模态内容块返回,而不是把 base64 字符串留在 JSON 文本里:
media.overview/media.inspect:读取到的图片作为 MCP 图片内容块(ImageContent) 返回,音频作为 MCP 音频内容块(AudioContent) 返回,支持看图的外部 Agent(如 Codex、Claude、Cursor)可以直接看到画面;JSON 文本块中只保留type、mimeType、sha256、source与attached: "image" | "audio"等事实信息。因为 MCP 协议本身没有视频内容类型,media.*操作不会附带视频二进制片段,而是保留提示说明:查看视频画面请使用media.inspect并指定mode=frames抽帧看图,查看连续动作或核对声音请使用media.review。business.call读取媒体文件:通过底层接口直接读取图片(image/*)或音频(audio/*)文件响应时,同样转换为 MCP 图片或音频内容块返回,文本块只保留{"mimeType", "bytes"}。注意其他非 JSON 二进制响应(例如直接调用GET /resources/:id/file读取原始视频文件)仍会按{"mimeType", "data": "<base64>"}文本返回,因此检查视频内容时应使用media.inspect(mode=frames)或media.review,避免把整段视频读进上下文。
4. 写操作 operationId 与提交生成防重复扣费
MCP 写调用与命令行生成提交都要求提供幂等键,按调用路径区分如下:
- 工作区业务写操作(
canvas.*等/ops工具):调用任何修改工作区的业务操作工具时,参数中必须提供非空operationId(作为请求体的opId发送给/ops/:op)。服务端操作表按opId记录并去重:结果未知需要重试同一操作时,复用原来的operationId(画布写入同时保持原expectedRevision),服务端会直接回放首次执行结果(replayed: true);若拿同一个operationId发送不同的请求内容,服务端会以operation_id_reused_with_different_payload拒绝。 - 底层业务写接口(
business.call):通过business.call(或--all-business-tools下的底层写工具)调用任何非只读底层接口(readOnly: false)时,参数中也必须提供非空operationId(缺少会返回missing_operation_id),CLI 会将其作为X-Idempotency-Key请求头转发。普通底层 REST 写接口若未单独实现幂等回放,重试前应先用读取接口确认是否已创建成功。 - 提交生成防重复扣费:
- 在 MCP 中通过
business.call调用提交生成任务的接口(POST /tasks)时,operationId会自动写入请求体的input.metadata.clientOperationId(须为 8–128 位字母、数字或:_-;若请求体已显式填写且与operationId不一致,会以operation_id_conflict拒绝)。重试同一次生成提交时,服务端按clientOperationId去重并返回原任务,不会创建第二个任务,也不会重复扣费。 - 在命令行直接使用
beeftv business call或beeftv business upload时,可通过--operation-id <id>传入幂等键;当调用会触发计费生成的接口(submitsGeneration: true)时,--operation-id必填,未提供时 CLI 会在发送前直接拒绝:
- 在 MCP 中通过
beeftv: missing_operation_id: 提交生成会扣费,必须用 --operation-id 提供幂等键,重试时复用同一个值5. 只读连接
在侧栏「BeefTV MCP」页新建的连接默认是 「全部创作工具」(read-write),可调用读写工具,每次操作的确认由所连接的外部 Agent 客户端负责。
如果希望外部 Agent 只能读取画布、素材和任务,不允许修改工作区或提交生成,可以使用以下两种只读方式:
- 启动命令加
--read-only:在 MCP 配置或启动命令中使用beeftv mcp serve --read-only。此时 MCP 服务只暴露只读业务操作,business.list只返回只读接口,business.call也只允许调用只读接口。 - 登记只读凭据(
read-only):历史「旧版只读连接」或通过 owner 凭据显式登记的只读客户端(beeftv client register --label "只读客户端" --kind other --mode read-only),其权限由服务端强制限定为只读。使用只读凭据调用任何写操作都会被服务端拒绝(退出码 6),客户端无法通过本地参数自行提权。