Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Meshwire logo

Meshwire

An independent MCP server for Blender. Control Blender from any MCP client, with tools for modeling, materials, sculpting, animation, AI 3D generation, and Microsoft Flight Simulator content.

License Python 3.10+ Blender 4.5 | 5.2 LTS MCP

Quick start · Tools · Self-refinement loop · Security · Documentation

Status, October 2026: a full audit found that many tools fail in real Blender, including every MSFS tool, most bake tools, and a group of mesh tools. Fixes are landing now and are tracked in the issues. Treat those areas as not working until the next release.


What is Meshwire?

Meshwire is an MCP server for AI clients such as Claude Desktop, Claude Code, and Codex CLI. The server speaks the Model Context Protocol over stdio. A Blender addon listens on a local TCP socket and runs each command on Blender's main thread through bpy.app.timers.

┌─────────────────┐    stdio     ┌─────────────────┐   TCP/JSON-RPC   ┌─────────────────┐
│  MCP client     │ ◄──────────► │   MCP Server    │ ◄──────────────► │  Blender Addon  │
│  (Claude / …)   │              │  (Python proc)  │   port 9876      │  (bpy.app.timers)│
└─────────────────┘              └─────────────────┘                  └─────────────────┘
  • Blender coverage: scene, object, mesh, material, modifier, animation, render, export, baking, geometry nodes, sculpting, rigging, physics, and annotations.
  • MSFS content: LOD, collision, material, animation, and livery tools for Microsoft Flight Simulator. This area is being rebuilt and does not work in the current release.
  • AI 3D generation: text and image to 3D through Hyper3D Rodin, Meshy, Tripo, TripoSR, Stable Fast 3D, Hunyuan3D, and ComfyUI.
  • Self-refinement loop: render an object from several angles, score it with an Ollama vision model, and iterate.
  • Poly Haven: free HDRIs, textures, and models with no API key.

Quick start

1. Run the MCP server

Meshwire is in alpha, so ask for pre-releases. With uv there is nothing to install up front:

uvx --prerelease allow meshwire --help

Or with pip:

pip install --pre meshwire

2. Install the Blender addon

Download blender_mcp_addon-<version>.zip from Releases, or build it from source:

git clone https://github.com/RFingAdam/meshwire
cd meshwire
python scripts/package_addon.py
# creates dist/blender_mcp_addon-<version>.zip

In Blender, open Edit > Preferences > Add-ons, choose Install from Disk from the menu at the top right, select the ZIP, and enable Meshwire.

3. Configure your MCP client

{
  "mcpServers": {
    "blender": {
      "command": "uvx",
      "args": ["--prerelease", "allow", "meshwire"]
    }
  }
}

If you installed with pip, use "command": "meshwire" with no args.

4. Connect

  1. In Blender's 3D viewport, press N and open the MCP Server tab.
  2. Click Start Server.
  3. Restart your MCP client. The Blender tools appear in its tool list.

Then try:

Create a red cube at (2, 0, 0), add a subdivision surface modifier with 2 levels, and render it to /tmp/render.png.


Tools

The server defines 218 tools. This table lists what exists, not what has been verified to work; see the status note above. The tool list is in docs/tools.md.

Category Tools Examples
Scene 5 scene_info, scene_new, scene_clear
Objects 12 object_create, object_duplicate, object_delete
Mesh, curves, booleans 35 mesh_bevel, mesh_bridge, curve_create, boolean_op
Materials and nodes 13 material_create, material_inspect_graph
Modifiers 5 modifier_add, modifier_configure, modifier_apply
Animation 7 keyframe_delete, animation_play, action_create
Render 6 render_image, render_multi_angle, render_screenshot
Import and export 6 export_gltf, export_fbx, export_usd
Measurement and validation 10 measure_volume, measure_clearance
Baking 6 bake_pbr_batch, bake_curvature
Geometry nodes 7 geonode_array_grid, geonode_extrude_profile
Sculpting 8 sculpt_mesh_filter, sculpt_extract_mask
Rigging 8 armature_create, autorig_preset, constraint_preset
Physics 6 physics_rigid_body_add, physics_cloth_add
Collections and session 9 collection_create, undo, redo
Annotations 6 annotation_dimension, grease_pencil_create
MSFS content 20 msfs_create_lod_hierarchy, msfs_setup_material
MSFS livery 18 msfs_livery_transfer, msfs_livery_create_package
AI generation and refinement 29 ai_generate_model, ai_evaluate, refine_iteration
Poly Haven 2 polyhaven_search, polyhaven_download

Every tool name takes a blender_ prefix, for example blender_scene_info.


Self-refinement loop

The agent writes mesh code, renders from several angles, an Ollama vision model scores the result, and the agent applies fixes until the score stops improving.

┌───────────┐  execute_script  ┌─────────┐  render_multi_angle  ┌──────────────┐
│  agent    │ ──────────────► │ Blender  │ ───────────────────► │  PNG images  │
│  (LLM)    │                 │  (bpy)   │                      └──────┬───────┘
└─────┬─────┘                 └─────────┘                              │
      │                                                  analyze_viewport
      │  apply fix                                                     │
      │  (loop)                                                        ▼
      │                                                     ┌──────────────────┐
      └─────────────────────────────────────────────────────│  Ollama Vision   │
                              feedback + score              │ llama3.2-vision  │
                                                            └──────────────────┘
# 1. Open a refinement session
blender_refine_create_session(object_name="Tree", prompt="A realistic low-poly pine tree")

# 2. Generate an initial mesh
blender_execute_script(script="import bmesh; ...")

# 3. Evaluate
blender_refine_iteration(object_name="Tree", iteration=0, max_iterations=5)

# 4. Apply fixes from the feedback, then evaluate again
blender_execute_script(script="# fix issues from analysis ...")
blender_refine_iteration(object_name="Tree", iteration=1, previous_score=0.6)

# 5. Inspect the session
blender_refine_get_session(session_id="...")

See docs/usage.md for a walkthrough.


External integrations

Poly Haven

Poly Haven provides free HDRIs, textures, and 3D models with no API key. Downloads are cached locally.

blender_polyhaven_search(query="brick", asset_type="textures")
blender_polyhaven_download(asset_id="brick_wall_001", resolution="2k")

AI 3D model generation

Backend Type Requirements Capabilities
Hyper3D Rodin Cloud API key Text-to-3D, Image-to-3D
Meshy.ai Cloud API key Text-to-3D, Image-to-3D, texturing
Tripo AI Cloud API key Text-to-3D, Image-to-3D
TripoSR Local 4 GB VRAM Image-to-3D
Stable Fast 3D Local 6 GB VRAM Image-to-3D
Hunyuan3D Local 16 GB VRAM Text-to-3D, Image-to-3D
ComfyUI Local Varies Custom workflows

Cloud setup:

export RODIN_API_KEY="your-rodin-key"
export MESHY_API_KEY="your-meshy-key"
export TRIPO_API_KEY="your-tripo-key"

Local setup:

# TripoSR is not on PyPI: clone it and put it on PYTHONPATH
git clone https://github.com/VAST-AI-Research/TripoSR
pip install -r TripoSR/requirements.txt
export PYTHONPATH="$PWD/TripoSR:$PYTHONPATH"

ollama pull llama3.2-vision:11b   # vision model for evaluation and refinement

Usage:

blender_ai_generate_model(prompt="a wooden chair", style="realistic")
blender_ai_generate_model(image_path="/path/to/image.png")
blender_ai_model_status(job_id="abc123", auto_import=true)

Styles: realistic, cartoon, low_poly, sculpture, anime. Formats: glb (default), gltf, fbx, obj, usdz.


Security

The addon's socket has no authentication yet, and blender_execute_script runs arbitrary Python inside Blender. Any process on your machine that can reach the port can run code as you.

  • Only start the server on a machine you trust, and stop it when you're done.
  • Keep the host set to localhost. Don't bind it to 0.0.0.0 or expose port 9876.
  • Don't run untrusted prompts or scripts against a Blender session with work you care about.

Authentication and a Python execution switch are planned for the next stable release (#12).


Configuration

meshwire [--host HOST] [--port PORT]

  --host HOST   Blender addon host (default: 127.0.0.1)
  --port PORT   Blender addon port (default: 9876)

The Meshwire tab in Blender's sidebar sets the socket port and starts or stops the server.


Blender versions

Blender 4.5 LTS and 5.2 LTS are tested on every pull request. Blender 4.2 LTS is tested nightly on a best-effort basis.


Troubleshooting

"Connection refused": make sure Blender is running, the MCP Server tab shows the server running, and the port matches.

"Tool not found": restart your MCP client after editing its config, confirm the server command runs on its own with --help, and check the client's MCP log.

Addon doesn't appear in Blender: check Blender's system console for errors and try reinstalling the ZIP.

Poly Haven downloads fail: check your connection, confirm the asset ID exists on polyhaven.com, and check disk space.

AI generation doesn't work: blender_ai_list_backends shows backend status. Check your API keys for cloud backends, or your models and VRAM for local ones. Follow a job with blender_ai_model_status.


Documentation


Development

git clone https://github.com/RFingAdam/meshwire
cd meshwire
python -m venv .venv
source .venv/bin/activate   # .venv\Scripts\activate on Windows
pip install -e ".[dev]"
pytest tests/ --ignore=tests/blender_integration_test.py   # unit tests
python -m tests.harness.driver --help   # truth harness, needs Blender; see CONTRIBUTING.md
ruff check .
ruff format .
python scripts/package_addon.py   # builds the addon ZIP

Contributions are welcome. See CONTRIBUTING.md.


License

AGPL-3.0-or-later.

Trademarks

This project is not affiliated with, endorsed by, or sponsored by the Blender Foundation. "Blender" is a trademark of the Blender Foundation, used here only to identify the software this project works with.

Acknowledgments

Trademarks

Meshwire is an independent project. It is not affiliated with, endorsed by, or sponsored by the Blender Foundation, Microsoft, or Asobo Studio. Blender is a registered trademark of the Blender Foundation. Microsoft Flight Simulator is a trademark of Microsoft Corporation. These names are used only to say what Meshwire works with.

Metadata

Release files for meshwire 0.5.0a1

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

Source distribution (sdist)

Source distribution for meshwire 0.5.0a1
File Size Uploaded Provenance Actions
meshwire-0.5.0a1.tar.gz 397.0 kB With provenance Details for meshwire-0.5.0a1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for meshwire 0.5.0a1
File Interpreter ABI Platform Actions
meshwire-0.5.0a1-py3-none-any.whl Python 3 none any Details for meshwire-0.5.0a1-py3-none-any.whl

Total release size: 467.0 kB

Release files / meshwire-0.5.0a1.tar.gz

Download URL meshwire-0.5.0a1.tar.gz
Size 397.0 kB
Tags Source
SHA-256 checksum
How to use checksums
b3ce625f714d901caa033562e41f4e4d45c87e3a2d88af659f4505d787dae948
BLAKE2b-256 checksum
How to use checksums
e8474fd61713ea6d74b8a64d5b74547c655aa393d1a5abbd80e183e30120887d
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 Nov 1, 2026.

Transparency log

Release files / meshwire-0.5.0a1-py3-none-any.whl

Download URL meshwire-0.5.0a1-py3-none-any.whl
Size 70.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
be81d48e5e9327af690a972c962a2f5c04e10f1879750a2a32460bbab0900b80
BLAKE2b-256 checksum
How to use checksums
42c39bb0d935a68009761d109efebc20a8ddb0a2280ad3547a53847f40fecfc6
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 Nov 1, 2026.

Transparency log

Security for meshwire 0.5.0a1

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 meshwire-0.5.0a1.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 Nov 1, 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
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