Library / SDK
scenario-labs/blender-plugin avatar
scenario-labs/blender-plugin

Scenario for Blender puts generative image, video and 3D into the viewport

Scenario for Blender: AI images, video, 3D and PBR materials in the viewport, plus a local MCP server for agents. Blender 5.0+ extension, GPL-3.0-or-later.

758 stars79 forksPythonGPL-3.0

At a glance

What is it?
Scenario for Blender is a Blender 5.0 extension that generates images, video, 3D meshes, PBR surfaces, audio and 360 environments from a sidebar, uses scene captures as input, turns a written description into a greybox layout with Blockout, and ships a local MCP server so agents can drive it. It suits a 3D artist who wants generated assets inside Blender rather than a separate service, and it needs a paid Scenario account.
Who is it for?
Adopt Scenario for Blender if you are working in Blender 5.0 and want generated images, video, meshes and PBR surfaces to land in your scene without leaving the viewport, because the extension writes to an output folder, imports results into Blender and, unusually for an add-on, exposes a local MCP server so an agent can drive the same operations.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What the extension actually puts in your scene

The README describes an extension that brings Scenario image, video, 3D, PBR surface, audio and 360 environment generation into Blender, and the feature list gives the lanes in detail. Image generates from text or reference images and the results become textures or references. Video generates from prompts, images or scene playblasts, which is the interesting one because it means the extension can record what is happening in your viewport and use it as the source. 3D generates meshes and runs further steps on them. There is also PBR surface generation, audio, and 360 environment generation for lighting a scene. Beyond generation, the extension takes scene captures and selected meshes as inputs, lets you explore camera moves, and turns a written scene description into a greybox layout with Blockout. The interface is a compact composer, a sidebar, an expanded Studio view and the local MCP server, all of which give access from your scene. The README labels the project experimental and asks you to read the known limitations before relying on a workflow, and that is an unusual admission to find in a README that also carries badges for API documentation, app documentation, MCP documentation, an OpenSSF Scorecard and OpenSSF Best Practices.

Installing from the official extension repository

The extension is distributed through its own remote repository rather than through extensions.blender.org, and the reason is stated: the Blender Extensions terms restrict extensions whose functionality depends on external registration, keys or payments, including access to external services, and Scenario requires an account and API credentials. The installation steps are five. First turn on Allow Online Access under Edit > Preferences > System > Network. Then open Edit > Preferences > Get Extensions > Repositories, choose Add Remote Repository and enter the repository index URL, https://blender.scenario.com/repo/index.json.

After that you find Scenario in Get Extensions and install it, where it appears as Scenario in Blender's Add-ons list. In Scenario you open Organization settings > API Keys > Add API Key to obtain the key and secret, and then in Edit > Preferences > Add-ons > Scenario you leave Credentials set to Saved in Blender, paste the key and secret, press Test connection and choose an Output Folder for generated files. A ZIP install is also supported: download scenario-<version>.zip from the releases page and keep it zipped, then drag it onto a Blender window or use Edit > Preferences > Get Extensions > Install from Disk. The README warns that a ZIP copy does not update itself, and it explains how to switch from a ZIP copy to the repository by uninstalling the ZIP first and entering the key and secret again.

Verifying the download you actually installed

The ZIP route comes with a verification procedure that is unusual for a Blender extension and worth following. For releases that include SHA256SUMS, save the ZIP, the scenario-handbook-<version>.html file and SHA256SUMS together, then check them with sha256sum -c SHA256SUMS, with shasum -a 256 -c SHA256SUMS on macOS, and with the GitHub CLI run gh attestation verify scenario-<version>.zip -R scenario-labs/blender-plugin. The README notes that historical v* releases have neither the sums file nor attestation, so the guarantee only exists for recent releases, and it links the details in the user guide. One detail deserves attention: uninstalling the extension deletes the ZIP copy's storage, including its stored jobs and the media that the video, sound and Film review strips Scenario added play from, while past generations remain available under Project history (cloud) in Generations. The README also says never to keep both copies installed.

Credentials, cost and the offline question

Requirements are explicit and they are the real cost of this extension. You need Blender 5.0 or later as declared in the extension manifest, a Scenario account with API access, an API key and its secret, and an internet connection with Blender's Allow Online Access setting enabled before contacting Scenario. Then there is the billing model. Scenario generations and prompt helpers consume Creative Units, the README says to review the displayed estimate before Generate, and it notes that models, parameters and references affect the cost. There is also a Share anonymous usage data switch in the extension's preferences which stays off unless you turn it on, and rating the extension or giving feedback happens through a heart in the Scenario panel or through Feedback in Studio. The extension's own repository separates credentials from the extension: the .env.example in the repository is explicitly for the development tooling, and it says the extension does not read that file or the SCENARIO_TEST_* variables, that offline tests need no credentials, and that paid smokes require separate authorization.

The local MCP server and the agent path

The MCP server is the part that distinguishes this from a normal add-on, and it is why the repository carries an .mcp.json file, a skills-lock.json and a tools directory with a generator for MCP documentation. The MCP documentation lives at mcp.scenario.com/docs, and the README describes the local server as one of the ways to reach the same operations from your scene. The developer tooling around it is documented in the repository rather than the README. The Makefile has a target that regenerates the MCP documentation with a script under tools/, and the pyproject.toml pins the SDK the tooling uses, scenario-sdk==2.3.0, alongside httpx, markdown, pillow and the reuse tooling. The MCP configuration file in the repository root is how a developer wires the local server into an agent, and the AGENTS.md, .claude/, .codex/ and .agents/ directories show that the project itself is developed with agent tooling. The tests are organised the same way, with pytest configured to run tests/unit and tests/fuzz and a marker called allow_network that explicitly permits non-loopback connections in a test process.

Working in the repository

The development setup is uv based and heavily scripted, and the Makefile is the entry point. The environment is synced with uv sync --locked, and tests run through the same locked runner.

bash
	$(UV) sync --locked
bash
	$(UV) run --locked --no-env-file python -m pytest

Linting and formatting are ruff based, with a check target and a format target that applies fixes, and there are dedicated targets for rule checking, licence checking with reuse, and a knowledge check.

bash
	$(UV) run --locked ruff check -- $(LINT_PATHS)
	$(UV) run --locked ruff format --check -- $(LINT_PATHS)

Building and installing the extension into Blender is also a make target, with a separate target for building the repository index and one for an isolated install.

bash
	$(UV) run --locked --no-env-file python tools/build.py $(BLENDER_BUILD_ARGS)

There is a GUI capture target that takes a lane name, image by default, and a smoke suite target that runs a Python module. The pyproject.toml declares that the project is environment metadata only and is never built or installed, requires Python 3.11 or newer, and pins ruff to 0.16.7 with a required-version key so the toolchain cannot drift under the project.

Where Scenario for Blender is the wrong choice

Four limits are clear. The first is the hard dependency on a paid hosted service. Every generation leaves your machine, consumes Creative Units and needs valid credentials, so an offline or air-gapped studio, or a team that cannot justify a per-generation cost, is excluded. That also makes the project unsuitable for pipelines that must be reproducible at a fixed cost. The second is the Blender version floor: 5.0 or later, as declared in the extension manifest, which excludes the large installed base on 4.x. The third is the experimental label and the known limitations document, and the practical consequence is that the workflows you build today may change in a minor release, and the release history shows a fast cadence, with v0.12.0, v0.11.0 and v0.10.0 published on 2026-10-18, 2026-10-14 and 2026-10-13. A 0.x version number plus releases three days apart is a signal about stability. The fourth is licensing, and it is the one that needs care if you work commercially. The extension is GPL-3.0-or-later, so it is open source, and the README is explicit that it is a Python extension with pinned SDK dependency wheels. That licence is fine for using the extension as a user, and it is a different question if you want to modify the extension and ship your modification, because GPL-3.0 obligations then attach to the derivative work, and the repository even carries a REUSE.toml and a LICENSES/ directory, plus a TRADEMARKS.md, which shows the project is careful about how the Scenario name is used. For the alternative, Blender's own image and asset tooling and community add-ons cover a good part of the local workflow without a hosted dependency, and a local generative model run on your own hardware gives you the same generation without Creative Units, at the cost of setting up the model yourself.

Editorial conclusion

Adopt Scenario for Blender if you are working in Blender 5.0 and want generated images, video, meshes and PBR surfaces to land in your scene without leaving the viewport, because the extension writes to an output folder, imports results into Blender and, unusually for an add-on, exposes a local MCP server so an agent can drive the same operations. Do not adopt it if you need offline work, because every generation contacts Scenario and consumes Creative Units, and do not adopt it if you are on Blender 4.x, since the extension manifest requires 5.0 or later. Verify two things before you commit to a workflow: that your API key and secret are scoped to the organization you intend to charge to, since generations are billed and the extension shows an estimate before you press Generate, and that you read docs/KNOWN_LIMITATIONS.md, which the README asks you to do before relying on any of it. The practical first step is to install from the official repository at https://blender.scenario.com/repo/index.json, paste the credentials under Add-ons > Scenario and press Test connection.

Frequently asked questions

What is Scenario for Blender?

It is an experimental Blender 5.0 extension written in Python that brings Scenario image, video, 3D, PBR surface, audio and 360 environment generation into Blender, uses scene captures and selected meshes as inputs, turns a written scene description into a greybox layout with Blockout, and ships a local MCP server. It is licensed GPL-3.0-or-later.

How do I install the Scenario Blender extension?

Enable Allow Online Access under Edit > Preferences > System > Network, then add the remote repository https://blender.scenario.com/repo/index.json under Get Extensions > Repositories, and install Scenario from there. You can also download scenario-<version>.zip from the releases page and use Install from Disk, keeping the file zipped.

Why is the extension not on extensions.blender.org?

The README says the Blender Extensions terms restrict extensions whose functionality depends on external registration, keys or payments, including access to external services, and Scenario requires an account and API credentials. It is therefore distributed through its own repository, with each release's ZIP also attached to its GitHub release.

What does the Scenario Blender extension cost to use?

Scenario generations and prompt helpers consume Creative Units. The README asks you to review the displayed estimate before generating, and notes that models, parameters and references affect the cost, so the extension needs a Scenario account with API access, an API key and its secret.

What does the local MCP server in Scenario for Blender do?

It gives access to the extension's operations from your scene for agents, and is documented at mcp.scenario.com/docs. The repository includes an .mcp.json configuration, a skills-lock.json file and a Makefile target that regenerates the MCP documentation from a script under tools/.

Official sources

  1. License: GPL-3.0
  2. Project website
  3. README
  4. Releases
  5. scenario-labs/blender-plugin on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/scenario-labs-blender-plugin.svg)](https://hysenlabs.com/projects/scenario-labs-blender-plugin)

Was this useful?