# three.ws Blender

Points your agent at the Blender already on your machine, headless: look inside a 3D file, switch formats, render a preview and run bpy scripts.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 249
- Author: nirholas
- License: Apache-2.0 · policy=link-only · description only; the file stays with the author
- Source: https://github.com/nirholas/three.ws/tree/HEAD/packages/blender-mcp
- Updated: 2026-10-24
- HTML: https://affpapa.org/en/nevibecode/mcp/threews-blender

## What it does

Every call starts real Blender in background mode (`blender -b`) and talks to the assistant over stdio. No window, no add-on inside Blender, so it fits a server, CI or a container without a display. Each tool drives the copy of Blender installed on the host.

Seven tools cover the routine work. `blender_scene_info` reports objects, triangles, materials, textures, bones and actions. `blender_convert` picks import and export formats from the file extensions. `blender_optimize` trims triangles, shrinks textures and prints a before/after report. `blender_render` returns a PNG inline and adds a camera and lighting when the scene lacks them. `blender_run_python` executes a `bpy` script, `blender_forge_import` builds a model from a prompt or a reference image, and `blender_info` lists what your build supports. Meshopt- and Draco-compressed glTF gets decoded in process, so no extra binary is needed.

Node.js 20+ and Blender 3.0 or newer are required. Set `BLENDER_PATH` when the executable is not on `PATH`; otherwise the server cannot find Blender. Available formats follow the local build, and `blender_info` reports the real list. Large renders run into the timeout setting.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `BLENDER_PATH`, `BLENDER_MCP_TIMEOUT_MS`, `BLENDER_MCP_WORKDIR`, `BLENDER_MCP_ALLOW_PYTHON`, `BLENDER_MCP_INLINE_IMAGE_BYTES`, `BLENDER_MCP_INLINE_IMAGE_PX`, `BLENDER_MCP_MAX_CONCURRENCY`, `THREE_WS_BASE`, `THREE_WS_FORGE_TIMEOUT_MS`, `THREE_WS_FORGE_PROVIDER_KEY` — keys and tokens: ask the human for the values, never commit them or put them in shared files.
- Works with: Blender

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env BLENDER_PATH=<BLENDER_PATH> --env BLENDER_MCP_TIMEOUT_MS=<BLENDER_MCP_TIMEOUT_MS> --env BLENDER_MCP_WORKDIR=<BLENDER_MCP_WORKDIR> --env BLENDER_MCP_ALLOW_PYTHON=<BLENDER_MCP_ALLOW_PYTHON> --env BLENDER_MCP_INLINE_IMAGE_BYTES=<BLENDER_MCP_INLINE_IMAGE_BYTES> --transport stdio blender-mcp -- npx -y @three-ws/blender-mcp
```
Replace <…> with your own values. 5 more environment variables are in the server README

### Codex

**Platform CLI**
```bash
codex mcp add blender-mcp --env BLENDER_PATH=<BLENDER_PATH> --env BLENDER_MCP_TIMEOUT_MS=<BLENDER_MCP_TIMEOUT_MS> --env BLENDER_MCP_WORKDIR=<BLENDER_MCP_WORKDIR> --env BLENDER_MCP_ALLOW_PYTHON=<BLENDER_MCP_ALLOW_PYTHON> --env BLENDER_MCP_INLINE_IMAGE_BYTES=<BLENDER_MCP_INLINE_IMAGE_BYTES> -- npx -y @three-ws/blender-mcp
```
Replace <…> with your own values. 5 more environment variables are in the server README

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "blender-mcp": {
            "command": "npx",
            "args": [
                "-y",
                "@three-ws/blender-mcp"
            ],
            "env": {
                "BLENDER_PATH": "<BLENDER_PATH>",
                "BLENDER_MCP_TIMEOUT_MS": "<BLENDER_MCP_TIMEOUT_MS>",
                "BLENDER_MCP_WORKDIR": "<BLENDER_MCP_WORKDIR>",
                "BLENDER_MCP_ALLOW_PYTHON": "<BLENDER_MCP_ALLOW_PYTHON>",
                "BLENDER_MCP_INLINE_IMAGE_BYTES": "<BLENDER_MCP_INLINE_IMAGE_BYTES>"
            }
        }
    }
}
```
Replace <…> with your own values. 5 more environment variables are in the server README

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "blender-mcp": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "@three-ws/blender-mcp"
            ],
            "env": {
                "BLENDER_PATH": "<BLENDER_PATH>",
                "BLENDER_MCP_TIMEOUT_MS": "<BLENDER_MCP_TIMEOUT_MS>",
                "BLENDER_MCP_WORKDIR": "<BLENDER_MCP_WORKDIR>",
                "BLENDER_MCP_ALLOW_PYTHON": "<BLENDER_MCP_ALLOW_PYTHON>",
                "BLENDER_MCP_INLINE_IMAGE_BYTES": "<BLENDER_MCP_INLINE_IMAGE_BYTES>"
            }
        }
    }
}
```
Replace <…> with your own values. 5 more environment variables are in the server README

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e BLENDER_PATH=<BLENDER_PATH> -e BLENDER_MCP_TIMEOUT_MS=<BLENDER_MCP_TIMEOUT_MS> -e BLENDER_MCP_WORKDIR=<BLENDER_MCP_WORKDIR> -e BLENDER_MCP_ALLOW_PYTHON=<BLENDER_MCP_ALLOW_PYTHON> -e BLENDER_MCP_INLINE_IMAGE_BYTES=<BLENDER_MCP_INLINE_IMAGE_BYTES> blender-mcp npx -y @three-ws/blender-mcp
```
Replace <…> with your own values. 5 more environment variables are in the server README

## When to use it
- inspect an FBX or GLB before touching it
- turn a client FBX into a web-ready GLB at the right scale
- cut triangles and texture size for a delivery budget
- get a model preview straight into the agent reply
- run a `bpy` script on a scene and export the result

## Example prompts
- Describe `~/assets/character.fbx` for me: meshes, triangle count, bones, actions.
- Convert `character.fbx` to `character.glb` at scale 0.01, then render four views.
- Generate a weathered brass diving helmet and save it as `helmet.blend`.

## Similar
- [Pascal 3D Editor](https://affpapa.org/en/nevibecode/mcp/pascal-3d-editor.md) — MCP server · ★ 25085
- [Unity-MCP](https://affpapa.org/en/nevibecode/mcp/unity-mcp.md) — MCP server · ★ 4523
- [mcp](https://affpapa.org/en/nevibecode/mcp/sceneview-mcp.md) — MCP server · ★ 1348
- [Gearboy MCP Server](https://affpapa.org/en/nevibecode/mcp/gearboy-mcp-server.md) — MCP server · ★ 1219
- [ChiR24-unreal_mcp_server](https://affpapa.org/en/nevibecode/mcp/chir24-unreal-mcp-server.md) — MCP server · ★ 975
- [Nova3D](https://affpapa.org/en/nevibecode/mcp/nova3d.md) — MCP server · ★ 733

From the same set: [nirholas/three.ws](https://affpapa.org/en/nevibecode/by/nirholas/three.ws.md) — 43 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
