Blender MCP
<h1 align="center">Blender MCP AI</h1>
<p align="center">
<img src="docs/assets/logo.jpg" alt="Blender MCP AI logo" width="480">
</p>
<p align="center">
<strong>Control Blender with AI through the Model Context Protocol</strong>
</p>
<p align="center">
<a href="https://github.com/harveyxiacn/blender-mcp-ai/actions"><img src="https://github.com/harveyxiacn/blender-mcp-ai/workflows/CI/badge.svg" alt="CI"></a>
<img src="https://img.shields.io/badge/python-3.10%2B-blue" alt="Python 3.10+">
<img src="https://img.shields.io/badge/blender-4.x%20%7C%205.x-orange" alt="Blender 4.x / 5.x">
<img src="https://img.shields.io/badge/tools-380-brightgreen" alt="380 tools">
<a href="LICENSE"><img src="https://img.shields.io/github/license/harveyxiacn/blender-mcp-ai.svg" alt="License: MIT"></a>
<a href="https://github.com/harveyxiacn/blender-mcp-ai/issues"><img src="https://img.shields.io/github/issues/harveyxiacn/blender-mcp-ai.svg" alt="Issues"></a>
<a href="https://github.com/harveyxiacn/blender-mcp-ai/discussions"><img src="https://img.shields.io/github/discussions/harveyxiacn/blender-mcp-ai" alt="Discussions"></a>
</p>
<p align="center">
<a href="#quick-start">Quick Start</a> •
<a href="docs/en/ARCHITECTURE.md">Architecture</a> •
<a href="docs/en/API_REFERENCE.md">API Reference</a> •
<a href="docs/en/CONTRIBUTING.md">Contributing</a> •
<a href="https://github.com/harveyxiacn/blender-mcp-ai/discussions">Discussions</a> •
<a href="#中文">中文</a>
</p>
---
> [!IMPORTANT]
> **This project is not affiliated with any other Blender MCP project.**
> It is an independent, original codebase — not a fork of, and sharing no code
> with, anything else. In particular it is unrelated to
> [`ahujasid/mcp-for-blender`](https://github.com/ahujasid/mcp-for-blender)
> (formerly published on PyPI as `blender-mcp`). The `blender-mcp` package on
> PyPI belongs to *that* project: installing it does **not** install this
> software. Install this project by cloning this repository — see
> [Quick Start](#quick-start).
> **Provenance:** The overall shape — an MCP server talking to a Blender addon
> over a local socket — is the standard approach for this category of tool and
> is shared by other Blender MCP projects, so the architectures look similar.
> This repository is **not a fork**, and the implementation here is independent.
## Overview
**Blender MCP AI** is an open-source [Model Context Protocol](https://modelcontextprotocol.io/) server that lets AI assistants control [Blender](https://www.blender.org/) through natural language. It works with any MCP-compatible client — **Cursor**, **Windsurf**, **Claude Desktop**, and more.
The project consists of two components:
- **MCP Server** (`src/blender_mcp/`) — a FastMCP server exposing Blender operations as MCP tools
- **Blender Addon** (`addon/blender_mcp_addon/`) — a Blender plugin that receives commands over TCP and executes them via Blender's Python API
```
AI Client (Cursor / Windsurf / Claude Desktop)
↓ MCP protocol (stdio or HTTP)
Blender MCP Server (Python, FastMCP)
↓ TCP JSON messages (localhost:9876)
Blender Addon (runs inside Blender)
↓ Blender Python API (bpy)
Blender
```
## Gallery
> Generated entirely through natural-language AI commands via Blender MCP AI — no manual Blender interaction.

*A character built end-to-end by the agent — body template, hair, clothing and accessory — then lit and rendered at 1920×1080 through the MCP tools. It is a deliberately simple primitive-based blockout: the point is the round trip, not the polish.*
The point of this project isn't the polish of any single render — it's the **agent ↔ Blender pipeline**: 380 tools, dynamic skill loading to keep the model's context lean, and viewport/render snapshots that let the model review its own work and iterate.
## Key Features
- **380 MCP tools** across 56 modules — modeling, materials, animation, rendering, rigging, and more
- **Smart skill loading** — default `skill` profile starts with 38 tools; 12 skill groups activate on demand to keep AI context lean
- **6 profiles** — from `minimal` (35 tools) to `full` (377 tools)
- **Visual feedback** — `blender_snapshot_viewport` and `blender_snapshot_render_preview` for multimodal AI review loops
- **Checkpoint system** — named save/restore points before risky operations
- **Style system** — 8 rendering style presets from Pixel Art to AAA
- **67 procedural materials** — metals, woods, stones, fabrics, nature, skin, effects, toon
- **Quality audit** — topology, UV, and performance validation
- **Blender 4.x / 5.x** compatible
- **Multi-IDE support** — Cursor, Windsurf, Claude Desktop, and any MCP client
## Quick Start
### Prerequisites
- **Python 3.10+**
- **Blender 4.0+**
- **[uv](https://docs.astral.sh/uv/)**
- An MCP-compatible client
### Install & Run
> There is no PyPI release yet. Install from source — `pip install blender-mcp`
> would install an unrelated third-party package (see the notice at the top).
```bash
git clone https://github.com/harveyxiacn/blender-mcp-ai.git
cd blender-mcp-ai
uv sync
# Build the Blender addon
python build_addon.py
# Start the MCP server
uv run blender-mcp-ai
```
### Set Up Blender
1. Open Blender → `Edit` → `Preferences` → `Add-ons` → `Install...`
2. Select `dist/blender_mcp_addon.zip`
3. Enable **Blender MCP**
4. Open the **MCP** panel in the 3D View sidebar
### Configure Your IDE
Add to your MCP client config:
```json
{
"mcpServers": {
"blender": {
"command": "uv",
"args": ["run", "--directory", "/path/to/blender-mcp-ai", "blender-mcp-ai"]
}
}
}
```
## Try It — a guided tour
Want to see what this does before reading anything else? With Blender open and
the addon enabled, build a demo scene and inspect it layer by layer:
```bash
uv run python scripts/demo_tour.py --clean
```
It drives the MCP socket 46 times and groups the result into one collection per
layer, so you can hide everything except the thing you want to look at:
| Collection | What it demonstrates | How to look at it |
|---|---|---|
| `L1_场景基础` | Object creation and transforms | Outliner → select `L1_Cube` → press **N** |
| `L2_建模` | Bevel / Subdivision / Boolean modifiers | Properties → **wrench** tab, toggle each modifier |
| `L3_材质` | Metal vs plastic, Principled BSDF values | Press **Z** → *Material Preview* |
| `L4_灯光相机` | Three-point lighting and a camera | Press **Z** → *Rendered*; select a light to read its power |
| `L5_UV` | Smart UV project | Open a **UV Editor**, `Tab` into edit mode, press `A` |
| `L6_动画` | Keyframed bounce + spin | Timeline → press **Space** |
| `L7_角色骨骼` | Generated character plus an armature | Hide other layers, then *Pose Mode* on `L7_Rig` |
| `L8_物理` | Cloth and rigid-body simulation | Play the timeline |
**Full step-by-step walkthrough: [docs/en/TOUR.md](docs/en/TOUR.md)** (中文:[docs/zh/TOUR.md](docs/zh/TOUR.md))
If every layer reports `OK`, your install works end to end. To check the
renderer and exporters too, select `L4_Cam` and press **F12**, or run
`blender_export_fbx` on any object.
Running it twice? Pass `--clean` (as above) so the previous run's objects do not
collide with the new names.
## Tool Profiles
| Profile | Tools | Use Case |
|---------|-------|----------|
| `minimal` | 35 | Core scene/object/utility/export only |
| `skill` | 38 | **Default** — core + on-demand skill loading |
| `focused` | 124 | Curated workflow set |
| `standard` | 186 | Broader daily-use coverage |
| `extended` | 215 | Adds physics & batch operations |
| `full` | 377 | Everything |
## Skill System
With the default `skill` profile, only core tools load at startup. AI activates additional groups on demand:
```
blender_list_skills → see all 12 available skill groups
blender_activate_skill → load a group's tools dynamically
blender_deactivate_skill → unload to free AI context
```
Skills include: `modeling`, `materials`, `style`, `character`, `animation`, `scene_setup`, `automation`, `physics`, `batch_assets`, `advanced_3d`, `sport_character`, `training`.
## Documentation
All documentation is available in **English** and **中文 (Chinese)**.
| Document | English | 中文 |
|----------|---------|------|
| Quick Start | [QUICKSTART](docs/en/QUICKSTART.md) | [快速开始](docs/zh/QUICKSTART.md) |
| Guided Tour | [TOUR](docs/en/TOUR.md) | [分层演示教程](docs/zh/TOUR.md) |
| Installation | [INSTALLATION](docs/en/INSTALLATION.md) | [安装指南](docs/zh/INSTALLATION.md) |
| Architecture | [ARCHITECTURE](docs/en/ARCHITECTURE.md) | [架构设计](docs/zh/ARCHITECTURE.md) |
| API Reference | [API_REFERENCE](docs/en/API_REFERENCE.md) | [API 参考](docs/zh/API_REFERENCE.md) |
| Skill System | [MCP_SKILL_SYSTEM_GUIDE](docs/en/MCP_SKILL_SYSTEM_GUIDE.md) | [Skill 系统指南](docs/zh/MCP_SKILL_SYSTEM_GUIDE.md) |
| Tutorials | [TUTORIALS](docs/en/TUTORIALS.md) | [教程](docs/zh/TUTORIALS.md) |
| Contributing | [CONTRIBUTING](docs/en/CONTRIBUTING.md) | [贡献指南](docs/zh/CONTRIBUTING.md) |
| Changelog | [CHANGELOG](docs/en/CHANGELOG.md) | [更新日志](docs/zh/CHANGELOG.md) |
| Roadmap | [ROADMAP](docs/en/ROADMAP.md) | [路线图](docs/zh/ROADMAP.md) |
| Security | [SECURITY](SECURITY.md) | [安全策略](docs/zh/SECURITY.md) |
| Code of Conduct | [CODE_OF_CONDUCT](CODE_OF_CONDUCT.md) | [行为准则](docs/zh/CODE_OF_CONDUCT.md) |
## Community
- **[GitHub Discussions](https://github.com/harveyxiacn/blender-mcp-ai/discussions)** — questions, ideas, long-form discussion
- **[Issues](https://github.com/harveyxiacn/blender-mcp-ai/issues)** — bug reports and feature requests
- **[Contributing Guide](docs/en/CONTRIBUTING.md)** — how to add tools, fix bugs, improve docs
## Contributing
We welcome contributions! Please see [CONTRIBUTING.md](docs/en/CONTRIBUTING.md) for guidelines.
1. Fork the repo & create a feature branch
2. Install dev dependencies: `uv sync --all-extras`
3. Make changes and add tests
4. Run checks: `pytest && ruff check src/ && black --check src/`
5. Submit a pull request
## Security
For security concerns, please see [SECURITY.md](SECURITY.md). Do **not** open a public issue for security vulnerabilities.
## Known Caveats
- If `.venv` breaks after copying the repo to another machine, delete `.venv` and re-run `uv sync`
## License
[MIT](LICENSE) — Copyright (c) 2026 Harvey Xia
---
## 中文
> [!IMPORTANT]
> **本项目与其他任何同名 Blender MCP 项目均无关联。**
> 这是一套独立、原创的代码库,不是任何项目的 fork,也不共用任何代码。特别地,本项目与
> [`ahujasid/mcp-for-blender`](https://github.com/ahujasid/mcp-for-blender)(其旧版在 PyPI 上
> 叫 `blender-mcp`)毫无关系。PyPI 上的 `blender-mcp` 属于**那个**项目,安装它**不会**安装本软件。
> 安装本项目请克隆本仓库,见[快速开始](#快速开始)。
> **来源说明:** 「MCP 服务器 + Blender 插件、走本地 socket」这个整体形态是本类工具的通用做法,
> 其他 Blender MCP 项目也采用类似结构,因此架构层面看起来会相似。本仓库**不是 fork**,
> 实现为独立完成。
### 概述
**Blender MCP AI** 是一个开源的 [Model Context Protocol](https://modelcontextprotocol.io/) 服务器,让 AI 助手可以通过自然语言控制 [Blender](https://www.blender.org/)。支持 **Cursor**、**Windsurf**、**Claude Desktop** 等任意 MCP 兼容客户端。
### 展示
> 以下渲染完全通过自然语言 AI 命令生成,无需手动操作 Blender。

*一个由智能体端到端生成的角色 —— 体型模板、头发、服装、配饰全部由 MCP 工具创建,再经打光与 1920×1080 渲染。它是刻意简化的图元搭建,重点在完整回路,而非精细度。* 本项目的价值不在单张渲染的精细度,而在 **agent ↔ Blender 管线**:380 个工具、动态技能加载以精简上下文、以及让模型自审自迭代的视口/渲染截图。
### 核心特性
- **380 个 MCP 工具**,覆盖建模、材质、动画、渲染等全流程
- **智能工具加载** — 默认 `skill` 配置仅加载 38 个工具,12 个技能组按需激活
- **6 种配置方案** — 从 `minimal`(35 个工具)到 `full`(377 个工具)
- **视觉反馈** — 视口截图 + 渲染预览,支持多模态 AI 审查循环
- **检查点系统** — 高风险操作前的命名存档/还原点
- **风格系统** — 8 种渲染风格预设(像素风到 3A 级)
- **67 种程序化材质** — 金属、木材、石材、布料、自然、皮肤、特效、卡通
- **质量审计** — 拓扑、UV、性能验证
- **兼容 Blender 4.x / 5.x**
### 快速开始
```bash
git clone https://github.com/harveyxiacn/blender-mcp-ai.git
cd blender-mcp-ai
uv sync
# 打包 Blender 插件
python build_addon.py
# 启动 MCP 服务器
uv run blender-mcp-ai
```
> 目前尚未发布到 PyPI。请从源码安装 —— `pip install blender-mcp`
> 装到的是**另一个**无关的第三方包(见顶部说明)。
然后在 Blender 中:
1. `编辑` → `偏好设置` → `插件` → `安装...`
2. 选择 `dist/blender_mcp_addon.zip`
3. 启用 **Blender MCP**
4. 在 3D 视图侧边栏打开 **MCP** 面板
IDE 配置:
```json
{
"mcpServers": {
"blender": {
"command": "uv",
"args": ["run", "--directory", "/path/to/blender-mcp-ai", "blender-mcp-ai"]
}
}
}
```
### 上手试一下(分层演示)
想先看看它到底能做什么?保持 Blender 打开、插件已启用,然后运行:
```bash
uv run python scripts/demo_tour.py --clean
```
脚本会通过 MCP socket 执行 46 次调用,并把结果按图层分到各自的集合里,方便你逐层查看:
| 集合 | 演示内容 | 怎么看 |
|---|---|---|
| `L1_场景基础` | 物体创建与变换 | 大纲视图选中 `L1_Cube`,按 **N** 看变换数值 |
| `L2_建模` | Bevel / 细分 / 布尔 修改器 | 右侧**扳手图标**,逐个开关修改器看差异 |
| `L3_材质` | 金属 vs 塑料、Principled BSDF 参数 | 按 **Z** → 材质预览 |
| `L4_灯光相机` | 三点布光 + 相机 | 按 **Z** → 渲染预览;选中灯光看功率 |
| `L5_UV` | Smart UV 展开 | 打开 **UV 编辑器**,按 `Tab` 进编辑模式再按 `A` |
| `L6_动画` | 关键帧弹跳 + 自转 | 时间轴按 **空格** 播放 |
| `L7_角色骨骼` | 程序生成角色 + 骨架 | 隐藏其他图层,对 `L7_Rig` 进**姿势模式** |
| `L8_物理` | 布料 + 刚体模拟 | 播放时间轴 |
**逐层详解请看:[docs/zh/TOUR.md](docs/zh/TOUR.md)**(English:[docs/en/TOUR.md](docs/en/TOUR.md))
每一层都显示 `OK`,就说明整套流程跑通了。想连渲染和导出一起验证,选中 `L4_Cam` 按 **F12**,
或对任意物体调用 `blender_export_fbx`。
重复运行时请带上 `--clean`(如上),否则上一轮的对象会和新的重名冲突。
### 社区
- **[GitHub Discussions](https://github.com/harveyxiacn/blender-mcp-ai/discussions)** — 提问、讨论、展示作品
- **[Issues](https://github.com/harveyxiacn/blender-mcp-ai/issues)** — 问题反馈与功能建议
### 文档
所有文档均提供 **English** 和 **中文** 版本,详见上方[文档表格](#documentation)。
### 系统要求
- Python 3.10+
- Blender 4.0+
- 任意兼容 MCP 的客户端
### 许可证
[MIT](LICENSE) — Copyright (c) 2026 Harvey Xia
TDQS
Scored across 38 tools
Most tools are clearly distinct, but blender_get_viewport_screenshot and blender_snapshot_viewport have highly overlapping purposes, potentially confusing an agent.
All tools use a consistent snake_case naming with a clear pattern: resource-specific tools are prefixed with blender_<resource>_ (e.g., blender_object_, blender_scene_) and general actions are blender_<action>_<object>, making the overall pattern predictable.
With 38 tools, the count exceeds the 'too many' threshold of 25+. While Blender is complex and the skills system helps, the base set is still large and may overwhelm context windows.
The base tool set covers core scene and object operations, export, and file I/O, but lacks tools for materials, modifiers, animations, and other essential Blender workflows. The skills system can fill gaps, but as presented, notable operations are missing.