☰
MCP for Blender 完整安装教程:从零配置到 10 分钟让 AI 在 Blender 里建出场景
2026/10/6 8:39:13 网站建设 项目流程

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 通道,第一次超时是已知行为,不是故障。

  1. 确认面板显示 "Connected on port 9876"
  2. 发送:"创建一个低多边形地牢:火把、石柱、一扇铁门"
  3. 哪里不对就补一句"把火把往左挪一点"

原理提炼:把场景说成"名词清单",AI 的建模动作最稳定。

让 AI 自己截图视口查错

验证标准:AI 根据视口截图说出场景里有什么,并修正你指出的问题。

⚠️ 截图会回传到客户端对话里,别在含敏感场景的文件里随手跑。

  1. 场景建好后追加:"用视口截图确认一下场景状态"
  2. 指着不对的地方说"石柱太高了,缩到一半"
  3. 再要一张截图核对

原理提炼:AI 改完会"回头看"视口,建模从盲改变成"操作 → 截图 → 修正"的闭环。

用 Poly Haven 拉素材铺海滩,再导出 GLB

验证标准:世界环境变成 HDRI 光照,场景里出现岩石和植被物体,最后拿到一个可打开的.glb文件。

⚠️ 素材下载走 Blender 主线程,UI 会卡住直到下载完成;且分辨率每上一档体积大约翻四倍——离镜头远的素材只要求 1k 或 2k,别贪 4k。

  1. 侧边栏勾选Poly Haven(免密钥、无账号,CC0 素材)
  2. 发送:"用 Poly Haven 的 HDRI、岩石和植被做个海滩氛围"
  3. 检查世界环境节点和新增物体
  4. 追加:"把当前场景导出为 GLB",用export_scene拿到文件给下游用

原理提炼:插件内置了成套资源管道,搜索、下载、应用一条龙,AI 不用碰任何网页。

卡住时去哪个台子

先对号入座,再动手:

你看到的现象走哪条链
客户端起不来,报spawn错误链 1
服务起来了,连 Blender 一直超时链 2
简单指令正常、复杂请求超时或卡住链 3
以上都试过了链 4:终极三板斧

链 1:客户端根本起不来

报错原文(Ctrl+F 对号入座):

failed to start: spawn uvx ENOENT
  1. 终端执行which uvx(macOS/Linux)或where uvx(Windows)→ 预期打印出完整路径
  2. 把绝对路径填进配置的"command";Windows 也可用"command": "cmd", "args": ["/c", "uvx", "mcp-for-blender"]→ 预期配置指向绝对路径。图形界面客户端不继承终端 PATH,这就是"终端里明明能跑"却 ENOENT 的原因
  3. 彻底退出客户端再重启 → 预期工具列表出现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
  1. 回 Blender 侧边栏确认面板不是 "Not connected" → 预期能看到 "Connected on port …"
  2. 核对插件面板Port与服务端配置 → 预期两边数字一致
  3. 确认 Blender 是带界面启动的——blender -b后台模式下命令永远执行不了 → 预期指令有回音

兜底:侧边栏断开再重连,端口再核一遍。

链 3:复杂请求超时或卡住

触发条件:简单指令正常,复杂请求超时,或多个命令挤在一条 socket 上串线。

  1. 把大任务拆成小指令分步发(单次上限 180 秒)→ 预期每步都有回执
  2. 检查是否 Cursor 和 Claude 同时挂着这个 MCP 服务 → 预期同一时间只有一个客户端
  3. 侧边栏断开重连,重建连接 → 预期后续命令恢复正常

兜底:继续简化请求,或重启 Blender。

链 4:终极三板斧

  1. 重启 Blender 插件(侧边栏 Disconnect → Connect to MCP server)
  2. 彻底重启 MCP 客户端(Windows 记得从系统托盘退)
  3. 把配置里的blender服务删掉重新添加

这一套基本覆盖九成"幽灵问题"。

参数与开关

先对号入座:

你的情况看哪小节
什么都不改,只要默认行为默认值一览
9876端口被占,或同时开两个 Blender换端口:两端号码必须一致
服务端跑在 Docker / 另一台机器跨机器连接
uvx起服务报编译错 / Python 冲突钉死 Python 版本
不想上报任何统计关掉遥测
怕 AI 跑危险 Python开安全模式

默认值一览

触发条件:什么都不改时,先知道服务端在做什么。

  • BLENDER_HOST默认localhost,服务端只找本机的 Blender
  • BLENDER_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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询