videolab-mcp
Ein MCP-Server, der Claude (oder jeden anderen MCP-Host) in einen praktischen Video-Editor für Kurzvideos verwandelt. Durchsuche eine Musikbibliothek oder generiere neue Tracks. Animiere Standbilder mit Veo oder erstelle Lippen-Synchronisation für Porträts mit OmniHuman. Schreibe und überarbeite Skripte. Synthetisiere Voiceover mit ElevenLabs. Setze die Timeline mit FFmpeg zusammen, spiele das Ergebnis ab und iteriere kostengünstig, indem du die Musik, das Voiceover oder einen einzelnen Clip austauschst – ohne alles von Grund auf neu rendern zu müssen.
Er enthält außerdem eine Text-zu-Dokumentation-Funktion, die lange Texte (PDFs, Bücher, Dokumente) in strukturierte Dokumentarvideos mit KI-generiertem Voiceover, Untertiteln und B-Roll umwandelt.
Eigenständig, portabel, konfigurierbar. Bringe deine eigenen API-Schlüssel mit.
Was ist enthalten
Tools für den gesamten Workflow:
Kategorie | Tools |
Musik |
|
B-Roll |
|
Szenen-Assets |
|
Bilder |
|
Voiceover (ElevenLabs) |
|
Skript (Anthropic) |
|
Videoschnitt (FFmpeg) |
|
Animation (Veo) |
|
Talking Heads (Fal OmniHuman) |
|
Dokumentation |
|
Diagnose |
|
Ressourcen zum Durchsuchen ohne Tool-Aufrufe: library://music, library://broll, library://renders, library://voiceovers, library://scripts, library://scenes.
Prompts für geführte mehrstufige Abläufe: make-scene-promo, remix-render, compose-music-for-scene.
Skills in skills/: text-to-documentary — PDF/Buch → kapitelweise Dokumentarvideos mit strukturierten Erzählbögen.
Related MCP server: ffmpeg-mcp
Anforderungen
Node.js 18+
FFmpeg in deinem PATH (oder setze
ffmpeg.binaryauf einen absoluten Pfad in der Konfiguration)API-Schlüssel für die verwendeten Anbieter (keine sind vorab erforderlich — Lazy-Init erst beim ersten Aufruf)
Schnellstart
git clone <this-repo> videolab-mcp
cd videolab-mcp
npm install
npm run build
cp videolab.config.example.json videolab.config.json
cp .env.example .env # then fill in keys you haveBinde es in Claude Desktop ein (~/Library/Application Support/Claude/claude_desktop_config.json unter macOS, %AppData%\Claude\claude_desktop_config.json unter Windows):
{
"mcpServers": {
"videolab": {
"command": "node",
"args": ["C:\\path\\to\\videolab-mcp\\build\\index.js"],
"env": {
"ELEVENLABS_API_KEY": "...",
"ANTHROPIC_API_KEY": "...",
"GOOGLE_VEO_API_KEY": "...",
"FAL_KEY": "...",
"VIDEOLAB_CONFIG": "C:\\path\\to\\videolab-mcp\\videolab.config.json"
}
}
}
}Starte Claude Desktop neu. Öffne einen Chat und rufe ping auf, um die Verbindung zu bestätigen.
Konfiguration
Zwei Dateien. .env nur für Geheimnisse:
ELEVENLABS_API_KEY=
ANTHROPIC_API_KEY=
GOOGLE_VEO_API_KEY=
FAL_KEY=videolab.config.json für alles andere (Speicher, Anbieter, FFmpeg-Flags, Standardwerte). Die Beispieldatei ist sinnvoll und ohne Abhängigkeiten: lokaler Speicher, JSON-Index, ElevenLabs/Anthropic/Veo/Fal-Anbieter, Mobile-Standardwerte (9:16).
Walkthrough — Erstelle eine Promo von Grund auf
In Claude Desktop, bei verbundenem MCP-Server:
User: Make a 20-second mobile promo for the test scene.
Claude:
→ list_scene_assets({ sceneRef: { key: "test-scene" } })
→ 3 assets: magenta, cyan, orange
→ generate_script({
context: "Test scene with three coloured backdrops",
durationSeconds: 20, tone: "punchy"
})
→ scriptId: script_a3f, slot breakdown shown
→ generate_voiceover({ text: "<the script>" })
→ voiceoverId: vo_8d2
→ generate_music({
prompt: "driving electronic, slow build, retro synth pad",
durationMs: 20000
})
→ trackId: music_4e1
→ assemble_promo({
timeline: {
platform: "mobile",
slots: [
{ source: { kind: "scene", id: "asset-test-magenta" }, durationMs: 7000 },
{ source: { kind: "scene", id: "asset-test-cyan" }, durationMs: 7000 },
{ source: { kind: "scene", id: "asset-test-orange" }, durationMs: 6000 }
]
},
voiceoverId: "vo_8d2",
musicId: "music_4e1"
})
→ renderId: render_94c, autoplays in default video player
User: Make the music more chill.
Claude:
→ generate_music({ prompt: "soft ambient pad, gentle rhythm", durationMs: 20000 })
→ trackId: music_c70
→ swap_music({ renderId: "render_94c", newMusicId: "music_c70" })
→ renderId: render_d11 (rev of render_94c) — only re-mixes audio (~2s)
User: Replace the orange shot with a Veo animation of the magenta image zooming in.
Claude:
→ animate_image_to_video({
imageSource: { kind: "scene", id: "asset-test-magenta" },
prompt: "slow camera push-in, dust particles drifting"
})
→ clipId: broll_veo_a8b
→ swap_clip({
renderId: "render_d11",
slotIndex: 2,
newSource: { kind: "broll", id: "broll_veo_a8b" }
})
→ renderId: render_2f9 (rev of render_d11)Die Iterationsschleife
Das ist der Teil, der den Workflow so angenehm macht:
assemble_promoschreibt Zwischenschritte pro Slot (slot_*.mp4), ein stummesvisuals.mp4, den Audiomix und das finaleoutput.mp4— alles untermedia/renders/<renderId>/.swap_music/swap_voiceoververwenden dasvisuals.mp4des übergeordneten Elements wieder und mischen nur den Ton neu. Typische Dauer: ~2 Sekunden.swap_clipbaut den visuellen Stream neu auf + mischt den Ton neu. Typische Dauer: ~5–10 Sekunden.Jeder Render ist eine neue
renderId, die überparentIdverknüpft ist — du verlierst nie eine frühere Version.
Text-zu-Dokumentation-Modus
Der skills/text-to-documentary/ Skill verwandelt ein PDF, ein Buch oder eingefügten langen Text in eine Reihe von ca. 5-minütigen Dokumentarvideos — eines pro Kapitel. Jedes Video hat einen strukturierten Erzählbogen (Hook → Kernidee → Beispiele → Pattern Interrupts → Mikro-Zusammenfassungen → Cliffhanger), Karaoke-Untertitel basierend auf ElevenLabs-Zeitstempeln und KI-generiertes B-Roll.
Verwendete Tools: extract_pdf, split_chapters, plan_documentary_scenes, validate_attention, generate_voiceover, generate_image, animate_image_to_video, generate_music, assemble_promo.
Wenn du Claude Code oder einen anderen Host verwendest, der Skills unterstützt, wird der Skill automatisch geladen, wenn er ausgelöst wird („verwandle dieses PDF in eine Dokumentation“, „erstelle Videos aus diesem Buch“ usw.). Andernfalls lies skills/text-to-documentary/SKILL.md für die vollständige Schrittliste und rufe die Tools direkt auf.
Benutzerdefinierter Szenen-Asset-Anbieter
Der Server ist anbieterunabhängig für Szenen-Assets. Der mitgelieferte json-manifest-Anbieter liest aus einer JSON-Datei. Alles Komplexere (dein CMS, eine Datenbank, eine API) wird als SceneAssetProvider implementiert:
export interface SceneAssetProvider {
readonly kind: string;
describeRefShape(): string; // shows up in the tool description so the host knows what to send
listAssets(ref: SceneRef): Promise<SceneAsset[]>;
getAsset(id: string): Promise<SceneAsset | null>;
}Lege deine Implementierung in src/providers/scene-assets/<dein-name>.ts ab, registriere sie in src/providers/factory.ts unter buildSceneAssets und füge sie dem Konfigurationsschema in src/config.ts hinzu. Das gleiche Muster funktioniert für Speicher-Backends (S3, Azure) — siehe src/providers/types.ts:StorageProvider.
Anbieter-Matrix
Was | Standard-Anbieter | Umgebungsvariable | Konfigurationsfeld |
Speicher | lokal | — |
|
Index (Asset-Metadaten) | json | — |
|
Musikgenerierung | ElevenLabs Music |
|
|
TTS | ElevenLabs |
|
|
Skript-LLM | Anthropic Claude |
|
|
Bildgenerierung | Gemini Nano Banana |
|
|
Bild-zu-Video | Google Veo |
|
|
Talking-Head | Fal OmniHuman |
|
|
Szenen-Assets | json-manifest | — |
|
Optionale Modell-Überschreibungen via Umgebungsvariablen: ANTHROPIC_MODEL, ELEVENLABS_MUSIC_MODEL, VEO_MODEL, VEO_ENDPOINT, VEO_POLL_INTERVAL_MS, VEO_POLL_TIMEOUT_MS, FAL_OMNIHUMAN_MODEL, PROMO_VIDEO_LOG_LEVEL.
Lizenz
MIT — siehe LICENSE.
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.
Latest Blog Posts
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/aTreeFrog/videolab-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
