MCP Server for Blender 3D integration with Antigravity IDE. Provides tools for 3D modeling, texturing, rendering, and mesh optimization.
The server has 17 tools with varied quality. Many tools have brief, functional descriptions but lack the depth and parameter-level documentation expected for production use. Tool names are generally clear (verb_noun pattern mostly followed), but several tools suffer from incomplete parameter schemas or missing input validation guidance. The most critical issue is that 6 tools (prim, tex, mat, proc, sculpt, run) have NO visible input schemas in the provided code, only brief descriptions of parameters in prose. Error handling is minimal, no recovery guidance, no actionable error messages documented. The server does contain some excellent patterns (pipeline, parse, blueprint, preview tools show thoughtful design), but inconsistent execution across the toolset drags the overall score to fair/poor range. Estimated average per-tool score: ~52.
Bake textures for Unity/Unreal. Types: DIFFUSE/NORMAL/AO/ROUGHNESS/METALLIC/COMBINED/EMIT/SHADOW. Requires UV map.
Get STRUCTURAL BREAKDOWN for complex models. Returns component list with exact mesh types, sizes, positions, and materials. Types: BUILDING, WEAPON, VEHICLE, ROBOT Styles: CYBERPUNK, MEDIEVAL, SCIFI, MODERN, FANTASY Detail: LOW, MEDIUM, HIGH Returns: components list + generated Python code to execute via run(). ALWAYS use this for complex models instead of guessing mesh structure!
Export model to FBX/GLB/GLTF/OBJ format.
Apply texture from path/URL. WORKFLOW: 1) Use generate_image to create texture 2) Use gentex with artifacts path. Params: n=object, src=path/URL, uv=AUTO/BOX/SPHERE/CYLINDER, tile=[x,y]
Apply material preset (METALLIC/PLASTIC/GLASS/WOOD/STONE/FABRIC/EMISSIVE/MATTE) with color.
Reduce polygon count. Params: object_name, target_ratio (0.1-1.0).
6 tools lack visible input schemas: prim, tex, mat, proc, sculpt, run. Code shows only prose parameter descriptions in comments/docstrings, no registered Zod schemas in server.ts.
Parameter descriptions are uniformly terse (10-30 chars). Production baseline is 72 chars avg. Examples: 'Offset' (6 chars), 'Object' (6 chars), 'Object name' (11 chars). Lacks actionable format/constraint guidance for LLMs. E.g., 'Max objects' should be 'Max objects to return per page (1-100; default 20)'.
No error handling or recovery guidance in any tool description. When tools fail (e.g., 'object not found', 'invalid format', 'export failed'), there is no documented error response or next steps for the LLM. Violates pattern:recovery-guide.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 43 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 43 | - | v1 |
Analyze user prompt and extract structured information. Returns: - objects: detected objects to create (type, style, size, color) - materials: detected material presets (METAL, GLASS, WOOD, etc) - textures: detected texture keywords (mossy, rusty, wooden, etc) - optimize: whether optimization requested - bake: baking settings (types, resolution) - export: export settings (format, engine) - plan: suggested execution steps Use this to understand complex prompts before executing.
IMPORTANT: Use this FIRST for complex tasks! Creates step-by-step workflow. Actions: start(task="description"), next(id="pipe_xxx"), back, status, cancel. Returns: current step + tool to use + instruction. ALWAYS call next after completing each step. Example: pipe({action:"start",task:"rock with texture and bake"}) → tells you step 1, then call next to proceed.
Quick viewport render for AI to SEE the scene. Returns image path. Angles: FRONT, BACK, LEFT, RIGHT, TOP, PERSPECTIVE After calling, use Antigravity's view_file on the returned path to actually see the image. Use this to verify models and decide if revisions are needed.
Create 3D primitive (CUBE/SPHERE/CYLINDER/CONE/PLANE/TORUS/MONKEY/CIRCLE/GRID).
Generate procedural TREE/ROCK/TERRAIN/BUILDING with style (LOW_POLY/REALISTIC/STYLIZED).
Render scene to image. Angles: FRONT/TOP/SIDE/ISOMETRIC/CURRENT.
IMPORTANT: Execute Python code DIRECTLY in Blender. DO NOT create separate .py files! This tool runs the script immediately in Blender's Python environment. L LIBRARY AVAILABLE (token-efficient helpers): Shapes: L.cube(l,s,n) L.sphere(l,r,n) L.cyl(l,r,h,n) L.cone(l,r,h,n) L.plane(l,s,n) Props: L.table(l,s,n) L.chair(l,s,n) L.shelf(l,s,shelves,n) L.cauldron(l,s,n) Scene: L.room(size,l,n) L.tree(l,s,style,n) L.rock(l,s,n) L.clear() Material: L.mat(obj,preset,c) presets: MATTE/METAL/GLASS/PLASTIC/WOOD/GLOW Transform: L.move(obj,l) L.rot(obj,r) L.scale(obj,s) L.dup(obj,l) ALSO AVAILABLE: bpy, math, random EXAMPLE: run({s:"c=L.cube([0,0,0],2,'MyCube');L.mat(c,'METAL',[0.8,0.2,0.2]);result='Created red metal cube'"})
List objects in Blender scene with pagination.
Modify mesh geometry with AI-assisted operations. Operations: smooth, horn/spike, nose/snout, eye socket, stretch, pinch waist, flatten, bevel, noise Intensity: subtle, normal, extreme Example: sculpt({object_name:"Sphere", operation:"add horns and make taller", intensity:"normal"})
Check Blender connection. Returns version and status.
Apply image texture to object. Auto-generates UVs if needed.
'run' tool accepts arbitrary Python code and returns user-defined result as free-text string. Violates pattern:response-shaper. No structured output schema documented. LLM must parse unstructured responses and has no way to predict output fields. High risk of hallucination and context waste.
No documented rate limits, permission checks, or audit trail logging despite tools performing destructive operations (create, modify, bake, export). Violates pattern:permission-gate and pattern:audit-trail. No scope declarations (e.g., 'requires: write:blender').
Tool names use abbreviations ('prim', 'tex', 'mat', 'proc', 'opt', 'pipe') that reduce clarity. LLMs perform best with full names (create_primitive, apply_texture, set_material, generate_procedural, optimize_mesh, pipeline). Abbreviations increase selection ambiguity.
No documented pagination or result limits for tools that return collections (scene, bake output, blueprint components). Violates pattern:paginated-result. Risk: large result sets exhaust context window and degrade LLM reasoning.
No documented idempotency or confirmation pattern for irreversible operations (export, bake, delete implicit in opt). Agents may retry and cause duplicate exports/bakes. Violates pattern:idempotent-operation and pattern:confirmation-request.
'run' tool is named generically. Does not convey 'execute python code in blender's context'. Should be 'execute_blender_python' or 'run_blender_code'. Current name is ambiguous (could be 'run pipeline', 'run render', etc.).
No documented output schemas for most tools. E.g., 'scene' lists objects, what fields does each object have? 'render' returns an image, what is the format/path schema? 'parse' returns 'plan: suggested execution steps', what is the structure? Violates pattern:tool requirement that output be documented.