MCP for Blender 完整安装教程:从零配置到 10 分钟让 AI 在 Blender 里建出场景
【免费下载链接】mcp-for-blenderCommunity plugin to control Blender 3D with any LLM of your choice. Not affiliated with the official Blender Foundation.项目地址: https://gitcode.com/GitHub_Trending/bl/mcp-for-blender
你在 AI 客户端的对话框里敲下"建一个低多边形小屋",转了十几秒,回你一句failed to start: spawn uvx ENOENT;换个客户端再试,Blender 侧边栏的状态行还卡在 "Not connected" 一动不动。问题几乎都不在你,而是链路里某一环没对上。MCP for Blender 是一个开源插件:它让任意大模型(Claude、Cursor 里的模型都行)通过自然语言直接操作 Blender——建物体、改材质、跑 Python、拉素材。读完这篇,你会装通整条链路,并且让第一条指令真正在视口里造出东西。
30 秒看懂这条链路
先看清三根线,再动手:
[AI 客户端 Claude/Cursor/Codex] ⇅ stdio(MCP 协议) [MCP 服务端 mcp-for-blender,由 uvx 拉起] ⇅ TCP 端口 9876(JSON over socket) [Blender 插件 addon.py,socket 服务器] ↓ bpy 真正执行建模动作| 组件 | 你可以把它理解成 | 一句话职责 |
|---|---|---|
| AI 客户端 | 下单的人 | 你说话的地方 |
| MCP 服务端 | 前台调度 | 把自然语言拆成 JSON 指令转给 Blender |
端口9876 | 门牌号 | 两端号码一致才找得到人 |
| Blender 插件 | 待命的接线员 | 在 Blender 内部真正执行动作 |
命令和回执都是 JSON。一条最小请求长这样:
{ "type": "create_object", "params": { "type": "CUBE" } }插件执行后回{ "status": "success", "result": ... };出错则status为error并带message。这就是你和视口之间所有东西的载体。
从零到连通
第 1 步:装 uv,拿到 uvx 启动器
目标:系统里有一个能随时拉起服务端的uvx命令。
# macOS brew install uv # Linux curl -LsSf https://astral.sh/uv/install.sh | sh# Windows:装完把 %USERPROFILE%\.local\bin 加进 PATH,再重开终端 powershell -c "irm https://astral.sh/uv/install.ps1 | iex"⚠️ 别用pip install uv凑数:它经常不生成uvx命令,还会把 uv 藏进客户端看不到的环境里,下一步客户端会直接报"找不到命令"。
确认:终端执行uvx --version,打印出版本号才算过关。
第 2 步:把客户端配置指到服务上
目标:客户端一启动就自动拉起 MCP 服务端。以 Claude 桌面版为例:设置 > 开发者 > 编辑配置,在claude_desktop_config.json里贴入:
{ "mcpServers": { "blender": { "command": "uvx", "args": ["mcp-for-blender"] } } }注意包名已改为mcp-for-blender(旧的uvx blender-mcp也能跑,新装请用新名)。Cursor、Codex 同理,本质都是"一条uvx命令拉起服务"。
⚠️ 改完配置必须彻底退出客户端再重开——它只在启动那一刻读一次这个文件;并且同一时间只保留一个客户端挂这个服务,两个客户端共用一条 socket 会让响应错乱。
确认:重启后工具列表里出现blender条目。
第 3 步:装插件进 Blender 并点 Connect
目标:Blender 里有一个常驻的"接线员"。推荐一条命令装完:
uvx mcp-for-blender install-addon它会把插件复制进 Blender 的 addons 目录(存为blender_mcp.py,被替换的旧文件留.bak备份),并打印落盘位置。命令找不到你的 Blender 就手动装:克隆仓库git clone https://gitcode.com/GitHub_Trending/bl/mcp-for-blender,在 Blender 里编辑 > 偏好设置 > 插件 > 安装…选中根目录的addon.py(整个插件就这一个文件),然后启用Interface: MCP for Blender。
⚠️ 装完后如果侧边栏没标签页,多半是插件没启用——回编辑 > 偏好设置 > 插件搜 "MCP for Blender" 勾上,或重启 Blender。
确认:3D 视口按N键,侧边栏出现MCP for Blender标签页,里面有资源库勾选框、Port输入框(默认9876)和Connect to MCP server按钮。
最后一步:按需勾选资源库(比如 Poly Haven,免密钥),Port保持默认9876,点Connect to MCP server。面板从 "Not connected" 变成 "Connected on port 9876",链路就跑通了。
连通之后先做三件事
一句话建个场景:低多边形地牢
验证标准:视口里出现火把、石柱、铁门三类物体,Outliner 里能逐一点名。
⚠️ 第一条指令偶尔没反应,直接重发一次:插件是首条命令到达时才真正建立 socket 通道,第一次超时是已知行为,不是故障。
- 确认面板显示 "Connected on port 9876"
- 发送:"创建一个低多边形地牢:火把、石柱、一扇铁门"
- 哪里不对就补一句"把火把往左挪一点"
原理提炼:把场景说成"名词清单",AI 的建模动作最稳定。
让 AI 自己截图视口查错
验证标准:AI 根据视口截图说出场景里有什么,并修正你指出的问题。
⚠️ 截图会回传到客户端对话里,别在含敏感场景的文件里随手跑。
- 场景建好后追加:"用视口截图确认一下场景状态"
- 指着不对的地方说"石柱太高了,缩到一半"
- 再要一张截图核对
原理提炼:AI 改完会"回头看"视口,建模从盲改变成"操作 → 截图 → 修正"的闭环。
用 Poly Haven 拉素材铺海滩,再导出 GLB
验证标准:世界环境变成 HDRI 光照,场景里出现岩石和植被物体,最后拿到一个可打开的.glb文件。
⚠️ 素材下载走 Blender 主线程,UI 会卡住直到下载完成;且分辨率每上一档体积大约翻四倍——离镜头远的素材只要求 1k 或 2k,别贪 4k。
- 侧边栏勾选Poly Haven(免密钥、无账号,CC0 素材)
- 发送:"用 Poly Haven 的 HDRI、岩石和植被做个海滩氛围"
- 检查世界环境节点和新增物体
- 追加:"把当前场景导出为 GLB",用
export_scene拿到文件给下游用
原理提炼:插件内置了成套资源管道,搜索、下载、应用一条龙,AI 不用碰任何网页。
卡住时去哪个台子
先对号入座,再动手:
| 你看到的现象 | 走哪条链 |
|---|---|
客户端起不来,报spawn错误 | 链 1 |
| 服务起来了,连 Blender 一直超时 | 链 2 |
| 简单指令正常、复杂请求超时或卡住 | 链 3 |
| 以上都试过了 | 链 4:终极三板斧 |
链 1:客户端根本起不来
报错原文(Ctrl+F 对号入座):
failed to start: spawn uvx ENOENT- 终端执行
which uvx(macOS/Linux)或where uvx(Windows)→ 预期打印出完整路径 - 把绝对路径填进配置的
"command";Windows 也可用"command": "cmd", "args": ["/c", "uvx", "mcp-for-blender"]→ 预期配置指向绝对路径。图形界面客户端不继承终端 PATH,这就是"终端里明明能跑"却 ENOENT 的原因 - 彻底退出客户端再重启 → 预期工具列表出现
blender条目
兜底:重装 uv,uvx --version重新确认。
链 2:连不上 Blender,一直超时
报错原文:
Timeout waiting for Blender response - try simplifying your request. If Blender is running headless (blender -b), commands never execute; run Blender with a GUI or via 'xvfb-run -a blender' instead- 回 Blender 侧边栏确认面板不是 "Not connected" → 预期能看到 "Connected on port …"
- 核对插件面板
Port与服务端配置 → 预期两边数字一致 - 确认 Blender 是带界面启动的——
blender -b后台模式下命令永远执行不了 → 预期指令有回音
兜底:侧边栏断开再重连,端口再核一遍。
链 3:复杂请求超时或卡住
触发条件:简单指令正常,复杂请求超时,或多个命令挤在一条 socket 上串线。
- 把大任务拆成小指令分步发(单次上限 180 秒)→ 预期每步都有回执
- 检查是否 Cursor 和 Claude 同时挂着这个 MCP 服务 → 预期同一时间只有一个客户端
- 侧边栏断开重连,重建连接 → 预期后续命令恢复正常
兜底:继续简化请求,或重启 Blender。
链 4:终极三板斧
- 重启 Blender 插件(侧边栏 Disconnect → Connect to MCP server)
- 彻底重启 MCP 客户端(Windows 记得从系统托盘退)
- 把配置里的
blender服务删掉重新添加
这一套基本覆盖九成"幽灵问题"。
参数与开关
先对号入座:
| 你的情况 | 看哪小节 |
|---|---|
| 什么都不改,只要默认行为 | 默认值一览 |
9876端口被占,或同时开两个 Blender | 换端口:两端号码必须一致 |
| 服务端跑在 Docker / 另一台机器 | 跨机器连接 |
uvx起服务报编译错 / Python 冲突 | 钉死 Python 版本 |
| 不想上报任何统计 | 关掉遥测 |
| 怕 AI 跑危险 Python | 开安全模式 |
默认值一览
触发条件:什么都不改时,先知道服务端在做什么。
BLENDER_HOST默认localhost,服务端只找本机的 BlenderBLENDER_PORT默认9876,插件面板Port默认也是9876- 单次 socket 请求超时上限 180 秒
- 遥测默认只收集一条最小匿名用量记录;你的提示词、代码、截图默认不收集,除非你明确勾选同意
验证:面板显示 "Connected on port 9876",第一条指令有回音。
换端口:两端号码必须一致
触发条件:9876被别的程序占了,或你同时开两个 Blender 实例。
改法:客户端配置env里加"BLENDER_PORT": "9877",或用 CLI 参数"args": ["mcp-for-blender", "--port", "9877"](参数优先于环境变量);同时把插件面板Port改成同一个号。
验证:两边都重连,面板显示 "Connected on port 9877",指令有回音。⚠️ 只改一边等于往一个已注销的号码拨号,永远没人接。
跨机器连接
触发条件:MCP 服务端跑在 Docker 里或另一台机器上(Blender 本体仍在本机)。
改法:仓库自带Dockerfile,镜像默认BLENDER_HOST=host.docker.internal,macOS/Windows 的 Docker Desktop 开箱可达宿主机的 Blender;Linux 上该域名不存在,改用 host 网络:
{ "command": "docker", "args": ["run", "-i", "--rm", "--network=host", "-e", "BLENDER_HOST=localhost", "mcp-for-blender"] }验证:视口截图能正常返回——截图走 base64 回传,不依赖共享目录,远程也能用。⚠️ 插件的 socket 没有认证和加密,任何够得到这个端口的人都能在你的 Blender 里跑 Python;跨机器请保持 localhost + SSH 隧道,别把端口直接暴露到网络。
钉死 Python 版本
触发条件:机器上有 conda / pyenv,或新 CPython 没有现成 wheel,uvx拉起服务时各种编译报错。
改法:
{ "command": "uvx", "args": ["--python", "3.11", "mcp-for-blender"], "env": { "UV_PYTHON_PREFERENCE": "only-managed" } }仍怀疑旧缓存捣乱就清掉重拉:uv cache clean mcp-for-blender blender-mcp && uvx --refresh mcp-for-blender。
验证:客户端不再刷编译错误,工具列表里blender条目正常出现。
关掉遥测
触发条件:你连最小匿名用量记录都不想发。
改法:终端export DISABLE_TELEMETRY=true后再启动,或写进客户端配置的env("DISABLE_TELEMETRY": "true")。
验证:服务端不再有任何上报,功能不受影响。
开安全模式
触发条件:默认情况下 AI 能跑任意 Python,你想要一道拦截。
改法:在客户端配置的env(或容器args)里加"BLENDER_MCP_SAFE_MODE": "1",服务端会在脚本进 Blender 前做校验,拦截直接读写文件、起子进程、碰网络这类危险代码;被拦的脚本会连原因一起退回给 AI,它换个写法重试。
验证:让 AI 执行一段含文件读写的脚本,预期收到拦截说明而不是执行结果,正常建模、材质、渲染不受影响。
再往深走一点
三个可以继续挖的源码入口:
- src/blender_mcp/server.py:
BlenderConnection类,锁加 socket 流保证命令不乱序,180 秒超时也在这里 - addon.py:侧边栏面板、端口逻辑和命令分发(按
type路由)全在这个文件里 - README.md:Environment Variables 与 Troubleshooting 两节,官方排错的最终依据
今天 10 分钟就能勾完这几件事:
- ☐ 终端验证
uvx --version有版本号输出 - ☐ 写好客户端 MCP 配置并彻底重启,确认工具列表出现
blender条目 - ☐
uvx mcp-for-blender install-addon装好插件,面板显示 "Connected on port 9876" - ☐ 让 AI 建一个小场景,并用视口截图自查一轮
- ☐ 勾选 Poly Haven,完成一次 HDRI 或模型导入
- ☐ 用
export_scene把场景导出成 GLB
哪一步卡住了,直接带报错原文来:报错原文、操作系统版本、客户端类型三样齐了,定位最快。
【免费下载链接】mcp-for-blenderCommunity plugin to control Blender 3D with any LLM of your choice. Not affiliated with the official Blender Foundation.项目地址: https://gitcode.com/GitHub_Trending/bl/mcp-for-blender
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考