Skip to content
BlenderMCP

Prompts

Fifteen prompts. Six are starters for the Chat panel (one-click suggestions for a new chat). Two are dispatch helpers (encode the message conventions so LLMs don’t have to remember them). Seven are skeletal workflow guides (return reusable template text: entry points, not full bpy reference). All are blender_-prefixed.

Prompts are pure templates. None of them call the bus or dispatch anything; the LLM consumes the returned text and decides what to do.

Short requests a new user can try with one click. The add-on’s Chat panel lists them in a new, empty chat; clicking one fills the message box without sending it. Any other MCP client sees them as ordinary prompts, for example in a slash-command picker.

None take arguments. prompts/get returns one user message whose text is exactly what goes into the message box. The title is the button label.

| Name | Title | Group | Text | |---|---|---|---| | blender_starter_b_wave | Make B wave | b_clip | Make B. Clip wave hello with his front handle: rock the handle.front bone of his rig (the B. Clip armature) between -10 and 15 degrees around its Y axis, a few times over about two seconds. I’ll press Space to play it. | | blender_starter_b_top_hat | Give B a top hat | b_clip | Give B. Clip a black top hat that sits on top of him, between his handles, and parent it to the body bone of his rig so it moves with him. | | blender_starter_b_desk | Put B on a desk | b_clip | Build a simple wooden desk and stand B. Clip on top of it, near the front edge, still facing the camera. Move his rig so all of him goes. | | blender_starter_describe_scene | Describe this scene | general | Describe what’s in this scene: the objects, how they’re arranged, and how it’s lit. | | blender_starter_table_chair | Add a table and chair | general | Add a simple wooden table with a chair tucked under it, both real-world size and resting on the floor. | | blender_starter_light_scene | Light this scene nicely | general | Light this scene nicely with a soft three-point setup aimed at the main subject, as seen from the camera. |

Clients find starters by metadata, not by name. Each starter’s entry in prompts/list carries:

{
"name": "blender_starter_b_wave",
"title": "Make B wave",
"description": "Animate B. Clip waving hello by keying his rig's handle.front bone.",
"arguments": [],
"_meta": {
"blender_mcp": {"starter": true, "group": "b_clip", "order": 1},
"fastmcp": {"tags": []}
}
}

| Key | Meaning | |---|---| | starter | true marks a starter. Anything else, or no blender_mcp key, is an ordinary prompt. | | group | When it fits. b_clip for the B. Clip template or a scene with B in it; general for any scene. | | order | Sort key for the buttons, lowest first. |

FastMCP adds its own fastmcp key beside ours; clients should ignore keys they don’t know. The add-on shows the b_clip group when the active application template is B_Clip or the scene has an object named B. Clip (or Clip_Rig), and general otherwise, falling back to general if a server has no b_clip starters. A server without starters gets no buttons and no error.

Names are stable. To change the set, add or edit entries in src/blender_mcp/starter_prompts.py; keep titles short enough for a sidebar button.

Build a properly-formed blender_send_message call for executing Python in Blender via a job_dispatch payload.

blender_dispatch_script(
target: str,
script: str,
priority: str = "info",
description: str | None = None,
) -> list[PromptMessage]

Target syntax:

| Prefix | Routing | Example | |---|---|---| | uuid:<client-uuid> | direct | uuid:blender-abc123 | | group:<group-id> | group | group:render-cluster | | type:<client_type> | type_filter | type:blender | | broadcast | broadcast | broadcast |

Unknown prefixes render inline as <invalid target spec: ...> so the LLM can see the error rather than silently dropping the dispatch.

Returns a single user-role text message templating the blender_send_message call (target fields, priority, full payload shape with message_type: job_dispatch, job_id, script, optional description).

Emit the canonical MCP call shape for any of the 24 dispatch tools.

blender_dispatch_recipe(command: str) -> list[PromptMessage]

Inlines a per-command kwargs template + the standard return-shape doc so the LLM can call any dispatch tool without first running list_tools and parsing schema. Pass any of the 24 command names (e.g. "get_scene_info", "download_polyhaven_asset").

These return short reusable templates: patterns and decision trees, not exhaustive bpy reference. Use them as entry points for the LLM to plan an approach before committing to specific tool calls.

blender_script_writing_assistant(goal: str) -> list[PromptMessage]

bpy patterns relevant to goal: imports, context safety, the bpy.ops vs bpy.data vs bmesh decision tree, common operator vs data-API tradeoffs.

blender_modeling_workflow(object_type: str) -> list[PromptMessage]

Operator vs modifier vs bmesh vs Geometry Nodes decision tree for the named object type.

blender_rendering_setup(engine: str = "cycles") -> list[PromptMessage]

Setup checklist for the named render engine (cycles or eevee): engine selection, sampling, resolution, camera, world setup.

blender_material_creation(material_kind: str) -> list[PromptMessage]

Principled-BSDF skeleton with inline customization points keyed to material_kind (metal, plastic, glass, fabric, etc.).

blender_animation_basics(animation_type: str) -> list[PromptMessage]

Keyframes vs drivers vs constraints guide for the requested animation type.

blender_debug_assistant(error_text: str) -> list[PromptMessage]

Diagnose a Blender traceback. Covers common patterns: context errors, KeyError, AttributeError, pickle/segfault, blank result, mode-switch failures.

blender_asset_creation_strategy(asset_kind: str) -> list[PromptMessage]

Pipeline picker: Hyper3D vs PolyHaven vs Sketchfab vs manual modeling, and when each is appropriate based on the asset kind requested.

Tools force the LLM through a wrapper that hides the underlying convention. Prompts surface the convention so the LLM can call the next tool (blender_send_message, blender_execute_code, blender_download_polyhaven_asset) directly with full visibility over routing, priority, and payload shape. Think of prompts as documentation the model can ask for inline.