Provides 27 tools for controlling Blender 3D, including scene manipulation, object creation and transformation, materials, modifiers, animation keyframing, rendering, and file import/export (FBX, OBJ, GLTF, USD).
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Blender MCP Servercreate a cube and add a subdivision surface modifier to it"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Blender MCP Server
A high-performance MCP (Model Context Protocol) server for controlling Blender 3D from AI agents like Claude Code.
Built with Rust + PyO3 for native Python integration.
Features
27 MCP tools for scene manipulation, materials, modifiers, animation, rendering
HTTP transport - works with any MCP client
Native Blender addon with GUI controls
Thread-safe architecture using channels
execute_pythonescape hatch for arbitrary bpy code
Quick Start
1. Install the wheel to Blender Python
# Build
cd C:\projects\projects.rust\_mcp\blender-mcp-rs
maturin build --release
# Install to Blender 5.0
& "C:\Programs\Blender5\5.0\python\bin\python.exe" -m pip install target\wheels\blender_mcp-0.1.0-cp311-cp311-win_amd64.whl --force-reinstall2. Enable the addon in Blender
The addon is symlinked to Blender's addons folder. Enable it in:
Edit > Preferences > Add-ons > Search "MCP Server"
Or via Python console:
import bpy
bpy.ops.preferences.addon_enable(module="mcp_server")3. Start the server
Via GUI: Topbar > MCP > Start Server
Via Python:
bpy.ops.mcp.start(port=8765)4. Connect Claude Code
Add to your MCP settings:
{
"mcpServers": {
"blender": {
"url": "http://127.0.0.1:8765/mcp"
}
}
}Available Tools
Scene & Objects
Tool | Description |
| Get scene metadata (name, fps, frame range, resolution) |
| List objects with optional type/collection filter |
| Get object details (transform, type, mesh data) |
| Create mesh: cube, sphere, cylinder, plane, cone, torus |
| Set location, rotation, scale |
| Remove object from scene |
| Copy object with offset, optional linked |
Selection & Hierarchy
Tool | Description |
| Get selected objects and active object |
| Select objects by name |
| Set parent-child relationships |
| Get collection hierarchy |
| Move object to collection |
Materials
Tool | Description |
| List all materials |
| Create Principled BSDF material |
| Assign material to object |
Modifiers
Tool | Description |
| List modifiers on object |
| Add SUBSURF, MIRROR, ARRAY, BEVEL, BOOLEAN, etc. |
| Apply modifier permanently |
Animation
Tool | Description |
| Insert keyframe on property |
I/O & Rendering
Tool | Description |
| Render to file (CYCLES/EEVEE) |
| Export FBX, OBJ, GLTF, USD |
| Import 3D files |
| Save .blend file |
Utility
Tool | Description |
| OBJECT, EDIT, SCULPT, VERTEX_PAINT, etc. |
| Undo last action |
| Redo |
| Run arbitrary bpy code |
Architecture
Claude Code <--HTTP--> BlenderMcp (Rust) <--Channel--> Python Polling
(MCP + axum) (bpy.app.timers)
|
v
Blender Python (bpy)Rust thread runs tokio + axum HTTP server
Crossbeam channels pass commands/responses
Python timer polls for commands, executes bpy, returns results
Graceful shutdown - no hangs on stop
Development
Build
# Debug
maturin develop
# Release
maturin build --releaseTest
# Standalone Python
& "C:\Programs\Blender5\5.0\python\bin\python.exe" -c "import blender_mcp; print(dir(blender_mcp))"
# Blender background
& "C:\Programs\Blender5\blender.exe" --background --python python\test_addon_server.pyProject Structure
blender-mcp-rs/
├── src/
│ ├── lib.rs # PyO3 module, BlenderMcp class
│ ├── server.rs # MCP server, tool definitions
│ ├── protocol.rs # Command/Response types
│ └── error.rs # Error handling
├── addon/
│ └── mcp_server/ # Blender addon (symlinked)
│ └── __init__.py
├── python/
│ └── test_*.py # Test scripts
├── Cargo.toml
└── pyproject.tomlRequirements
Blender 4.0+ (tested on 5.0)
Rust 1.70+
Python 3.11 (Blender's bundled)
maturin
License
MIT