Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
BLENDER_EXENoFull path to the Blender executable.auto-detected
BLENDER_MCP_HOSTNoBridge address.127.0.0.1
BLENDER_MCP_PORTNoBridge port.9876
BLENDER_MCP_ROOTNoBase for relative file paths.home directory
BLENDER_MCP_TIMEOUTNoPer-command timeout in seconds.300
BLENDER_MCP_AUTOLAUNCHNoSet to 1 to start Blender if none is running.
BLENDER_MCP_ALLOWED_ROOTSNoSemicolon-separated roots; import/export/save outside them is refused.

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
blender_setupA

Install the bundled Blender addon and enable it, so the bridge can start.

Call this ONCE on a machine where blender_status reports not connected. It copies the addon into Blender's user addons directory and then lets Blender itself enable it and save the preference, leaving any other add-ons the user has enabled untouched.

Afterwards the user must restart Blender (or launch it if it is closed) - the bridge starts automatically with the addon.

blender_statusA

Check whether the Blender bridge is reachable and what it is running.

Start with this. If connected is false, either the addon is not installed yet (call blender_setup once) or Blender is not running. Set BLENDER_MCP_AUTOLAUNCH=1 to let the server start Blender itself.

blender_get_sceneA

Get an overview of the open scene: objects, collections, materials, meshes, images, render settings, frame range and the active object.

Args: detailed: Include per-object modifiers, constraints, light and camera data.

blender_execute_pythonA

Execute arbitrary Python inside Blender and return stdout, the expression value, or the traceback.

This is the general escape hatch: use it for anything the dedicated tools do not cover (node graphs, drivers, custom rigging, numpy-style math, bmesh work). Available names: bpy, bmesh, math, mathutils (Vector/Euler/Matrix/ Quaternion), json, os, sys, random, time, view3d (a context manager that injects a 3D viewport area so bpy.ops viewport calls work).

Example: python import bmesh bm = bmesh.new() bmesh.ops.create_cube(bm, size=2) me = bpy.data.meshes.new("C") bm.to_mesh(me) ob = bpy.data.objects.new("C", me) bpy.context.scene.collection.objects.link(ob) Result(ob.name)

blender_list_operatorsA

Discover the bpy.ops operators available in this Blender build, with their descriptions and (optionally) their exact property names, types, enum options and defaults.

Use this to find the right operator before calling blender_run_operator.

blender_run_operatorB

Run any bpy.ops operator by name with automatic 3D viewport context fallback and validation of the property names.

Call blender_list_operators first if you are unsure of the exact id or property names.

blender_search_apiA

Search Blender's operator namespace by keyword. Faster than blender_list_operators when you only know part of a name.

blender_list_objectsA

List objects in the scene with transforms, dimensions, materials and modifiers. Supports filtering and offset/limit pagination.

Args: collection: Only objects in this collection (includes children). type: Comma separated Blender types, e.g. 'MESH,LIGHT,CAMERA'. name_pattern: Regular expression matched against the object name. parent: A parent object name, or 'none' for top-level objects. detailed: Also include world matrix, shape keys and vertex groups.

blender_get_objectA

Get everything known about one object: transforms, hierarchy, materials, modifiers, constraints, mesh statistics, custom properties and world matrix.

blender_add_primitiveA

Add a mesh primitive to the scene and return its full description.

Example: a smooth torus at the origin -> type='torus', parameters={'major_radius': 1, 'minor_radius': 0.25, 'major_segments': 48, 'minor_segments': 16}, shade_smooth=True

blender_create_meshA

Create a mesh object from explicit vertex and face data.

faces entries are zero-based vertex index loops; a face with 3 indices is a triangle, 4 a quad.

blender_duplicate_objectsB

Duplicate objects together with their mesh data (an independent copy).

blender_delete_objectsA

Permanently delete objects from the .blend file. This cannot be undone from the MCP server - save first if the scene matters.

blender_rename_objectA

Rename an object and, by default, its mesh/light/camera data block too.

blender_set_transformA

Set or offset the transform of one or more objects.

With relative=True the values are added/multiplied onto the current transform instead of replacing it.

blender_apply_transformA

Bake transforms into mesh data. Use this before exporting or when a modifier must see real geometry rather than an object transform.

blender_select_objectsA

Set the selection and active object. Many operators operate on the selection, so this is how you target them.

blender_join_objectsB

Join several mesh objects into the first one, merging their geometry.

blender_parent_objectsC

Parent one object to another (optionally keeping its world position).

blender_shade_smoothA

Set smooth or flat shading on meshes. Pass auto_smooth_angle (for example 30) to keep sharp creases on a smooth surface.

blender_edit_meshA

Edit mesh topology: extrude, bevel, inset, subdivide, dissolve, delete, merge, recalculate normals and more.

Operates on the current edit-mode selection inside the object unless region='all'. Vertex/edge/face counts before and after are returned.

blender_add_modifierA

Add a modifier to an object. Non-destructive: use blender_apply_modifier or leave it in place for a live, tweakable result.

blender_apply_modifierB

Bake a modifier's result into the mesh, making it permanent.

blender_create_collectionB

Create a collection, optionally nested under parent and optionally moving existing objects into it.

blender_assign_to_collectionA

Add objects to an collection that already exists in the scene.

Use blender_create_collection first if the collection is missing. Objects stay linked to their other collections, so this adds a reference rather than moving them.

blender_list_materialsA

List all materials. With detailed=True also returns the node types and the current Principled BSDF input values of each material.

blender_create_materialC

Create a Principled BSDF material and optionally assign it to objects.

Example - a glowing red metal -> name='NeonRed', base_color=[0.8, 0.02, 0.02, 1], metallic=0.9, roughness=0.25, emission_color=[1,0,0,1], emission_strength=5

blender_assign_materialA

Assign an existing material to objects, replacing their current slots.

blender_set_material_nodeA

Add a procedural or image texture node to a material and wire it into the Principled BSDF. This is the fast path to interesting surfaces without hand-building node trees.

Example - marbled stone -> material='Stone', node_type='noise', properties={'Scale': 6, 'Detail': 8, 'Roughness': 0.6}, input='Base Color'

blender_load_image_textureB

Load an image from disk (including .hdr/.exr) and plug it into a material as Base Color. Creates the material if you do not name one.

blender_add_cameraC

Add a camera. lens in millimetres (50 = normal, 24 = wide, 85 = portrait) or fov_degrees as an alternative. Usually also pass point_at so it is actually aimed at something.

blender_look_atA

Aim any object along its local -Z axis at a target (its local +Y becomes 'up'). Works for cameras and spot lights.

blender_set_active_cameraA

Choose which camera the render uses. Call this before blender_render or blender_capture_viewport with mode='camera' if the scene has several.

blender_add_lightC

Add a light. Typical energies: SUN 2-5, AREA 100-1000 W, POINT 50-500 W, SPOT 100-1000 W. size softens shadows on AREA/POINT lights.

blender_set_worldA

Set the world/environment: flat colour, a neutral studio grey, a physical sky, an HDRI image, or a vertical gradient. The world is what you see through the background and what ambient light comes from.

blender_set_render_settingsC

Configure the renderer: engine, resolution, samples, colour management, transparency, motion blur, depth of field and output settings.

blender_capture_viewportB

Take a picture of what Blender is showing and return it as an image.

This is how you check your work - call it after a change and look at the result. 'viewport' is nearly instant, 'render' is the real deal.

blender_renderA

Render with the current engine and return the resulting image.

Cycles at 1080p can take minutes; check samples and resolution with blender_get_scene first, and consider the 'eevee' engine for iteration.

blender_save_blendA

Save the scene to a .blend file. Pass a path for Save As, omit it to save in place. Unwritten work is lost if Blender crashes, so save as you go.

blender_open_blendA

Open a .blend file, discarding the current scene. Save first.

blender_new_fileA

Start a new empty scene, discarding everything currently open.

blender_import_modelB

Import a 3D model from disk: .glb/.gltf, .fbx, .obj, .stl, .ply, .usd, .abc, .dae or .blend. Returns the names of the objects that were created.

blender_export_modelB

Export the scene to a model file: .glb, .gltf, .fbx, .obj, .stl, .ply, .usd, .abc or .blend.

blender_set_frameC

Jump to a frame and/or set the animation range and playback speed.

blender_insert_keyframeA

Insert keyframes on the current or given frame.

Defaults to keyframing the location of the active object. data_paths lets you key anything addressable, e.g. ['location', 'rotation_euler', 'data.energy'].

blender_animation_infoA

Report the frame range, all actions, and which objects are animated.

blender_validateA

Audit the model and return a scored report: scale, dimensions, normals, topology, intersections, symmetry, naming, materials, UVs, transforms, pivots, poly budget, LODs, lighting and orphan datablocks.

This is the first tool to reach for after building something, and again before exporting. Pass target to check real-world proportions against a known vehicle or asset spec.

Each check reports ok, info, warn or error; a check that itself crashes is reported as an error entry rather than aborting the audit, so you always get a full picture.

blender_find_problemsA

Like blender_validate, but only the failures, each with a concrete fix.

Use this when you want to act rather than read: it returns an actionable list where every entry pairs a problem with the tool call that resolves it.

blender_analyze_meshA

Deep statistics for one mesh.

Beyond face counts: manifold/boundary/wire edge census, whether the shell is closed, signed volume, surface area, min/max/zero-area faces, loose verts and edges, duplicate vertices within 1e-5, UV layers, vertex groups, shape keys and the modifier stack. Use it to decide between fixing a mesh and regenerating it.

blender_measureA

Measure real-world distances that are tedious to eyeball: a bounding box, the distance between two object centres, or the extent of a whole assembly.

blender_generate_textureA

Generate a procedural texture and write it to a real PNG on disk.

Useful for plate text, hazard stripes, carbon weave, rust, brushed metal, leather grain and similar. The file is a normal image you can inspect, pack and ship - not a viewport-only effect.

blender_generate_pbr_setA

Generate a matched BaseColor / Roughness / Metallic / Normal / AO set.

All five maps come from one height field and one seed, which is what makes them read as a single material. BaseColor is written sRGB, the data maps Non-Color. Pass material to connect everything to a Principled BSDF in one step, including an AO multiply onto Base Color.

blender_bake_textureA

Bake a material's procedural node setup down to image files on disk.

Needs UVs and a node-based material. Cycles is the reliable bake engine; if the bake fails the result says so and why instead of raising.

blender_pack_texturesA

Pack every loose image into the .blend so the file is self-contained.

Do this before handing a .blend to someone else or committing it.

blender_list_imagesA

List every image datablock with size, source, colour space and packed state.

blender_set_contextA

Set mode, active object, active collection and selection atomically.

Most operator calls need all four set correctly. Doing it in one round trip avoids leaving Blender in a half-applied state when one step fails.

blender_select_byA

Select objects by a predicate rather than by name.

Names are what agents get wrong on a large scene. This finds every mesh with loose geometry, without a material, without UVs, larger than N metres, belonging to a collection, or matching a glob.

blender_undoA

Undo the last change pushed onto Blender's undo stack.

Pair it with blender_checkpoint to make a step reversible. Refuses to rewind across an Open File, because Blender's undo stack does not survive one and attempting it crashes Blender rather than raising.

blender_redoA

Redo the last undone change, restoring the scene to the state it had before the matching blender_undo call.

blender_checkpointA

Push a named marker onto the undo stack so a later blender_undo returns here.

blender_geometryB

Geometry operations that do not fit the generic modifier tool.

Covers mirror, array, solidify, screw, spin, weld, normal fixes, triangulation, decimation, remeshing, wireframe, shrink/fatten and a batch bevel. Edit-mode operations restore object mode automatically, even if the operator raises.

blender_modifiersB

Inspect, mute, reorder, remove or apply modifiers across objects.

Modifier order changes results, and list shows the real evaluated stack rather than guessing from the UI.

blender_uvA

Unwrapping and UV maintenance: report, smart project, unwrap, pack islands, weld, scale and centre. A UV layer is created if missing.

blender_rigA

Create an armature, add bones, and bind meshes with automatic weights.

Also the escape hatch for crash setups: skin the body panels, then simulate.

blender_poseA

Set a pose bone's location, rotation and scale. Useful for posing before a physics bake or for checking a rig's range of motion.

blender_physicsB

Rigid bodies, cloth, soft bodies, collision and force fields.

Set up separate panels as independent rigid bodies, add collision to the chassis, bake, and inspect. Rigid body constraints go through blender_run_operator with bpy.ops.rigidbody.constraint_add.

blender_scene_opsB

Hierarchy and housekeeping: duplicate a parent with all children, instance or realise collections, purge orphans, and inspect the depsgraph, enabled add-ons or datablock counts.

blender_render_extrasC

Turntable renders, a fast clay preview, render pass toggles, and contact sheets assembled from existing images. The clay preview uses Workbench, so it is near-instant even on a heavy scene.

blender_batchA

Run many bridge commands in a single round trip.

Each step is {"command": <addon command>, "params": {...}}. Results come back per step, so one failure does not hide the steps that worked. This is the fastest way to build a scene, because it collapses dozens of round trips into one.

Command names are the addon's, not the tool names: add_primitive, create_mesh, set_transform, assign_material, add_modifier, validate, geometry, and so on.

blender_make_materialA

Create a physically sensible PBR material from a named preset.

Presets set the Principled BSDF correctly for the real substance - car paint gets metallic plus a clear coat, glass gets transmission and IOR 1.52, leather and fabric get high roughness, emissive presets get emission colour and strength. Any socket can be overridden. Pass assign to put it on objects in the same call.

blender_build_shaderA

Build an arbitrary shader node graph from a declarative description.

This is the full-control path when a preset is not enough. Socket names are the real Blender ones, so anything from the manual works. Problems are reported per node rather than aborting, so one bad socket does not cost you the whole graph.

blender_shader_infoA

Dump a material's node graph: every node, its unconnected inputs with values, its outputs, and all links. Use it to find out what a material actually is before editing it.

blender_set_shader_inputA

Set one input socket on one node, by name. No guessing at socket indices.

blender_connect_shaderC

Connect an output socket to an input socket inside a material.

blender_procedural_materialA

Build a complete procedural surface in one call.

Wires a coordinate and mapping node to a noise, voronoi, wave or checker texture, then through a colour ramp into Base Color, a map-range into Roughness, and the raw field into a bump node. This is the graph most hard-surface and natural surfaces actually need, and it is tedious to assemble socket by socket.

blender_world_shaderA

Build the world shader: flat colour, vertical gradient, physical sky, or an HDRI image. Nishita with sun elevation gives a believable daylight environment without an HDRI download.

blender_paint_vertex_colorsA

Write per-vertex colours as a gradient along an axis. Useful as a mask, for toon shading, or for baking masks into a vertex colour layer.

blender_material_reportA

List every material with its users, the objects using it, node count, linked images and blend settings.

blender_downloadA

Fetch a URL to a local file and report its size and SHA-256.

Only http and https are allowed, the download is size-capped, and nothing downloaded is ever executed. Combine with blender_import_asset to pull a model straight onto the scene.

blender_import_assetA

Import a 3D model from a URL or a local file, as separate editable objects.

Handles fbx, obj, gltf, glb, stl, ply, usd, usdz, abc, dae and blend. A URL is downloaded first, respecting the size cap. Everything arrives as ordinary objects you can then validate, modify and export.

blender_export_assetA

Export the scene or a named set of objects to a model file.

Sensible defaults per format: fbx applies scale and bakes modifiers with materials embedded, glTF applies modifiers and exports textures, obj keeps normals and UVs. The call fails if the exporter reports success but no file appears, rather than claiming a lie.

blender_list_librariesA

List the asset libraries available for search and download.

blender_search_libraryA

Search a free CC0 asset library. Poly Haven needs no API key.

Returns ids you pass to blender_fetch_asset. Useful for grabbing a real HDRI or a photogrammetry texture instead of hand-rolling one.

blender_fetch_assetA

Download an asset from a library by id, and optionally use it.

An HDRI becomes the world lighting in one call, which is the fastest route to a believable render without any HDRI hunting.

blender_list_addonsB

List every available Blender add-on with its enabled state and version.

blender_manage_addonA

Enable, disable or install a Blender add-on.

Installing requires confirm=true because it runs third-party code inside Blender. Only .zip archives are accepted, and the call is refused without that flag so an agent cannot silently install anything.

blender_list_packagesA

List the Python packages Blender's own interpreter can see, with sys.path and the project-local directory new packages go into.

blender_install_packageA

pip install a package into a project-local directory.

Packages go to their own directory, never into Blender's bundled site-packages, so a bad dependency cannot break the application. Refused without confirm=true.

blender_append_node_groupB

Append shader or geometry node groups from another .blend file, so you can reuse an existing shader library instead of rebuilding graphs by hand.

blender_list_actionsA

List every action with its frame range, user count, slot names and how many objects use it.

blender_manage_actionB

Create, assign, rename, copy or remove an action.

Handles Blender 4.4+ slotted actions, creating the slot up front so keys can be inserted immediately afterwards.

blender_keyframe_channelA

Insert keyframes on any data path, including modifier levels and custom properties, optionally filling a whole frame range.

Broader than the original keyframe tool, which only handled the three standard transforms.

blender_remove_keyframesA

Delete keyframes from a data path over a frame range, or clear the whole animation data on an object.

blender_curvesA

Inspect and shape the F-curves of an object's action.

This is where animation gets its character rather than just its timing: interpolation and easing, handle types, noise and cyclic modifiers, retiming the whole curve, or scaling its values.

blender_nlaA

Drive non-linear animation: push an action onto its own track so the active action stops driving the pose, then layer, blend and mute strips.

blender_driversA

Add, list or remove drivers with real typed variables and expressions.

Useful for procedural motion that should not be baked: spin a wheel from the frame counter, bob something with a sine, or link a value to a custom property.

blender_shape_keysC

Create and drive shape keys: facial blends, damage states, LOD morphs or simple deformation without touching the base mesh.

blender_simulateA

Step a physics simulation forward, bake it to keyframes, or reset the point cache. Bake is how a cloth or soft-body result becomes a usable animation rather than a live simulation.

blender_sequencerA

Drive the video sequencer: add movie or image strips to channels, set the frame range, and render the sequence out to a movie or image sequence.

This is the route to an actual rendered video rather than a single still.

blender_camera_moveB

Animate the camera: a keyed orbit turntable, a follow constraint, or a two-point dolly.

The orbit mode is the quickest route to a review turntable around a model - keys and constraints both, so it renders deterministically.

blender_timelineC

Report or set the frame range, fps and step, and manage timeline markers.

blender_settings_reportA

Report what the project is actually set to.

Covers the scene, the full render configuration including Cycles and EEVEE sampling and colour management, datablock counts, user preferences, file paths, linked libraries and registered handlers. This is the answer to "what are the current settings".

blender_set_settingA

Change any single project setting by dotted path, and report the old and new value.

Deliberately one setting per call: a bulk setter would let a wrong path silently wreck a whole configuration.

blender_blend_contentsA

Inventory every datablock in the file by type, with user counts, orphans and which library each came from. The fastest way to see what a .blend actually contains before merging or cleaning it.

blender_scripts_and_textsA

List embedded Text datablocks and every .py file inside Blender's script paths, with sizes. Use it to find an add-on's or a script's real location.

blender_filesystemA

List or search files, restricted to the user's home directory, Blender's script folders and the asset cache by default.

Pass allow_anywhere only when the user has actually asked for it.

blender_python_envA

Report Blender's interpreter, sys.path, script paths and whether given modules can be imported. Use it before relying on a library.

blender_render_reportA

Report what a render would actually use: engine, effective resolution, frame range, resolved output path and whether that directory exists, colour management, camera and lights.

blender_diagnoseA

Quick health check on the project: missing camera, unpacked textures, orphan datablocks, missing linked libraries, meshes without materials, or Blender running headless.

Cheaper than a full validate when you just want to know what is wrong.

blender_auto_uvA

Unwrap meshes in one call and report the resulting UV coverage.

Picks a projection automatically when method is left at the default, so a scene of mixed hard-surface and organic meshes does not need hand-picking per object.

blender_fix_uv_mappingA

Repair stretched, overlapping or out-of-range UVs on existing meshes, then report what changed per object.

blender_generate_lodsA

Create decimated LOD copies of meshes and put them in a LOD collection.

Reports the original and generated face counts so the trade-off is visible instead of assumed.

blender_fix_topologyB

Repair mesh problems: merge duplicate vertices, recalculate normals and delete loose geometry, reporting the before/after counts per object.

blender_auto_validateA

Audit a generated model end to end and, with apply_fixes, repair the problems that have an unambiguous fix.

Built for the "I just generated this, is it usable" question: topology, UVs, materials, scale and naming in one pass.

blender_quality_guidelinesA

Fetch the modelling quality guidelines the agent should follow.

Covers the things that actually decide whether a generated model reads as believable: real proportions instead of convenient ones, built structure rather than modifier stacks, deliberate camera and lighting before a render, and texture resolution that survives a close-up.

blender_auto_light_sceneA

Build a complete lighting rig aimed at the subject.

Framing is derived from the target objects' bounds, so the lights land at a sensible distance instead of at a hard-coded guess.

blender_camera_focusB

Aim a camera at something and, optionally, frame it.

Saves a lot of blind iteration on 'why is my render empty'.

blender_download_texturesA

Search a free PBR texture library and download matching maps.

Pass apply_to to wire the result onto objects in the same call.

blender_download_animationsB

Search downloadable animation sources and list what is available.

Pass apply_to to import and attach the result in the same call.

blender_create_animationA

Generate a procedural animation on the given objects.

Useful for previews and for checking that a rig actually moves something before spending time on a real animation.

blender_paint_textureA

Paint directly into an image datablock and write it to disk.

For placing decals, number plates, liveries or wear masks without leaving Blender.

blender_list_installed_addonsA

List the add-ons Blender currently has enabled, with versions and the module names needed by blender_manage_addon.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.1/5.0

Scored across 122 tools

Disambiguation2/5

Many tools occupy nearly identical territory: blender_import_asset/blender_import_model and blender_export_asset/blender_export_model describe essentially the same operations, and validation is split across blender_validate, blender_find_problems, blender_auto_validate, and blender_diagnose. There are also multiple UV tools and several material-creation paths, forcing an agent to parse fine-print differences to avoid misselection.

Naming Consistency3/5

The blender_ prefix and snake_case style are consistent, and most tools use a verb_noun pattern. However, many domain-noun tools like blender_uv, blender_rig, blender_physics, blender_curves, blender_modifiers, and blender_scene_ops break the verb convention, and vague verbs like manage plus near-duplicate import/export naming weaken predictability.

Tool Count1/5

122 tools is an extreme mismatch, far beyond the 50+ threshold for incoherence. While Blender is a large domain, many tools are bundles or near-duplicates that could be consolidated into a much smaller, more navigable set without losing real capability.

Completeness4/5

The tool surface covers nearly every major Blender workflow: objects, meshes, materials, textures, UVs, animation, physics, rendering, import/export, and asset libraries, with an explicit Python escape hatch for anything missing. Minor gaps remain as dedicated operations, such as deleting materials/images, adding constraints, or editing vertex groups, but these are workable via blender_run_operator or blender_execute_python.

Maintenance

ActivityMaintained
ResponsivenessNo issues