Enables LLMs to control Blender for 3D scene creation, object manipulation, material assignment, shader configuration, modifier application, keyframing, and rendering via the Model Context Protocol.
SaferSkills independently audited blender-mcp (MCP Server) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A Model Context Protocol server that lets LLMs such as Claude control Blender — creating scenes, manipulating objects, assigning materials, configuring shader nodes, applying modifiers, setting keyframes, and rendering.
┌──── HTTP (recommended) ────────────────┐
Claude Code ──────┤ ├──> Blender (GUI)
/ any client └──stdio──> launcher.py ──HTTP ───────────┘ └─ MCP Server on localhost:8400Blender must be running with the add-on enabled. The add-on exposes a Streamable HTTP MCP endpoint at http://localhost:8400/mcp — any MCP client that supports HTTP transport can connect directly. For clients that only support stdio transport, launcher.py acts as a thin stdio-to-HTTP proxy.
| Requirement | Notes |
|---|---|
| Blender 4.0 or newer | Must run in GUI mode (not headless) |
| Python 3.11+ (system) | Only needed for launcher.py (stdio fallback); must have httpx and mcp[cli] |
mcp[cli] in Blender's Python | Separate install — see below |
Skip this step if you are connecting via HTTP (recommended).
pip install httpx "mcp[cli]"mcp[cli] into Blender's bundled PythonBlender ships its own Python interpreter. The add-on runs inside it, so mcp[cli] must be installed there separately.
Find Blender's Python executable — its exact path depends on your OS and Blender version:
| OS | Typical path |
|---|---|
| Linux | ~/blender-4.x.x/4.x/python/bin/python3.11 |
| macOS | /Applications/Blender.app/Contents/Resources/4.x/python/bin/python3.11 |
| Windows | C:\Program Files\Blender Foundation\Blender 4.x\4.x\python\bin\python.exe |
Then run:
# Linux / macOS
/path/to/blender/4.x/python/bin/python3.11 -m pip install "mcp[cli]"
# Windows (PowerShell)
& "C:\Program Files\Blender Foundation\Blender 4.x\4.x\python\bin\python.exe" -m pip install "mcp[cli]"Download blender_mcp_addon-vX.Y.Z.zip from the latest GitHub Release and install it directly in Blender (see Installing and Activating in Blender).
git clone https://github.com/zorak1103/blender-mcp.git
cd blender-mcpThe add-on directory is blender_addon/. No build or compilation step is needed — Blender add-ons are plain Python packages.
Blender can install add-ons from a zip file containing the package directory. Requires Hatch (pip install hatch):
hatch run packageOr without Hatch:
zip -r blender_mcp_addon.zip blender_addon/blender_mcp_addon.zip.blender_addon folder itself (or its __init__.py).After enabling, the Blender Info bar (top of the screen) should show:
Blender MCP Server registered, port=8400In Edit → Preferences → Add-ons → Blender MCP Server, set the Port field (default: 8400) before enabling, or disable/re-enable after changing it.
Important: Blender must already be running with the add-on enabled before connecting.
The add-on exposes a Streamable HTTP endpoint at http://localhost:8400/mcp. Any MCP client that supports HTTP transport can connect directly — no proxy, no extra Python dependencies.
The MCP endpoint requires a Bearer token that the add-on generates on first start and writes to ~/.config/blender-mcp/token. Export it as an environment variable before launching your client:
# bash / Git Bash / WSL (add to ~/.bashrc for persistence)
export BLENDER_MCP_TOKEN="$(cat ~/.config/blender-mcp/token)"# PowerShell — set permanently in the user environment
[Environment]::SetEnvironmentVariable(
"BLENDER_MCP_TOKEN",
(Get-Content "$HOME\.config\blender-mcp\token"),
"User")Claude Code — the .mcp.json at the repository root is already configured with the Authorization: Bearer ${BLENDER_MCP_TOKEN} header. Set the env var above, then start (or restart) Claude Code — no further setup is needed inside this repository. To register globally (outside this repo):
claude mcp add --transport http --scope user \
--header "Authorization: Bearer \${BLENDER_MCP_TOKEN}" \
blender-mcp http://localhost:8400/mcpOther clients (Cline, OpenCode, etc.): point the HTTP/SSE transport URL to http://localhost:8400/mcp and add the Authorization: Bearer <token> header.
Note for Claude Code users: MCP servers from.mcp.jsonrequire either"enableAllProjectMcpServers": truein.claude/settings.local.json, or explicit approval via the dialog that appears on first launch. If the tools are not available and no dialog appeared, add"enableAllProjectMcpServers": trueto.claude/settings.local.jsonand restart Claude Code.
If your MCP client only supports stdio transport, use launcher.py as a thin proxy. This requires system Python with httpx and mcp[cli] installed (see Prerequisites).
Add the following to ~/.claude/settings.json (global) or .claude/settings.json (project-level):
{
"mcpServers": {
"blender-mcp": {
"command": "python",
"args": ["/absolute/path/to/blender-mcp/launcher.py"]
}
}
}launcher.py will wait up to 60 seconds for Blender to become reachable, then time out.
# HTTP check (works for both Option A and B):
export BLENDER_MCP_TOKEN="$(cat ~/.config/blender-mcp/token)"
curl -s -X POST http://localhost:8400/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer $BLENDER_MCP_TOKEN" \
-d '{"jsonrpc":"2.0","method":"initialize","id":1,"params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"0"}}}'# stdio proxy round-trip (Option B only):
echo '{"jsonrpc":"2.0","method":"tools/list","id":1}' | python launcher.pyClaude Code loads servers from .mcp.json only when enableAllProjectMcpServers is true or the user approves them via a one-time dialog. If neither happened, the server silently stays inactive.
Fix: add or update .claude/settings.local.json in the repository root:
{
"enableAllProjectMcpServers": true
}Then restart Claude Code. The blender-mcp tools should appear immediately.
curl http://localhost:8400/mcp returns 401 UnauthorizedThe MCP endpoint requires a Bearer token. Make sure BLENDER_MCP_TOKEN is set and matches the content of ~/.config/blender-mcp/token (written by the add-on on first start):
export BLENDER_MCP_TOKEN="$(cat ~/.config/blender-mcp/token)"Then restart Claude Code (or whichever client you are using) so it picks up the new environment variable.
curl http://localhost:8400/mcp returns "Not Acceptable"This is expected and means the server is running. The endpoint requires specific headers. Use the full POST check from Verify the connection instead.
Blender MCP Server registered, port=8400 after enabling the add-on..mcp.json accordingly.mcp[cli] not found when enabling the add-on in BlenderThe package must be installed into Blender's own Python, not the system Python. Re-run the install command using the Blender Python executable (see Prerequisites).
| Category | Tools |
|---|---|
| Scene | list_scenes, get_scene_info, list_objects, get_object_info |
| Objects | create_object, delete_objects, transform_object, duplicate_object, select_objects, parent_objects, create_object_grid, create_objects_batch |
| Materials | create_material, assign_material, assign_materials_batch, list_materials, set_material_property |
| Render | set_render_settings, render_image, screenshot_viewport |
| Shader nodes | list_shader_nodes, add_shader_node, connect_nodes, remove_node, set_node_value |
| Modifiers | list_modifiers, add_modifier, remove_modifier, configure_modifier, apply_modifier, add_modifiers_batch, apply_modifiers_batch, remove_modifiers_batch |
| Animation | set_frame_range, set_current_frame, set_fps, insert_keyframe, delete_keyframe |
| Lighting | configure_light |
| Camera | set_active_camera, look_at |
| World | set_world_settings |
| Scripting (opt-in) | execute_python — see Security for modes and risks |
| Topic | File |
|---|---|
Security & execute_python modes | docs/security.md |
| Development setup, testing, releasing | docs/development.md |
| LLM agent self-configuration guide | docs/llm-setup.md |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.