DaVinci Resolve MCP Server
Allows control of DaVinci Resolve Studio for editing, color grading, audio, playback, rendering, and project management through MCP tools and resources.
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., "@DaVinci Resolve MCP Server Add a blue marker at frame 240 with the note 'Review transition'."
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.
DaVinci Resolve MCP Server
Control DaVinci Resolve Studio from MCP clients such as Claude Desktop.
This project exposes Resolve projects, timelines, media, Fusion, color, audio, playback, and rendering operations through a local Model Context Protocol server.
What it does
The server provides:
32 MCP tools for editing and controlling Resolve;
6 read-only MCP resources describing the current Resolve state;
automatic discovery of the DaVinci Resolve scripting API on Windows, macOS, and Linux;
a protected native-module probe, so a broken
fusionscriptimport does not crash the MCP server;Windows runtime isolation to prevent Resolve from loading an incompatible Python DLL.
Example requests from an MCP client:
Create a project called “Product Launch”.
Import these three clips and create a timeline called “Rough Cut”.
Add a blue marker at frame 240 with the note “Review transition”.
Save the current grade as a still in the “Approved Looks” album.
Related MCP server: davinci-resolve-mcp
Requirements
DaVinci Resolve Studio 18 or newer. External scripting must be enabled.
64-bit CPython 3.10 or 3.11. Resolve's scripting module still imports
imp, which was removed from Python 3.12.The DaVinci Resolve scripting API installed with Resolve.
An MCP client such as Claude Desktop.
Before starting the server, open Resolve and set:
Preferences → System → General → External scripting using → Local
The free edition of Resolve does not expose the external scripting connection used by this server. The MCP process can start, but it will remain disconnected.
Installation
Clone the repository first:
git clone https://github.com/Tooflex/davinci-resolve-mcp.git
cd davinci-resolve-mcpWindows
Use a regular 64-bit Python from python.org. Do not use a uv-managed standalone
Python on Windows: Resolve's fusionscript.dll is known to crash with those
builds.
Install Python 3.10:
winget install --id Python.Python.3.10 -eCreate the environment and install the dependencies:
& "$env:LOCALAPPDATA\Programs\Python\Python310\python.exe" -m venv .venv310
.\.venv310\Scripts\python.exe -m pip install --upgrade pip
.\.venv310\Scripts\python.exe -m pip install -e .Start the server through the Windows launcher:
.\run_server.ps1Always use run_server.ps1 on Windows. It pins Resolve to the correct Python
runtime, isolates PATH, and configures the scripting API paths before starting
the server.
macOS
Create a virtual environment with CPython 3.10 or 3.11:
python3.11 -m venv .venv
./.venv/bin/python -m pip install --upgrade pip
./.venv/bin/python -m pip install -e .Start the server:
./.venv/bin/davinci-resolve-mcpThe standard Resolve API locations are detected automatically:
/Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting/Modules~/Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting/Modules
Both Intel and Apple Silicon Macs use the same Resolve application and scripting paths.
Linux
Create the environment and install the dependencies:
python3.11 -m venv .venv
./.venv/bin/python -m pip install --upgrade pip
./.venv/bin/python -m pip install -e .
./.venv/bin/davinci-resolve-mcpThe default Linux scripting path is /opt/resolve/Developer/Scripting/Modules.
If you use uv as an installer, target an existing compatible CPython
environment explicitly:
uv pip install --python .venv/bin/python -e .On Windows, continue to use the regular python.org environment and
run_server.ps1; do not let uv provision a standalone Python runtime.
MCP client configuration
The server uses the MCP standard I/O transport. Configure your client to launch the server as a local process.
Claude Desktop on Windows
Edit %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"davinci-resolve": {
"command": "powershell",
"args": [
"-NoProfile",
"-ExecutionPolicy",
"Bypass",
"-File",
"C:\\absolute\\path\\to\\davinci-resolve-mcp\\run_server.ps1"
]
}
}
}Claude Desktop on macOS
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"davinci-resolve": {
"command": "/absolute/path/to/davinci-resolve-mcp/.venv/bin/davinci-resolve-mcp",
"args": []
}
}
}Other MCP clients
Use the same command and argument pairs shown above:
Windows:
powershell -NoProfile -ExecutionPolicy Bypass -File <run_server.ps1>macOS/Linux:
<venv>/bin/davinci-resolve-mcp
Use absolute paths. Keep Resolve running, restart the MCP client after changing
its configuration, and then check that the davinci-resolve tools are available.
Available MCP resources
URI | Description |
| Connection, project, and timeline status |
| Current project name and timeline count |
| Current timeline name, duration, and video-track count |
| Items on the first video track |
| Current media-pool folder and clip count |
| Gallery album names |
Available MCP tools
Projects and navigation
Tool | Operation |
| Refresh cached Resolve objects |
| Create a project |
| Open an existing project |
| Save the current project |
| Export a project to a file |
| Import a project file |
| Change a project setting |
| Open Media, Edit, Fusion, Color, Fairlight, or Deliver |
Media and timelines
Tool | Operation |
| Import files into the media pool |
| Add a media-pool subfolder |
| Create an empty timeline |
| Select a timeline by its 1-based index |
| Append named clips |
| Build a timeline from named clips |
| Import a timeline such as XML or EDL |
| Change a timeline clip property |
| Add a marker at a frame |
| Add a video, audio, or subtitle track |
| Rename a track |
| Enable or disable a track |
| Select a color or Fusion clip version |
Fusion and color
Tool | Operation |
| Execute Lua in Resolve's Fusion environment |
| Add a node to the current Fusion composition |
| Add a color node to the current clip |
| Save the current grade to a gallery album |
| Apply a named still to a clip |
execute_lua runs code inside Resolve. Only execute scripts from sources you
trust.
Audio, playback, and rendering
Tool | Operation |
| Set a named clip's audio volume |
| Set an audio-track volume |
| Start playback |
| Stop playback |
| Move the playhead to a frame |
| Start a render with an optional preset and output path |
How the connection bootstrap works
server.py imports resolve_env.py before creating ResolveAPI.
On every platform, the bootstrap:
selects the Resolve scripting API and native library paths;
propagates the selected Modules directory to child processes;
probes
DaVinciResolveScriptin a disposable subprocess;imports the native library in the MCP process only when the probe exits safely.
On Windows, Resolve may otherwise select a Python runtime from the Windows
registry and load a foreign python3xx.dll into the current process.
FUSION_PYTHON3_HOME, DLL preloading, and the isolated launcher prevent that
native crash.
Environment overrides
Defaults work for standard Resolve installations. For a custom installation, set these variables before starting the server:
Variable | Purpose |
| Directory containing |
| Root of Resolve's |
| Absolute path to |
| Windows Python runtime Resolve must load |
Example:
export RESOLVE_SCRIPT_PATH="/custom/Developer/Scripting/Modules"
export RESOLVE_SCRIPT_API="/custom/Developer/Scripting"
export RESOLVE_SCRIPT_LIB="/custom/Fusion/fusionscript.so"
./.venv/bin/davinci-resolve-mcpTroubleshooting
The server starts but is not connected
Confirm that DaVinci Resolve Studio is running.
Set External scripting using to Local, then restart Resolve.
Confirm that the configured Python is version 3.10 or 3.11.
Check that the Resolve scripting Modules directory exists.
The server intentionally remains available in a disconnected state when it cannot initialize Resolve.
scriptapp('Resolve') returned None
The native module loaded, but it could not obtain a running Resolve object. Resolve is either closed, external scripting is disabled, or the installed edition does not support external scripting.
ModuleNotFoundError: No module named 'imp'
Python 3.12 or newer is being used. Recreate the virtual environment with Python 3.10 or 3.11.
Windows access violation 0xC0000005
Launch the project through run_server.ps1, not with python server.py.
The crash occurs when fusionscript.dll loads an incompatible Python runtime,
often from another python.org or Anaconda installation registered on the
machine. The launcher sets FUSION_PYTHON3_HOME and isolates DLL resolution.
No valid Resolve scripting module path found
Set RESOLVE_SCRIPT_PATH to the directory containing
DaVinciResolveScript.py. If the native library is also in a non-standard
location, set RESOLVE_SCRIPT_LIB.
Missing MCP dependencies
Install the project into the same interpreter configured in the MCP client:
python -m pip install -e .Development
Install the project in editable mode:
python -m pip install -e .Run the unit tests:
python -m unittest discover -s tests -vRun syntax checks:
python -m py_compile server.py resolve_api.py resolve_env.pyThe GitHub Actions workflow runs the unit tests on Python 3.10 and 3.11 across Windows, macOS, and Linux.
Contributions should keep platform-specific bootstrap behavior covered by tests.
Available Tools
32 toolsadd_color_nodeC
Add a new node to the current clip's color grade.
Inputs: node_type.
add_sub_folderB
Add a subfolder to the specified parent folder in the media pool.
Inputs: folder_name (required), parent_folder_name (required).
add_timeline_markerB
Add a marker to the current timeline at a specific frame.
Inputs: frame (required), name, note, color.
add_trackA
Add a new track to the current timeline.
Inputs: track_type.
append_to_timelineB
Append clips to the current timeline by name.
Inputs: clip_names (required).
apply_stillA
Apply a still (grade) to a clip by name, defaulting to current clip if none specified.
Inputs: still_name (required), clip_name.
create_fusion_nodeC
Create a new node in the current Fusion composition.
Inputs: node_type (required), inputs.
create_projectC
Create a new project in DaVinci Resolve.
Inputs: name (required).
create_timelineB
Create a new timeline in the current project.
Inputs: name (required).
create_timeline_from_clipsB
Create a new timeline from the specified clips by name.
Inputs: clip_names (required), timeline_name (required).
enable_trackC
Enable or disable a track in the current timeline.
Inputs: track_type (required), track_index (required), enable.
execute_luaC
Execute a Lua script in Resolve's Fusion environment.
Inputs: script (required).
export_projectC
Export a project to a file.
Inputs: file_path (required), project_name (required).
import_mediaA
Import media files into the current media pool folder.
Inputs: file_paths (required).
import_projectD
Import a project from a file.
Inputs: file_path (required).
import_timeline_from_fileC
Import a timeline from a file (e.g., XML, EDL).
Inputs: file_path (required).
load_projectC
Load an existing project in DaVinci Resolve.
Inputs: name (required).
open_pageC
Open a specific page in DaVinci Resolve.
Inputs: page_name (required).
play_timelineA
Start playback in the current timeline.
Inputs: no named parameters.
refreshA
Refresh all internal Resolve objects to reflect the current state.
Inputs: no named parameters.
save_projectB
Save the current project.
Inputs: no named parameters.
save_stillB
Save the current clip's grade as a still in the specified gallery album.
Inputs: album_name.
set_audio_volumeB
Set the audio volume of a timeline clip by name.
Inputs: volume (required), clip_name (required).
set_clip_propertyC
Set a property on a timeline clip by name.
Inputs: value (required), clip_name (required), property_name (required).
set_current_timelineA
Set the specified timeline as the current one by 1-based index.
Inputs: timeline_index (required).
set_current_versionB
Set the current version for a clip by name (e.g., switch between color grades).
Inputs: clip_name (required), version_index (required), version_type.
set_playhead_positionB
Set the playhead position to a specific frame in the current timeline.
Inputs: frame (required).
set_project_settingC
Set a specific project setting.
Inputs: key (required), value (required).
set_track_nameB
Set the name of a track in the current timeline.
Inputs: name (required), track_type (required), track_index (required).
set_track_volumeB
Set the volume of an audio track in the current timeline.
Inputs: volume (required), track_index (required).
start_project_renderC
Start rendering the current project with optional preset and path.
Inputs: preset_name, render_path.
stop_timelineA
Stop playback in the current timeline.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 32 tools
Most tools target distinct resources and actions (e.g., project management, timeline editing, color grading). A few potential overlaps exist—such as set_audio_volume vs. set_track_volume and add_color_node vs. create_fusion_node—but descriptions clearly differentiate them.
All tool names follow a consistent verb_noun (or verb_phrase) pattern, e.g., create_project, load_project, set_track_name, play_timeline. There are no mixed conventions or ambiguous verb choices.
32 tools is high but appropriate for a full-featured video editing server covering project management, timeline manipulation, media import, color grading, playback, and rendering. Each tool addresses a distinct operation, and the count reflects the complexity of DaVinci Resolve without bloat.
The toolset covers many workflows but has notable gaps: no project deletion, no timeline deletion, no media pool listing, and no generic query tools to inspect current state. The refresh tool exists but does not expose data to the agent, making it hard to discover available projects or clips.
Maintenance
Related MCP Connectors
Remote MCP server for audio stem separation, denoise, reverb, and MIDI export.
AI video editor for agents and humans: timeline, captions, color, audio and generation as MCP tools.
Hosted MCP tools for FFmpeg-style video and audio processing through FFMPEG API.
Compose, edit and render video with your AI agent. Turn footage into finished edits with content-aware reframing, word-timed captions and motion graphics. Hosted MCP with OAuth sign-in; cloud processing uses credits.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceComprehensive MCP server for DaVinci Resolve with 295+ tools to control projects, timelines, editing, color grading, rendering, and more via natural language.96 PyPI7MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that exposes the complete DaVinci Resolve scripting API, enabling AI assistants to control DaVinci Resolve programmatically with over 440 tools for project management, timeline editing, color grading, rendering, and more.24MIT
- AlicenseBqualityCmaintenanceProvides 189 tools across 12 domains to control DaVinci Resolve from any MCP-compatible client, including playback, project management, media, timelines, color grading, rendering, Fusion, gallery, and Fairlight.1001MIT
- AlicenseBqualityBmaintenanceLets AI clients inspect and control DaVinci Resolve projects via MCP tools.46841 npm47MIT