vibe3d

io.github.vibebytesPublished by GitHub account vibebytesv0.2.14Updated Nov 4, 2026

Edit and render 3D scenes over MCP: rooms, nodes, materials, cameras, and snapshots.

VerifiedSTDIODesktop onlyDeveloper ToolsMedia & Design

Overview

vibe3d's local MCP server; no sign-in required; STDIO; 17 tools.

No AI overview yet: these facts come from the registry entry and the server itself.

Installation

In SourceWeft

  1. Open vibe3d in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

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.

Source: README.md at commit b6509b3

Tools

17

vibe3d_help

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

Parametersoptool

vibe3d_status

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

Takes no parameters.

vibe3d_room

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

Parametersoprequiredparamsroom_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 是整场景替换,仅用于初始化或回滚

Parametersoprequiredparamsroom_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 可省略(自动建)

Parametersoprequiredparamsroom_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

Parametersoprequiredparamsroom_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

Parametersoprequiredparamsroom_id

vibe3d_animation

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

Parametersoprequiredparamsroom_id

vibe3d_fx

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

Parametersoprequiredparamsroom_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'

Parametersoprequiredparamsroom_id

vibe3d_asset

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

Parametersoprequiredparamsroom_id

vibe3d_camera

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

Parametersoprequiredparamsroom_id

vibe3d_render

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

Parametersoprequiredparamsroom_id

vibe3d_export_glb

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

Parametersincluderoom_idnode_ids

vibe3d_job

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

Parametersoprequiredparamsroom_id

vibe3d_open_editor

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

Parametersopenfocusreuseroom_id

vibe3d_apply_ops

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

Parametersopsrequiredroom_id

Version history

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

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts