Best for
- Use when the user wants to create or modify anything in a running Blender instance: meshes, materials, animations, lighting, renders. Requires the blender MCP server installed and a Blender desktop session with the addo…
NousResearch/hermes-agent/optional-skills/creative/blender-mcp/SKILL.md
Drive Blender via the catalog blender MCP, with bpy recipes.
Decision brief
Companion skill for the blender entry in the Hermes MCP catalog. The MCP server provides the connection to Blender; this skill teaches the bpy idioms and pitfalls for driving it well. It does not cover Blender UI workflows — everything here goes through the MCP tools against a l…
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/NousResearch/hermes-agent --skill "optional-skills/creative/blender-mcp"Inspect the Agent Skill "blender-mcp" from https://github.com/NousResearch/hermes-agent/blob/f5be9236e00ddf2f2a412697f267078fc4ee068e/optional-skills/creative/blender-mcp/SKILL.md at commit f5be9236e00ddf2f2a412697f267078fc4ee068e. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
1. Call getsceneinfo first — never assume the scene is empty. 2. Build with executeblendercode, in small focused calls (one logical step per call: add objects, then materials, then animation). Large monolithic scripts hit the bridge timeout. 3. Verify visually with getviewportsc…
getsceneinfo returns the expected object list after each build step.
Use when the user wants to create or modify anything in a running Blender instance: meshes, materials, animations, lighting, renders. Requires the blender MCP server installed and a Blender desktop session with the addon connected.
1. Install the MCP server from the Nous catalog (one-time):
Deeper material lives in the reference files (load on demand):
Permission review
No configured static risk pattern was detected
This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.
Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 87/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 225,255 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Companion skill for the blender entry in the Hermes MCP catalog. The MCP
server provides the connection to Blender; this skill teaches the bpy idioms
and pitfalls for driving it well. It does not cover Blender UI workflows —
everything here goes through the MCP tools against a live Blender session.
Use when the user wants to create or modify anything in a running Blender instance: meshes, materials, animations, lighting, renders. Requires the blender MCP server installed and a Blender desktop session with the addon connected.
Install the MCP server from the Nous catalog (one-time):
hermes mcp install blender
This configures the pinned blender-mcp stdio server with the curated
tool set: get_scene_info, get_object_info, get_viewport_screenshot,
execute_blender_code.
Install the addon inside Blender (one-time — the catalog entry's post-install notes cover this too):
Every session: start Blender FIRST, press N in the viewport, open the "BlenderMCP" tab, click "Connect to Claude" (starts the local bridge socket). Then start your Hermes session so the MCP tools are loaded.
The addon refuses to start under blender -b (background mode). On a
machine without a display, run Blender under a virtual one:
xvfb-run blender. GPU rendering works fine under Xvfb.
| MCP tool | Use for |
|---|---|
get_scene_info | List objects before touching the scene |
get_object_info | Inspect one object (transform, materials) |
get_viewport_screenshot | Visual check of what you built |
execute_blender_code | Everything else — arbitrary bpy Python |
Deeper material lives in the reference files (load on demand):
| Reference | Contents |
|---|---|
references/bpy-api.md | Essential bpy operations: modeling, materials, modifiers, rendering |
references/recipes.md | Complete working scenes: low-poly terrain, glass sphere, HDRI lighting, turntable animation |
references/pitfalls.md | Hard-won lessons: empty code results in 5.x, ops-vs-data API, engine names by version |
Optional asset-service tools (PolyHaven, Sketchfab, Hyper3D, Hunyuan3D) are
disabled by default. If the user has enabled a service in the addon panel,
opt into its tools with hermes mcp configure blender.
get_scene_info first — never assume the scene is empty.execute_blender_code, in small focused calls (one logical
step per call: add objects, then materials, then animation). Large
monolithic scripts hit the bridge timeout.get_viewport_screenshot between major steps.Clear scene:
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete()
Add mesh objects:
bpy.ops.mesh.primitive_uv_sphere_add(radius=1, location=(0, 0, 0))
bpy.ops.mesh.primitive_cube_add(size=2, location=(3, 0, 0))
bpy.ops.mesh.primitive_cylinder_add(radius=0.5, depth=2, location=(-3, 0, 0))
Create and assign material:
mat = bpy.data.materials.new(name="MyMat")
mat.use_nodes = True
bsdf = mat.node_tree.nodes.get("Principled BSDF")
bsdf.inputs["Base Color"].default_value = (R, G, B, 1.0)
bsdf.inputs["Roughness"].default_value = 0.3
bsdf.inputs["Metallic"].default_value = 0.0
obj.data.materials.append(mat)
Keyframe animation:
obj.location = (0, 0, 0)
obj.keyframe_insert(data_path="location", frame=1)
obj.location = (0, 0, 3)
obj.keyframe_insert(data_path="location", frame=60)
Render to file:
bpy.context.scene.render.filepath = "/tmp/render.png"
bpy.context.scene.render.engine = 'CYCLES'
bpy.ops.render.render(write_still=True)
hermes mcp install blender
and start a new session.execute_blender_code calls to
avoid bridge timeouts./tmp/render.png), not relative —
they resolve on the BLENDER host's filesystem, which matters if Hermes and
Blender run on different machines.shade_smooth() requires the object to be selected and in object mode.execute_blender_code runs arbitrary Python inside Blender with no sandbox
— same trust level as the terminal tool. Don't paste untrusted code into
it.execute_code — that was
this skill's pre-MCP workaround. It bypasses the catalog's version pinning
and tool curation. The MCP tools are the supported path.get_scene_info returns the expected object list after each build step.get_viewport_screenshot shows the scene you intended.