unofficial-davinci-mcp
The unofficial-davinci-mcp server lets AI agents automate professional video editing in DaVinci Resolve — either driving the Studio version live via its scripting API, or generating interchange files (FCPXML/EDL) for the free version.
System & Discovery
resolve_capabilities— Check active tier (live Studio vs. free interchange), Resolve version, and dependency status. Call this first.resolve_project_summary— Read current project name, timelines, FPS, and marker count (live only).get_editing_knowledge— Access editorial best practices with concrete numbers for color, beat-cutting, dialogue, music, and mixing.
Media Inspection
probe_media— Extract duration, FPS, resolution, codecs, audio channels/rate, and timecode.scan_media_folder— Recursively scan and probe every media file in a directory.
Audio & Music
beat_grid— Estimate BPM, beat times, downbeat, and onset strengths.cut_music— Trim a song to a target length on a musical boundary with a tail fade or button sting.measure_loudness— Report EBU R128 integrated LUFS, loudness range, and true peak.mix_plan— Normalize dialogue, set music bed level, apply ducking windows, and render a premix WAV.tighten_dialogue— Detect dead air and return a keep-range cut plan with optional preview render.
Color Grading
color_match— Match clips to a reference image (Reinhard or Lab-histogram) and bake a 33-point.cubeLUT with before/after preview strips.resolve_apply_lut— Apply a.cubeLUT to timeline clips (live only).resolve_set_grade— Set ASC CDL slope/offset/power/saturation on timeline clips (live only).
Timeline Assembly & Export
assemble_edit— Validate an edit plan against probed media and snap cuts to a beat grid.generate_fcpxml— Output an FCPXML 1.9 timeline importable into Resolve.generate_edl— Output a CM3600 EDL cut list.generate_marker_csv— Output a marker manifest CSV.
Live Resolve Studio Controls
resolve_import_media— Import media into the project media pool.resolve_create_timeline— Create a timeline from a clip plan, music, and markers.resolve_append_to_timeline— Append clips with source/record ranges to the active timeline.resolve_add_markers— Add markers to the active timeline.resolve_render/resolve_render_status— Start and monitor render jobs.
Safety: Every mutating tool defaults to dry_run=true, returning a preview plan before any changes are applied. Set dry_run=false and confirm=true to execute.
Provides tools for controlling DaVinci Resolve (Studio and free) programmatically, including timeline editing, color grading, audio mixing, and media management.
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., "@unofficial-davinci-mcpColor match these clips to the reference image."
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.
Wasserman's Unofficial DaVinci MCP
Let any AI agent run DaVinci Resolve for you — Claude Code, Codex, Cursor, Hermes, or any MCP client. Cut clips to the beat, match a reference look, tighten dialogue, hit a loudness spec, and build timelines — either by driving Resolve Studio live, or by generating clean import files for the free edition.

A flat log-ish grade (BEFORE) matched to a warm reference frame (REFERENCE) → the MATCHED result, baked to a 33-point .cube LUT. Real output from the color_match engine on a single desert-dance frame.
You describe the edit in plain language; your agent calls the tools. The server does the deterministic, numeric work an LLM shouldn't guess at — beat grids, LUT math, EBU R128 loudness, FCPXML — and hands back files and plans you can trust. No cloud rendering, no black boxes: every engine is stdlib + numpy + ffmpeg, and every mutating tool previews before it touches anything.
Two tiers, auto-detected
The server detects at startup whether it can drive a running DaVinci Resolve Studio (verified on Studio 21) or should fall back to interchange files. resolve_capabilities tells you which tier you're in and why.
Capability | Resolve Studio — live | Free Resolve / not running — interchange |
How it works | Drives the running app via the scripting API | Writes files you import in one action |
Build & edit timelines | Directly in the app | FCPXML 1.9 / EDL → |
Markers | Inserted live | Marker CSV, or embedded in the FCPXML |
Color grades & LUTs | Applied per clip via the API | Bake a |
Renders | Queue and start jobs | Use Resolve's own export |
Probe, beat grid, music cut, dialogue tighten, loudness, mix | ✅ engines run either way | ✅ engines run either way |
External scripting | ✅ Studio only | ❌ not available in free Resolve |
Being honest about it: external scripting is a DaVinci Resolve Studio feature. On the free edition the live tools can't reach the app — but every creative engine still runs, and the interchange writers give you a timeline, LUTs, markers, and a premix you import in a single step. Nothing about the free path is a stub.
Related MCP server: DaVinci Resolve MCP Server
Quick start
Install straight from GitHub:
pip install "git+https://github.com/wassermanproductions/unofficial-davinci-mcp.git"Optional extras — beat-tracking (librosa) and the push-to-talk voice bridge:
pip install "unofficial-davinci-mcp[beats] @ git+https://github.com/wassermanproductions/unofficial-davinci-mcp.git"
pip install "unofficial-davinci-mcp[voice] @ git+https://github.com/wassermanproductions/unofficial-davinci-mcp.git"Or clone and install editable:
git clone https://github.com/wassermanproductions/unofficial-davinci-mcp.git
cd unofficial-davinci-mcp
pip install -e .You also need ffmpeg on your PATH (brew install ffmpeg, or your distro's package). That's the only non-Python dependency.
Wire it into your agent
Claude Code — one line:
claude mcp add davinci -- unofficial-davinci-mcpAny MCP client (generic mcpServers JSON):
{
"mcpServers": {
"davinci": {
"command": "unofficial-davinci-mcp"
}
}
}Hermes — ~/.hermes/config.yaml:
mcpServers:
davinci:
command: unofficial-davinci-mcpIf the console script isn't on your PATH, use python -m davinci_mcp as the command instead. Then ask your agent to call resolve_capabilities first — it reports your tier, Resolve version, ffmpeg, and optional dependencies.
What it can do
Reference color matching
Point color_match at a reference still (or a graded frame) and the shots you want to match. It samples both in CIE Lab, computes a per-shot transform (Reinhard mean/std, or a firmer Lab-histogram match), and bakes a Resolve-loadable 33-point .cube LUT — plus a before/after preview strip and the numeric ΔE convergence. The hero strip above is a real run: a flat grade pulled to a warm reference, ΔE 43.9 → 3.2. On Studio it can apply the LUT for you; on free Resolve you get the file to drop on a node.
A worked example, end to end
"Cut these clips to the music, give it a warm look, and set dialogue at −16 LUFS."

One request, seven tool calls: read the tier, probe the media, find the tempo, assemble a beat-snapped edit, write an FCPXML, bake a warm LUT, and plan the mix — every number above is real output from the running server.
Beat-aware music cutting
beat_grid finds the tempo, beats, downbeat, and onset strengths (librosa when installed, an energy-envelope fallback when not). cut_music uses that grid to trim a track to a target length on a musical boundary, then rings the tail out under an exponential fade — or lands on a hit with a "button" ending. No cuts mid-phrase.

Dialogue, loudness, and the mix
tighten_dialoguedetects dead air in a talking clip and returns a keep-range cut plan (with head/tail handles) — apply it live, or export the tightened edit as FCPXML.measure_loudnessreports EBU R128 integrated LUFS, loudness range, and true-peak per file.mix_plannormalizes dialogue to your delivery spec, sets the music bed under it, derives ducking windows from speech, and renders a re-measured premix so you can trust the number.
Build the timeline
assemble_edit validates an edit plan against your probed media and snaps cuts to a beat grid. Then generate_fcpxml writes an FCPXML 1.9 timeline that imports cleanly into Resolve 19/20, generate_edl writes a CM3600 cut list, and generate_marker_csv writes a marker manifest. On Studio, resolve_create_timeline / resolve_append_to_timeline build it in the app directly.
The 23 tools
Every mutating tool defaults to dry_run=true and returns a plan; re-run with dry_run=false and confirm=true to apply it. Tier both = works in free or Studio; live = requires DaVinci Resolve Studio.
Tool | Tier | What it does |
| both | Report the active tier, Resolve version, ffmpeg, and optional deps. Call first. |
| both | Serve editorial knowledge (color, beat, dialogue, music, mixing) with concrete numbers. |
| both | ffprobe files: duration, fps, resolution, codecs, audio channels/rate, timecode. |
| both | Scan a folder and probe every media file, in stable sorted order. |
| both | Estimate tempo (BPM), beat times, a downbeat guess, and onset strengths. |
| both | Cut a song to length on a musical boundary with a smooth sting-out. |
| both | Match clips/stills to a reference; bake a 33-point |
| both | Measure EBU R128 integrated LUFS, loudness range, and true-peak per file. |
| both | Plan dialogue-normalize + music bed + ducking; render a re-measured premix. |
| both | Detect dead air in a talking clip; return a keep-range cut plan. |
| both | Validate an edit plan against probed media; snap cuts to a beat grid. |
| both | Write an FCPXML 1.9 timeline that imports cleanly into Resolve. |
| both | Write a CM3600 EDL cut list for round-tripping. |
| both | Write a marker manifest CSV (frame, timecode, name, color, note). |
| live | Read the current project, timelines, active-timeline fps and markers. |
| live | Check render progress and the render queue. |
| live | Import media into the project media pool. |
| live | Create a timeline seeded from a clip plan, music, and markers. |
| live | Append clips (with source/record ranges) to the active timeline. |
| live | Add markers to the active timeline. |
| live | Apply a |
| live | Set ASC CDL slope/offset/power/saturation on clips. |
| live | Configure and start a render job for the current timeline. |
It knows editing, not just buttons
Operating the app is half the job; knowing what a good edit is is the other half. get_editing_knowledge serves the same editorial playbook the tools were built around — written like a seasoned editor briefing an assistant, with numbers your agent can act on:
Loudness by destination. Dialogue sits at −16 LUFS for web / −23 LUFS for broadcast; the music bed rides 4–8 dB under it; ducking is −6 to −8 dB with a 0.3 s attack / 0.5 s release; the master limiter caps at −1 dBTP.
mix_plantakes these as parameters.Cut to the energy, not the metronome. At 120 BPM a beat is 12 frames — so cut a moving shot 1–2 frames early and the motion lands on the beat perceptually; hold 8–16 shots per 8 bars in the chorus and only 1–3 in the intro.
assemble_edit's beat-snap tolerance tightens to ±2 frames for the drop.Match, don't invent. For teal-and-orange, reference a warm-skin/cool-shadow frame with
method="lab_histogram"at strength 0.5–0.65, and always re-check skin last. Never bake exposure or white balance into a look LUT.
Topics: color-looks, beat-cutting, dialogue-editing, music-editing, mixing.
Talk to your editor
An optional macOS push-to-talk voice bridge lets you hold a key, speak, and drop the transcript straight into your agent terminal — hands on the footage, not the keyboard.

It runs entirely on your Mac: faster-whisper transcribes locally, nothing is sent to the cloud, and editing jargon (LUFS, J-cut, sting, FCPXML) is biased into the model so it transcribes cleanly. Setup, permissions, and configuration are in voice/README.md.
pip install "unofficial-davinci-mcp[voice] @ git+https://github.com/wassermanproductions/unofficial-davinci-mcp.git"
python -m voiceRequirements & troubleshooting
Python ≥ 3.10, numpy, and ffmpeg on your PATH (checked in
/opt/homebrew/bin,/usr/local/bin,/usr/binas fallbacks). Install ffmpeg withbrew install ffmpegon macOS or your distro's package manager on Linux.librosais an optional extra ([beats]) for tempo-tracked beat grids; without it,beat_griduses an energy-envelope fallback that still works.Studio vs free. Live tools need DaVinci Resolve Studio, running, with external scripting enabled (Preferences ▸ System ▸ General ▸ External scripting using: Local). If you're on the free edition or Resolve isn't running, the server drops to interchange automatically —
resolve_capabilitiesexplains why."Studio required" / handshake failed. The scripting module loaded but couldn't reach the app: confirm Resolve is open, you're on Studio, and scripting is enabled. Everything in the interchange tier still works regardless.
The voice bridge needs Microphone + Accessibility permissions — see voice/README.md for the walkthrough.
Disclaimer
Unofficial. This project is not affiliated with, authorized by, or endorsed by Blackmagic Design. "DaVinci Resolve" is a trademark of Blackmagic Design Pty Ltd. This is an independent, community tool that talks to Resolve through its public scripting API and standard interchange formats.
License & credits
Apache License 2.0 — see LICENSE. Free to use, modify, fork, and build on, commercially or otherwise.
Attribution required: per the NOTICE file (Apache 2.0 §4(d)), any use, fork, or redistribution must retain the NOTICE file and credit Sam Wasserman (wassermanproductions.com) in its documentation and about/credits surface.
Created by Sam Wasserman — wassermanproductions.com · wasserman.ai.
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
- 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/wassermanproductions/unofficial-davinci-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server