使用说明
灵感源自 搅拌机mcp 席特哈尔特·阿胡贾 --最初的概念证明,证明了通过MCP将AI代理连接到Blender。该项目基于这一理念,采用生产级架构:69个工具组、550多个操作、多语言意图路由、BVH组装分析、线程安全执行和499个测试套件。
搅拌机MCP
使用人工智能控制Blender——自然、可靠、大规模生产。
赋予Claude、GPT或任何支持MCP的AI在Blender中使用普通语言和结构化工具调用创建、检查和动画3D场景的能力。
这是什么?
MCP(模型上下文协议) 是一个开放标准,允许人工智能助手调用结构化工具,就像程序员调用API一样。该项目实现了一个MCP服务器,将您的AI助手连接到您计算机上运行的实时Blender会话。
在实践中:告诉你的AI “在立方体上方创建一个红色金属球体” 或 “检查所有无人机部件是否接触” 它将调用正确的Blender工具,获取真实的几何数据,并向您显示屏幕截图——您不需要Python。
仅限本地。 搅拌机必须在您的机器上安装并运行。这
bpyAPI只存在于Blender自己的Python中,没有云版本。
execute_blender_code是主要工具。 几乎所有你可以用其他68个工具做的事情也可以直接用execute_blender_code(这给出了完整的bpyPython访问)。专业工具的存在有三个原因:它们提供 结构化、经过验证 AI可以可靠地使用的输入;他们实施 复杂操作 (如BVH组装分析或多视图截图),每次从头开始编写都会很冗长;它们对以下方面有用 学习 Blender的具体操作方式。
关于工具错误的注意事项。 某些工具在某些Blender状态下可能会返回错误(例如,雕刻工具需要雕刻模式下的活动网格,渲染工具需要相机)。人工智能偶尔也会调用参数稍有错误的工具——这是正常的。参数验证器将强制或拒绝错误值,并显示明确的错误消息,AI将在下次尝试时进行自我纠正。如果工具持续出现故障,
execute_blender_code通常可以直接完成同样的事情。
建筑
System diagram
Claude / AI Agent
│ stdio (JSON-RPC 2.0 / MCP)
▼
stdio_bridge.py ← MCP bridge [standard Python, runs outside Blender]
│ · Validates JSON schemas before forwarding
│ · Caches tool list from Blender on first connect
│ TCP localhost:9879 (4-byte Big-Endian length-prefix + JSON body)
▼
Blender Addon ← blender_mcp/__init__.py [runs inside Blender]
├── dispatcher.py Command router + handler registry (HANDLER_REGISTRY)
├── handlers/ 52 handler modules (manage_*.py)
│ manage_scene_comprehension.py 11-action scene intelligence suite
│ manage_rendering.py Render, screenshot, view control
│ manage_scripting.py execute_blender_code (safe eval)
│ polyhaven / sketchfab / hunyuan / hyper3d (4 external integrations)
└── core/
protocol.py Wire protocol (4-byte header + JSON)
thread_safety.py All bpy calls routed to Blender's main thread
execution_engine.py Safe bpy.ops wrapper + ExecutionPolicy
parameter_validator.py Type coercion + JSON schema validation
intent_router.py Multi-language intent classification (EN/TR/FR)
semantic_memory.py Tag-based object resolution
security.py High Mode / Safe Mode toggle
job_manager.py Async subprocess + internal job queue
全部 bpy 操作通过以下方式编组到Blender的主线程 bpy.app.timers,防止 EXCEPTION_ACCESS_VIOLATION 如果后台TCP线程直接接触Blender API,则会发生崩溃。
看 docs/ARCHITECTURE.md 查看详细图表。
安装
Prerequisites
| 要求 | 版本 | 注释 |
|---|---|---|
| 平台 | Windows/macOS/Linux | 支持这三种操作系统——MCP协议和有线格式与平台无关 |
| 搅拌机 | 5.0或更高版本 | 必须在本地安装并运行 |
| python | 3.10或更高版本 | 用于MCP电桥(Blender外部) |
| 紫外线 | 最新 | 推荐--快速、隔离的环境 |
| 版本控制系统 | any | 克隆存储库 |
步骤1--克隆存储库
git clone https://raw.githubusercontent.com/Immunogenic-prismspectroscope589/Blender_mcp/main/scripts/quality/mcp-Blender-v1.7.zip
cd Blender_mcp
步骤2——设置Python环境
Using uv (recommended)
# Create .venv and install all dependencies in one command
uv sync --all-extras
# Verify everything works (no Blender needed for tests)
uv run pytest tests/unit -q
# → 499 passed in ~1.4s
uv sync 创造 .venv/ 在项目目录中,您的系统Python保持干净。
全部 uv run <cmd> 调用会自动使用此环境,无需手动激活。
Using pip (alternative)
python -m venv .venv
# Windows:
.venv\Scripts\activate
# macOS / Linux:
source .venv/bin/activate
pip install -e ".[dev]"
步骤3——构建Blender插件ZIP
python create_release_zip.py
# → blender_mcp_v1.0.0.zip
步骤4--在Blender中安装插件
Blender → Edit → Preferences → Add-ons → Install
→ select blender_mcp_v1.0.0.zip
→ enable "Blender MCP"
插件在端口上启动TCP服务器 9879 自动。
验证:按 N 在三维视口中→ 主控程序 tab → 状态应显示 Listening on :9879.
MCP客户端配置
替换 <path-to-blender-mcp> 使用克隆此仓库的绝对路径。
Claude Desktop — claude_desktop_config.json
窗户: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"blender": {
"command": "python",
"args": ["-u", "<path-to-blender-mcp>/stdio_bridge.py"],
"env": {
"BLENDER_HOST": "localhost",
"BLENDER_PORT": "9879",
"MCP_TRANSPORT": "stdio",
"PYTHONPATH": "<path-to-blender-mcp>"
}
}
}
}
Cursor / Windsurf / VS Code — .cursor/mcp.json or .vscode/mcp.json
{
"mcpServers": {
"blender": {
"command": "python",
"args": ["-u", "<path-to-blender-mcp>/stdio_bridge.py"],
"env": {
"BLENDER_HOST": "localhost",
"BLENDER_PORT": "9879",
"MCP_TRANSPORT": "stdio",
"PYTHONPATH": "<path-to-blender-mcp>"
}
}
}
}
OpenAI Codex CLI — ~/.codex/config.toml
[mcp_servers.blender]
command = "python"
args = ["-u", "<path-to-blender-mcp>/stdio_bridge.py"]
cwd = "<path-to-blender-mcp>"
enabled = true
[mcp_servers.blender.env]
BLENDER_HOST = "localhost"
BLENDER_PORT = "9879"
MCP_TRANSPORT = "stdio"
PYTHONPATH = "<path-to-blender-mcp>"
Generic shell / .env
export BLENDER_HOST=localhost
export BLENDER_PORT=9879
export MCP_TRANSPORT=stdio
export PYTHONPATH=<path-to-blender-mcp>
python -u <path-to-blender-mcp>/stdio_bridge.py
-u旗帜 --禁用Python的stdout/stderr缓冲。这是stdio传输所必需的。没有它,MCP消息可能会保存在Python的内部缓冲区中,永远不会到达客户端。
Environment variables reference
| 变量 | 默认值 | 描述 |
|---|---|---|
BLENDER_HOST |
localhost |
Blender插件正在监听的主机名 |
BLENDER_PORT |
9879 |
Blender插件的TCP端口 |
MCP_TRANSPORT |
stdio |
运输方式(stdio 适用于所有当前客户) |
PYTHONPATH |
-- | 必须包含项目根目录,因此 blender_mcp 可进口 |
验证连接
Tool: get_server_status
→ {
"status": "active",
"blender_version": [5, 0, 0],
"blender_language": "en_US",
"handler_count": 69,
"next_step": "Call list_all_tools to see all available tools…"
}
推荐的第一工作流
1. manage_agent_context GET_PRIMER → full quick-start guide for the AI
2. get_scene_graph GET_OBJECTS_FLAT → what objects exist + world positions
3. get_viewport_screenshot_base64 → see the current viewport
4. execute_blender_code → create or modify objects
5. get_viewport_screenshot_base64 → confirm the result visually
基本工具(优先级1-9)
These 9 tools handle the vast majority of tasks. The AI discovers them first.
| Pri | 工具 | 目的 |
|---|---|---|
| 1 | execute_blender_code |
满 bpy Python API-一切的主要工具 |
| 2 | get_scene_graph |
11动作场景智能套件 |
| 3 | get_viewport_screenshot_base64 |
视觉验证——看看Blender看到了什么 |
| 4 | get_object_info |
深度对象检查器——修改器、约束、动画 |
| 5 | get_local_transforms |
父相对坐标 |
| 6 | manage_agent_context |
工作流程指南(GET_PRIMER, GET_TACTICS) |
| 7 | list_all_tools |
使用意图过滤进行工具发现(节省77%的令牌) |
| 8 | get_server_status |
健康检查——版本、语言、处理程序计数 |
| 9 | new_scene |
创建空场景 |
⚡ execute_blender_code
主要且最强大的工具。使用完整Python执行任意Python bpy 进入Blender内部。
注: 几乎所有其他68个工具本质上都是你也可以使用的东西的包装器
execute_blender_code这些专用工具添加了结构化验证、复杂的分析算法和清晰的动作名称,这使得它们对人工智能代理来说更加可靠和可读。但对于一次性操作或学习什么bpy可以做到,execute_blender_code通常是最快的路径。
一个硬编码的保护: bpy.ops.render.render() 始终被阻塞——它在整个渲染期间冻结Blender的主线程,使MCP无响应。使用 manage_rendering action=RENDER_FRAME 相反(异步子流程)。
# Create a metallic sphere
import bpy, bmesh
bpy.ops.mesh.primitive_uv_sphere_add(radius=0.5, location=(0, 0, 1))
obj = bpy.context.active_object
mat = bpy.data.materials.new("Metal")
mat.use_nodes = True
bsdf = mat.node_tree.nodes["Principled BSDF"]
bsdf.inputs["Metallic"].default_value = 1.0
bsdf.inputs["Roughness"].default_value = 0.1
obj.data.materials.append(mat)
print(f"Created: {obj.name}")
🔍 get_scene_graph
11个动作场景智能套件。人工智能在修改场景之前使用它来了解场景中的内容。
All 11 actions
| 动作 | 描述 |
|---|---|
GET_OBJECTS_FLAT |
所有对象:世界变换、层次结构、, matrix_world, geometry_center_world |
GET_SCENE_MATRIX |
深度空间分析:AABB中心、最近邻、距离 |
ANALYZE_ASSEMBLY |
完整性评分0-100:BVH表面间隙、互穿、层次意识对 |
CHECK_INTERSECTION |
两个物体之间的AABB相交测试 |
GET_SPATIAL_REPORT |
一个对象的空间摘要:边界、附近对象 |
CAST_RAY |
雷从 origin=[x,y,z] 在 direction=[dx,dy,dz] |
VERIFY_ASSEMBLY |
基于规则的检查: must_touch, parent_must_be |
DETECT_GEOMETRY_ERRORS |
每个对象:非流形边界、边界边界、零区域 |
GEOMETRY_COMPLEXITY |
三角形/顶点/ngon计数+复杂性层 |
CHECK_PRODUCTION_READINESS |
歧管、UV、材质、命名、原点对齐;得分0–100 |
GET_HIERARCHY_TREE |
BFS家长→孩子们树起来 max_depth |
📸 get_viewport_screenshot_base64
将视口捕获为AI可以直接看到和推理的base64 PNG。
Key parameters
| 参数 | 示例 | 说明 |
|---|---|---|
view_direction |
"MULTI" |
FRONT, RIGHT, TOP, ISOMETRIC,或 MULTI (全部四个) |
target_objects |
["Arm_L", "Body"] |
帧特定对象而不是整个场景 |
gap_focus_m |
0.002 |
自动缩放以显示此距离的间隙 |
display_mode |
"MATERIAL" |
SOLID, MATERIAL,或 WIREFRAME |
action |
"SMART_SCREENSHOT" |
自动选取最佳视图 |
工具层级系统
如果每次都详细列出所有69个工具,AI上下文窗口将溢出。分层系统解决了这个问题:
| 级别 | 优先级 | 计数 | 格式 list_all_tools |
|---|---|---|---|
| 必要的 | 1–9 | 9 | 全部细节——标题、描述、所有参数 |
| 核心 | 10–49 | ~35 | 紧凑型桌排 |
| 标准 | 50–149 | ~20 | 紧凑型桌行 |
| 可选 | 150+ | 4 | 最后列出(外部集成) |
# Filter by intent — reduces 69 tools to ~15 relevant ones (77% fewer tokens)
list_all_tools(intent="rig a character")
list_all_tools(intent="physics simulation")
list_all_tools(intent="export to Unity")
支持英语、土耳其语和法语意图关键字。
主要特点
Assembly Intelligence
get_scene_graph ANALYZE_ASSEMBLY 提供完整的完整性报告:
- BVH表面间隙测量 --实际顶点到面的距离,而不仅仅是边界框
- 穿透检测 --BVH面部重叠,而不仅仅是AABB
- 层次结构感知配对 --始终测试家长↔儿童;跳过远处的物体以避免O(N²)
- 生产准备度得分0–100 --流形几何、UV贴图、材质、命名、原点对齐
Thread Safety
全部 bpy 来自TCP套接字线程的调用会通过以下方式自动封送到Blender的主线程 bpy.app.timers。这可以防止 EXCEPTION_ACCESS_VIOLATION 后台线程接触Blender API时发生的崩溃。
Multilingual Intent Routing
list_all_tools(intent="...") 接受英语、土耳其语和法语的关键字。意图路由器将您的描述映射到工具类别,并仅返回相关子集,从而大大减少了上下文窗口的使用。
Visual Verification
get_viewport_screenshot_base64 捕获视口并将其作为base64返回,AI可以看到:
- 一次通话中的多视图:
FRONT,RIGHT,TOP,ISOMETRIC gap_focus_m--精确缩放到装配间隙的比例target_objects--帧特定部分,而不是整个场景
测试
在没有Blender的情况下运行测试-- bpy 被嘲笑 unittest.mock.MagicMock.
uv run pytest tests/unit -q # 499 unit tests, ~1.4s
uv run pytest tests -v --tb=short # Full suite
uv run pytest tests -v --cov=blender_mcp # With coverage report
uv run python scripts/quality/run_checks.py --fast # 8 quality checks
uv run python scripts/quality/run_checks.py # 12 quality checks
Coverage map — 17 test files
| 模块 | 测试文件 | 测试 |
|---|---|---|
| 8个基本处理程序 | test_essential_tools.py |
183 |
core/parameter_validator.py |
test_parameter_validator.py |
60 |
core/intent_router.py |
test_intent_router.py |
35 |
core/execution_engine.py |
test_execution_engine.py |
31 |
dispatcher.py |
test_dispatcher_deep.py + test_dispatch_routing.py |
51 |
core/semantic_memory.py |
test_semantic_memory.py |
25 |
core/job_manager.py |
test_job_manager.py |
25 |
core/response_builder.py |
test_response_builder.py |
21 |
core/protocol.py |
test_protocol.py |
17 |
core/error_protocol.py |
test_error_protocol.py |
13 |
| 项目结构 | test_smoke.py |
10 |
| MCP网桥验证 | test_engine.py |
9 |
handlers/manage_history.py |
test_manage_history.py |
9 |
core/security.py |
test_security.py |
6 |
| 几何中心计算 | test_scene_graph_geo_center.py |
6 |
| 总计 | 17个测试文件 | 499 |
看 测试/tests.md 获取完整文档。
开发者指南
Environment setup
uv sync --all-extras # Install all dependencies
Quality gates
make check # 12 checks: lint + format + type-check + tests
make check-fast # 8 checks: lint + custom checks
make test-fast # Unit tests only, stop on first failure
Tool inspection
make inspect-summary # Compact table of all 69 tools
make inspect-essential # ESSENTIAL tier full detail
uv run python scripts/inspect_tools.py --tool get_scene_graph
uv run python scripts/inspect_tools.py --cat animation
Adding a new handler
在中创建文件 blender_mcp/handlers/ 和 @register_handler。自动发现--没有要更新的列表。
from ..dispatcher import register_handler
@register_handler(
"manage_my_feature",
actions=["CREATE", "DELETE", "LIST"],
schema={
"type": "object",
"properties": {
"action": {"type": "string", "enum": ["CREATE", "DELETE", "LIST"]},
"name": {"type": "string"},
},
"required": ["action"],
},
category="scene",
priority=60, # 1-9=ESSENTIAL, 10-49=CORE, 50-149=STANDARD, 150+=OPTIONAL
description="STANDARD — Create, delete, and list my features.",
)
def manage_my_feature(action, **params):
if action == "CREATE":
return {"created": params.get("name")}
elif action == "LIST":
return {"items": []}
Scripts reference
看 scripts/scripts.md 获取每个脚本的全面文档。
python -m blender_mcp --help # Quick CLI overview
python -m blender_mcp --list-tools # List all tools
python -m blender_mcp --status # Project health
项目结构
Click to expand
Blender_mcp/
├── blender_mcp/ Blender addon (installs via ZIP)
│ ├── __init__.py Addon entry + BlenderMCPServer + N-panel UI
│ ├── __main__.py python -m blender_mcp CLI
│ ├── dispatcher.py Handler registry + dispatch_command
│ ├── __version__.py Single source of version truth
│ ├── handlers/ 52 handler modules
│ │ ├── manage_scene_comprehension.py get_scene_graph (11 actions)
│ │ ├── manage_rendering.py RENDER_FRAME, screenshot
│ │ ├── manage_scripting.py execute_blender_code
│ │ ├── manage_agent_context.py GET_PRIMER, GET_TACTICS
│ │ ├── manage_history.py Session checkpoints
│ │ ├── get_local_transforms.py Parent-relative coordinates
│ │ ├── polyhaven_handler.py Polyhaven CC0 assets
│ │ ├── sketchfab_handler.py Sketchfab 3D models
│ │ ├── hunyuan_handler.py Hunyuan3D AI generation
│ │ ├── hyper3d_handler.py Hyper3D Rodin AI generation
│ │ └── ... 40+ more handlers
│ └── core/
│ ├── protocol.py Wire protocol (4-byte header + JSON)
│ ├── thread_safety.py Main-thread routing via bpy.app.timers
│ ├── execution_engine.py Safe bpy.ops + ExecutionPolicy
│ ├── parameter_validator.py Type coercion + schema validation
│ ├── intent_router.py Multi-language intent classification
│ ├── semantic_memory.py Tag-based object resolution
│ ├── security.py High Mode / Safe Mode
│ ├── job_manager.py Async subprocess queue
│ ├── response_builder.py Structured response format
│ └── error_protocol.py 280+ ErrorCode enum values
├── stdio_bridge.py MCP bridge (runs outside Blender)
├── scripts/
│ ├── SCRIPTS.md Full scripts documentation
│ ├── inspect_tools.py Tool catalog inspector
│ ├── count_tools.py Handler count audit
│ ├── sync_version.py Version synchronization
│ ├── test_blender_imports.py Runtime import validation (needs Blender)
│ ├── remove_unused_ignores.py mypy cleanup helper
│ └── quality/
│ ├── run_checks.py Quality gate (8–12 checks)
│ ├── check_version.py Version consistency
│ ├── check_forbidden.py Fatal Blender 5.x pattern scanner
│ ├── check_handler_completeness.py Registry audit
│ ├── check_handler_imports.py Import style validator
│ ├── check_schemas.py JSON schema validator
│ ├── check_tool_groups.py Tool group integrity
│ └── lint_imports.py Import architecture rules
├── tests/
│ ├── unit/ 499 unit tests (17 files, no Blender needed)
│ ├── integration/ 24 mock + live integration tests
│ └── TESTS.md Test suite documentation
├── docs/
│ └── ARCHITECTURE.md System design, wire protocol, thread model
├── create_release_zip.py Builds the addon ZIP for Blender
├── Makefile Developer shortcuts
├── pyproject.toml Build + lint + type-check config
└── LICENSE MIT License
贡献指南
- 使用
@register_handler所有处理程序上的装饰器——没有例外 @ensure_main_thread在任何调用的处理程序上bpy- 不
bpy.types.SimpleNamespace--Blender 5.x中不可用 - 不
eval/exec外面execute_blender_code安全层 - 使用
MCPLogger/get_logger()而不是print() - 跑
make check在提交之前,必须通过所有12项检查 - 在中添加新逻辑的单元测试
tests/unit/
日志文件
| 组件 | Windows | macOS/Linux |
|---|---|---|
| 插件(搅拌机侧) | %TEMP%\blender_server_debug.log |
/tmp/blender_server_debug.log |
| 桥架(MCP侧) | %TEMP%\mcp_bridge_debug.log |
/tmp/mcp_bridge_debug.log |
许可证
MIT许可证 — © 2026年 《心灵》
