MCP for Blender

Build and edit 3D scenes in a running Blender by running Python, viewing results and importing assets.

By ahujasid (individual) Python Local · stdio DesignMedia

108 popularity score ★ 34k ↓ 1.3M/mo

Connect your client

Local (PyPI)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude CodeTerminal
claude mcp add for-blender -- uvx mcp-for-blender
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "for-blender": {
      "command": "uvx",
      "args": [
        "mcp-for-blender"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "for-blender": {
      "command": "uvx",
      "args": [
        "mcp-for-blender"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "for-blender": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "mcp-for-blender"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.for-blender]
command = "uvx"
args = ["mcp-for-blender"]
Gemini CLITerminal
gemini mcp add --scope user for-blender uvx -- mcp-for-blender
Local (container)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

FirstTerminal
git clone https://github.com/ahujasid/mcp-for-blender
cd mcp-for-blender
docker build -t mcp-for-blender .
Claude CodeTerminal
claude mcp add for-blender -- docker run -i --rm mcp-for-blender
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "for-blender": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "mcp-for-blender"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "for-blender": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "mcp-for-blender"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "for-blender": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "mcp-for-blender"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.for-blender]
command = "docker"
args = ["run", "-i", "--rm", "mcp-for-blender"]
Gemini CLITerminal
gemini mcp add --scope user for-blender docker -- run -i --rm mcp-for-blender

Settings 6

BLENDER_HOST Optional: Host of the addon's socket server. The --host flag overrides it. Default localhost.
BLENDER_PORT Optional: Port of the addon's socket server. The --port flag overrides it. Default 9876.
BLENDER_MCP_SAFE_MODE Optional: Set to 1 to check each script first and block file, process and network access. For execute_blender_code.
DISABLE_TELEMETRY Optional: Set to true to stop all telemetry, the anonymous usage record included.
BLENDER_MCP_APPS Optional: Set to 1 to force the inline viewport app on for clients that support MCP Apps. For look.
BLENDER_MCP_OPENAI_FORMS Optional: Set to 1 to force the thumbnail asset pickers on. For search_assets.

In a container, a setting goes in with -e NAME=value after docker run.

What it does

This server hooks an assistant up to a copy of Blender you already have open. Most of the work happens through Blender Python: the assistant writes a script for modelling, layout, materials, animation or rigging and runs it in your session. Then it looks at what it made, from the viewport or the scene camera, from several auto-framed angles, as a strip of animation frames or as a render.

It can also pull in assets. Poly Haven HDRIs, textures and models, Sketchfab models and Poly Pizza low-poly models can be searched and imported. New models can be generated from a prompt or an image with Tripo, Meshy, Hyper3D Rodin or Hunyuan3D, either on your own keys or through the makers' paid Premium plan. It is a community project with no tie to the Blender Foundation.

You install two pieces. A Blender addon opens a socket server inside Blender (localhost:9876 unless you change it), and the MCP server, started with uvx mcp-for-blender, talks to that socket. The setup command can write the client config and install the addon for you, and a Dockerfile in the repository lets the server run in a container.

The provider keys (BLENDERMCP_TRIPO_API_KEY, BLENDERMCP_MESHY_API_KEY and the rest) are read by the addon inside Blender, not by the MCP server, so putting them in your client's env block has no effect (addon.py). Telemetry also stops with BLENDER_MCP_DISABLE_TELEMETRY or MCP_DISABLE_TELEMETRY, not just DISABLE_TELEMETRY (telemetry.py).

What it needs

RuntimePython 3.10+
Runs onmacOS, Windows, Linux
Tripo, Meshy, Hyper3D Rodin or Hunyuan3DPaid planOnly for generate_3d. Your own key (Rodin on the main site or through fal.ai), or the makers' Premium plan. A Meshy key needs a paid Meshy plan.
Sketchfab or Poly PizzaFree tierAPI key set in the addon to search and import from those libraries.
Also
  • Blender 3.0 or newer, open, with the MCP for Blender addon connected
  • uv on PATH for uvx

Install uv with its official installer, then run uvx mcp-for-blender setup (or the install script) to configure clients and add the addon, or uvx mcp-for-blender install-addon for the addon alone. In Blender, open the MCP for Blender tab in the 3D View sidebar (N), tick the sources you want and click Connect. Provider keys go in the addon's preferences, or in BLENDERMCP_* variables set where Blender starts. A tripo3d.com (China) account needs Tripo Domain set to .com. For Hyper3D Rodin, pick main site or fal.ai mode to match your key. Bind Address stays localhost unless you also tick Allow Remote Connections.

Limits

  • Limit Does nothing until Blender is running with the addon connected on the configured host and port.
  • Cost Each generate_3d call can spend money or a monthly generation on your provider plan or Premium.
  • Limit generate_3d waits at most 45 seconds, then returns a job handle to poll for the rest (server.py).
  • Limit Poly Haven downloads run on Blender's main thread, so Blender stops responding until the file arrives.
  • Limit Poly Pizza downloads can fail behind its bot protection from VPN, cloud or datacenter addresses.
  • Limit In safe mode scripts may import only bpy, bmesh, mathutils and pure-Python standard modules, so some are refused.
  • Platform The Docker image reaches Blender through host.docker.internal, which Linux lacks: use --network=host there.
  • Limit Bind Address takes only localhost or an IPv4 address, so the addon cannot listen on IPv6 (addon.py).

Who it suits

A fit for Blender users who want an assistant to model, light and lay out scenes on their own machine and check the result visually. Because it runs arbitrary Python in the session, it suits work on saved files you can roll back, and safe mode is worth turning on if you do not review the code. Asset search works without paid accounts. Model generation costs money per call. It is a community add-on, not something the Blender Foundation publishes.

Tools 10

5 only read, 4 change things, 1 can delete or overwrite. A ? marks an optional parameter.

execute_blender_code deletes
Run Python in the live Blender session and return what it prints.code: stringuser_prompt?: string
look
Show the scene as one image from the viewport, scene camera, several auto-framed angles or an animation strip, or show a render or image file.mode?: stringtarget?: arrayviews?: arraydistance?: numbershading?: stringframes?: arrayframe_count?: integerview?: anyimage?: stringmax_size?: integeruser_prompt?: string
get_scene_info
Text summary of the scene, one line per object with the fields asked for.user_prompt?: stringquery?: stringroot?: stringfields?: arraylimit?: integer
generate_3d changes
Generate one textured model from a prompt or image with Tripo, Meshy, Hunyuan3D or Hyper3D Rodin and import it.prompt?: stringimage?: stringname?: stringprovider?: stringquality?: stringbbox_condition?: arraypose_mode?: stringjob?: stringwait_seconds?: integeruser_prompt?: string
search_assets
Search Poly Haven, Sketchfab or Poly Pizza for HDRIs, textures and models.source: stringquery?: stringasset_type?: stringcategory?: stringattributes?: objectmin_size_m?: numberlicence?: stringanimated?: booleanlimit?: integerpreviews?: integeruser_prompt?: string
import_asset changes
Download an asset found by search_assets and add it to the scene.source: stringid: stringasset_type?: stringtarget_size?: numberapply_to?: arrayresolution?: stringfile_format?: stringuser_prompt?: string
get_addon_status
Report the Blender and addon versions and which asset sources and generators are switched on.user_prompt?: string
disable_telemetry changes
Switch off collection of prompts, code, screenshots and scene data.user_prompt?: string
record_trajectory_feedback changes
Store the user's reaction to a result for opted-in data collection.feedback: stringcorrection_text?: stringstep_index?: integeruser_prompt?: string
search_mentions
Find scene objects, materials and collections to @-mention. Hidden from the model, used by client apps.query?: string

Resources 3

blender://object/{name}
One scene object as JSON.
blender://material/{name}
One material as JSON.
blender://collection/{name}
One collection as JSON.

Similar servers