Blender MCP Server — How It Works & Technical Deep Dive
Yes, Blender has an MCP server. The Blender MCP project provides a fully functional Model Context Protocol server that connects AI clients like Claude, Cursor, and VSCode to Blender 3D. This page explains how it works under the hood — the architecture, the socket protocol, every available tool, and how to configure it for your workflow.
What Is an MCP Server?
The Model Context Protocol (MCP) is an open standard created by Anthropic that lets AI models interact with external tools and data sources. An MCP server exposes a set of “tools” (functions) that an AI client can discover and call. Think of it as a standardized plugin interface for AI.
When Claude (or Cursor, VSCode, etc.) connects to an MCP server, it:
- Discovers what tools are available (e.g.,
create_object,set_material) - Decides which tools to call based on your natural language prompt
- Sends structured commands to the server
- Receives results and uses them to continue the conversation
Blender MCP is one of many MCP servers — others exist for databases, file systems, web scraping, and more. What makes Blender MCP unique is that it bridges the AI ↔ Blender gap through a socket-based architecture.
Blender MCP Architecture
The system has two components that communicate via TCP sockets:
┌─────────────────┐ MCP Protocol ┌─────────────────┐ TCP Socket ┌─────────────────┐
│ │ (stdio/SSE) │ │ (JSON over TCP) │ │
│ AI Client │◄────────────────────►│ MCP Server │◄──────────────────►│ Blender │
│ (Claude, │ │ (server.py) │ │ (addon.py) │
│ Cursor, │ Tool discovery │ │ Commands & │ │
│ VSCode) │ Tool execution │ Translates │ Responses │ Socket server │
│ │ Result streaming │ MCP ↔ Socket │ │ Python exec │
└─────────────────┘ └─────────────────┘ └─────────────────┘Data flow for a typical request:
- User sends a prompt in Claude: “Create a red cube”
- Claude analyzes the prompt and decides to call the
create_objectMCP tool - The MCP server (
server.py) receives the tool call via stdio - It serializes the command as JSON and sends it to Blender’s socket server
- The Blender addon (
addon.py) receives the JSON, executes the Python code in Blender - The result (success/failure, object data) is sent back through the socket
- The MCP server returns the result to Claude
- Claude reports back to the user
The Socket Server (addon.py)
The Blender addon (addon.py) is a standard Blender add-on that registers as “Interface: Blender MCP”. When activated, it:
- Opens a TCP socket server on
localhost:9876(configurable) - Listens for incoming JSON commands from the MCP server
- Executes commands within Blender’s Python environment
- Returns JSON responses with results
Communication Protocol
Commands and responses use a simple JSON-based protocol over TCP:
Command format:
{
"type": "command_name",
"params": {
"key": "value"
}
}Response format:
{
"status": "success",
"result": { ... }
}Environment Variables
You can configure the socket connection using environment variables:
| Variable | Default | Description |
|---|---|---|
BLENDER_HOST | localhost | Host address for the socket server |
BLENDER_PORT | 9876 | Port number for the socket server |
This is useful for running Blender on a remote machine:
export BLENDER_HOST='host.docker.internal'
export BLENDER_PORT=9876The MCP Protocol Server (server.py)
The MCP server (src/blender_mcp/server.py) is a Python application distributed as the blender-mcp package on PyPI. It:
- Implements the MCP protocol (stdio transport)
- Registers all available tools that AI clients can discover
- Translates MCP tool calls into Blender socket commands
- Handles connection lifecycle with the Blender addon
- Runs via
uvx blender-mcp(the AI client manages this automatically)
You never need to start this server manually — Claude Desktop, Cursor, and other MCP-compatible clients launch it automatically based on your config file.
Available MCP Tools & Commands
The Blender MCP server exposes these tools to AI clients:
Scene & Object Tools
| Tool | Description |
|---|---|
get_scene_info | Returns complete information about the current Blender scene — objects, materials, lights, cameras |
create_object | Creates a new 3D object (mesh primitives: cube, sphere, cylinder, plane, cone, torus) |
modify_object | Modifies an existing object’s properties — location, rotation, scale, name |
delete_object | Deletes an object from the scene by name |
Material & Visual Tools
| Tool | Description |
|---|---|
set_material | Applies or creates a material on an object with color, metallic, roughness, and other PBR properties |
get_object_info | Gets detailed info about a specific object including its material data |
Asset Integration Tools
| Tool | Description |
|---|---|
get_polyhaven_assets | Searches and downloads HDRIs, textures, and 3D models from Poly Haven |
get_sketchfab_models | Searches and downloads 3D models from Sketchfab |
generate_hyper3d_model | Generates 3D models using Hyper3D Rodin AI |
generate_hunyuan3d_model | Generates 3D models using Hunyuan3D |
Advanced Tools
| Tool | Description |
|---|---|
execute_blender_code | Runs arbitrary Python code inside Blender. Extremely powerful — can do anything Blender’s Python API supports |
get_blender_screenshot | Captures a screenshot of the current Blender viewport for the AI to analyze |
Security note: The execute_blender_code tool runs arbitrary Python in Blender. This is powerful but potentially dangerous — always save your work before using it, especially with complex prompts.
Server Configuration Options
Basic Config (Claude Desktop)
{
"mcpServers": {
"blender": {
"command": "uvx",
"args": ["blender-mcp"]
}
}
}With Custom Host/Port
{
"mcpServers": {
"blender": {
"command": "uvx",
"args": ["blender-mcp"],
"env": {
"BLENDER_HOST": "192.168.1.100",
"BLENDER_PORT": "9876"
}
}
}
}With Telemetry Disabled
{
"mcpServers": {
"blender": {
"command": "uvx",
"args": ["blender-mcp"],
"env": {
"DISABLE_TELEMETRY": "true"
}
}
}
}Cursor Config
{
"mcpServers": {
"blender": {
"command": "uvx",
"args": ["blender-mcp"]
}
}
}For platform-specific config details, see our setup guides:
Running Multiple Servers
You should not run multiple instances of the MCP server simultaneously (e.g., one in Cursor and one in Claude Desktop). They will compete for the same Blender socket connection.
If you need to switch between AI clients, disconnect from one before connecting with another. The Blender addon’s sidebar panel shows the current connection status.
For advanced use cases where you need multiple AI clients, you could run separate Blender instances on different ports:
- Instance 1:
BLENDER_PORT=9876(default) - Instance 2:
BLENDER_PORT=9877
Each would need its own MCP server config pointing to the correct port.
Performance & Limitations
What Works Well
- Simple object creation and manipulation
- Material and lighting setup
- Poly Haven asset downloads
- Scene inspection and iteration
Known Limitations
- Complex scenes may time out. Break large requests into smaller, sequential prompts.
- Poly Haven integration is unpredictable. Claude sometimes struggles with asset search queries.
- First command may fail. A known quirk — the second message usually works.
- No real-time viewport streaming. The AI works with scene data and screenshots, not a live video feed.
- Blender 2.x is not supported. Requires Blender 3.0 or newer.
Telemetry
BlenderMCP collects anonymous usage data by default. You can control this:
- In Blender: Edit → Preferences → Add-ons → Blender MCP → uncheck telemetry
- Via environment variable: Set
DISABLE_TELEMETRY=true
With consent enabled, it collects anonymized prompts, code snippets, and screenshots. Without consent, it collects only tool names, success/failure, and duration.
FAQ
Does Blender have an MCP server?
Yes. The Blender MCP project (github.com/ahujasid/blender-mcp) provides a fully functional Model Context Protocol server. It connects AI clients like Claude, Cursor, and VSCode to Blender 3D, enabling AI-powered 3D modeling through natural language.
How does the Blender MCP server work?
It uses a two-component architecture: a Blender addon (addon.py) that creates a TCP socket server inside Blender, and an MCP server (server.py) that bridges between AI clients and the Blender socket. Commands flow from the AI client through the MCP protocol to the socket server and are executed as Python code in Blender.
Can I run the Blender MCP server remotely?
Yes. Set the BLENDER_HOST environment variable to the remote machine's IP address and BLENDER_PORT to the port number. This lets you run Blender on a powerful remote machine while controlling it from a local AI client.
What tools does the Blender MCP server provide?
The server provides tools for scene inspection, object creation/modification/deletion, material control, Poly Haven asset downloads, Sketchfab model search, Hyper3D/Hunyuan3D model generation, arbitrary Python code execution in Blender, and viewport screenshot capture.
Get Started with Blender MCP
Blender MCP is free, open-source, and community-driven. Star the repo, report issues, or contribute — all on GitHub.
View on GitHub →