reels
Serves as the default 3D renderer for Reels Studio, allowing MCP-directed scenes to be rendered into frames for vertical reels.
Encodes rendered frames into an H.264 MP4 video file for the final reel export.
Provides an optional Three.js rendering backend for MCP-driven reel rendering as an alternative to Blender.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@reels Create a demo project and show me the opening frame with safe-zone guides."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Reels Studio
Make a vertical 3D reel from a short script. An AI assistant can direct the editor over MCP (Model Context Protocol), or you can edit the example scene as JSON and render it from the terminal. Blender draws the frames and FFmpeg writes the MP4 on your computer.
Render your first reel
You'll need Node.js 20 or newer, Blender 5.2.x, and FFmpeg with H.264 encoding on macOS or Linux. Install Blender in the usual macOS Applications folder or put the blender executable on your PATH. If it lives elsewhere, set REELS_BLENDER to its full path.
Clone the repository and render the example
git clone https://github.com/Endroe/reels-studio.git
cd reels-studio
npm ci
npm run demoThe demo renders a silent, two-shot reel called What if gravity took a coffee break? The last line gives the MP4 path. Watch the sample export.
Open the scene file. Change the second shot's title or the ball's final position, save, and run the demo again. Each run creates a separate draft under .workspace/demo/. The demo uses built-in shapes and requires no accounts or API keys.
Related MCP server: lc-editor
Make your own
Use the creator workflow for the brief, script review, shot plan, narration timing, and final viewing pass. It includes prompts you can paste into your assistant.
To let an MCP-capable assistant operate the editor, create an import folder with mkdir -p imports. Add the entry below to your client's stdio MCP configuration. Replace every /absolute/path/to/reels-studio with the location of this checkout. Launch Node directly. If the client cannot find Node, use the full path printed by which node.
{
"mcpServers": {
"reels": {
"command": "node",
"args": ["/absolute/path/to/reels-studio/server.mjs"],
"env": {
"REELS_DATA_DIR": "/absolute/path/to/reels-studio/.workspace/studio",
"REELS_IMPORT_ROOT": "/absolute/path/to/reels-studio/imports",
"REELS_FONT": "/absolute/path/to/reels-studio/assets/Montserrat-Black.ttf"
}
}
}
}Reconnect the client and try this prompt
Use the reels tools. Create a demo project, show me the opening frame with safe-zone guides, then change the hero's shirt to orange and show me the same frame. Wait for my feedback before rendering the full reel.
Each editor process needs its own data directory. The editor stores scenes, imported assets, and exports there. Your latest successful export is at exports/<project-id>/video.mp4 inside that directory. Copy a version you want to keep before rendering another revision. Publishing is a separate creator step.
Development
npm test runs the core suite, including a real stdio client handshake. Tests require Python 3. For render integration tests, install the optional Chromium backend and run
npm run browser:install
REELS_BLENDER_TEST=1 REELS_RENDER_TEST=1 npm testBlender is the default. The optional Three.js backend can be selected for MCP with REELS_RENDERER=three.
Included notices
Reels Studio code and the original example are licensed under GPL-3.0-or-later. Copyright 2026 Endroe. The Blender worker notice is retained. The bundled Montserrat font is distributed under its SIL Open Font License. Dependencies retain their respective licenses.
Available Tools
21 toolsreels_catalogBRead-only
Read supported scene features, limits, and the workflow. Small response; request the schema resource only when needed.
Inputs: no named parameters.
reels_createB
Create a project from structured shots or the demo. Returns only ID, revision and counts.
Inputs: project, projectId.
reels_download_assetB
Download a selected Poly Haven model and its PBR textures, verify checksums, embed as one GLB and register in the shared bank. Reuses existing downloads. New candidates require visual review. Powered by Poly Haven.
Inputs: providerId (required), resolution.
reels_edit_entityB
Patch one existing entity: color, pose, movement or geometry. Omitted fields stay unchanged.
Inputs: patch (required), shotId (required), entityId (required), revision (required), +1 more.
reels_edit_shotB
Patch only supplied fields in one shot. Camera fields merge; other supplied fields replace. No scene code or full-project rewrite.
Inputs: patch (required), shotId (required), revision (required), projectId (required).
reels_getBRead-only
Get a compact shot list, one full shot, or the complete document on explicit request.
Inputs: projectId (required), full, shotId.
reels_get_assetARead-only
Read one canonical asset record, including source provenance and converted variants.
Inputs: assetId (required).
reels_import_assetA
Import audio, image, or self-contained GLB from the configured local import root. Stored once by content hash; no arbitrary URLs or code.
Inputs: path (required).
reels_import_pipelineA
Import an existing work/ narration and aligned words into a new editor project. Visuals become explicit placeholders; does not convert WGSL or modify the source.
Inputs: directory (required), projectId.
reels_listCRead-only
List projects with compact summaries and pagination.
Inputs: limit, offset.
reels_previewARead-only
Render one frame as an inline image. Use sparse key times; enable guides to inspect safe zones.
Inputs: projectId (required), time, guides.
reels_preview_assetARead-only
Inspect the stored preview of one selected asset without loading its mesh or running Blender. Use after search; previews may not exist for source-only assets.
Inputs: assetId (required).
reels_register_assetB
Register an already imported file in the searchable bank. Reuse an existing asset ID when adding a new variant. New variants require visual review before resolve will return them.
Inputs: kind (required), name (required), tags (required), asset (required), +3 more.
reels_renderB
Queue an MP4 export of the current revision. Identical content/settings reuse the cached export. Returns immediately.
Inputs: projectId (required), width.
reels_render_statusBRead-only
Read the last render status for a project. Output is the captured revision, even if later edits exist.
Inputs: projectId (required).
reels_resolve_assetBRead-only
Resolve a verified reusable variant to the hashed asset reference for a model/image/audio field. Rejects candidates, rejected versions and stale conversions.
Inputs: assetId (required), variant (required).
reels_review_assetA
Record the AI visual review of a specific imported variant after inspecting it in preview. Verified variants may be reused; reject inferior variants rather than silently substituting them.
Inputs: notes (required), status (required), assetId (required), variant (required).
reels_search_assetsBRead-only
Search reusable characters, props, sets and sounds before creating anything. Returns compact metadata, variants and readiness; no geometry in context.
Inputs: kind, limit, query, offset, +1 more.
reels_search_remote_assetsBRead-only
Search downloadable Poly Haven CC0 models when the local bank lacks a suitable asset. Catalog is cached for one day. Returns compact metadata; Powered by Poly Haven.
Inputs: limit, query, offset.
reels_set_audioB
Attach imported narration and/or aligned words. Whole words array replaces the previous one. Null audio removes narration.
Inputs: revision (required), projectId (required), audio, words.
reels_timelineC
Insert, remove or move one shot atomically. Index is zero-based in the resulting timeline; removing the last shot is rejected.
Inputs: action (required), revision (required), projectId (required), shot, +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 21 tools
Most tools have clearly distinct roles: project listing/creation, asset search/registration/review/resolution, shot/entity edits, timeline, audio and render are separable. The weakest boundaries are reels_list vs reels_get (project vs shot/document read), and the dense asset family (search_assets, search_remote_assets, get_asset, preview_asset, resolve_asset, register_asset, download_asset), where descriptions do the heavy lifting but an agent could still misselect a first step.
All tools share a predictable reels_ prefix and snake_case verb_noun form. The deviation is that project-scoped tools drop the noun (reels_list, reels_create, reels_get, reels_preview, reels_render) while asset tools name their resource explicitly, so reels_get/reels_list read less self-explanatory than reels_get_asset.
At 21 tools the surface is on the heavy side for a single MCP server, and the asset bank alone consumes eight tools (search, search_remote, get, preview, register, review, resolve, download). Each has a defensible role, but several are fine-grained steps that could reasonably be consolidated.
The lifecycle is largely covered: project creation/read, shot and entity patching, timeline mutation, audio attachment, preview/render with status, plus local and remote asset import, registration, review and resolution. Gaps remain around destructive/administrative operations — no project delete or metadata update, no render cancel/listing, and no entity or asset removal.
Related MCP Connectors
Build editable 3D scenes, direct characters and cameras, and export AI video references with MCP.
Build, run, schedule, and publish AI video pipelines to YouTube and TikTok from any MCP client.
AI video editor your agent can drive: plan scenes, edit a multi-track timeline, and render MP4s.
AI video editor for agents and humans: timeline, captions, color, audio and generation as MCP tools.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI assistants to control Blender via MCP tools for scene manipulation, material assignment, rendering, and Python script execution.227121 PyPI33MIT
- AlicenseNot gradedqualityBmaintenanceEnables creating and editing 9:16 video reels programmatically through MCP tool calls, with ffmpeg rendering, caption styling, and optional project presets.1MIT
- FlicenseNot gradedqualityDmaintenanceEnables natural language control of Blender 3D through local AI models, allowing MCP clients to create, modify, and render scenes, apply materials, and execute Python code in Blender.-
- AlicenseAqualityCmaintenanceEnables AI assistants to control a Blender instance through MCP tools, supporting scene creation, editing, and asset exchange via HTTP and background CLI processes.26Apache 2.0