uploop-vided MCP Server
Provides video encoding and output via FFmpeg for rendering video compositions.
Allows AI agents using OpenAI's API to compose videos programmatically via MCP tools.
Uses Puppeteer to render HTML-based compositions into video frames for final MP4 output.
Enables live streaming of video compositions via WebRTC.
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., "@uploop-vided MCP Servercompose a timeline from intro.mp4 and body.mp4 with crossfade"
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.
Uploop Vided is an AI-native video composition and VFX engine. Built on
uploop-ge for GPU rendering and
uploopjs for HyperGraph
orchestration. Exposes its engine as AI-callable tools (MCP) ā the AI acts as
the director, uploop-vided is the VFX engine.
Quick Start
git clone https://github.com/iuploop/uploop-vided.git
cd uploop-vided
pnpm install
pnpm devOpen http://localhost:3002 ā you'll see the examples gallery.
š Live demo: iuploop.github.io/uploop-vided
Related MCP server: CutPilot
Vided DSL ā Component Tag Syntax
Uploop Vided uses an HTML-like tag syntax for video composition. Compose timelines, tracks, clips, 3D scenes, and effects using familiar declarative tags ā no imperative API required.
Video Composition
import { vided } from '@uploop/vided'
const { timeline, composition } = vided`
<Timeline name="My Video" width=${1920} height=${1080} fps=${30}>
<Track type="video">
<Clip source="intro.mp4" inPoint=${0} outPoint=${5} />
<Clip source="content.mp4" inPoint=${5} outPoint=${12} opacity=${1} />
</Track>
<Track type="audio" muted=${false}>
<Clip source="music.mp3" inPoint=${0} outPoint=${12} volume=${0.8} />
</Track>
<Track type="text">
<Clip source="My Title" inPoint=${0} outPoint=${12} y=${80} opacity=${1} />
</Track>
</Timeline>
`
// Render with html-video:
import { renderVideo } from '@uploop/html-video'
await renderVideo({ composition, output: 'output.mp4' })3D Scene Composition (uploop-ge)
import { vided } from '@uploop/vided'
const { scene, renderer } = vided`
<Scene width=${1920} height=${1080} background="gradient">
<Camera type="orbit" distance=${5} angle=${-0.4} pitch=${0.35} />
<AmbientLight color="#334" intensity=${0.5} />
<DirectionalLight direction=${[0.5, 0.4, 0.7]} color="#fff" intensity=${1.2} />
<Model src="brain.glb" position=${[0, 0, 0]} scale=${1} />
<Shape type="sphere" radius=${1} position=${[0, 1, 0]} color="#f44" />
<Skybox top="#4a8fcf" mid="#c8dcf0" bottom="#1a3050" />
<PostFX bloom=${true} tonemap=${true} />
</Scene>
`Hybrid: Video + 3D
import { vided } from '@uploop/vided'
const { timeline, composition } = vided`
<Timeline name="3D Product Ad" width=${1920} height=${1080} fps=${30}>
<Track type="video">
<Clip source="background.mp4" inPoint=${0} outPoint=${30} />
</Track>
<Track type="3d">
<Scene>
<Camera type="orbit" distance=${4} angle=${-0.4} />
<Model src="product.glb" />
<DirectionalLight direction=${[0.5, 0.6, 0.4]} intensity=${1.5} />
</Scene>
</Track>
<Track type="text">
<Clip source="New Arrival" inPoint=${5} outPoint=${15} y=${80} />
</Track>
<Track type="audio">
<Clip source="soundtrack.mp3" inPoint=${0} outPoint=${30} />
</Track>
</Timeline>
`Tag Reference
Tag | Description | Key Props |
| Multi-track timeline container |
|
| Single track (video/audio/text/3d) |
|
| Media clip with time range |
|
| Sequential timeline player |
|
| 3D scene (uploop-ge) |
|
| Viewpoint camera |
|
| glTF 3D model |
|
| Primitive geometry |
|
| Parallel light source |
|
| Uniform fill light |
|
| Omni-directional light |
|
| Background environment |
|
| Post-processing pipeline |
|
| Particle system |
|
Imperative API (no tags)
import { Timeline, Track, Clip } from '@uploop/timeline'
import { Compositor, Layer, createTransition } from '@uploop/compositor'
import { renderVideo } from '@uploop/html-video'
const timeline = new Timeline({ fps: 30, width: 1920, height: 1080 })
timeline.addTrack(new Track({ id: 'main', type: 'video', clips: [
new Clip({ id: 'intro', source: 'intro.mp4', inPoint: 0, outPoint: 5 }),
new Clip({ id: 'body', source: 'body.mp4', inPoint: 3, outPoint: 10 }),
]}))
const fade = createTransition('fade', { duration: 1 })
await renderVideo({ composition: createTimelineComposition({ timeline }), output: 'output.mp4' })š Full DSL reference:
docs/VIDED-DSL.md
Why Uploop Vided?
Remotion | Motion Canvas | Uploop Vided | |
Framework | React | Generator functions | Component Tags (HTML-like) |
License | Source-available, paid ā„5 devs | MIT | MIT ā always free |
GPU | Via Three.js (external) | Canvas2D only | Native WebGL2 + WebGPU (uploop-ge) |
AI-native | Manual API calls | ā | MCP server + tool registry + advisor |
3D Scenes | External React-Three-Fiber | ā | Built-in |
Timeline |
|
| Multi-track |
Transitions | CSS/JS | Tween functions | 36 GPU-ready transition types |
Compositor | React component stacking | Layout nodes | Layers with blend modes, masks, effects |
Output | ffmpeg (Chromium) | ffmpeg (Chromium) | WebCodecs + ffmpeg + streaming (WebRTC/RTMP) |
Editor UI | Remotion Studio (React) | Editor (Electron) | 5 Custom Elements (player, timeline, inspector, etc.) |
CLI |
|
|
|
HyperGraph | ā | ā | Typed graph of nodes ā inspectable by AI |
Packages
Package | Description | Status |
| Image/video/audio decode, frame extraction, codec registry | ā |
| Multi-track timeline, clips, keyframes, easing, sequence | ā |
| GPU-accelerated layer compositing, 36 transitions, 8 blend modes | ā |
| Component tag DSL ā HTML-like composition for video + 3D | ā |
| 72 reusable UI components, hooks, and graphics primitives | ā |
| AI-callable tool registry + OpenAI-compatible advisor + MCP server | š” |
| WebCodecs encoder, stream output, export presets | š” |
| 5 Web Components: player, timeline editor, preview, inspector, library | ā |
| Remotion-style HTML ā MP4 via Puppeteer + ffmpeg | ā |
| CLI: | ā |
| Project management: folders, config, assets, renders | ā |
| Standalone editor workspace (launch via CLI) | ā |
12 packages ā all MIT licensed, pure ESM.
AI-Native: The AI is the Director
pnpm uploop-video serve --port 3004// POST /mcp ā { "method": "tools/list" }
[
{ "name": "timeline.addTrack", "parameters": { "type": { "enum": ["video","audio","image","text","3d"] } } },
{ "name": "timeline.addClip", "parameters": { /* inPoint, outPoint, source, props */ } },
{ "name": "scene.create", "parameters": { /* width, height, background */ } },
{ "name": "scene.addModel", "parameters": { /* src, position, rotation, scale */ } },
{ "name": "compositor.renderFrame", "parameters": { /* time, width, height */ } },
{ "name": "output.encode", "parameters": { /* format, codec, bitrate */ } },
]Architecture
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā uploopjs (UI Layer) ā
ā @uploop/html ā declarative component model ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā uploop-vided (VFX Layer) ā
ā vided DSL ā timeline ā compositor ā output ā html-video ā
ā common-elements ā scene ā camera ā model ā postfx ā
ā project ā cli ā editor ā toolset ā vided-ui ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā uploop-ge (GPU Layer) ā
ā math ā geometry ā shader ā renderer ā scene ā physics ā
ā WebGL 2.0 + WebGPU engine from scratch ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāDocs
Document | Description |
Full component tag reference ā all tags, props, patterns | |
Package map, dependency graph, AI toolset design | |
Composition pipeline, protocols | |
Living task list ā phases, status |
Examples
63 interactive examples organized by category:
Category | Count | Description |
| 20 | Core timeline, compositor, transitions, effects |
| 10 | Calculus, geometry, physics, chemistry |
| 20 | Music, video effects, glitch, text animation |
| 11 | Render-ready compositions with common-elements (WebGL 3D) |
| 1 | Full editor workspace |
| 1 | Solar system educational video |
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
AI-native video editing OS ā timeline editing, generation, color, and export as MCP tools.
Build, run, schedule, and publish AI video pipelines to YouTube and TikTok from any MCP client.
AI image, video, voice and music generation over MCP, routed to Veo 3.1, Seedance 2.5 and more.
AI video producer: directs your idea or script into a finished, fact-checked video. MCP-native.
Related MCP Servers
- AlicenseAqualityDmaintenanceA deterministic video rendering engine that enables AI agents to create programmable, reproducible videos via MCP protocol.149 npm2MIT
- FlicenseNot gradedqualityBmaintenanceLocal-first AI video editing engine controlled by MCP-compatible AI hosts, enabling AI to inspect footage, propose edits, modify multitrack projects, and render locally while keeping user control.-
- AlicenseNot gradedqualityBmaintenanceA real video editor for AI agents, served over MCP, enabling journaled timeline editing, rendering via FFmpeg/MLT, and deterministic CLI operation.1MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to turn natural-language creative direction, transcripts, and source media into fully structured, editable video projects, then verify and render delivery files.2MIT