vibe3d

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.

已驗證STDIO僅桌面開發者工具媒體與設計

概覽

vibe3d 的本機 MCP 服務;無需登入;STDIO;17 個工具。

暫無 AI 概覽:以下資訊來自註冊中心條目和服務本身。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 vibe3d,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

vibe3d

English | 简体中文

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

Identity

SurfaceValue
GitHubgithub.com/vibebytes/vibe3d
npm@vibebyte/vibe3d-mcp (and other @vibebyte/vibe3d-* packages)
MCP Registryio.github.vibebytes/vibe3d

Install

bash
npx -y @vibebyte/vibe3d-mcp@latest

The daemon listens on loopback only (127.0.0.1 / localhost).

Client config:

json
{  "mcpServers": {    "vibe3d": {      "command": "npx",      "args": ["-y", "@vibebyte/vibe3d-mcp@latest"]    }  }}

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:

  1. Install Node.js 20+ with the official installer or Homebrew so the system node is already 20+; or
  2. If you use a version manager, set its default to 20+ and ensure its shims are on the non-interactive PATH the GUI inherits (for example Volta’s ~/.volta/bin). nvm alias default 20 alone does not fix Cursor if nvm is only sourced in zsh.

Cursor

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.

Claude Desktop

Same JSON in claude_desktop_config.json.

Claude Code

bash
claude mcp add vibe3d -- npx -y @vibebyte/vibe3d-mcp@latest

VS Code

json
{  "servers": {    "vibe3d": {      "command": "npx",      "args": ["-y", "@vibebyte/vibe3d-mcp@latest"]    }  }}

MCP Inspector

bash
npx @modelcontextprotocol/inspector --cli npx -y @vibebyte/vibe3d-mcp@latest --method tools/list

Environment

VariablePurpose
VIBE3D_HOMEDaemon data directory
VIBE3D_CHROMEChrome or Chromium executable used for rendering
VIBE3D_ROOMRoom bound when the process starts
VIBE3D_MCP_LOGSet to 0 to disable mcp.log
VIBE3D_RESTART_DAEMONSet to 1 (or pass --restart-daemon) to restart the local daemon every time the MCP process starts

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.

Support

PlatformStatus
macOSVerified
LinuxExpected when Chrome or Chromium is on the default path. Not re-checked here
WindowsNot verified. Set VIBE3D_CHROME if you try it

CLI parameters

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.

bash
vibe3d node create r1 --shape box --size 1,2,3vibe3d scene query r1 --material m_aaaaaaaa --parent rootvibe3d anim gait r1 @runner --style run

vibe3d help <command> prints the same descriptions as vibe3d_help. An unknown flag is an error.

Tools

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.

Multiple rooms and chats

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.

Diagnostics

bash
npx -y @vibebyte/vibe3d-mcp@latest --doctor --json

This prints the Node version, daemon health, Chrome discovery, schema file, and version match. It does not start an MCP session.

Develop

See CONTRIBUTING.md. From this repository, with Node 20+:

bash
CI=true pnpm installpnpm --filter @vibebyte/vibe3d-editor buildpnpm --filter @vibebyte/vibe3d-daemon buildpnpm --filter @vibebyte/vibe3d-mcp build

pnpm install may ask to reinstall node_modules from scratch. CI=true accepts that prompt.

Security reports: SECURITY.md.

來源:README.md,提交 b6509b3

工具

17

vibe3d_help

查参数契约:给 tool(+op) 返回该 op 的参数字段/必填/枚举/错误码与示例;不给 tool 则列出全部工具与 op

輸入參數optool

vibe3d_status

[status] 能力探测:渲染器是否就绪、能否出 ID 通道、快照上限与载荷上限|含 id-pass 支持;渲染或导入前先查一次

無需輸入參數。

vibe3d_room

[room] 房间:建 / 列 / 切绑定 / 看摘要 / 关 / 时间线|op: [read] list use get timeline;[write] create close|必填见 params 描述,字段见 vibe3d_help {tool, op}

輸入參數op必填paramsroom_id

vibe3d_scene

[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

vibe3d_node

[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

vibe3d_material

[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

vibe3d_stage

[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

vibe3d_animation

[animation] 程序化动画:定义轨道 / 播放 / 停止 / 清除 / 批量摆姿势 / 人形步态|op: define play stop clear pose gait|必填见 params 描述,字段见 vibe3d_help {tool, op}

輸入參數op必填paramsroom_id

vibe3d_fx

[fx] 特效:粒子或光柱,建 / 删|op: create delete|必填见 params 描述,字段见 vibe3d_help {tool, op}|id 由服务端生成,不要复用已有 id

輸入參數op必填paramsroom_id

vibe3d_mesh

[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

vibe3d_asset

[asset] 资产:解析 glTF / 上传贴图模型 / 列表 / 删除|op: [read] inspect list;[write] put delete|必填见 params 描述,字段见 vibe3d_help {tool, op}

輸入參數op必填paramsroom_id

vibe3d_camera

[camera] 机位:设置 / 保存命名机位 / 删除 / 像素投影与反投影|op: [read] project unproject;[write] set save delete|必填见 params 描述,字段见 vibe3d_help {tool, op}|set 平铺 p/target/fov,勿包成 camera:{…};save 用命名机位

輸入參數op必填paramsroom_id

vibe3d_render

[render] 渲染:快照 / 多视角 / 单资产特写 / 像素取色 / ID 通道 / 序列帧|op: snapshot views node pick assert id_pass sequence video|必填见 params 描述,字段见 vibe3d_help {tool, op}|snapshot / views 前先 vibe3d_status 探能力

輸入參數op必填paramsroom_id

vibe3d_export_glb

[export_glb] 导出 GLB(任务制,用 vibe3d_job 查进度)|拿到 jobId 后轮询 vibe3d_job.get 到 state=done(失败看 error)

輸入參數includeroom_idnode_ids

vibe3d_job

[job] 导出任务:查询 / 列表 / 取消|op: [read] get list;[write] cancel|必填见 params 描述,字段见 vibe3d_help {tool, op}

輸入參數op必填paramsroom_id

vibe3d_open_editor

[open_editor] 打开房间编辑器(默认弹窗)|返回 url 与 hint;open:false 只回链接

輸入參數openfocusreuseroom_id

vibe3d_apply_ops

[apply_ops] 原子批量 op(仅用于跨节点依赖;日常请用专用工具)|嵌套载荷包在同名字段 {op:"node.create",node:{…}} / {op:"env.set",env:{…}},不能平铺到 op 顶层(会校验失败);ops 传数组不是 JSON 字符串。逐条操作请用专用工具

輸入參數ops必填room_id

版本歷史

3
  1. v0.2.14最新Nov 3, 2026
  2. v0.2.13Nov 3, 2026
  3. v0.2.10Oct 29, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分