使用说明
Blender MCP综合服务器
一个生产就绪的模型上下文协议(MCP)服务器,提供全面的Blender集成 47+工具 涵盖了从场景管理到最终渲染的完整3D创建工作流程。
🌟 概述
这个全面的MCP服务器使AI系统能够通过安全、有据可查的界面以编程方式与Blender的3D创建功能进行交互。它通过用于3D建模、动画和渲染的不同方面的分类工具,提供对Blender的Python API(bpy)的完整访问。
🚀 特性
综合工具集(47+工具)
🎬 场景管理(8个工具)
create_scene-创建新的Blender场景set_scene_properties-配置帧范围和单位get_scene_info-获取详细的场景信息duplicate_scene-克隆现有场景delete_scene-删除场景(确认后)set_world_properties-配置世界/环境设置get_world_properties-获取当前世界设置clear_scene-删除所有对象(确认后)
📦 对象操作(9个工具)
create_object-创建几何图元和对象transform_object-移动、旋转和缩放对象delete_object-删除对象(确认后)duplicate_object-克隆对象join_objects-组合多个对象separate_objects-分割网格对象parent_object-建立亲子关系unparent_object-删除父关系get_object_info-获取详细的对象信息
🎨 物料管理(7个工具)
create_material-创建具有自定义特性的PBR材质assign_material-将材质应用于对象update_material_properties-修改材质设置delete_material-移除材料(确认后)duplicate_material-克隆材料get_material_info-获取材料详细信息list_materials-列出所有场景材质
🔧 网格操作(6个工具)
edit_mesh-执行网格编辑操作(细分、斜面等)apply_modifier-将修改器应用于对象add_modifier-添加修饰符而不应用remove_modifier-删除修饰符(确认后)get_mesh_info-获取详细的网格数据(顶点、面等)remesh_object-应用重网格算法
🎬 动画系统(6个工具)
create_animation-使用关键帧创建复杂的动画set_keyframes-设置单个变换关键帧play_animation-开始播放动画stop_animation-停止动画播放clear_animation-删除动画数据(确认后)get_animation_info-获取动画详细信息
🎨 渲染管道(5个工具)
render_scene-渲染当前场景set_render_settings-配置渲染引擎和质量get_render_settings-获取当前渲染配置preview_render-创建快速预览渲染get_render_preview-以图像形式获取渲染预览
📁 文件I/O操作(4个工具)
import_file-导入三维模型(OBJ、FBX、GLTF、STL等)export_file-将对象导出为各种格式save_scene-保存.blend文件load_scene-加载.blend文件(确认)
📷 相机和照明(4个工具)
create_camera-使用自定义设置创建相机set_active_camera-设置活动摄影机进行渲染setup_lighting-应用预定义的照明设置create_light-创建单个灯光(日光、聚光灯、点、面积)
🔧 实用工具(附加)
get_viewport_screenshot-捕获视口屏幕截图execute_blender_code-在Blender中执行自定义Python代码get_server_status-获取服务器和连接状态
🏗️ 建筑
核心组件
- FastMCP服务器 -基于FastMCP 2.0框架构建,用于生产就绪的MCP实施
- 搅拌机连接 -基于Socket的Blender插件通信
- 工具类别 -为不同的3D工作流程阶段组织工具集
- 错误处理 -三层模型的稳健错误处理
- 安全 -破坏性操作的输入验证和确认机制
技术栈
- FastMCP 2.0 -高性能MCP框架
- Python 3.10+ -带有类型提示的现代Python
- 派丹蒂克 -数据验证和序列化
- 套接字通信 -实时Blender集成
- Blender Python API(bpy) -直接访问Blender功能
📦 安装
先决条件
- 搅拌机3.0+ 安装了MCP插件
- Python 3.10+
- uv包管理器
快速开始
- 克隆或下载项目:
# The server is ready to run from the project directory
cd blender-mcp-comprehensive
- 安装依赖项:
# Dependencies will be installed automatically on first run
# or manually with:
uv sync
-
使用MCP插件启动Blender:
- 打开搅拌机
- 安装并启用Blender MCP插件
- 在插件面板中单击“连接到Claude”
-
运行MCP服务器:
# Using the startup script
sh run.sh
# Or directly with uv
uv run python -m src.blender_mcp_server.server
🔧 配置
环境变量
可以使用环境变量配置服务器:
# Blender connection settings
export BLENDER_HOST="localhost" # Default: localhost
export BLENDER_PORT="9876" # Default: 9876
MCP客户端配置
对于Claude Desktop集成,请添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"blender-comprehensive": {
"command": "sh",
"args": ["/path/to/blender-mcp-comprehensive/run.sh"]
}
}
}
🚀 用法
基本使用示例
创建简单场景
# Create a new scene
await client.call_tool("create_scene", {"name": "My Scene"})
# Add some objects
await client.call_tool("create_object", {
"object_type": "CUBE",
"name": "Building",
"location": [0, 0, 0]
})
await client.call_tool("create_object", {
"object_type": "SPHERE",
"name": "Planet",
"location": [5, 0, 2]
})
# Create and assign materials
await client.call_tool("create_material", {
"name": "Brick",
"base_color": [0.8, 0.3, 0.2],
"roughness": 0.8
})
await client.call_tool("assign_material", {
"object_name": "Building",
"material_name": "Brick"
})
创建动画
# Create orbital animation
keyframes = [
{"frame": 1, "location": [5, 0, 2], "interpolation": "BEZIER"},
{"frame": 100, "location": [0, 5, 2], "interpolation": "BEZIER"},
{"frame": 200, "location": [-5, 0, 2], "interpolation": "BEZIER"},
{"frame": 300, "location": [0, -5, 2], "interpolation": "BEZIER"},
{"frame": 400, "location": [5, 0, 2], "interpolation": "BEZIER"}
]
await client.call_tool("create_animation", {
"object_name": "Planet",
"animation_type": "LOCATION",
"keyframes": keyframes
})
渲染场景
# Configure render settings
await client.call_tool("set_render_settings", {
"settings": {
"engine": "CYCLES",
"resolution_x": 1920,
"resolution_y": 1080,
"samples": 128
}
})
# Create preview render
await client.call_tool("preview_render", {"resolution": 800})
高级用法
请参阅中的综合示例 /examples/usage_examples.py 这表明:
- 从场景创建到最终渲染的完整工作流程
- 高级材料创建和分配
- 复杂的网格操作和修改器
- 复杂的动画系统
- 文件I/O操作
- 摄像头和照明设置
🧪 测试
服务器包括全面的测试覆盖:
运行验证测试
# Run all tests
cd blender-mcp-comprehensive
python -m pytest tests/ -v
# Run specific test categories
python -m pytest tests/test_blender_mcp_server.py::TestBlenderMCPServer::test_scene_management_tools -v
python -m pytest tests/test_blender_mcp_server.py::TestBlenderMCPServer::test_object_operations_tools -v
测试类别
- 工具验证 -确保所有47+工具都正确暴露
- 参数验证 -测试参数处理和错误案例
- 连接测试 -验证Blender连接
- 集成测试 -测试完整的工作流程场景
- 错误处理 -测试故障模式和恢复
🔒 安全
安全特性
- 确认要求 -破坏性操作需要明确确认
- 输入验证 -所有参数在处理前都经过验证
- 误差边界 -全面的错误处理可防止崩溃
- 沙盒执行 -操作在受控环境中运行
- 连接验证 -操作前验证Blender连接
安全操作示例
# Destructive operations require confirmation
await client.call_tool("delete_object", {
"object_name": "ImportantObject",
"confirm": True # Required for deletion
})
await client.call_tool("clear_scene", {
"confirm": True # Required for clearing entire scene
})
🔧 故障排除
常见问题
连接问题
Error: "Failed to connect to Blender"
解决方案: 确保Blender在启用MCP插件的情况下运行,并单击“连接到Claude”。
超时错误
Error: "Timeout waiting for Blender response"
解决方案:
- 通过将复杂的操作分解为更小的步骤来简化请求
- 检查搅拌机的响应性
- 验证网络连接
权限错误
Error: "Permission denied" during file operations
解决方案:
- 检查文件路径和权限
- 确保输出目录存在
- 使用适当的用户权限运行
调试模式
启用详细日志记录:
export BLENDER_MCP_DEBUG=1
sh run.sh
📚 API 参考
工具类别
场景管理
- create_scene(名称) -创建新场景
- set_scene_properties(frame_start、frame_end、frame_current、单位) -配置场景
- get_scene_info() -获取场景信息
- 复制场景(源名、新名) -克隆场景
- delete_scene(scene_name,confirm=True) -删除场景
- set_world_properties(颜色、背景类型) -配置环境
- 获取世界属性() -获取世界设置
- clear_scene(确认=真) -清除所有对象
对象操作
- create_object(对象类型、名称、位置) -创建对象
- transform_object(对象名、位置、旋转、比例) -变换对象
- delete_object(对象名,确认=真) -删除对象
- 复制对象(源名、新名) -克隆对象
- join_objects(对象名称,joined_name) -组合对象
- separate_objects(对象名,模式) -拆分对象
- parent_object(child_name、parent_name、keep_transform) -设置层次结构
- unpant_object(child_name,keep_transform) -删除层次结构
- get_object_info(对象名) -获取对象详细信息
[源代码中提供了其他工具文档]
🤝 贡献
开发环境设置
- 克隆存储库
- 安装开发依赖项:
uv sync --dev
- 运行测试:
python -m pytest tests/ -v
- 代码格式:
black src/ tests/
ruff check src/ tests/
添加新工具
- 添加工具功能
@mcp.tool装饰器 - 包含带参数的综合文档字符串
- 添加参数验证和错误处理
- 为新工具编写测试
- 更新文档
代码的风格
- 遵循PEP 8风格指南
- 对所有参数和返回值使用类型提示
- 包含全面的文档字符串
- 编写新功能的单元测试
- 保持向后兼容性
📄 许可证
MIT许可证-有关详细信息,请参阅许可证文件。
🙏 致谢
- FastMCP团队 -对于优秀的MCP框架
- Blender基金会 -用于强大的3D创建套件
- MCP社区 -用于协议标准化
- Python生态系统 -用于强大的开发工具
📞 支持
- 文档: 包括全面的示例和API参考资料
- 测试: 用于验证的完整测试套件
- 问题: 通过GitHub问题报告错误和功能请求
- 社区: 加入MCP社区频道的讨论
内置❤️ MiniMax代理
通过全面的Blender集成实现AI驱动的3D创建。
