Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Narrated, captioned MP4 videos from Markdown or JSON. Local voice, CPU-only, no API key.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"makevideo": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/random00000000/makevideo:0.6.0",
"mcp"
]
}
}
}Run this in your terminal
claude mcp add makevideo -- docker run -i --rm ghcr.io/random00000000/makevideo:0.6.0 mcpPaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"makevideo": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/random00000000/makevideo:0.6.0",
"mcp"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"makevideo": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/random00000000/makevideo:0.6.0",
"mcp"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account random00000000, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.6.0) reached the registry 22 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Docker on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, SwarmMemo
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Talk with agent swarms: rooms, private messages and paid tasks for AI agents
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Fast, standard video generation for AI agents. One JSON script in, one finished MP4 out, rendered the same way every time. You write scenes, each with a line to say. makevideo voices them with one consistent neural voice, times every scene to the real audio, adds captions, and renders an MP4 with a bundled ffmpeg. It runs on the CPU only: no browser, no GPU, no API key and no cloud.
▶ [Your agent can make videos now](docs/your-agent-can-make-videos.mp4) (1:39, written, voiced and rendered by an agent from one JSON file) · ▶ [Watch the 87-second showcase](docs/showcase.mp4), rendered from examples/showcase.json on a laptop CPU, faster than it plays.
Short-form too: "format": "shorts" gives 1080×1920 with big word-by-word captions. ▶ Watch the TikTok-style demo (examples/tiktok.json): 23 s of video rendered in 15 s, plus an auto-exported GIF.
More examples, all made with makevideo: ▶ What's new in 0.6: game trailers (spec) · ▶ Neon Drift game trailer (beat sheet) · ▶ What's new in 0.5: documentaries (spec) · ▶ 59-second demo (spec) · ▶ The house voice · ▶ Distribution recap · ▶ What's new in 0.4: closer to every agent (spec) · ▶ What's new in 0.3: speed (spec) · ▶ What's new in 0.2 (made from one Markdown file) · ▶ Why use makevideo instead of building from scratch (spec) · ▶ Changelog video for v0.1 (spec): changelog and recap videos are a core use case.
What it does: game trailers cut on the beat, with shots filmed from your Electron + Three.js game · narrated slides · automatic transitions (push, slide, zoom, wipe) · kinetic statements · animated charts · split media + text · write Markdown, get a video · screenshots · gameplay/video clips · GIFs in and out · code · stats · quotes · before/after · TikTok/Reels/Shorts captions · custom fonts · background music · screen recording for trailers · .srt captions · poster frames.
npm i github:random00000000/makevideo
npx makevideo init # writes video.json (or: init --style documentary | shorts | explainer) npx makevideo video.json # → video.mp4 + video.srt + video.report.json + video.jpg npx makevideo video.json --fast # same, about 3x faster on a first render
import { video } from 'makevideo';
await video({ title: 'Patch notes 1.2', scenes: [ { type: 'title', title: 'Patch 1.2', subtitle: 'Siege update', say: 'Here is what is new in patch one point two.' }, { type: 'clip', src: 'siege.mp4', title: 'Rams breach gates', say: 'Rams can now breach wooden gates.' }, { type: 'bullets', title: 'Also new', items: ['Faster pathing', 'New HUD'], say: 'Also new. Pathing is faster. And the HUD is redesigned.' }, { type: 'decisions', items: ['Ship Friday?'], say: 'One decision for you. Do we ship on Friday?' }, ], });
Agents get asked for videos all the time, and every agent builds them differently. Each video ends up with a new pipeline, a different voice, no narration unless someone asks for it, and a render that can take ten minutes. makevideo makes that one standard:
| ad-hoc agent videos | makevideo | |
|---|---|---|
| Format | a new script every time | one JSON spec (schema) |
| Voice | random TTS, sometimes none | Kokoro-82M, same voice every time (af_heart) |
| Narration | must be requested | on by default: every scene has say |
| Timing | guessed | measured from the generated audio, per sentence |
| Captions | rarely | burned in, plus an .srt sidecar |
| Speed | minutes | faster than real time on a CPU (see Performance) |
| Verification | watch the whole thing | makevideo preview makes a contact sheet in about 1 s |
The goal is that an agent's *first* attempt looks finished. Without any extra config you get:
auto picks push, zoom, wipe or fade based on what is cut to what. Override with "transition" globally or per scene.42%, v1.2, $3M, 4.6x, 35 s, e.g. and -> are all spoken correctly, and captions keep what you wrote.check flags walls of text, too many bullets, unsynced lists, overlong statements, dense scenes in portrait and repetitive pacing, and says how to fix each one.One switch, style, sets the whole look and sound: documentary (history channels), history (adds a war-drum score), or nature (science and dinosaurs). Then write the script and say which images you want:
---
title: Tyrannosaurus rex, the tyrant lizard king style: nature thumbnailText: The real T. rex
The tyrant lizard king
Sixty six million years ago, the largest predator in its world...
Chapter two. Built to kill.
Its story fits on one line. It appears sixty eight million years ago. It vanishes when the asteroid hits.
What you get, with no other settings:
preview lists which file each search picked, and flags with "?" any pick whose title doesn't match the query (for example a different species). Agents can refine the search before rendering. (or "search": "..." in JSON) searches Wikimedia Commons. It keeps only publish-safe licenses (CC0, public domain, CC BY, CC BY-SA), never reuses an image within a video, caches downloads, and shortens over-specific searches until something matches. Each image gets a small credit line, and the full attributions go into the description.pan / focus to override), plus chapter cards (## Chapter: ...) and timelines.music: documentary | epic | wonder | tension) and ducked under the narration.video.thumbnail.jpg (1280×720), and video.description.txt with YouTube chapter timestamps (0:00 first, each at least 10 s apart) and image credits.▶ The T. rex example (script): 2 min 37 s, rendered from one Markdown file.
From a transcript: treat another creator's transcript as research, not as a script. Have the agent write its own narration. Republishing someone else's script is copyright infringement, and YouTube demonetizes it as "reused content".
The engine enforces these, and following them in the script makes videos land:
say. check warns when they don't match..srt keeps every line). Use captions: "all" to turn this off.---
theme: midnight brand: My Game
The siege update
Here is what changed in patch one point two.
Rams now breach wooden gates. Three hits and they are down. Stone gates still hold.
npx makevideo patch-notes.md
Each #/## heading starts a scene, and its body decides the type: a list gives bullets/steps/decisions, label: number items give a chart, an image or video gives image/clip (or split, when there is text too), a code fence gives code, **42%** label gives a stat, and a paragraph gives a statement. Lines starting with > are the narration. When a scene has none, its visible text is read aloud, because narration is the default. sets scene options. See examples/whats-new-0.2.md; the 0.2 release video is that one file.
/plugin marketplace add random00000000/makevideo
/plugin install makevideo@makevideo
Then just say "make a video about …". Claude writes the spec, previews it, renders it, and hands you the MP4.
The plugin bundles both the skill and the MCP server.
Claude Desktop, Cursor, VS Code, Codex, Windsurf and other MCP clients:
{ "mcpServers": { "makevideo": { "command": "npx", "args": ["-y", "github:random00000000/makevideo", "mcp"] } } }
It's listed in the official MCP Registry as io.github.random00000000/makevideo, as a Docker image (ghcr.io/random00000000/makevideo). Without Node, run docker run -i --rm -v "$PWD:/work" -w /work ghcr.io/random00000000/makevideo mcp.
The tools are make_video (Markdown or JSON in, MP4 out, with progress notifications), preview_video (returns the contact sheet as an image the model can look at), check_video and video_reference. See the MCP guide.
npx -y github:random00000000/makevideo agents --all # AGENTS.md, CLAUDE.md, Cursor rules, Copilot instructions
npx -y github:random00000000/makevideo agents --global # this machine: Claude Code skill + Codex AGENTS.md
This writes a short
Only the beginning is shown; read the rest in the repo