Skip to main content
Glama
README.md
# DaVinci Resolve MCP — Free / Community edition

Drive DaVinci Resolve from Claude Code (or any MCP client) to edit videos —
**on the free Community edition**, which blocks normal external scripting.

## Why this is different

DaVinci Resolve **Free** does not allow an external process to connect via the
scripting API (`scriptapp("Resolve")` returns `nil`); the permission toggle that
Studio exposes is absent. Verified on Resolve 21.0.0.48 across Python 3.9–3.14.

However, scripts running **inside** Resolve have full API access. So this project
uses a **bridge**:

```
Claude Code ──MCP──► server.py (this repo) ──files──► resolve_bridge.lua (inside Resolve) ──► live `resolve` object
```

- `bridge/resolve_bridge.lua` — runs inside Resolve, polls a request file,
  executes against the `resolve` object, writes a JSON response.
- `davinci_mcp/` — the external MCP server; each tool sends one RPC to the bridge.

Request/response are exchanged via files in `~/.davinci-mcp-bridge/`.

## Setup

1. **Install deps and the bridge helper:**

   ```bash
   uv sync
   python3 scripts/install_bridge.py
   ```

   The installer copies the bridge into Resolve's Scripts folder and prints the
   exact start/registration commands for your machine.

2. **Start the bridge inside Resolve** (it must be running for any tool to work):
   - **Workspace ▸ Scripts ▸ Comp ▸ MCP_Bridge** (after restarting Resolve once), or
   - **Workspace ▸ Console**, switch to **Lua**, and run
     `dofile("<repo>/bridge/resolve_bridge.lua")`.

   You should see `[bridge] UP` and `ops registered=...`. It keeps running and
   does **not** freeze the Resolve UI.

3. **Register the MCP server with Claude Code:**

   ```bash
   claude mcp add davinci-resolve -- uv run --directory <repo> davinci-resolve-mcp
   ```

   Then in Claude Code, call `bridge_status` to confirm the connection.

## Tools

`resolve_info`, `list_projects`, `current_project`, `open_project`,
`create_project`, `save_project`, `import_media`, `list_media`,
`list_timelines`, `current_timeline`, `create_timeline`,
`append_all_to_timeline`, `add_marker`, and `resolve_eval` (run arbitrary Lua —
escape hatch for anything not yet wrapped).

## Limitations (Free edition)

- Studio-only API calls return errors: transcription, subtitles-from-audio,
  AutoSync, Magic Mask, IntelliSearch, motion-deblur, speech gen, Dolby Vision.
- Render limits: 8-bit, ≤ UHD 3840×2160, ≤ 60 fps. Applying a Studio-only effect
  watermarks the export.

## Credits

Architecture and Studio-edition tool designs informed by
[samuelgursky/davinci-resolve-mcp](https://github.com/samuelgursky/davinci-resolve-mcp)
(MIT). This project is a from-scratch Free-edition rework using the bridge approach.

TDQS

C2.7/5.0

Scored across 67 tools

Disambiguation4/5

Most tools have clearly distinct purposes with detailed descriptions. However, there is some overlap between add_generator, add_title, add_fusion_generator, and add_fusion_title, which could cause confusion. Overall, the majority are well-disambiguated.

Naming Consistency3/5

Tool names follow a verb_noun pattern generally, but there are inconsistencies such as 'list' vs 'get' (e.g., list_projects vs get_timeline_items), and some names like 'assemble_rough_cut' or 'resolve_eval' deviate. The mix is readable but not fully consistent.

Tool Count2/5

With 67 tools, the server is very large for an MCP server. While DaVinci Resolve is complex, this number exceeds typical scope and may overwhelm agents. Several tools could be consolidated or are redundant (e.g., multiple render start/stop tools).

Completeness4/5

The tool set covers a wide range of operations: project management, media import, timeline editing, color grading, rendering, etc. It includes an escape hatch (resolve_eval) for missing functionality. Only minor gaps exist, such as lack of detailed audio editing tools.

Maintenance

ActivityInactive
ResponsivenessNo issues