vibe3d_help
查参数契约:给 tool(+op) 返回该 op 的参数字段/必填/枚举/错误码与示例;不给 tool 则列出全部工具与 op
optool
io.github.vibebytes由 GitHub 账号 vibebytes 发布v0.2.14更新于 Nov 4, 2026
通过 MCP 编辑和渲染 3D 场景:房间、节点、材质、相机和快照。
AI 翻译由 AI 模型根据下方的原文描述翻译,可能有误。
Edit and render 3D scenes over MCP: rooms, nodes, materials, cameras, and snapshots.
vibe3d 的本地 MCP 服务;无需登录;STDIO;17 个工具。
暂无 AI 概览:以下信息来自注册中心条目和服务本身。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
参照 仓库 中的启动说明。
vibe3d is an MCP server for building and rendering 3D scenes. One command starts the protocol server, which launches the local daemon for you.
Requires Node.js >= 20 (same as the MCP TypeScript SDK v2). Licensed under Apache-2.0.
[vibe3D and Blender discussion group]
vibe3D + Blender discussion group
The daemon listens on loopback only (127.0.0.1 / localhost).
Client config:
GUI apps (Cursor, Claude Desktop) often do not load interactive shell config (~/.zshrc, nvm hooks, etc.). A wrapper like bash -lc "nvm use …" usually fails on macOS: login bash does not load zsh’s nvm. Do not put version-manager wrappers in MCP config.
Keep @latest in the config: without a version tag npx reuses its cache and never picks up new releases, even after you reload the MCP server. A newer MCP also restarts an older local daemon on start.
Make the default node / npx on the PATH those apps actually use >= 20, then use the JSON above:
node is already 20+; or~/.volta/bin). nvm alias default 20 alone does not fix Cursor if nvm is only sourced in zsh.Use the default JSON above in .cursor/mcp.json or the user MCP config. If status stays Error, open MCP Output — a Node < 20 message means fix the default Node on the GUI PATH (options above), not the MCP JSON shape.
Same JSON in claude_desktop_config.json.
When the MCP process starts and finds a local daemon of a different version, it stops that daemon (SIGTERM, data is flushed) and starts a matching one. Restarting the MCP therefore picks up an upgraded daemon. Rooms live only in daemon memory unless it runs with --persist (VIBE3D_PERSIST=1), so restarting a non-persistent daemon discards its rooms. --url remote daemons are never touched.
Rendering uses a system Chrome, Chromium, or Edge. The package does not download a browser. Without one, scene editing still works and vibe3d_status reports that rendering is unavailable.
The vibe3d command line and MCP share one capability spec. Field names are camelCase. The CLI shows them in kebab-case, so rotateStep is --rotate-step and withinBBox is --within-bbox.
Comma-separated text splits into the field's array or tuple: --tags a,b, --offset 1,0,0. A command that has both width and height also accepts --size 1280x720. Objects take JSON, or @file.
vibe3d help <command> prints the same descriptions as vibe3d_help. An unknown flag is an error.
The server exposes a small set of grouped tools. Each call passes op, for example vibe3d_room with op: "create". This keeps tools/list small. Unknown tool names come back as tool errors (isError) so the model can correct itself. Long renders and exports are jobs: poll vibe3d_job.
One MCP process keeps one default room. While it has seen a single room, room tools may omit room_id; results marked "implicit" used that default. Once the process has seen a second room (or several chats share it), calls without room_id are rejected and list the candidates. Pass the room_id returned by your own create call on every call. An explicit room_id routes only that call and never changes the default. vibe3d_room {op:"use"} pins the default room when you know only one chat is active.
This prints the Node version, daemon health, Chrome discovery, schema file, and version match. It does not start an MCP session.
See CONTRIBUTING.md. From this repository, with Node 20+:
pnpm install may ask to reinstall node_modules from scratch. CI=true accepts that prompt.
Security reports: SECURITY.md.
来源:README.md,提交 b6509b3
查参数契约:给 tool(+op) 返回该 op 的参数字段/必填/枚举/错误码与示例;不给 tool 则列出全部工具与 op
optool[status] 能力探测:渲染器是否就绪、能否出 ID 通道、快照上限与载荷上限|含 id-pass 支持;渲染或导入前先查一次
无需输入参数。
[room] 房间:建 / 列 / 切绑定 / 看摘要 / 关 / 时间线|op: [read] list use get timeline;[write] create close|必填见 params 描述,字段见 vibe3d_help {tool, op}
op必填paramsroom_id[scene] 场景:取整份 / 摘要 / 查询节点 / 统计 / 拾取 / 体检 / 撤销重做 / 差分 / 导入导出 / 检查点 / 当前选中|op: [read] get summary query stats pick validate diff export checkpoints selection;[write] undo redo import checkpoint restore|必填见 params 描述,字段见 vibe3d_help {tool, op}|import 是整场景替换,仅用于初始化或回滚
op必填paramsroom_id[node] 节点:建 / 改 / 删 / 克隆 / 读 / 换父 / 批量变换 / 阵列 / 吸附 / 编组 / 合并烘焙 / 按画面框拟合 / 导入模型|op: [read] get;[write] create update delete clone reparent transform array attach group merge fit_screen import|必填见 params 描述,字段见 vibe3d_help {tool, op}|create 平铺传 kind+shape+size,material 可省略(自动建)
op必填paramsroom_id[material] 材质:按预设建 / 局部改 / 贴图与 UV / 批量指派|op: create patch map assign|必填见 params 描述,字段见 vibe3d_help {tool, op}|create 收 {preset},id 由服务端生成;preset 任意描述词都收(如 matte-white 会归一到 concrete + 浅色),原名回读在 preset/presetNote;patch 用 baseColor(也接受 color 别名)/metalness/roughness/emissive/opacity
op必填paramsroom_id[stage] 舞台与环境:预设/曝光/后处理/三渲二;雾、背景、环境光、HDRI|op: set env|必填见 params 描述,字段见 vibe3d_help {tool, op}|set/env 的字段平铺在顶层(勿包成 stage:{…}):env 传 background/ambient/fog,颜色 [r,g,b,a],fog 是对象 {near,far}、关雾传 false
op必填paramsroom_id[animation] 程序化动画:定义轨道 / 播放 / 停止 / 清除 / 批量摆姿势 / 人形步态|op: define play stop clear pose gait|必填见 params 描述,字段见 vibe3d_help {tool, op}
op必填paramsroom_id[fx] 特效:粒子或光柱,建 / 删|op: create delete|必填见 params 描述,字段见 vibe3d_help {tool, op}|id 由服务端生成,不要复用已有 id
op必填paramsroom_id[mesh] 网格构造:布尔 / 管体 / 背板 / 车削 / 有机体 / 倒角 / 树 / 人体 / 贴花|op: boolean tube backdrop lathe organic bevel tree mannequin decal|必填见 params 描述,字段见 vibe3d_help {tool, op}|decal 用真字形/图片;color 用 [r,g,b,a] 或 '#RRGGBB'
op必填paramsroom_id[asset] 资产:解析 glTF / 上传贴图模型 / 列表 / 删除|op: [read] inspect list;[write] put delete|必填见 params 描述,字段见 vibe3d_help {tool, op}
op必填paramsroom_id[camera] 机位:设置 / 保存命名机位 / 删除 / 像素投影与反投影|op: [read] project unproject;[write] set save delete|必填见 params 描述,字段见 vibe3d_help {tool, op}|set 平铺 p/target/fov,勿包成 camera:{…};save 用命名机位
op必填paramsroom_id[render] 渲染:快照 / 多视角 / 单资产特写 / 像素取色 / ID 通道 / 序列帧|op: snapshot views node pick assert id_pass sequence video|必填见 params 描述,字段见 vibe3d_help {tool, op}|snapshot / views 前先 vibe3d_status 探能力
op必填paramsroom_id[export_glb] 导出 GLB(任务制,用 vibe3d_job 查进度)|拿到 jobId 后轮询 vibe3d_job.get 到 state=done(失败看 error)
includeroom_idnode_ids[job] 导出任务:查询 / 列表 / 取消|op: [read] get list;[write] cancel|必填见 params 描述,字段见 vibe3d_help {tool, op}
op必填paramsroom_id[open_editor] 打开房间编辑器(默认弹窗)|返回 url 与 hint;open:false 只回链接
openfocusreuseroom_id[apply_ops] 原子批量 op(仅用于跨节点依赖;日常请用专用工具)|嵌套载荷包在同名字段 {op:"node.create",node:{…}} / {op:"env.set",env:{…}},不能平铺到 op 顶层(会校验失败);ops 传数组不是 JSON 字符串。逐条操作请用专用工具
ops必填room_id已满足适用检查项的 90%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
npx -y @vibebyte/vibe3d-mcp@latest{ "mcpServers": { "vibe3d": { "command": "npx", "args": ["-y", "@vibebyte/vibe3d-mcp@latest"] } }}claude mcp add vibe3d -- npx -y @vibebyte/vibe3d-mcp@latest{ "servers": { "vibe3d": { "command": "npx", "args": ["-y", "@vibebyte/vibe3d-mcp@latest"] } }}npx @modelcontextprotocol/inspector --cli npx -y @vibebyte/vibe3d-mcp@latest --method tools/listvibe3d node create r1 --shape box --size 1,2,3vibe3d scene query r1 --material m_aaaaaaaa --parent rootvibe3d anim gait r1 @runner --style runnpx -y @vibebyte/vibe3d-mcp@latest --doctor --jsonCI=true pnpm installpnpm --filter @vibebyte/vibe3d-editor buildpnpm --filter @vibebyte/vibe3d-daemon buildpnpm --filter @vibebyte/vibe3d-mcp build