Blender 技能
v1.0.0通过官方的Blender MCP Server连接和控制Blender。支持两种模式:完整的MCP Server + mcporter(推荐)和直接的TCP Socket(轻量级...
运行时依赖
安装命令
点击复制本土化适配说明
Blender 技能 安装说明: 安装命令:["openclaw skills install blender-skill"] 支持国内镜像加速,使用 --registry https://cn.longxiaskill.com 参数可加速下载
技能文档
Blender MCP 服务器连接技能 通过官方的Blender MCP 服务器连接并控制运行中的Blender实例。 版本要求:Blender 5.1+(必需) 架构概述 ┌─────────────┐ TCP Socket ┌────────────────── MCP 协议 ┌────────────── │ LLM 客户端 │ ◄─────────────────► │ MCP 服务器 │ ◄──────────────────► │ Blender │ │ (OpenClaw) │ stdio / HTTP │ (Python 进程) │ 端口9876 │ (插件) │ └─────────────┘ └──────────────────┘ └────────────── 两部分架构: Blender 插件 —— 在Blender中运行,提供TCP Socket 服务器(默认localhost:9876) MCP 服务器 —— 独立的Python进程,连接LLM客户端和Blender插件
安装
- 安装Blender插件
- 启动Blender MCP 服务器
- 配置mcporter
使用方法 方法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" # 搜索API文档 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:直接TCP Socket到Blender插件(轻量级) 当您不需要完整的MCP 服务器时,可以通过TCP Socket直接与Blender插件通信: import socket import json
def send_to_blender(code: str, host="localhost", port=9876, timeout=30.0) -> dict: """将Python代码直接发送到Blender插件执行.""" 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("utf-8")) 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("utf-8"))
# 示例:获取场景中的所有对象名称 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后台模式(无头渲染/批处理) # 启动Blender后台MCP 服务器 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访问) code: str execute_blender_code_for_cli 执行代码在后台Blender进程中 blend_file: str, code: str 场景分析工具 描述 参数 get_objects_summary 获取场景对象层次和基本信息 无 get_object_detail_summary 获取特定对象的详细信息 object_name: str get_blendfile_summary_datablocks 分析.blend文件数据块 blend_file: str get_blendfile_summary_missing_files 检查缺失的外部文件引用 blend_file: str get_blendfile_summary_of_linked_libraries 列出链接的外部库 blend_file: str get_blendfile_summary_path_info 分析.blend文件路径信息 blend_file: str get_bl