☰
MCP for Blender 安装实战:三步接通 AI 与 Blender,一句话在视口里造出 3D 场景
2026/10/5 2:17:56 网站建设 项目流程

MCP for Blender 安装实战:三步接通 AI 与 Blender,一句话在视口里造出 3D 场景

【免费下载链接】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

你在 Claude 里敲下"建一个低多边形小屋",转了十几秒,弹回来一行failed to start: spawn uvx ENOENT;换 Cursor 再试,Blender 侧边栏停在 "Not connected",指令石沉大海,视口纹丝不动。问题多半不在你,而在链路的某一环没对上——uv 没装好、客户端没找到uvx、插件没连上、端口两边不一样,每一种长出来的症状都长得像"AI 不行"。MCP for Blender 是一个开源插件:它在你常用的大模型客户端(Claude、Cursor、Codex 都行)和 Blender 之间架一座桥,你打自然语言,它在 Blender 里建物体、改材质、跑 Python、从素材库拉资源。这篇文章带你把这座桥架通,直到第一条指令真的在视口里变出东西。

先认识这条流水线:后厨传菜的比喻

装东西之前,先花一分钟记住下面这张表。后面所有排错,都是拿它对照"菜卡在哪一桌"。

组件你可以把它理解成干的事
AI 客户端点菜顾客你开口下单的地方,菜好不好吃看它传话传得准不准
MCP 服务端(mcp-for-blender)传菜服务员把你的口头要求写成一张张 JSON 点菜单,端到传菜口
端口 9876传菜口编号服务员和厨师各写一个号,两边一致菜才递得过去
Blender 插件(addon.py)掌勺厨师在 Blender 内部真正动手:建网格、调节点、执行代码
JSON 命令与回执点菜单和回条下单是{"type": ..., "params": ...},回来是status为success或error,你看到的一切都以它为凭据

第一关:把服务端从客户端拉起来

这一关只解决一件事:客户端一启动,能自己把 mcp-for-blender 服务端带起来。

安装 uv,拿到 uvx 启动器

目标:系统里有一个随时可用的uvx命令,它是后面一切的地基。分平台选一条装(官方安装脚本,别走 pip):

# 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,能吐出一个版本号才算过这一小步。

在客户端配置里挂上服务

目标:客户端配置里多一个blender条目。以 Claude 桌面版为例,打开设置 → 开发者 → 编辑配置,把下面这段合进claude_desktop_config.json(Cursor、VS Code 的 MCP 配置同构,照搬即可):

{ "mcpServers": { "blender": { "command": "uvx", "args": ["mcp-for-blender"] } } }

注意 PyPI 包名已从blender-mcp改为mcp-for-blender,老配置里的旧名还能跑,但新装请用新名。

⚠️ 两个易踩的坑:一是配置文件只在客户端启动那一刻读一次,改完必须彻底退出重开(Windows 上要从系统托盘退出,关窗口不算);二是同一时间只挂一个客户端跑这个服务,两个客户端抢同一条 socket,回执会串到别人头上。

确认:重启后客户端的工具列表里出现blender条目、旁边带锤子图标,第一关通关。

第二关:把厨师请进 Blender

目标: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。

确认:3D 视口按N键,侧边栏出现MCP for Blender标签页,能看到 Port 输入框(默认 9876)和Connect to MCP server按钮。

第三关:打通传菜口,发出第一条指令

目标:插件开始监听端口,客户端的点菜单能收到回条。

  1. 在侧边栏MCP for Blender标签里,按需要勾选资源库(比如免密钥的 Poly Haven)
  2. Port 保持默认9876
  3. 点Connect to MCP server
  4. 回客户端发一句"建一个低多边形地牢,要火把和石柱"

⚠️ 第一条指令偶尔超时没回音,属已知行为:socket 通道是首条命令到达时才真正建起来的。直接重发一次,别急着怀疑前面装错了。

确认(通关判定,三条齐了才算过):面板从 "Not connected" 变成 "Connected on port 9876";客户端有正常的工具调用回执;视口里开始冒物体。到这里,桥已经架完。

实战三道菜:从建场景到导出 GLB

三道菜按"敢放手的程度"递进,每道都有验证标准和一句原理提炼。

菜一:一句话建场景,再让 AI 回看一眼

验证标准:AI 能根据视口截图说出场景里有什么,并按你的要求修正。

  1. 确认面板显示 "Connected on port 9876"
  2. 发送:"创建一个低多边形地牢:火把、石柱、一扇铁门"
  3. 追加:"用视口截图确认一下场景状态"
  4. 哪里不满意就说"把火把往左挪一点",再让它截图核对

⚠️ 截图走 base64 回传,场景很大时会慢一些,属正常现象,别在途中重发。

如果你用的是 Codex,可以顺手装它带在仓库里的插件(git clone之后执行codex plugin marketplace add ./blender-mcp/integrations/codex,重启后在插件目录安装MCP for Blender):聊天旁边直接开一块实时视口,点一下物体就能挂到下一条消息里,"回看一眼"都省了。

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

菜二:跑任意 Python,把立方体变成金色金属

验证标准:材质面板里 Principled BSDF 节点 Metallic 为 1、Roughness 为 0.2。

  1. 先把当前文件存盘(铁律,下面会解释为什么)
  2. 让 AI 新建一个立方体
  3. 发送:"把这个立方体变成金色金属材质,粗糙度 0.2"
  4. 切到材质面板核对节点参数

⚠️execute_blender_code能执行任意 Python,等于把 Blender 的控制权整个交给 AI。翻车时唯一的后悔药就是你存的那个文件,所以动手前先存盘;更保守一点,可以在服务端配置里设BLENDER_MCP_SAFE_MODE=1,让脚本先过一遍安全检查再执行,被拦下的脚本会带着原因退回给 AI 重试。

原理提炼:工具层之外还能直接写bpy,自由度没有上限,风险也没有上限——存盘是这两者的交换条件。

菜三:用 Poly Haven 铺一个海滩,再导出 GLB

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

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

⚠️ 素材下载跑在 Blender 主线程上,UI 会卡到下载完成,这是现象不是死机;另外分辨率每上一档体积大约翻四倍,离镜头远的素材只要 1k 或 2k,别贪 4k。

原理提炼:插件把"搜索、下载、应用"做成了成套管道,AI 全程不用碰任何网页。

改参数之前:先对号入座

你的情况看哪一节
什么都不想动,只要默认行为默认值一览
9876 被占,或想同时开两个 Blender换端口:两端必须同号
服务端要跑在 Docker / 另一台机器Docker 跨机器连接
uvx 起服务时报编译错、Python 打架钉死 Python 版本
一条数据都不想上报关掉遥测

默认值一览

  • BLENDER_HOST默认localhost:服务端只找本机的 Blender
  • BLENDER_PORT默认9876,插件面板的 Port 输入框默认也是 9876
  • 单次 socket 请求的超时上限 180 秒
  • 遥测默认只发一条最小匿名用量记录(工具名、耗时、版本号之类);你的提示词、代码、截图默认不收集,除非你在插件偏好里明确勾选同意

换端口:两端必须同号

触发条件:9876 被别的程序占了,或你并排开着两个 Blender 实例。

改法:客户端配置的env里加"BLENDER_PORT": "9877",或在args里加--port 9877(命令行参数优先于环境变量);然后把插件面板的 Port 改成同一个号。两条路都走通后两边都要重连。

验证:面板显示 "Connected on port 9877",指令有回条。⚠️ 只改一边,等于往一个已停机的号码拨电话,永远没人接。

Docker 跨机器连接

触发条件:MCP 服务端跑在容器或另一台机器里(Blender 本体仍然在你自己机器上,容器只托管服务端)。

改法:仓库根目录自带 Dockerfile,docker build -t mcp-for-blender .之后,镜像默认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"] }

验证:让 AI 截一张视口图能正常返回,说明整条链路是通的。⚠️ 插件的 socket 没有认证也没有加密,任何够得到这个端口的人都能在你的 Blender 里跑 Python——跨机器请保持 localhost + SSH 隧道,别把端口直接挂到网络上。

钉死 Python 版本

触发条件:机器上有 conda/pyenv,或新 CPython 缺现成 wheel,uvx 一拉服务就刷编译报错。

改法:在客户端配置里锁住解释器,并让 uv 只用自己管理的 Python:

{ "command": "uvx", "args": ["--python", "3.11", "mcp-for-blender"], "env": { "UV_PYTHON_PREFERENCE": "only-managed" } }

--python 3.11仍满足包要求的>=3.10;3.11 有现成 wheel,基本绕开编译。

仍怀疑旧缓存捣乱,就清掉重拉:

uv cache clean mcp-for-blender blender-mcp && uvx --refresh mcp-for-blender

验证:客户端不再刷编译错误,锤子图标正常出现。

关掉遥测

触发条件:连那条最小匿名用量记录都不想发。

改法:终端export DISABLE_TELEMETRY=true后再启动,或写进客户端配置的env("DISABLE_TELEMETRY": "true")。

验证:服务端日志不再有任何上报动作,功能完全不受影响。

卡住了:先抄报错原文,再走对应路线

你看到的现象走哪条路线
客户端起不来,报 spawn 错误路线一
服务起来了,Blender 一直超时路线二
简单指令正常、复杂请求超时或卡住路线三
上面全试过了终极动作

路线一:客户端根本起不来

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

failed to start: spawn uvx ENOENT
  1. 终端执行which uvx(macOS/Linux)或where uvx(Windows)→ 预期:打印出 uvx 的完整路径
  2. 把这个绝对路径填进配置的"command"(Windows 也可写成"command": "cmd", "args": ["/c", "uvx", "mcp-for-blender"])→ 预期:配置指向的是绝对路径。原理在此:图形界面客户端不继承终端的 PATH,"终端里明明能跑"和"客户端找不到"可以同时为真
  3. 彻底退出客户端再重启 → 预期:工具列表出现 blender 条目

兜底:重装 uv,重新确认uvx --version有版本号。

路线二:服务在跑,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 侧边栏看面板 → 预期:显示 "Connected on port …" 而不是 "Not connected";不是的话先点Connect to MCP server
  2. 核对面板 Port 与BLENDER_PORT/--port的取值 → 预期:两边数字一致
  3. 确认 Blender 是带界面启动的 →blender -b后台模式下命令永远不会执行,换 GUI 启动或xvfb-run -a blender→ 预期:指令开始有回条

兜底:侧边栏Disconnect再重连一次,端口数字再抄一遍。

路线三:简单指令正常,复杂请求卡死

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

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

兜底:继续简化请求;再不行,重启 Blender。

终极动作

  1. 插件侧重连(Disconnect → Connect to MCP server)
  2. 客户端彻底退出再启动
  3. 把配置里的 blender 条目删掉、重新添加

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

往深里挖的三个入口

  • addon.py:插件全部家底——侧边栏面板、端口逻辑、按type字段分发命令的路由,都在这一个文件里
  • src/blender_mcp/server.py:BlenderConnection类在这里,一把锁加一条 socket 流保证两条命令不会在传菜口上撞车
  • README.md:Environment Variables 与 Troubleshooting 两节,是官方口径的最终依据

今天就能勾完的清单

  • ☐ 终端uvx --version能打印出版本号
  • ☐ 客户端 MCP 配置写好并彻底重启,工具列表出现带锤子图标的 blender 条目
  • ☐uvx mcp-for-blender install-addon装好插件,侧边栏出现 MCP for Blender 标签
  • ☐ 面板显示 "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),仅供参考

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

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

立即咨询