Content
# blender-mcp
MCP de Blender para Pablo. Dos piezas:
## 1) Principal: BlenderMCP de ahujasid (interactivo) ✅ EN USO
MCP maduro de la comunidad (`ahujasid/blender-mcp`): addon dentro de Blender +
servidor MCP que hablan por socket (localhost:9876). Permite ejecutar Python bpy
arbitrario, crear/editar objetos y materiales, renderizar, **capturar el viewport
(Claude ve el resultado)** y bajar assets de Poly Haven / Hyper3D.
- **MCP server**: `uvx blender-mcp` (registrado en `~/.claude.json`, scope user, como `blender`).
- **Addon**: ya instalado y auto-activado en
`~/.var/app/org.blender.Blender/config/blender/5.1/scripts/addons/blendermcp_addon.py`
(copiado desde `addon.py` de este repo; userpref guardado con el addon activo).
- **Blender**: 5.1 por Flatpak (`org.blender.Blender`), Python 3.13.9 con `requests` incluido.
Addon verificado que carga/registra sin errores en 5.1.
### Uso (el único paso manual, por diseño)
El socket necesita el event loop de la GUI, así que hay que:
1. Abrir Blender (GUI).
2. Tecla `N` en el viewport → pestaña **BlenderMCP**.
3. Click **Connect** (arranca el server en puerto 9876).
Con eso, las tools `mcp__blender__*` quedan operativas en Claude Code.
## 2) Fallback: MCP headless propio (batch)
`server.py` + `_runner.py`: MCP stdio con FastMCP que lanza
`flatpak run org.blender.Blender --background --python` y ejecuta código bpy sin
ventana. Sirve para renders/scripts automatizados (cron/systemd), sin estado entre
llamadas (usar params `abrir`/`guardar` un `.blend`). No está registrado en Claude;
activar con:
```json
"blender-headless": {
"command": "/home/pepe/Proyectos/blender-mcp/.venv/bin/python",
"args": ["/home/pepe/Proyectos/blender-mcp/server.py"]
}
```
Limitación: headless = Claude trabaja a ciegas (solo `print()`), sin ver el viewport.
Por eso el principal es el de ahujasid.