MCP Server for Blender integration - execute scripts, capture renders, and control scenes
This server has significant definition quality gaps. All 6 tools have basic schemas and descriptions, but descriptions are generic and lack LLM-optimization guidance. Parameter descriptions are minimal (e.g., 'Python code to execute' lacks constraints on size, timeout, or safety). No output schemas are documented, LLMs cannot predict what fields to expect from render() or get_scene_info(). The execute_script tool is particularly dangerous: it accepts arbitrary Python with no validation, no dry-run option, and no confirmation step despite being marked IRREVERSIBLE. Error handling is absent, no guidance on recovery, retryability, or actionable next steps. Parameter naming is inconsistent: blend_file appears optional in some tools but required in others (render, screenshot), creating ambiguity. No tool uses enums for constrained inputs (e.g., engine, view, object_type are free-form strings). Composition is weak: execute_script duplicates functionality of other tools, and there's no clear separation of concerns.
Execute arbitrary Python code in Blender. The script has full access to bpy module.
Get detailed information about a specific object
Get comprehensive scene information including cameras, lights, and render settings
List all objects in the current Blender scene with basic info
Render the current scene and return the image as base64
Capture a viewport screenshot (requires Blender to be running with UI)
execute_script accepts arbitrary Python code with no validation, timeout enforcement, or confirmation step. Marked IRREVERSIBLE but no dry-run or safety guardrails. LLM can accidentally destroy scenes or corrupt files.
No output schemas documented for any tool. LLMs cannot predict return structure (e.g., does render() return {image_base64, width, height} or {data, metadata}?). Forces LLMs to guess field names for downstream operations.
Parameter descriptions lack constraints. 'Python code to execute' doesn't specify max length, timeout, or allowed modules. 'Render width in pixels' lacks min/max bounds. Free-form strings (engine, view, object_type) should be enums.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Inconsistent parameter optionality. blend_file is optional in list_objects/get_scene_info but required in render/screenshot. No explanation of when it's needed or what happens if omitted. Ambiguity forces LLM to guess.
No error handling guidance. If Blender is not installed, if a .blend file doesn't exist, or if render times out, the LLM receives no actionable recovery path. No categorization of retryable vs fatal errors.