DaVinci-Resolve-MCP

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.

Category
访问服务器

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_frame exports the active timeline frame and JSON metadata.
  • capture_clip_reference finds a clip by Resolve unique ID or exact name, temporarily moves the playhead to current, first, middle, last, or a custom timeline frame, exports it, and restores the original playhead.
  • capture_before_after_reference requires 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_references reports every file with its absolute path.
  • open_capture_folder opens the capture folder through the macOS open filesystem command.
  • delete_captured_reference deletes 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: run setup-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 .drx using register_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

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选