📦 blender-skill
v1.0.0通过官方 Blender MCP Server 连接并控制 Blender。支持两种模式:完整 MCP Server + mcporter(推荐)与直连 TCP Socket(轻量…
运行时依赖
安装命令
点击复制技能文档
Blender MCP Server 连接技能 通过官方 Blender MCP Server 连接并控制运行中的 Blender 实例。 版本要求:Blender 5.1+(强制)
架构概览 ┌─────────────┐ TCP Socket ┌────────────────── MCP Protocol ┌────────────── │ LLM Client │ ◄─────────────────► │ MCP Server │ ◄──────────────────► │ Blender │ │ (OpenClaw) │ stdio / HTTP │ (Python process) │ port 9876 │ (Addon) │ └─────────────┘ └──────────────────┘ └──────────────
双组件架构:
- Blender Addon:在 Blender 内部运行,提供 TCP Socket Server(默认 localhost:9876)
- MCP Server:独立 Python 进程,桥接 LLM 客户端与 Blender Addon
安装
- 安装 Blender Addon
选项 B:拖放 将 ZIP 拖入 Blender 窗口两次:第一次添加 Blender Lab 仓库,第二次安装 addon
选项 C:源码安装 源码位置:mcp/blmcp/ 与 addon/blender_mcp_addon/
- 启动 Blender MCP Server
# stdio 模式 python -m blmcp --transport stdio
# HTTP 模式(默认 127.0.0.1:8000) python -m blmcp --transport http --host 127.0.0.1 --port 8000
- 配置 mcporter
# 验证连接 mcporter list blender-mcp --schema
使用 方法 1:通过 mcporter(推荐) # 列出所有可用工具 mcporter list blender-mcp --schema
# 调用工具 mcporter call blender-mcp.execute_blender_code code='import bpy; result = {"objects": [o.name for o in bpy.data.objects]}' mcporter call blender-mcp.get_objects_summary mcporter call blender-mcp.get_object_detail_summary object_name="Cube" mcporter call blender-mcp.search_api_docs query="bpy.ops.object.delete" mcporter call blender-mcp.search_manual_docs query="Geometry Nodes" mcporter call blender-mcp.get_screenshot_of_window_as_image mcporter call blender-mcp.render_viewport_to_path output_path="C:\\render.png"
方法 2:直连 Blender Addon TCP Socket(轻量) 无需完整 MCP Server 时,可直接通过 TCP 与 Blender Addon 通信: import socket, json def send_to_blender(code: str, host="localhost", port=9876, timeout=30.0) -> dict: request = json.dumps({"type":"execute","code":code,"strict_json":False}) + "\0" with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: sock.settimeout(timeout); sock.connect((host, port)); sock.sendall(request.encode()) buf = bytearray() while True: chunk = sock.recv(65536) if not chunk: break buf.extend(chunk) if b"\0" in buf: break line,_,_ = buf.partition(b"\0") return json.loads(line.decode())
# 示例:获取场景所有对象名 response = send_to_blender('import bpy\nresult = {"objects": [o.name for o in bpy.data.objects]}') print(response) # {"status": "ok", "result": {"objects": ["Cube", "Camera", "Light"]}}
方法 3:Blender 后台模式(无头渲染 / 批量) # 启动后台 MCP Server blender --background myscene.blend --command blender_mcp --host localhost --port 9876
# 或通过 CLI 执行代码 blender --background myscene.blend --python-expr " import bpy result = {'count': len(bpy.data.objects)} print('__BLMCP_RESULT__' + str(result)) "
内置工具(共 20 个) 核心工具 execute_blender_code:执行任意 Python 代码(完整 bpy 访问) execute_blender_code_for_cli:在后台 Blender 进程中执行代码
场景分析工具 get_objects_summary:获取场景对象层级与基本信息 get_object_detail_summary:获取指定对象详细信息 get_blendfile_summary_datablocks:分析 .blend 数据块 get_blendfile_summary_missing_files:检查缺失外部引用 get_blendfile_summary_of_linked_libraries:列出外部链接库 get_blendfile_summary_path_info:分析 .blend 文件路径信息