Skip to main content

Blender MCP

License: MIT

Local-first MCP tools for Blender scene inspection, mesh editing, previews and game asset export. The server publishes 14 tools over stdio and sends every operation to a bridge that runs on Blender's main thread.

Everything runs on the local machine. The bridge binds only to IPv4 loopback and requires a random session token. There is no arbitrary Python tool, telemetry, external asset download or remote inference.

Install

Requirements: Python 3.11 or newer, uv, and Blender. Native checks target Blender 5.2.3 LTS.

uv tool install cavi-blender-mcp

Start a dedicated Blender session with the bridge:

cavi-blender-mcp runtime start

It runs blender from PATH, CAVI_BLENDER_BIN, or on macOS /Applications/Blender.app, with --factory-startup so the session opens a separate default scene without loading or saving user preferences. The stdio MCP server never launches or authenticates Blender by itself.

To work from a source checkout instead, clone the repository, run uv sync --locked, and start Blender with blender --factory-startup --python scripts/start_bridge.py.

Quickstart

Register the installed entry point with your MCP client:

{
  "mcpServers": {
    "blender": {
      "command": "cavi-blender-mcp"
    }
  }
}

If your client does not inherit your shell's PATH, use the absolute path that which cavi-blender-mcp prints.

Call scene_info first. Then inspect the session with session_control:

{"action": "inspect"}

Claim the returned project_id and pass the returned lease_id on mutations:

{
  "action": "claim",
  "owner": "asset-agent",
  "expected_project": "<project_id>",
  "ttl_seconds": 600
}

Make a bounded change with object_edit:

{
  "action": "create_primitive",
  "name": "Crate_01",
  "kind": "cube",
  "lease_id": "<lease_id>"
}

Read-only calls do not need a lease. Release or expiry never saves, closes or discards a project. See the ownership guide.

You can also let the CLI manage the session:

cavi-blender-mcp runtime start
cavi-blender-mcp runtime status
cavi-blender-mcp runtime restart --lease-id <current-lease>

What it does

  • Inspection: scene and object metadata, mesh budgets, texel density, UV stretch, material bindings, bone hierarchies and skin weights.
  • Object editing: primitives, custom meshes, transforms, origins, names, sockets, duplicates, parents, collections and shape keys.
  • Mesh preparation: modifiers, UV unwrapping, decimation, LOD chains, QuadriFlow, lightmap packing, texel density, collision hulls, cleanup, booleans, joins, splits, mirrors, arrays and shells.
  • Materials: PBR slot assignment with packed workspace textures, UV transforms, alpha modes and material QA.
  • Baking: normal, ambient-occlusion, curvature and lightmap maps into a new workspace PNG.
  • Assets: bounded GLB, FBX, OBJ and USD import; GLB morph targets and shape-key animation; static, skinned and animated FBX, GLB and USD export; FBX and USD texture sidecars; Unity, Unreal and Godot axis presets; LOD groups, collision naming and bake pairs.
  • Rigging: armature creation, automatic skin binding, weight repair, pose authoring, action creation, clip/NLA management, animation QA and retargeting.
  • Previews: isolated PNG previews, lit Eevee previews and multi-view review sheets.
  • Levels: heightmap or procedural terrain, bulk placement and surface snapping.
  • Scatter: fixed Geometry Nodes instancing with explicit budgets.
  • Ownership: edit leases shared by independent MCP clients.

Every input and output is bounded. When Blender does not expose an operation, the server reports the boundary and fails closed instead of simulating a write.

Documentation

The versioned documentation is published to cavi-ai.xyz/docs/blender-mcp. The source lives in this repository.

Configuration

Variable Default Purpose
CAVI_BLENDER_WORKSPACE ~/Documents/CaviBlender Workspace for saves, exports, previews, imports and generated assets
CAVI_BLENDER_CONNECTION ~/.cavi/blender-mcp/connection.json Private connection file with loopback port, token and pid
CAVI_BLENDER_BIN Blender on PATH, or the standard macOS app path Executable used by runtime start
CAVI_TRIPOSR_PYTHON unset Python 3.11 environment for optional local image-to-3D
CAVI_TRIPOSR_SOURCE unset TripoSR checkout
CAVI_TRIPOSR_WEIGHTS unset Local TripoSR weights directory

Set a variable in both Blender's environment and the MCP server's environment when both processes read it. See configuration.

Security

The bridge listens on loopback and requires a random bearer token from a private connection file. Mutations require a claimed edit lease bound to the current project. Paths are confined to the workspace, including through symbolic links, and existing outputs are never overwritten. Changes are never retried after a timeout; inspect the scene before resubmitting an uncertain mutation.

See the security model and SECURITY.md.

Tests

uv sync --locked --dev
uv run --locked python -m unittest discover -s tests
uv run --locked ruff check .
npm ci
npm run eval:protocol

The unit suite does not need Blender. Native checks under tests/blender_*.py run against a disposable factory scene and an empty workspace, including animation QA and retargeting:

blender --background --factory-startup --python-exit-code 1 \
  --python tests/blender_smoke.py -- /path/to/empty/workspace

Docs are built and verified with:

uv run --locked python -m scripts.docs.build
uv run --locked python -m scripts.docs.verify

npm run eval:protocol checks discovery size, catalog token budgets, pagination, surface listing and protocol negotiation. npm run eval:core adds native application checks and requires Blender. See MCP evaluation.

Project status

See GitHub Releases and the changelog. The tool surface can still change before 1.0.

Contributing

See CONTRIBUTING.md.

License

MIT. Third-party product names belong to their owners. No vendor assets, logos or presets are included, and no endorsement is implied.

Metadata

Release files for cavi-blender-mcp 0.29.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cavi-blender-mcp 0.29.0
File Size Uploaded Provenance Actions
cavi_blender_mcp-0.29.0.tar.gz 278.4 kB With provenance Details for cavi_blender_mcp-0.29.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for cavi-blender-mcp 0.29.0
File Interpreter ABI Platform Actions
cavi_blender_mcp-0.29.0-py3-none-any.whl Python 3 none any Details for cavi_blender_mcp-0.29.0-py3-none-any.whl

Total release size: 395.4 kB

Release files / cavi_blender_mcp-0.29.0.tar.gz

Download URL cavi_blender_mcp-0.29.0.tar.gz
Size 278.4 kB
Tags Source
SHA-256 checksum
How to use checksums
a03154ff4e770c4210a4d5022957b51b315de0a692ce1f1d32b2e4c408ed2f5d
BLAKE2b-256 checksum
How to use checksums
6dbb2e89ec65efd08dba58ec51b03448eba3ce61d83a4450efdd095822a2240c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.

Transparency log

Release files / cavi_blender_mcp-0.29.0-py3-none-any.whl

Download URL cavi_blender_mcp-0.29.0-py3-none-any.whl
Size 117.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ed6dc9ebe597ebca1931e1cec800ad7fb8e76b3167a9386dea8548f22d91f2fb
BLAKE2b-256 checksum
How to use checksums
f178a481a01719c7cb3cdc5bc41477818af9d69aa01795daa4b223503007a386
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.

Transparency log

Security for cavi-blender-mcp 0.29.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for cavi_blender_mcp-0.29.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.29.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page