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 "Install 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: VidMCP
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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceA deterministic video rendering engine that enables AI agents to create programmable, reproducible videos via MCP protocol.14122MIT
- AlicenseCqualityBmaintenanceMCP server for video editing with text-prompt subject segmentation and compositing effects behind subjects. Enables agent-driven video creation and education animations.274MIT
- Flicense-qualityBmaintenanceLocal-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.
- Alicense-qualityBmaintenanceMCP server for OmniCut that provides 29 deterministic video editing tools (trim, transition, render, etc.) for AI agents to drive the video editor end-to-end.51ISC
Related MCP Connectors
Build and run visual creative-production workflows from your AI agent.
Agentic video editing on real footage: cut, caption, reframe, score, and export at full quality.
A real timeline video editor for AI agents: journaled edits, FFmpeg/MLT rendering, exports
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/iuploop/uploop-vided'
If you have feedback or need assistance with the MCP directory API, please join our Discord server