DaVinci-Resolve-MCP
A stdio MCP server for DaVinci Resolve on macOS, enabling project control, timeline navigation, frame capture, grade application, and validation through the official Resolve scripting API.
README
DaVinci Resolve MCP
A modular stdio MCP server for DaVinci Resolve on macOS. It uses Blackmagic
Design's documented DaVinciResolveScript module and filesystem operations
exclusively. It never simulates clicks, captures the macOS screen, uses OCR, or
claims unsupported Resolve API capabilities.
Server location:
/Applications/DaVinci Resolve/davinci-mcp
Quick Start
First-time setup:
cd "/Applications/DaVinci Resolve/davinci-mcp"
./setup-davinci-mcp.command
Then start the stdio server:
./run-davinci-mcp.command
The launchers never change Resolve preferences and never install anything silently.
First-Time Setup
Requirements:
- macOS on Apple Silicon or Intel
- Python 3.12
- DaVinci Resolve with external scripting support
- an MCP client supporting stdio
The setup launcher creates .venv, installs the runtime and development
dependencies, then runs pytest, Ruff, and offline validation:
/Applications/DaVinci Resolve/davinci-mcp/setup-davinci-mcp.command
Equivalent manual commands:
cd "/Applications/DaVinci Resolve/davinci-mcp"
python3.12 -m venv .venv
.venv/bin/python -m pip install -e '.[dev]'
.venv/bin/python -m pytest
.venv/bin/python -m ruff check .
.venv/bin/python scripts/offline_validate.py
The dev extra is required for pytest, Ruff, and mypy. Runtime-only installation
can use .venv/bin/python -m pip install -e ..
Running the Server
Main launcher:
/Applications/DaVinci Resolve/davinci-mcp/run-davinci-mcp.command
The launcher resolves its own directory safely, checks .venv/bin/python,
creates all output folders, exports Blackmagic's official environment
variables, prints the log path, and preserves stdio for MCP. It does not install
packages.
An MCP client should normally execute .venv/bin/python and server.py
directly, as shown below.
Running by Double-Click
Double-click either:
/Applications/DaVinci Resolve/davinci-mcp/run-davinci-mcp.command
~/Desktop/Run DaVinci MCP.command
The Desktop launcher only forwards to the main launcher. A .command window is
useful for diagnostics, but a configured MCP client is needed to call tools.
When startup fails in an interactive Terminal, the window waits for a keypress.
Connecting Codex
Codex reads personal configuration from:
~/.codex/config.toml
Add this table while preserving every existing setting and MCP server:
[mcp_servers.davinci-resolve]
command = "/Applications/DaVinci Resolve/davinci-mcp/.venv/bin/python"
args = ["/Applications/DaVinci Resolve/davinci-mcp/server.py"]
[mcp_servers.davinci-resolve.env]
DAVINCI_MCP_LOG_LEVEL = "INFO"
DAVINCI_MCP_OUTPUT_DIR = "/Applications/DaVinci Resolve/davinci-mcp/output"
RESOLVE_SCRIPT_API = "/Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting"
RESOLVE_SCRIPT_LIB = "/Applications/DaVinci Resolve/DaVinci Resolve.app/Contents/Libraries/Fusion/fusionscript.so"
PYTHONPATH = "/Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting/Modules"
A trusted repository can instead use a project-local .codex/config.toml.
Inspect either file before editing it; do not replace unrelated configuration.
For a generic stdio client using JSON, place this object in that client's documented MCP configuration file:
{
"mcpServers": {
"davinci-resolve": {
"command": "/Applications/DaVinci Resolve/davinci-mcp/.venv/bin/python",
"args": [
"/Applications/DaVinci Resolve/davinci-mcp/server.py"
],
"env": {
"DAVINCI_MCP_LOG_LEVEL": "INFO",
"DAVINCI_MCP_OUTPUT_DIR": "/Applications/DaVinci Resolve/davinci-mcp/output",
"RESOLVE_SCRIPT_API": "/Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting",
"RESOLVE_SCRIPT_LIB": "/Applications/DaVinci Resolve/DaVinci Resolve.app/Contents/Libraries/Fusion/fusionscript.so",
"PYTHONPATH": "/Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting/Modules"
}
}
}
}
Paths containing spaces remain single JSON strings: command and each args
element are separate values. Generic clients choose their own configuration
location; consult that client's documentation rather than guessing a filename.
Screenshot and Reference Capture
These are Resolve-exported reference frames, not operating-system screenshots.
The installed API's documented Project.ExportCurrentFrameAsStill(filePath) is
the primary capture method.
capture_current_frameexports the active timeline frame and JSON metadata.capture_clip_referencefinds a clip by Resolve unique ID or exact name, temporarily moves the playhead tocurrent,first,middle,last, or acustomtimeline frame, exports it, and restores the original playhead.capture_before_after_referencerequires two already-exported images. It preserves genuine before/after files and optionally uses Pillow to place them side by side. It never invents a missing before frame.list_captured_referencesreports every file with its absolute path.open_capture_folderopens the capture folder through the macOSopenfilesystem command.delete_captured_referencedeletes only an artifact resolved beneath the configured output root.
Side-by-side reports may include a mean absolute RGB difference. This is a technical image-change measurement, not pixel-level color validation or an artistic-quality judgment.
Gallery GrabStill, ExportStills, and DeleteStills are capability-checked
where available. A one-frame render is not started by validation and is never
started without an explicit capture request.
Validation
Read-only validation tools:
validate_resolve_connection
validate_current_project
validate_current_timeline
validate_current_clip
validate_capture_support
validate_grade_application
validate_render_configuration
run_full_validation
get_latest_validation_report
Statuses are passed, warning, failed, skipped, or unsupported.
Unsupported public API features are not failures. Each item includes its check
name, message, technical detail, suggested fix, and UTC timestamp.
Offline validation:
.venv/bin/python scripts/offline_validate.py
Optional read-only live validation:
.venv/bin/python scripts/live_validate.py
Live validation does not apply grades, export frames, start renders, move the
playhead, or modify the timeline. validate_grade_application checks only
observable state supplied after a real operation: the DRX exists, the operation
reported success, the target still exists, version information where exposed,
and genuine before/after artifacts exist.
Output File Locations
Default locations:
Generated captures:
/Applications/DaVinci Resolve/davinci-mcp/output/captures
Comparisons:
/Applications/DaVinci Resolve/davinci-mcp/output/comparisons
Validation reports:
/Applications/DaVinci Resolve/davinci-mcp/output/validation
Logs:
/Applications/DaVinci Resolve/davinci-mcp/output/logs
Additional reports:
/Applications/DaVinci Resolve/davinci-mcp/output/reports
Set DAVINCI_MCP_OUTPUT_DIR to override the common output root. Every tool that
creates a file returns its exact absolute path. Full validation writes:
output/validation/latest-validation.json
output/validation/latest-validation.md
output/validation/validation-<UTC timestamp>.json
output/validation/validation-<UTC timestamp>.md
Resolve Must Be Open
Resolve must be running with a project and timeline for live inspection or capture. In Resolve, enable local external scripting under:
DaVinci Resolve > Preferences > System > General > External scripting
Restart Resolve if that preference changed. Offline tests and validation do not need Resolve.
Free vs Studio limitations
API availability and scripting permissions vary by Resolve edition and version.
This server feature-checks installed proxy objects and returns unsupported
when a documented method is absent. Studio-only AI features are not used.
External scripting may require Resolve Studio depending on the installed
Resolve release and licensing.
The official API does not create or rewire color nodes, change node labels,
report timeline multi-selection, apply an in-memory Gallery still as a grade,
or expose numerical scopes/pixel statistics. Authored .drx templates are used
for grading through documented Graph.ApplyGradeFromDRX.
Troubleshooting
- Missing
.venv: runsetup-davinci-mcp.command. - Module cannot load: verify the official paths below and the installed
DaVinciResolveScript.py. - No scripting handle: open Resolve and enable local External scripting.
- No project/timeline: open both before live validation or capture.
- No clip: move the playhead over a video clip or use its unique ID.
- Capture rejected: confirm the project/timeline is active and choose a writable output directory.
- Duplicate output: choose another name or pass
overwrite=true. - No registered look: register an existing
.drxusingregister_powergrade. - Protocol output looks unreadable: stdout is reserved for MCP messages;
inspect
output/logs.
macOS permissions
The project needs write permission only for its output directory and local
catalog. open_capture_folder asks Finder to open a directory, but capture does
not use Screen Recording, Accessibility, camera, microphone, AppleScript,
Automator, or mouse/keyboard control. The project does not alter macOS security
settings.
Official Resolve environment variables
Blackmagic's installed scripting README defines:
export RESOLVE_SCRIPT_API="/Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting"
export RESOLVE_SCRIPT_LIB="/Applications/DaVinci Resolve/DaVinci Resolve.app/Contents/Libraries/Fusion/fusionscript.so"
export PYTHONPATH="${PYTHONPATH:+$PYTHONPATH:}$RESOLVE_SCRIPT_API/Modules"
The server accepts RESOLVE_SCRIPT_API as either this official Scripting root
or the final Modules directory.
Existing capabilities
The server also supports project/timeline/clip inspection, media-pool search, timeline markers, documented color-node inspection and enable state, ASC CDL, DRX grade application, Gallery album/still export, render configuration and queue control, and explicit clip-addressed batch workflows.
See Architecture, tool reference, installation, and extension guide.
推荐服务器
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 模型以安全和受控的方式获取实时的网络信息。