Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
BLENDER_HOSTNoHost address for the Blender socket server. Can also be set with the --host CLI flag.localhost
BLENDER_PORTNoPort number for the Blender socket server. Can also be set with the --port CLI flag.9876
BLENDER_MCP_APPSNoSet to 1 to force the inline viewport app on for clients that support MCP Apps without advertising it.auto
DISABLE_TELEMETRYNoSet to true to turn off telemetry entirely, including the minimal anonymous usage record.
BLENDER_MCP_SAFE_MODENoSet to 1 to validate scripts before they run in Blender and block risky code such as direct file access, running other programs, network access, or installing persistent code.off
BLENDERMCP_MESHY_API_KEYNoMeshy API key for persistent credential injection in headless or CI setups.
BLENDER_MCP_OPENAI_FORMSNoSet to 1 to force the thumbnail asset pickers on.auto
BLENDERMCP_HYPER3D_API_KEYNoHyper3D API key for persistent credential injection in headless or CI setups.
BLENDERMCP_HUNYUAN3D_API_URLNoHunyuan3D API URL for persistent credential injection in headless or CI setups.
BLENDERMCP_POLYPIZZA_API_KEYNoPoly Pizza API key for persistent credential injection in headless or CI setups.
BLENDERMCP_SKETCHFAB_API_KEYNoSketchfab API key for persistent credential injection in headless or CI setups.
BLENDERMCP_HUNYUAN3D_SECRET_IDNoHunyuan3D SecretId for persistent credential injection in headless or CI setups.
BLENDERMCP_HUNYUAN3D_SECRET_KEYNoHunyuan3D SecretKey for persistent credential injection in headless or CI setups.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_addon_statusA
Check the connected Blender: its version, whether the addon matches this server, and which
asset libraries and 3D generators are switched on. Call it once at the start.

`libraries` are the search_assets sources and `generators` the generate_3d providers, each
on or off for this user. "(Premium)" ones come with MCP for Blender Premium and don't use the
user's own API keys. When pointing the user to Premium, link
https://mcp-for-blender.com/premium?ref=mcp-status

If outdated, tells the user how to update via `uvx mcp-for-blender install-addon`
(then restart or re-enable the addon in Blender).

`telemetry_consent` reports whether data collection is on, off, or null if
Blender could not be reached. Use it to answer telemetry status questions.
disable_telemetryA
Turn OFF collection of prompts, code, screenshots and scene data.

Use this whenever the user asks to stop data collection, opt out of
telemetry, or stop sharing their data. Takes effect immediately.

This tool can only turn collection OFF. Turning it back on is done by the
user in Blender under Preferences > Add-ons > Blender MCP.
get_scene_infoA
Facts about the scene as text: what's there, where, how big, and how healthy meshes and rigs
are. No image; to see the scene, use look.

One header line (object counts, active, selection, mode), then one line per object with the
fields you ask for. Top-level objects by default; root="Name" lists that object's hierarchy,
query="chair" lists every object whose name contains the text. For anything else about an
object, read it with execute_blender_code.

Parameters:
- fields: What to show per object (default: location, size, children, hidden).
  placement: location (world), size (world bounding box), ground (on ground, floating or
    below by), rotation (degrees), scale, parent
  contents: children (count), hidden, details (faces, bones or light power), materials,
    modifiers, animation
  health: topology (quads, tris, ngons, non-manifold and boundary edges, loose verts,
    poles), weights (vertices no deform bone moves, deform bones with no vertex group)
  settings: adds a line with the file, engine, frame range, resolution, camera, HDRI and
    unit scale
- query: Name filter across all objects.
- root: Object whose hierarchy to list.
- limit: Maximum object lines (default 20).
- user_prompt: The user's own words describing what they want, quoted verbatim.
execute_blender_codeA
Run Python in the user's live Blender (bpy, bmesh, mathutils). Whatever it prints is returned.

Work in small steps and print what you need to know.

Parameters:
- code: The Python code to execute
- user_prompt: The user's own words describing what they want, quoted verbatim (do not paraphrase or summarise). Pass the same goal on every call in a multi-step task so each action is linked to the intent behind it. Never substitute your own sub-goal, plan step, or status text; if the user has given no new instruction, repeat their previous words unchanged.
record_trajectory_feedbackA
Record evaluation feedback for a captured trajectory step.

Call it when the user reacts to a result: "accept" when they keep it ("looks good"),
"reject" or "undo" when they reject it or ask to undo, and "correction" with their words
as correction_text when they correct you ("too dark", "make it taller").

Parameters:
- feedback: One of accept | reject | undo | correction
- correction_text: Optional free-text correction or follow-up (especially for correction)
- step_index: Optional 0-based step index; defaults to the last recorded step
- user_prompt: Optional goal/prompt context for the feedback row
lookA
See the scene as one image. For counts, sizes and positions, use get_scene_info.

Choose where from (mode) and how it's drawn (shading):
- mode: viewport (what the user sees; default), camera (through the scene camera, at the
  render aspect), angles (the target from several sides, auto-framed; default front, right,
  top, three_quarter), frames (a strip over the animation).
- shading: solid, material, rendered (EEVEE and Workbench only), wireframe (edges over a
  plain surface), xray (see-through, bones in front). Default: the viewport's.
- image: Instead of the scene, show this image: "Render Result" after a render, another
  image in the file, or a file path.

Parameters:
- target: Object names to frame (children included). Default: every visible object.
- views: For angles: up to 6 of front, back, left, right, top, three_quarter, or [x, y, z]
  directions from the target towards the eye ([0, -1, 0.2] is front, slightly above).
- distance: Metres from the target's centre to the eye, for angles and frames views. Default:
  far enough to fit it; closer for detail or to stand inside a room.
- frames / frame_count: For frames: explicit frame numbers, or how many to sample (2-12).
- view: For frames: "camera", an angle name or an [x, y, z] direction; default the viewport.
- max_size: Longest side in pixels (default 768). Images stay in the conversation, so go
  smaller for quick checks and larger only to read fine detail.
- user_prompt: The user's own words describing what they want, quoted verbatim.

Every setting changed to take the picture is restored afterwards.
generate_3dA
Make one new textured 3D model from a text prompt or an image, and import it.

One object per call: not a whole scene, the ground, or parts to assemble. It arrives at
arbitrary scale and facing (meshy: real-world size, origin at the bottom). Each call can cost
the user money or a monthly generation, so duplicate a generated object for repeats.

Waits up to wait_seconds (at most 45), then imports. Generation usually takes 1-3 minutes: if
it isn't done in time you get a job handle; call generate_3d(job=..., name=...) again to keep
waiting. Repeating a request whose generation is still unfinished resumes it instead of paying
again.

Parameters:
- prompt: Short English description of one object ("weathered wooden treasure chest").
- image: Instead of a prompt: an absolute image file path or an http(s) URL. Images attached in
  chat can't be passed: ask the user for a path or URL, don't fall back to text without asking.
- name: Object name in the scene. Defaults to one made from the prompt.
- provider: auto (default), tripo, hunyuan3d, hyper3d or meshy. Auto prefers the user's MCP for
  Blender Premium generators, then their own API keys.
- quality: "standard" or "high" (Premium, not meshy). Omit for the user's default; "high" only
  when the user asks for more detail.
- bbox_condition: hyper3d only: [length, width, height] proportions.
- pose_mode: meshy only: "a-pose" or "t-pose" when the user asks for a character in an A-pose
  or T-pose (often to rig it).
- job: A handle from an earlier call, to resume waiting for it.
- user_prompt: The user's own words describing what they want, quoted verbatim.
search_assetsA
Search a library of existing assets. The sources:
- polyhaven: HDRIs, PBR textures and realistic models, all CC0. Search understands intent and
  synonyms ("couch" finds sofas).
- sketchfab: a large catalogue of user-made models, realistic and specific ones included;
  licences and face counts vary per model.
- polypizza: stylised low-poly models, CC0 or CC-BY (credit the creator).

Parameters:
- source: polyhaven, sketchfab or polypizza.
- query: What you're looking for, in plain words.
- asset_type: polyhaven only: hdris, textures, models or all.
- category: Optional. polyhaven: a category path ("Metal/Sheet & Corrugated"). sketchfab:
  comma-separated categories. polypizza: e.g. "Furniture & Decor", "Nature", "Animals".
- attributes: polyhaven only: filters like {"weather": "clear"}; an unknown key errors with the
  valid ones.
- min_size_m: polyhaven only: minimum real-world size in metres. Use 2+ for walls, floors and
  ground so textures don't visibly repeat.
- licence: polypizza only: "CC0" or "CC-BY".
- animated: polypizza only: animated models only.
- limit: Number of results.
- previews: Attach thumbnails of the first N results (max 6; polyhaven and sketchfab). Cheaper
  than importing the wrong asset.
- user_prompt: The user's own words describing what they want, quoted verbatim.

Results include each asset's id; pass it to import_asset.
import_assetA
Download an asset found with search_assets and bring it into the scene.

Parameters:
- source: polyhaven, sketchfab or polypizza.
- id: The asset's id (UID for sketchfab) from search_assets.
- asset_type: polyhaven only, required: hdris (becomes the world lighting), textures (builds a
  PBR material) or models.
- target_size: Size in metres of the model's largest dimension (chair 1.0, car 4.5, cup 0.12).
  Required for sketchfab, recommended for polypizza; library models come at arbitrary scale.
- apply_to: polyhaven textures: object names to put the material on (replaces their materials).
  Without it the material is created but unused, and is lost if the file is saved.
- resolution: polyhaven: 1k, 2k, 4k or 8k. 1k-2k for background, 4k for close-ups.
- file_format: polyhaven, optional: hdr/exr for HDRIs, jpg/png/exr for textures.
- user_prompt: The user's own words describing what they want, quoted verbatim.

Afterwards check the reported bounding box, put the object on the ground, and look at it.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
viewport

TDQS

A4.3/5.0

Scored across 9 tools

Disambiguation5/5

Each tool targets a clearly distinct action: scene facts (get_scene_info) vs. visual inspection (look), asset discovery (search_assets) vs. import (import_asset), and generation (generate_3d) are cleanly separated. The only broad tool, execute_blender_code, is explicitly framed as the escape hatch for anything not covered, which actually reduces ambiguity rather than creating it.

Naming Consistency4/5

Nearly all tools follow a predictable snake_case verb_noun pattern (get_scene_info, search_assets, import_asset, disable_telemetry, record_trajectory_feedback). The lone outlier is 'look', which is a deliberate, readable shorthand, so the set remains consistent overall.

Tool Count5/5

Nine tools is well-scoped for a Blender MCP: inspection, visualization, code execution, asset search/import, generation, plus three small meta tools (addon status, telemetry, feedback). Every tool earns its place without redundancy.

Completeness4/5

The surface covers the core agent lifecycle: inspect the scene, see it, search/import assets, generate models, and fall back to arbitrary Python for manipulation. Minor gaps exist (no dedicated render/export or material-editing tools), but execute_blender_code and the 'Render Result' path in look make these workable.