DaVinci Resolve MCP Server
Control DaVinci Resolve Studio from MCP clients. Provides tools and resources for editing, color grading, Fusion compositing, audio, playback, and rendering.
README
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.
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-mcp
Windows
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 -e
Create 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.ps1
Always 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-mcp
The 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-mcp
The 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 |
|---|---|
system://status |
Connection, project, and timeline status |
project://current |
Current project name and timeline count |
timeline://current |
Current timeline name, duration, and video-track count |
timeline://items |
Items on the first video track |
mediapool://current |
Current media-pool folder and clip count |
gallery://albums |
Gallery album names |
Available MCP tools
Projects and navigation
| Tool | Operation |
|---|---|
refresh |
Refresh cached Resolve objects |
create_project |
Create a project |
load_project |
Open an existing project |
save_project |
Save the current project |
export_project |
Export a project to a file |
import_project |
Import a project file |
set_project_setting |
Change a project setting |
open_page |
Open Media, Edit, Fusion, Color, Fairlight, or Deliver |
Media and timelines
| Tool | Operation |
|---|---|
import_media |
Import files into the media pool |
add_sub_folder |
Add a media-pool subfolder |
create_timeline |
Create an empty timeline |
set_current_timeline |
Select a timeline by its 1-based index |
append_to_timeline |
Append named clips |
create_timeline_from_clips |
Build a timeline from named clips |
import_timeline_from_file |
Import a timeline such as XML or EDL |
set_clip_property |
Change a timeline clip property |
add_timeline_marker |
Add a marker at a frame |
add_track |
Add a video, audio, or subtitle track |
set_track_name |
Rename a track |
enable_track |
Enable or disable a track |
set_current_version |
Select a color or Fusion clip version |
Fusion and color
| Tool | Operation |
|---|---|
execute_lua |
Execute Lua in Resolve's Fusion environment |
create_fusion_node |
Add a node to the current Fusion composition |
add_color_node |
Add a color node to the current clip |
save_still |
Save the current grade to a gallery album |
apply_still |
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_audio_volume |
Set a named clip's audio volume |
set_track_volume |
Set an audio-track volume |
play_timeline |
Start playback |
stop_timeline |
Stop playback |
set_playhead_position |
Move the playhead to a frame |
start_project_render |
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 |
|---|---|
RESOLVE_SCRIPT_PATH |
Directory containing DaVinciResolveScript.py |
RESOLVE_SCRIPT_API |
Root of Resolve's Developer/Scripting directory |
RESOLVE_SCRIPT_LIB |
Absolute path to fusionscript.dll or fusionscript.so |
FUSION_PYTHON3_HOME |
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-mcp
Troubleshooting
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 -v
Run syntax checks:
python -m py_compile server.py resolve_api.py resolve_env.py
The 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.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。