使用说明
DaVinci Resolve MCP服务器
从MCP客户端(如Claude Desktop)控制DaVinci Resolve Studio。
此项目公开了Resolve项目、时间线、媒体、Fusion、颜色、音频、, 通过本地设备执行播放和渲染操作 模型上下文协议 服务器。
它的作用
服务器提供:
- 32个MCP工具,用于编辑和控制Resolve;
- 描述当前Resolve状态的6个只读MCP资源;
- DaVinci Resolve脚本API在Windows、macOS上的自动发现, Linux;
- 受保护的本机模块探测器,因此损坏
fusionscript导入不 使MCP服务器崩溃; - Windows运行时隔离,以防止Resolve加载不兼容的 Python动态链接库。
来自MCP客户端的请求示例:
创建一个名为“产品发布”的项目。
导入这三个剪辑,并创建一个名为“粗剪”的时间线。
在第240帧添加一个蓝色标记,并注明“查看过渡”。
将当前成绩另存为“已批准外观”相册中的静止照片。
需求
- DaVinci Resolve Studio 18或更新版本。 必须启用外部脚本。
- 64位CPython 3.10或3.11。 Resolve的脚本模块仍在导入
imp,已从Python 3.12中删除。 - 与Resolve一起安装的DaVinci Resolve脚本API。
- MCP客户端,如Claude Desktop。
启动服务器之前,打开“解析”并设置:
偏好设置→ 系统→ 通用→ 使用外部脚本→ Local
Resolve的免费版不公开外部脚本连接 由该服务器使用。MCP过程可以启动,但它将保持断开状态。
安装
首先克隆存储库:
git clone https://github.com/Tooflex/davinci-resolve-mcp.git
cd davinci-resolve-mcp
视窗
使用Python.org上的常规64位Python。不要使用 uv-独立管理
Windows上的Python:解析 fusionscript.dll 众所周知,他会与那些人发生碰撞
建筑。
安装Python 3.10:
winget install --id Python.Python.3.10 -e
创建环境并安装依赖项:
& "$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 .
通过Windows启动器启动服务器:
.\run_server.ps1
总是使用 run_server.ps1 在Windows上。它将Resolve固定到正确的Python
运行时,隔离 PATH,并在启动前配置脚本API路径
服务器。
macOS
使用CPython 3.10或3.11创建虚拟环境:
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
自动检测标准的Resolve API位置:
/Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting/Modules~/Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting/Modules
Intel和Apple Silicon Mac都使用相同的Resolve应用程序和脚本 路径。
Linux
创建环境并安装依赖项:
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
默认的Linux脚本路径为 /opt/resolve/Developer/Scripting/Modules.
如果你使用 uv 作为安装程序,以现有的兼容CPython为目标
环境明确:
uv pip install --python .venv/bin/python -e .
在Windows上,继续使用常规的python.org环境
run_server.ps1;不要让 uv 提供一个独立的Python运行库。
MCP客户端配置
服务器使用MCP标准I/O传输。配置您的客户端以启动 服务器作为本地进程。
Windows上的克劳德桌面
编辑 %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"
]
}
}
}
macOS上的克劳德桌面
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"davinci-resolve": {
"command": "/absolute/path/to/davinci-resolve-mcp/.venv/bin/davinci-resolve-mcp",
"args": []
}
}
}
其他MCP客户端
使用上面显示的相同命令和参数对:
- 窗户:
powershell -NoProfile -ExecutionPolicy Bypass -File <run_server.ps1> - macOS/Linux:
<venv>/bin/davinci-resolve-mcp
使用绝对路径。保持Resolve运行,更改后重新启动MCP客户端
其配置,然后检查 davinci-resolve 工具可用。
可用MCP资源
| URI | 描述 |
|---|---|
system://status |
连接、项目和时间线状态 |
project://current |
当前项目名称和时间线计数 |
timeline://current |
当前时间线名称、持续时间和视频曲目计数 |
timeline://items |
第一个视频轨道上的项目 |
mediapool://current |
当前媒体池文件夹和剪辑计数 |
gallery://albums |
图库相册名称 |
可用的MCP工具
项目和导航
| 工具 | 操作 |
|---|---|
refresh |
刷新缓存的Resolve对象 |
create_project |
创建项目 |
load_project |
打开现有项目 |
save_project |
保存当前项目 |
export_project |
将项目导出到文件 |
import_project |
导入项目文件 |
set_project_setting |
更改项目设置 |
open_page |
开放媒体、编辑、融合、颜色、公平或交付 |
媒体和时间表
| 工具 | 操作 |
|---|---|
import_media |
将文件导入媒体池 |
add_sub_folder |
添加媒体池子文件夹 |
create_timeline |
创建一个空的时间线 |
set_current_timeline |
按从1开始的索引选择时间线 |
append_to_timeline |
附加命名剪辑 |
create_timeline_from_clips |
从命名剪辑构建时间线 |
import_timeline_from_file |
导入时间线,如XML或EDL |
set_clip_property |
更改时间线剪辑属性 |
add_timeline_marker |
在帧处添加标记 |
add_track |
添加视频、音频或字幕轨道 |
set_track_name |
重命名曲目 |
enable_track |
启用或禁用曲目 |
set_current_version |
选择颜色或Fusion剪辑版本 |
融合与色彩
| 工具 | 操作 |
|---|---|
execute_lua |
在Resolve的Fusion环境中执行Lua |
create_fusion_node |
将节点添加到当前Fusion组合中 |
add_color_node |
将颜色节点添加到当前剪辑 |
save_still |
将当前成绩保存到图库相册 |
apply_still |
将命名静止图像应用于剪辑 |
execute_lua 在Resolve内部运行代码。仅执行来自您的源代码的脚本
信任。
音频、播放和渲染
| 工具 | 操作 |
|---|---|
set_audio_volume |
设置命名剪辑的音量 |
set_track_volume |
设置音轨音量 |
play_timeline |
开始播放 |
stop_timeline |
停止播放 |
set_playhead_position |
将播放头移动到帧中 |
start_project_render |
使用可选的预设和输出路径启动渲染 |
连接引导程序是如何工作的
server.py 导入 resolve_env.py 创建之前 ResolveAPI.
在每个平台上,引导程序:
- 选择Resolve脚本API和本机库路径;
- 将所选模块目录传播到子进程;
- 探针
DaVinciResolveScript在一次性子流程中; - 仅当探测器退出时,才在MCP进程中导入本机库 安全。
在Windows上,Resolve可以从Windows中选择Python运行时
注册并加载外部 python3xx.dll 进入当前流程。
FUSION_PYTHON3_HOME、DLL预加载和隔离启动器可防止这种情况
本地崩溃。
环境覆盖
默认设置适用于标准Resolve安装。对于定制安装, 在启动服务器之前设置这些变量:
| 变量 | 目的 |
|---|---|
RESOLVE_SCRIPT_PATH |
目录包含 DaVinciResolveScript.py |
RESOLVE_SCRIPT_API |
决心的根源 Developer/Scripting 目录 |
RESOLVE_SCRIPT_LIB |
绝对路径 fusionscript.dll 或 fusionscript.so |
FUSION_PYTHON3_HOME |
必须加载Windows Python运行时解析 |
例子:
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
故障排除
服务器已启动但未连接
- 确认DaVinci Resolve Studio正在运行。
- 集 使用外部脚本 到 本地,然后重新启动Resolve。
- 确认配置的Python是3.10或3.11版本。
- 检查Resolve脚本模块目录是否存在。
当服务器处于断开连接状态时,它故意保持可用 无法初始化Resolve。
scriptapp('Resolve') returned None
本机模块已加载,但无法获取正在运行的Resolve对象。 Resolve已关闭、外部脚本已禁用或已安装 版本不支持外部脚本。
ModuleNotFoundError: No module named 'imp'
正在使用Python 3.12或更高版本。用Python重建虚拟环境 3.10或3.11。
Windows访问违规 0xC0000005
通过以下方式启动项目 run_server.ps1,不与 python server.py.
当发生碰撞时 fusionscript.dll 加载不兼容的Python运行时,
通常来自另一个在python.org或Anaconda上注册的安装
机器。发射器设置 FUSION_PYTHON3_HOME 并隔离DLL解析。
No valid Resolve scripting module path found
集 RESOLVE_SCRIPT_PATH 到包含以下内容的目录
DaVinciResolveScript.py。如果本机库也处于非标准状态
位置,设置 RESOLVE_SCRIPT_LIB.
缺少MCP依赖项
将项目安装到MCP客户端中配置的同一解释器中:
python -m pip install -e .
发展
以可编辑模式安装项目:
python -m pip install -e .
运行单元测试:
python -m unittest discover -s tests -v
运行语法检查:
python -m py_compile server.py resolve_api.py resolve_env.py
GitHub Actions工作流在Python 3.10和3.11上运行单元测试 Windows、macOS和Linux。
贡献应使测试涵盖特定于平台的引导行为。