搅拌机MCP HTTP API服务器
一个独立的HTTP API服务器,通过模型上下文协议(MCP)为与Blender交互提供REST端点。
快速开始
1.安装依赖项
cd mcp
npm install2.配置环境
这 .env 文件已配置为:
PORT=5000
BLENDER_HOST=localhost
BLENDER_PORT=98763.启动服务器
npm start或者用于自动重新加载的开发:
npm run dev服务器信息
- 基本URL:
http://localhost:5000 - 协议:带有JSON响应的REST API
- MCP连接:通过stdio连接到搅拌机MCP(uvx搅拌机MCP)
API终点
健康与状态
GET/健康
检查服务器是否正在运行并已连接到MCP。
答复:
{
"success": true,
"connected": true,
"timestamp": "2025-11-25T10:30:00.000Z"
}GET/api/工具
列出所有可用的MCP工具。
答复:
{
"success": true,
"data": {
"tools": [
{
"name": "mcp_blender-mcp_execute_blender_code",
"description": "Execute arbitrary Python code in Blender",
"inputSchema": {...}
}
]
}
}GET/api/状态
获取浑源3D、PolyHaven和Sketchfab的集成状态。
答复:
{
"success": true,
"data": {
"hunyuan3d": {...},
"polyhaven": {...},
"sketchfab": {...}
}
}______________________________________________________________________
搅拌机控制
POST/api/混合器/执行
在Blender中执行Python代码。
请求正文:
{
"code": "import bpy\nbpy.ops.mesh.primitive_cube_add(location=(0, 0, 0))"
}答复:
{
"success": true,
"data": {
"content": [
{
"type": "text",
"text": "Execution successful"
}
]
}
}示例(PowerShell):
$body = @{
code = "import bpy`nbpy.ops.mesh.primitive_cube_add(location=(2, 0, 0))"
} | ConvertTo-Json
Invoke-RestMethod -Uri "http://localhost:5000/api/blender/execute" -Method Post -Body $body -ContentType "application/json"GET/api/blender/截图
捕获Blender视口的屏幕截图。
查询参数:
maxSize(可选):最大尺寸(像素)(默认值:800)
例子:
Invoke-RestMethod -Uri "http://localhost:5000/api/blender/screenshot?maxSize=1024"GET/api/mixer/scene
获取有关当前Blender场景的信息。
答复:
{
"success": true,
"data": {
"content": [
{
"type": "text",
"text": "Scene info: objects: 3, cameras: 1..."
}
]
}
}例子:
Invoke-RestMethod -Uri "http://localhost:5000/api/blender/scene"POST/api/混合器/纹理
将纹理应用于对象。
请求正文:
{
"objectName": "Cube",
"textureId": "wood_floor_01"
}示例(PowerShell):
$body = @{
objectName = "Cube"
textureId = "wood_floor_01"
} | ConvertTo-Json
Invoke-RestMethod -Uri "http://localhost:5000/api/blender/texture" -Method Post -Body $body -ContentType "application/json"______________________________________________________________________
Sketchfab集成
GET/api/sketchfab/搜索
在Sketchfab上搜索3D模型。
查询参数:
query(必填):搜索词count(可选):结果数(默认值:20)categories(可选):逗号分隔的类别downloadable(可选):仅可下载型号(默认值:true)
例子:
Invoke-RestMethod -Uri "http://localhost:5000/api/sketchfab/search?query=car&count=10"POST/api/sketchfab/下载
下载Sketchfab模型并将其导入Blender。
请求正文:
{
"uid": "model-uid-from-search"
}示例(PowerShell):
$body = @{
uid = "abc123xyz"
} | ConvertTo-Json
Invoke-RestMethod -Uri "http://localhost:5000/api/sketchfab/download" -Method Post -Body $body -ContentType "application/json"______________________________________________________________________
3D生成
POST/api/generate/hhyper3d
使用Hyper3D AI生成3D模型。
请求正文:
{
"textPrompt": "a red sports car",
"bboxCondition": [2, 1, 1]
}textPrompt(必填):要生成的模型的描述bboxCondition(可选):尺寸比\[长、宽、高\]
示例(PowerShell):
$body = @{
textPrompt = "a medieval castle"
bboxCondition = @(2, 2, 3)
} | ConvertTo-Json
Invoke-RestMethod -Uri "http://localhost:5000/api/generate/hyper3d" -Method Post -Body $body -ContentType "application/json"______________________________________________________________________
通用工具调用
POST/api/工具/调用
使用自定义参数按名称调用任何MCP工具。
请求正文:
{
"toolName": "mcp_blender-mcp_execute_blender_code",
"args": {
"code": "import bpy\nprint(bpy.context.scene.name)"
}
}示例(PowerShell):
$body = @{
toolName = "mcp_blender-mcp_get_scene_info"
args = @{}
} | ConvertTo-Json
Invoke-RestMethod -Uri "http://localhost:5000/api/tool/call" -Method Post -Body $body -ContentType "application/json"______________________________________________________________________
完整使用示例
以下是一个完整的工作流程示例:
# 1. Check server health
Invoke-RestMethod -Uri "http://localhost:5000/health"
# 2. List available tools
Invoke-RestMethod -Uri "http://localhost:5000/api/tools"
# 3. Create a cube in Blender
$createCube = @{
code = @"
import bpy
bpy.ops.mesh.primitive_cube_add(size=2, location=(0, 0, 0))
bpy.context.active_object.name = 'MyCube'
"@
} | ConvertTo-Json
Invoke-RestMethod -Uri "http://localhost:5000/api/blender/execute" -Method Post -Body $createCube -ContentType "application/json"
# 4. Get scene information
Invoke-RestMethod -Uri "http://localhost:5000/api/blender/scene"
# 5. Take a screenshot
Invoke-RestMethod -Uri "http://localhost:5000/api/blender/screenshot?maxSize=800"
# 6. Search for models
Invoke-RestMethod -Uri "http://localhost:5000/api/sketchfab/search?query=dragon&count=5"
# 7. Generate AI model
$generateModel = @{
textPrompt = "a futuristic spaceship"
} | ConvertTo-Json
Invoke-RestMethod -Uri "http://localhost:5000/api/generate/hyper3d" -Method Post -Body $generateModel -ContentType "application/json"错误处理
所有端点都返回一致的错误响应:
{
"success": false,
"error": "Error message here"
}常见HTTP状态代码:
200:成功400:请求错误(缺少参数)500:服务器错误503:服务不可用(MCP未连接)
建筑
[Client] → HTTP Request → [Express Server (server.js)]
↓
[MCP Client (mcpClient.js)]
↓
stdio (JSON-RPC)
↓
[uvx blender-mcp]
↓
[Blender via port 9876]故障排除
服务器无法启动
- 确保
uvx已安装:pip install uv - 检查Blender是否在端口9876上启用MCP的情况下运行
- 验证
.env文件正确BLENDER_HOST和BLENDER_PORT
MCP连接失败
- 确保Blender正在运行
- 检查Blender MCP插件是否已启用
- 验证端口9876未被防火墙阻止
命令未执行
- 检查Blender控制台是否存在Python错误
- 验证Python代码语法是否正确
- 确保场景中存在引用的对象/资源
发展
服务器使用:
- 快速:HTTP服务器框架
- 儿童工艺:用于生成MCP服务器进程
- JSON-RPC 2.0:MCP通信协议
要添加新端点,请执行以下操作:
- 在中添加路由处理程序
server.js - 在中添加相应的方法
mcpClient.js如有需要 - 更新此文档
许可证
国际学生委员会
