Skip to main content
Glama
README.md
<p align="center">
  <img src="https://raw.githubusercontent.com/ellmos-ai/ellmos-blender-use-mcp/main/assets/logo.jpg" alt="ellmos Blender Use MCP logo" width="340">
</p>

# ellmos Blender Use MCP

**🇩🇪 [Deutsche Version](README_de.md)**

*Part of the [ellmos-ai](https://github.com/ellmos-ai) family and the [open-bricks](https://github.com/open-bricks) open-source initiative.*

[![npm version](https://img.shields.io/npm/v/ellmos-blender-use-mcp.svg)](https://www.npmjs.com/package/ellmos-blender-use-mcp)
[![npm downloads](https://img.shields.io/npm/dt/ellmos-blender-use-mcp.svg)](https://www.npmjs.com/package/ellmos-blender-use-mcp)
[![CI](https://github.com/ellmos-ai/ellmos-blender-use-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/ellmos-ai/ellmos-blender-use-mcp/actions/workflows/ci.yml)
[![Tests](https://img.shields.io/badge/Tests-5%20Suites%20Passed%20%7C%20100%25-brightgreen.svg)](test/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Attribution: NOTICE](https://img.shields.io/badge/Attribution-NOTICE-blue.svg)](NOTICE)
[![Node.js](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen.svg)](https://nodejs.org/)
[![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20Linux%20%7C%20macOS-lightgrey.svg)](https://github.com/ellmos-ai/ellmos-blender-use-mcp)
[![Privacy](https://img.shields.io/badge/Privacy-100%25%20Offline%20%7C%20Zero--Egress-success.svg)](SECURITY.md)
[![Security](https://img.shields.io/badge/Security-Isolated%20Headless%20%7C%20RunAsInvoker-success.svg)](SECURITY.md)
[![Security SLA](https://img.shields.io/badge/Security%20SLA-48h%20Response%20%7C%205d%20Triage-blue.svg)](SECURITY.md)
[![Code Style](https://img.shields.io/badge/Code%20Style-Standard%20%2F%20ESM-informational.svg)](package.json)
[![LLM-Ready](https://img.shields.io/badge/LLM--Ready-llms.txt-blue.svg)](llms.txt)
[![Glama](https://img.shields.io/badge/Glama-Listing-blue.svg)](https://glama.ai/mcp/servers/@ellmos-ai/ellmos-blender-use-mcp)
[![Ecosystem](https://img.shields.io/badge/Ecosystem-ellmos--ai-purple.svg)](https://github.com/ellmos-ai)
[![Umbrella](https://img.shields.io/badge/Umbrella-open--bricks-blue.svg)](https://github.com/open-bricks)
[![Last-checked](https://img.shields.io/badge/Last--checked-2026--09--22-informational.svg)](llms.txt)

---

### Quick Navigation

> **Language / Sprache:** 🇬🇧 **English** | 🇩🇪 **[Deutsch](README_de.md)**

[1. Key Capabilities](#key-capabilities) • [2. Target Personas & Discoverability](#target-personas--discoverability) • [3. Comparative Matrix](#comparative-matrix-vs-alternatives) • [4. Architecture & Topology](#architecture--workflow) • [5. Verification Lifecycle](#headless-verification-lifecycle) • [6. Tool Suite](#tools) • [7. FBX Verification Deep Dive](#blender_verify_fbx_reimport) • [8. Visual Verification Deep Dive](#blender_verify_visual) • [9. General Primitives](#general-purpose-primitives) • [10. CI/CD Integration](#cicd-pipeline-integration) • [11. Governance Invariants](#governance--runtime-invariants) • [12. Security Policy](SECURITY.md) • [13. Installation](#installation) • [14. Configuration](#configuration) • [15. Level 1 SBOM](THIRD_PARTY_LICENSES.md) • [16. Ecosystem](#ellmos-ai-ecosystem) • [17. LLM Context](llms.txt) • [18. License & Statutory Notice](#license--statutory-disclaimer)

---

<a id="key-capabilities"></a>
<a id="kernfaehigkeiten"></a>
## 1. Key Capabilities

An asset-QA tool for game and 3D asset pipelines: verify that an exported FBX actually reimports cleanly in headless Blender — mesh count, material count, and required naming prefixes checked automatically, with a deterministic JSON result instead of a manual eyeball pass. `blender_verify_fbx_reimport` is the core structural tool and `blender_verify_visual` its visual counterpart — the first counts meshes and checks name prefixes, the second renders four views and measures geometry that counting cannot see. `blender_locate` and `blender_run_script` are the general-purpose primitives both are built on.

**No add-on. No TCP port. No background daemon.** This server does not install anything into Blender, does not open a socket for a running Blender instance to connect to, and does not keep Blender resident. Each call spawns `blender --background --python <script.py>`, waits for a bounded, timeout-guarded exit, and returns the result — headless and stateless by design. It does not download assets and does not collect telemetry.

**How this differs from other Blender MCP servers.** Most Blender MCP projects (e.g. `ahujasid/blender-mcp`, the official Blender Labs MCP server) drive a *live, running* Blender GUI over a TCP/add-on bridge for interactive scene editing — a different use case with a different trust model (an open socket, an installed add-on, a persistent process). This server instead targets **CI-style, one-shot asset verification**: run it in a pipeline step, get a pass/fail JSON, move on. If you need live GUI control, use a reviewed Blender MCP add-on separately (see Safety below).

> [!NOTE]
> **AI / LLM Integration & Machine-Readable Context**: AI assistants (Claude, Codex, Gemini) can read [llms.txt](llms.txt) for machine-readable context, search phrases, and tool documentation. Regression test suites guard privacy hygiene and runtime memory safety.

> [!TIP]
> **CI & Asset Pipeline Automation**: Use `blender_verify_fbx_reimport` as an automated gate before committing 3D assets to source control. It flags missing prefixes (e.g., `SM_`, `M_`), unexpected mesh counts, or broken material assignments without human intervention.

---

<a id="target-personas--discoverability"></a>
<a id="zielgruppen--auffindbarkeit"></a>
## 2. Target Personas & High-Intent Discoverability

### [PERSONA-01] Indie & AAA Game Technical Artists & 3D Pipeline TDs
- **Profile:** Technical Artists managing FBX/GLTF asset pipelines for Unreal Engine, Unity, Godot, and custom C++ game engines.
- **Pain Point:** Exported 3D assets frequently have unapplied rotation (lying on their side in-engine), broken pivot offsets, missing `SM_`/`M_` prefixes, or unassigned materials that slip past manual review.
- **High-Intent Queries:** `blender fbx reimport verification mcp`, `blender headless asset qa gate`, `automated fbx naming convention check`, `detect unapplied rotation fbx blender`.
- **How We Solve It:** One-shot structural reimport verification and 4-view visual geometry checks without having to open the Blender GUI.

### [PERSONA-02] CI/CD Automation & Build Infrastructure Engineers
- **Profile:** DevOps and Build Engineers responsible for automated asset validation gates in GitHub Actions, GitLab CI, or Jenkins.
- **Pain Point:** Traditional Blender automation tools require installing graphical add-ons or running interactive background sockets, which fail in headless containerized runners.
- **High-Intent Queries:** `headless blender asset qa mcp server`, `github actions blender fbx qa gate`, `blender background script ci cd verification`, `blender mcp no add-on no tcp port`.
- **How We Solve It:** Stateless `blender --background` execution with strict 15-minute runaway timeouts, bounded 8 KB memory tails, zero add-ons, and deterministic JSON exit codes.

### [PERSONA-03] Autonomous AI Agent Engineers (Claude, Codex, Gemini)
- **Profile:** Developers deploying autonomous AI coding agents for procedural 3D generation, asset processing, and game prototyping.
- **Pain Point:** AI agents need to inspect and verify 3D assets without socket leaks, zombie processes, or uncontrolled memory consumption.
- **High-Intent Queries:** `mcp server fbx mesh material verification`, `ai agent blender 3d asset inspection`, `blender four-view rendering mcp`, `llm tool headless blender`.
- **How We Solve It:** Native Model Context Protocol (MCP) server with comprehensive [llms.txt](llms.txt) documentation, robust `taskkill /T /F` process tree termination, and fail-closed temporary file cleanup.

### [PERSONA-04] Enterprise Game Studio Compliance & Security Officers
- **Profile:** Security Officers and Compliance Managers safeguarding proprietary game IP and development workstations.
- **Pain Point:** Third-party DCC tools frequently open local network ports, dial remote telemetry servers, or require administrator privileges.
- **High-Intent Queries:** `offline blender mcp zero egress`, `air gapped 3d asset verification`, `unprivileged blender asset qa`, `zero copyleft mcp tool`.
- **How We Solve It:** Strict `RunAsInvoker` non-elevation certification, 100% offline zero-egress guarantee, zero runtime telemetry, and Level 1 SBOM with 0% copyleft licenses.

---

<a id="comparative-matrix-vs-alternatives"></a>
<a id="vergleichsmatrix-gegenueber-alternativen"></a>
## 3. 10-Dimension Comparative Matrix vs. Alternatives

| Invariant / Dimension | [1] `ellmos-blender-use-mcp` | [2] Interactive Blender MCP (TCP Add-on) | [3] Ad-Hoc Python Scripts | [4] Heavy DCC Suites (Maya / 3ds Max QA) | [5] Cloud SaaS 3D Checkers (Sketchfab) |
|---|---|---|---|---|---|
| **INV-LOCAL-01: Network & Air-Gap** | **100% Offline / Zero-Egress** (0 network calls) | Open TCP localhost listener required | Local, but unbounded network access | Local, but heavy license server polling | Remote SaaS upload required (Egress risk) |
| **INV-HEADLESS-02: Add-on Burden** | **Zero Add-ons** (works out of the box) | Requires Blender add-on installation | No add-on required | Proprietary plugin installations | Web browser or heavy client upload |
| **INV-SEC-03: Privilege Model** | **Unprivileged RunAsInvoker** (User mode) | User mode, but open socket attack surface | Unrestricted script execution | Administrator/Service installation | SaaS cloud security boundary |
| **INV-BOUND-04: Memory Bounding** | **Hard Tail Buffer (8 KB - 50 KB max)** | Unbounded GUI session memory | Unbounded console output memory | Unbounded workstation memory footprint | Cloud processing quotas |
| **INV-INTEG-05: Structured JSON QA** | **Deterministic Machine-Readable JSON** | Text prompt / chat responses | Unstructured stdout prints | XML / propriety log reports | Web dashboard visualization |
| **INV-VISUAL-06: 4-View Geometry** | **Standardized 4-View Render Pipeline** | Manual GUI eyeball rotation | Requires custom camera scripts | Manual viewport navigation | Single WebGL model viewer |
| **INV-CLEAN-07: Ephemeral Cleanup** | **Fail-Closed Automated Temp Purge** | Persistent scene state in memory | Leftover .py/.blend scratch files | Heavy project temp directories | Remote cloud storage retention |
| **INV-CROSS-08: Cross-Platform** | **Windows, Linux, macOS Parity** | Dependent on GUI desktop support | OS-dependent path handling | OS-constrained (primarily Windows) | Platform-independent browser |
| **INV-SYNC-09: Lock & Sync Defense** | **Multi-Host Lock & Sync Hardened** | Vulnerable to file locking collisions | No lock awareness | Heavy proprietary file locks | No multi-device git discipline |
| **INV-SLA-10: Security SLA** | **48h Intake / 5d Triage Commitment** | Community best-effort (no SLA) | No formal support | Enterprise support contract required | Generic SaaS ticket queue |

---

<a id="architecture--workflow"></a>
<a id="architektur--workflow"></a>
## 4. Architecture & Component Topology

```mermaid
graph TD
    subgraph Client ["AI Assistant & Client Environment"]
        AI["AI Agent (Claude / Codex / Gemini)"]
        Config["MCP Configuration (npx / node)"]
    end

    subgraph Server ["ellmos Blender Use MCP Server"]
        MCP["MCP Protocol Server (src/index.js)"]
        subgraph Tools ["Tool Handlers"]
            T1["blender_verify_fbx_reimport"]
            T2["blender_run_script"]
            T3["blender_locate"]
            T4["blender_verify_visual"]
        end
        Safety["Timeout & Tail Buffer Guard (8k chars)"]
    end

    subgraph Subprocess ["Headless Subprocess (Isolated)"]
        Exe["Blender Executable (blender --background)"]
        Python["Temp Python Verification Script"]
        FBX["Target FBX Asset File"]
        JSONOut["Deterministic JSON Result"]
    end

    AI -->|JSON-RPC Request| MCP
    MCP --> Tools
    T1 -->|Generates script & spawns| Exe
    T2 -->|Executes arbitrary python| Exe
    T3 -->|Locates binary| Exe
    T4 -->|Generates visual verification script & spawns| Exe
    Exe --> Python
    Python --> FBX
    FBX -->|Mesh / Material / Naming QA| JSONOut
    JSONOut --> Safety
    Safety -->|Bounded Response| AI

    style Client fill:#1e1e2e,stroke:#89b4fa,stroke-width:1px
    style Server fill:#181825,stroke:#cba6f7,stroke-width:1px
    style Subprocess fill:#11111b,stroke:#a6e3a1,stroke-width:1px
```

---

<a id="headless-verification-lifecycle"></a>
<a id="headless-verifikations-lebenszyklus"></a>
## 5. Headless Asset-QA Verification Lifecycle

```mermaid
sequenceDiagram
    autonumber
    actor Client as AI Assistant / CI Pipeline
    participant Server as ellmos Blender Use MCP
    participant Resolver as Blender Resolver
    participant Process as Headless Subprocess
    participant Python as Blender Python Engine
    participant FS as Local Filesystem (FBX)

    Client->>Server: Call blender_verify_fbx_reimport(fbxPath, requiredPrefixes)
    Server->>Resolver: Resolve Blender Executable (blender_locate / BLENDER_EXE / Registry / PATH)
    Resolver-->>Server: Return Validated Executable Path
    Server->>FS: Write Temp Python Verification Script
    Server->>Process: Spawn blender --background --python script (timeout-guarded)
    Process->>Python: Execute Verification Script
    Python->>FS: bpy.ops.import_scene.fbx(filepath=fbxPath)
    FS-->>Python: Parse Mesh Objects & Material Slots
    Python->>Python: Validate Naming Prefixes, Object Counts & Hierarchy
    Python->>FS: Write Output JSON Verification Result
    Process-->>Server: Process Exit (Exit Code 0 / Bounded Tail Buffer)
    Server->>FS: Read Result & Clean Up Temp Verification Script
    Server-->>Client: Deterministic JSON Result (meshCount, materialCount, missingPrefixes, ok)
```

---

<a id="tools"></a>
<a id="werkzeuge"></a>
## 6. Tool Suite & Verification Matrix

| Tool | Purpose | Primary Output | Memory Guard |
|---|---|---|---|
| `blender_verify_fbx_reimport` | Generate a temporary Blender verification script, import an FBX, and write a JSON result with mesh/material counts and missing required prefixes. | JSON Report | Bounded 8 KB Tail |
| `blender_verify_visual` | Render four views of an FBX and check geometry a structural reimport cannot see: unapplied rotation, floating parts, pivot outside the model, transform residuals, stray empties. | 4 PNGs + JSON | Bounded 8 KB Tail |
| `blender_run_script` | Run `blender --background --python <script.py>` with optional arguments and bounded stdout tail. | Script Tail Text | 8 KB - 50 KB Max |
| `blender_locate` | Resolve the Blender executable from an explicit path, `BLENDER_EXE`, standard Windows install locations, or PATH. | Resolved Path | Zero Subprocess |

---

<a id="blender_verify_fbx_reimport"></a>
<a id="blender_verify_fbx_reimport-de"></a>
## 7. `blender_verify_fbx_reimport` Deep Dive & Schema

Imports an FBX file into headless Blender and verifies mesh count, empty count, material count, material slot assignments, and required naming prefixes.

### Parameters

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `fbxPath` | `string` | **Yes** | — | Target FBX asset file path to verify. |
| `resultPath` | `string` | No | `<fbxDir>/verify_reimport_result.json` | Path where structured JSON verification results will be written. |
| `requiredPrefixes` | `string[]` | No | `[]` | List of naming prefixes required on meshes or empties (e.g. `["SM_", "M_"]`). |
| `blenderPath` | `string` | No | auto-detect | Custom path to the Blender executable (`blender.exe` / `blender`). |
| `timeoutMs` | `number` | No | `120000` | Process execution timeout in milliseconds (max: `600000`). |

### Example Invocation

```json
{
  "fbxPath": "assets/models/SM_Watchtower_01.fbx",
  "requiredPrefixes": ["SM_", "M_"]
}
```

### Deterministic Output Schema

```json
{
  "ok": true,
  "blender": "C:\\Program Files\\Blender Foundation\\Blender 4.2\\blender.exe",
  "fbxPath": "C:\\projects\\game\\assets\\models\\SM_Watchtower_01.fbx",
  "resultPath": "C:\\projects\\game\\assets\\models\\verify_reimport_result.json",
  "exitCode": 0,
  "timedOut": false,
  "durationMs": 1820,
  "outputTruncated": false,
  "verification": {
    "ok": true,
    "fbx": "C:\\projects\\game\\assets\\models\\SM_Watchtower_01.fbx",
    "mesh_count": 3,
    "empty_count": 0,
    "material_count": 2,
    "materials": [
      "M_Stone_Brick",
      "M_Wood_Trim"
    ],
    "missing_prefixes": [],
    "script_free": true
  }
}
```

---

<a id="blender_verify_visual"></a>
<a id="blender_verify_visual-de"></a>
## 8. Visual Verification Deep Dive & 4-View Geometry

Renders four views of an FBX and checks geometry that a **structural** reimport cannot see.

`blender_verify_fbx_reimport` counts meshes and checks name prefixes — it cannot tell you that a mesh is lying on its side, that a part floats away from the assembly, or that the pivot sits outside the model. This tool does, and it produces the renders to look at.

```json
{ "fbxPath": "kit.fbx", "outDir": "verify_visual", "expectHeight": "2.5,3.5" }
```

### Four-View Orthogonal Projection & Failure Detection

```text
+---------------------------------------+---------------------------------------+
|              TOP VIEW                 |           PERSPECTIVE VIEW            |
|              (XY Plane)               |              (Isometric)              |
|                                       |                                       |
|   Detects: X/Y planar alignment,      |   Detects: Overall silhouette,        |
|   bounding box symmetry, footprint    |   complex assembly integration        |
+---------------------------------------+---------------------------------------+
|             FRONT VIEW                |               SIDE VIEW               |
|              (XZ Plane)               |              (YZ Plane)               |
|                                       |                                       |
|   Detects: Model height, Z-grounding, |   Detects: Depth errors, floating vs  |
|   upright orientation (lying down)    |   resting parts, pivot offset         |
+---------------------------------------+---------------------------------------+
```

Detected failure classes: unapplied rotation, floating parts in multi-part assets, pivot/origin outside the bounding box, transform residuals in the export, stray empties.

### Deterministic Output Schema

```json
{
  "ok": true,
  "blender": "C:\\Program Files\\Blender Foundation\\Blender 4.2\\blender.exe",
  "fbxPath": "C:\\projects\\game\\kit.fbx",
  "outDir": "C:\\projects\\game\\verify_visual",
  "exitCode": 0,
  "timedOut": false,
  "durationMs": 3450,
  "outputTruncated": false,
  "verification": {
    "ok": true,
    "fails": [],
    "warns": [],
    "metrics": {
      "dimensions": [2.45, 1.82, 4.10],
      "center": [0.0, 0.0, 2.05],
      "pivotAtOrigin": true,
      "unappliedRotation": false
    }
  },
  "renders": {
    "view_front": "verify_visual/view_front.png",
    "view_side": "verify_visual/view_side.png",
    "view_top": "verify_visual/view_top.png",
    "view_perspective": "verify_visual/view_perspective.png"
  }
}
```

**Why four views and not one:** a single front shot hides depth errors — floating-vs-resting, behind-vs-in-front. A real case: chain links looked correctly attached from the front and were not attached at all when seen from the side.

Like every tool here it is a one-shot headless run: no add-on, no daemon, no socket.

---

<a id="general-purpose-primitives"></a>
<a id="allgemeine-basis-werkzeuge"></a>
## 9. General-Purpose Primitives (`blender_locate` & `blender_run_script`)

- `blender_locate`: Resolves the active Blender executable on Windows, Linux, or macOS across explicit call parameters, environment variable `BLENDER_EXE`, standard installation paths (newest version first), and system `PATH`.
- `blender_run_script`: Runs an arbitrary local Python script via `blender --background --python <script.py>` with optional arguments, timeout guardrail, and hard tail-buffer truncation (8 KB default, up to 50 KB max).

---

<a id="cicd-pipeline-integration"></a>
<a id="cicd-pipeline-integration-de"></a>
## 10. CI/CD Pipeline Integration (GitHub Actions)

Integrate headless asset QA directly into your GitHub Actions pull request checks to prevent broken FBX models, missing material slots, unapplied rotations, and displaced pivots from reaching the main branch:

```yaml
name: 3D Asset QA Gate

on:
  pull_request:
    paths:
      - "assets/**/*.fbx"

jobs:
  verify-assets:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v4

      - name: Install Blender & Node.js
        run: |
          sudo snap install blender --classic
          sudo apt-get install -y nodejs npm

      - name: Run Headless Asset Verification
        run: |
          npx -y ellmos-blender-use-mcp --version
          # Run structural FBX QA and 4-view visual verification
          blender --background --factory-startup --python node_modules/ellmos-blender-use-mcp/scripts/verify_asset_visual.py -- \
            --fbx assets/models/SM_HeroAsset.fbx \
            --out build/asset-qa/ \
            --json
```

---

<a id="governance--runtime-invariants"></a>
<a id="governance--laufzeit-invarianten"></a>
## 11. Governance & Runtime Invariants

The server enforces 10 architectural and runtime invariants to guarantee privacy, safety, process isolation, and auditability:

| ID | Invariant | Guarantee & Implementation Details |
|---|---|---|
| `INV-LOCAL-01` | **100% Local-First & Zero Network Egress** | Zero outbound network requests, external telemetry, or remote API calls. Runs fully air-gapped on the host machine. |
| `INV-HEADLESS-02` | **Stateless & Add-on-Free Headless Execution** | No Blender add-on installation, no open TCP sockets or daemon listeners, and zero mutation of the host Blender user directory. |
| `INV-SEC-03` | **Non-Elevation & Unprivileged RunAsInvoker** | Operates strictly with unprivileged user-mode permissions (`RunAsInvoker`). Never requires or requests administrative elevation. |
| `INV-BOUND-04` | **Strict Timeout & Tail-Buffer Bounding** | Every execution is timeout-guarded. Standard output and error streams are captured into bounded tail buffers (default 8 KB, max 50 KB), preventing runaway memory. |
| `INV-INTEG-05` | **Deterministic JSON & Evidence Integrity** | Produces verifiable, machine-readable JSON reports containing exact mesh counts, material slots, naming prefixes, and geometry metrics. |
| `INV-VISUAL-06` | **Four-View Multi-Angle Visual Verification** | Generates orthogonal front, side, top, and perspective renders to detect geometry defects (floating parts, unapplied rotation) that depth-blind checks miss. |
| `INV-CLEAN-07` | **Fail-Closed Ephemeral Staging & Script Cleanup** | Ephemeral Python verification scripts and temporary staging files are unconditionally purged from the filesystem upon completion or failure. |
| `INV-CROSS-08` | **Cross-Platform Operating System Parity** | Uniform execution and automated discovery across Windows, Linux, and macOS without hardcoded host dependencies. |
| `INV-SYNC-09` | **Cloud-Sync & Multi-Host Lock Discipline** | Resilient against cloud synchronization conflicts (`*-conflict-*`, `*-CONFLIT-*`) and compliant with canonical multi-agent locks. |
| `INV-SLA-10` | **48h Security Response & 5-Day Triage SLA** | Formal vulnerability acknowledgment within 48 hours and triage commitment within 5 business days via official coordination channels. |

---

<a id="security-policy"></a>
<a id="sicherheitsrichtlinie"></a>
## 12. Security Policy & RunAsInvoker

- **Local Python Execution**: This server runs local Python inside Blender. Use only scripts and asset paths you trust.
- **RunAsInvoker Non-Elevation**: Runs strictly under standard unprivileged user accounts; no administrator or root privileges required.
- **Process Cleanup**: Subprocesses are supervised; Windows processes are cleanly killed via `taskkill /pid <PID> /T /F` on timeout.
- **Offline Assurance**: No remote asset marketplaces, external APIs, or usage telemetry are involved.
- **Vulnerability Disclosure**: Review [SECURITY.md](SECURITY.md) for official coordination contacts and our binding 48-hour response SLA.

---

<a id="installation"></a>
<a id="installation-de"></a>
## 13. Installation & Getting Started

### Option 1: Run via npx (no install)

```json
{
  "mcpServers": {
    "blender-use": {
      "command": "npx",
      "args": ["-y", "ellmos-blender-use-mcp"]
    }
  }
}
```

### Option 2: Install from source

```bash
git clone https://github.com/ellmos-ai/ellmos-blender-use-mcp.git
cd ellmos-blender-use-mcp
npm install
npm run build
node src/index.js
```

For a local checkout, point `command`/`args` at the cloned `src/index.js` instead:

```json
{
  "mcpServers": {
    "blender-use": {
      "command": "node",
      "args": ["<path-to-repo>/src/index.js"]
    }
  }
}
```

---

<a id="configuration"></a>
<a id="konfiguration-de"></a>
## 14. Configuration & Environment

- `BLENDER_EXE` — optional path to the Blender executable. Without it, tools try the explicit `blenderPath` argument, then `BLENDER_EXE`, then standard Blender install locations on Windows (`%ProgramFiles%\Blender Foundation\Blender <version>\blender.exe` and equivalent 32-bit and per-user roots, newest version first), then `PATH`. On Linux and macOS the lookup goes straight from `BLENDER_EXE` to `PATH`.
- Every tool also accepts an explicit `blenderPath` argument per call, which takes priority over `BLENDER_EXE`.
- Process output is retained only as a tail: `blender_run_script` defaults to 8,000 characters (configurable up to 50,000); FBX verification keeps 8,000. The response marks `outputTruncated: true` when earlier output was discarded, so verbose Blender scripts cannot grow the MCP process memory without bound.

---

<a id="third-party-licenses--level-1-sbom"></a>
<a id="drittanbieter-lizenzen--level-1-sbom"></a>
## 15. Third-Party Licenses & Level 1 SBOM

All runtime production dependencies are distributed under permissive open-source licenses (MIT and BSD-2-Clause) with 0% copyleft:
- `@modelcontextprotocol/sdk` (MIT)
- `update-notifier` (BSD-2-Clause)
- `zod` (MIT)

For the complete dependency inventory, Invariant Cross-Reference Matrix, and prior-art isolation analysis, see [THIRD_PARTY_LICENSES.md](THIRD_PARTY_LICENSES.md).

---

<a id="ellmos-ai-ecosystem"></a>
<a id="ellmos-ai-oekosystem"></a>
## 16. Sibling Projects & ellmos-ai Ecosystem

This MCP server is part of the **[ellmos-ai](https://github.com/ellmos-ai)** ecosystem — AI infrastructure, MCP servers, and intelligent tools.

### MCP Server Family

| Server | Tools | Focus | npm |
|--------|-------|-------|-----|
| [FileCommander](https://github.com/ellmos-ai/ellmos-filecommander-mcp) | 46 | Filesystem, process management, interactive sessions, cloud-lock-safe operations | [`ellmos-filecommander-mcp`](https://www.npmjs.com/package/ellmos-filecommander-mcp) |
| [CodeCommander](https://github.com/ellmos-ai/ellmos-codecommander-mcp) | 22 | Code analysis, JSON repair, imports, diffs, regex | [`ellmos-codecommander-mcp`](https://www.npmjs.com/package/ellmos-codecommander-mcp) |
| [Clatcher](https://github.com/ellmos-ai/ellmos-clatcher-mcp) | 12 | File repair, format conversion, batch operations | [`ellmos-clatcher-mcp`](https://www.npmjs.com/package/ellmos-clatcher-mcp) |
| [n8n Manager](https://github.com/ellmos-ai/n8n-manager-mcp) | 18 | n8n workflow management via AI assistants | [`n8n-manager-mcp`](https://www.npmjs.com/package/n8n-manager-mcp) |
| [ControlCenter](https://github.com/ellmos-ai/ellmos-controlcenter-mcp) | 20 | MCP stack discovery, profile management, control plane | [`ellmos-controlcenter-mcp`](https://www.npmjs.com/package/ellmos-controlcenter-mcp) |
| [Homebase](https://github.com/ellmos-ai/ellmos-homebase-mcp) | 45 | Local-first LLM memory, knowledge, state, routing, swarm orchestration | [`ellmos-homebase-mcp`](https://www.npmjs.com/package/ellmos-homebase-mcp) (alpha) |
| [ServerCommander](https://github.com/ellmos-ai/ellmos-servercommander-mcp) | 8 | Server operations: health checks, log analysis, deploy dry-runs, mail diagnostics | [`ellmos-servercommander-mcp`](https://www.npmjs.com/package/ellmos-servercommander-mcp) (alpha) |
| **[Blender Use](https://github.com/ellmos-ai/ellmos-blender-use-mcp)** | **4** | **Headless Blender asset QA: structural FBX reimport checks and four-view visual verification** | **[`ellmos-blender-use-mcp`](https://www.npmjs.com/package/ellmos-blender-use-mcp)** (alpha) |
| [Open Compute](https://github.com/ellmos-ai/open-compute-mcp) | 10 | Model-agnostic computer use: capture, safety-gated actions, Windows UIA | [`open-compute-mcp`](https://www.npmjs.com/package/open-compute-mcp) (alpha) |

### AI Infrastructure & Developer Tools

| Project | Description |
|---------|-------------|
| [workflowhooker](https://github.com/ellmos-ai/workflowhooker) | Transparent command interceptor & safety sandbox for agentic workflows |
| [system-explorer](https://github.com/ellmos-ai/system-explorer) | System inspection, MCP orchestration, and fleet introspection runtime |
| [memoryhooker](https://github.com/ellmos-ai/memoryhooker) | High-performance episodic memory interceptor for AI agents |
| [policy-registry](https://github.com/ellmos-ai/policy-registry) | Policy distribution and compliance engine for multi-agent frameworks |
| [ellmos-delegation-authority](https://github.com/ellmos-ai/ellmos-delegation-authority) | Trust boundary verification & cryptographic token delegation authority |
| [sqlite-transit-sync](https://github.com/ellmos-ai/sqlite-transit-sync) | Transactional SQLite transit replication with snapshot isolation |
| [BACH](https://github.com/ellmos-ai/bach) | Local-first text-based OS for LLM agents — 113+ handlers, 550+ tools, SQLite memory |
| [open-compute](https://github.com/ellmos-ai/open-compute) | Model-agnostic computer-use core powering Open Compute MCP |
| [clutch](https://github.com/ellmos-ai/clutch) | Provider-neutral LLM orchestration with auto-routing and budget tracking |
| [rinnsal](https://github.com/ellmos-ai/rinnsal) | Lightweight agent memory, connectors, and automation infrastructure |
| [ellmos-stack](https://github.com/ellmos-ai/ellmos-stack) | Self-hosted AI research stack (Ollama + n8n + Rinnsal + KnowledgeDigest) |
| [MarbleRun](https://github.com/ellmos-ai/MarbleRun) | Autonomous agent chain framework for Claude Code |
| [gardener](https://github.com/ellmos-ai/gardener) | Minimalist database-driven LLM OS prototype (4 functions, 1 table) |
| [ellmos-tests](https://github.com/ellmos-ai/ellmos-tests) | Testing framework for LLM operating systems (7 dimensions) |

### Desktop Software Suite & Sibling Tools

Our partner organization **[open-bricks](https://github.com/open-bricks)** bundles AI-native desktop applications and developer utilities — a modern, open-source software suite built for the age of AI:

| Project | Ecosystem | Description |
|---------|-----------|-------------|
| [ProFiler](https://github.com/file-bricks/ProFiler) | `file-bricks` | Advanced file management, deep inspection, and batch pipeline workbench |
| [DokuZen](https://github.com/doc-bricks/DokuZen) | `doc-bricks` | Unified document converter, markdown formatter, and documentation hub |
| [PDFtoPDFocr](https://github.com/doc-bricks/PDFtoPDFocr) | `doc-bricks` | High-fidelity OCR processor and searchable PDF pipeline |
| [FormularErstellen](https://github.com/doc-bricks/FormularErstellen) | `doc-bricks` | Declarative form generator and PDF schema compiler |
| [MediaBrain](https://github.com/file-bricks/MediaBrain) | `file-bricks` | AI-assisted media categorization, tagging, and asset management |
| [TextBrain](https://github.com/doc-bricks/TextBrain) | `doc-bricks` | Text analysis, summarization, and local language intelligence suite |
| [knowledgedigest](https://github.com/open-bricks/knowledgedigest) | `open-bricks` | Knowledge extraction, semantic clustering, and synthesis engine |
| [DevCenter](https://github.com/dev-bricks/DevCenter) | `dev-bricks` | Developer environment orchestration and multi-agent management cockpit |
| [CodeBox](https://github.com/dev-bricks/CodeBox) | `dev-bricks` | Secure execution sandbox and isolated code-runner runtime |
| [BattleStage](https://github.com/entertain-and-more/BattleStage) | `entertain-and-more` | Modular tactical game arena with automated asset pipeline validation |

---

<a id="llm-context-index"></a>
<a id="llm-kontextindex"></a>
## 17. LLM Context Index (`llms.txt`)

For AI assistants and LLM tooling, [llms.txt](llms.txt) provides machine-readable architecture documentation, tool descriptions, search phrases, and runtime invariants.

---

<a id="license--statutory-disclaimer"></a>
<a id="lizenz--haftungsausschluss"></a>
## 18. License & Statutory Disclaimer (§ 521 BGB)

### License & Attribution
Distributed under the MIT License. See [LICENSE](LICENSE) and [NOTICE](NOTICE) for full copyright and attribution details.

### Statutory German Disclaimer (§ 521 BGB Gefälligkeitsrecht)
This open-source package is provided free of charge without consideration (Gefälligkeit). Under statutory German law (§ 521 BGB), liability for defects in quality and title is strictly limited to intentional misconduct (Vorsatz) and gross negligence (grobe Fahrlässigkeit).

### Security Response Commitment
Security vulnerabilities are triaged within 48 hours under our binding Security SLA. Refer to [SECURITY.md](SECURITY.md) for coordinated disclosure guidelines.

TDQS

B3.3/5.0

Scored across 3 tools

Disambiguation4/5

Each tool has a distinct purpose: locating the executable, running a script, and verifying FBX re-import. The only slight overlap is that verify_fbx_reimport is a specialized form of run_script, but the descriptions clarify their intended uses.

Naming Consistency5/5

All tool names follow a consistent 'blender_<verb>...' pattern (locate, run_script, verify_fbx_reimport). The naming convention is uniform and predictable.

Tool Count5/5

With only 3 tools, the set is tightly scoped to Blender automation workflows. Each tool serves a clear and necessary function, and the count is well within the expected range for a focused utility server.

Completeness3/5

The toolset covers the core workflow of locating Blender, running scripts, and verifying FBX files, but lacks generic ways to retrieve script output or handle other common Blender operations. This leaves some gaps for broader automation scenarios.

Maintenance

ActivityActive
ResponsivenessNo issues