three.ws Blender
io.github.nirholasv0.5.0更新於 Sep 30, 2026
Drive a local Blender headlessly: inspect, convert, render and script 3D files.
安裝
在 SourceWeft 中
- 開啟 儀表板中的 three.ws Blender,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
@three-ws/blender-mcp
Give any AI agent the Blender on your machine. Headless, no GUI, no add-on to install.
[license] [node] [blender] [three.ws]
A Model Context Protocol server that hands an AI assistant a real Blender over stdio. Inspect a 3D file, convert between GLB, glTF, FBX, OBJ, STL, PLY, Collada, Alembic, USD and
.blend, render an auto-framed and auto-lit preview that comes back inline so the assistant can see it, run abpyscript against a scene, and generate a model from a text prompt on the free three.ws Forge lane.
Blender runs in background mode (blender -b), one process per call. That means it works on a server, in CI, and inside a container with no display, no GUI session to keep alive, and no add-on to install into Blender first. Everything is real: each tool drives the Blender installed on the machine, and blender_forge_import calls the live public three.ws generation pipeline.
Requirements
- Node.js 20+
- Blender 3.0 or newer, installed locally. Download it, or install it from your package manager. If it is not on
PATH, setBLENDER_PATHto the executable (/Applications/Blender.app/Contents/MacOS/Blenderon macOS).
Call blender_info first if anything misbehaves: it reports the exact executable, version, render engines, and file formats this build supports.
Install
Or run it with npx (no install):
Claude Code
Claude Desktop / Cursor
Paste this into your MCP config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):
Add "env": { "BLENDER_PATH": "/path/to/blender" } if Blender is not on PATH.
Tools
Examples
Describe a file before touching it:
Make a model shippable and see what it cost:
Look at it from four sides at once:
Convert a client's FBX into a web-ready GLB, in metres:
See what you just made:
Halve the triangle count and export in one call:
Generate an asset and open it as a .blend:
Or reconstruct one from a reference image:
Compressed glTF
Meshopt- and Draco-compressed assets are decoded automatically before Blender opens them, in process, with no external binary to install.
This is not a nicety. Blender's glTF importer has no decoder for EXT_meshopt_compression, which is what gltfpack emits and what most three.ws avatars are delivered as; handed one it fails outright with "Extension EXT_meshopt_compression is not available on this addon version". Draco is nominally supported but only on builds that ship libextern_draco, which several Linux distribution packages do not. Every tool that takes an input goes through the same decode, and the response names what was decoded in decoded_compression. Your file is never modified: the decoded copy lives in the job's scratch directory and is deleted with it.
How a call works
Every tool call spawns blender -b --factory-startup --python src/py/runner.py -- <job.json> <result.json> and exits. Three consequences worth knowing:
--factory-startupkeeps your saved preferences and third-party add-ons out of the result, so a conversion produces the same file on any machine.- The runner writes its payload to a file, never to stdout. Blender prints progress, add-on chatter, and render statistics on stdout, and picking a payload out of that stream is guesswork. A missing result file therefore means Blender died, and the error carries the log tail that says why.
- One process per call. A crashed job cannot corrupt the next one, and nothing stays resident between calls.
Failures come back as structured tool errors (input_not_found, format_unsupported, engine_unavailable, timeout, blender_not_found, blender_unusable, blender_crashed), each with a message that says what to do about it. blender_not_found means no candidate exists; blender_unusable means one exists but would not run, and carries the per-candidate diagnostics, because on a loaded machine a failed probe is transient and telling you to install software you already have is the wrong answer.
Environment variables
Security
blender_run_python executes caller-supplied Python inside Blender with the permissions of this server: it can read and write the local filesystem. That is the point of the tool, and it is annotated destructiveHint: true so a client can prompt before running it. For unattended or shared deployments, set BLENDER_MCP_ALLOW_PYTHON=0 and the tool is never advertised.
Everything else stays local. Only blender_forge_import reaches the network, and only to the three.ws deployment named by THREE_WS_BASE.
Development
test/registration.test.mjs runs offline and passes with no Blender installed. test/blender-session.test.mjs drives the server through a real MCP stdio session against the local Blender, building its fixture with Blender itself; it skips cleanly when no Blender is present.
Related
integrations/blender/is the artist-facing counterpart: a Blender add-on with a sidebar panel that generates three.ws models from inside the GUI. This package is the agent-facing one.@three-ws/scene-mcpcomposes whole 3D worlds from a sentence.- three.ws is the platform behind the Forge pipeline.
License
Apache-2.0
來源:packages/blender-mcp/README.md,提交 8a1fd5d
工具
0版本歷史
1- v0.5.0最新Sep 30, 2026

