{"slug": "mcp-server-integration-for-davinci-resolve-studio", "title": "MCP server integration for DaVinci Resolve Studio", "summary": "A new Model Context Protocol (MCP) server, davinci-resolve-mcp, enables AI assistants to control DaVinci Resolve Studio through the official Scripting API, offering full API coverage and workflow helpers for editing, media pool, render setup, and more. The server includes a local browser control panel and supports integration with Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, Zed, Continue, Cline, Roo Code, OpenCode, Codex CLI, and JetBrains IDEs. It also provides a bridge for the free edition of Resolve 21.0.x, but notes that Resolve 21.1 moved Python scripting to Studio, limiting free edition support.", "body_md": "English | [简体中文](/samuelgursky/davinci-resolve-mcp/blob/main/README.zh-CN.md)\n\nA Model Context Protocol (MCP) server that lets AI assistants control DaVinci Resolve Studio through the official Scripting API. It provides full API coverage plus guarded workflow helpers for editing, media pool organization, render setup, review markers, grading, Fusion, Fairlight, project lifecycle tasks, extension authoring, and source-safe media analysis.\n\nA local browser control panel ships with the server for inspecting Resolve state, running source-safe analysis, drilling into analyzed clips and shots, and editing analysis output inline. See the [Control Panel Guide](/samuelgursky/davinci-resolve-mcp/blob/main/docs/guides/control-panel.md) for the full tour.\n\n```\nnpx davinci-resolve-mcp setup\n```\n\nBefore connecting, open DaVinci Resolve Studio and set **Preferences > General > External scripting using** to **Local**. (On the **free edition** that preference does not help — see [Free edition](#free-edition-in-app-bridge) below.) The npm launcher installs a managed copy under your user application-data directory, then runs the universal Python installer. The installer creates a virtual environment, detects Resolve paths, and can configure Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, Zed, Continue, Cline, Roo Code, OpenCode, Codex CLI, and JetBrains IDEs.\n\nFor source installs:\n\n```\ngit clone https://github.com/samuelgursky/davinci-resolve-mcp.git\ncd davinci-resolve-mcp\npython install.py\n```\n\nFor platform paths, client-specific config, and manual setup, see [Installation and Configuration](/samuelgursky/davinci-resolve-mcp/blob/main/docs/install.md).\n\nThe installer and server check the latest GitHub release for MCP updates. Checks are best-effort and throttled; the server never blocks MCP startup for a prompt. The installer can prompt, snooze, ignore a release, disable checks, or apply an opt-in safe auto-update for clean git checkouts.\n\nBlackmagic gates *external* scripting to Studio: on the free edition\n`scriptapp(\"Resolve\")` refuses a foreign process, whatever the preference says.\nThrough Resolve 21.0.x the **Workspace ▸ Scripts** menu was not gated — a script\nlaunched from it is handed the live `resolve` object (measured on free 21.0.3.7) —\nso the server can reach the free edition through a small script that runs *inside*\nResolve and re-exports it over an authenticated loopback listener. **Resolve 21.1\nmoved Python scripting to Studio.** On free 21.1 the Scripts menu no longer lists\n`.py` files at all (reported on Fedora 44 in #203; a Lua script in the same folder\nlists normally). Whether the Console still runs Python there is unconfirmed, so\ntreat the bridge as a 21.0.x path until that is measured.\n\n```\npython scripts/install_resolve_bridge.py\n# restart Resolve, open a project, then: Workspace > Scripts > resolve_bridge\n```\n\nThe installer and MCP client use `~/.config/davinci-resolve-mcp/bridge.json`\nby default. To keep the authenticated bridge config elsewhere, set\n`DAVINCI_RESOLVE_BRIDGE_CONFIG` while running the installer and in the MCP\nclient environment; both sides will use that path.\n\nOnce that listener is running it is used **automatically** whenever external\nscripting is unavailable — no environment variable required. Setting\n`DAVINCI_RESOLVE_BRIDGE=1` *forces* the bridge instead: it becomes the only\ntransport tried, so a bridge that stops answering reports its own fault rather\nthan quietly falling back to another transport. Use it when the bridge is the\npath you intend to depend on.\n\nOn **macOS**, Resolve looks for Python 3 in exactly two places: the\n`PYTHON3HOME` environment variable, then `/usr/local/bin/python3`. Homebrew,\npyenv, uv and conda land in neither, so the script silently never appears in the\nmenu. A python.org install works because its installer creates\n`/usr/local/bin/python3` — but you do not need one: point Resolve at the\ninterpreter you already have, no `sudo` required.\n\n``` python\nlaunchctl setenv PYTHON3HOME \"$(python3 -c 'import sys; print(sys.prefix)')\"\n```\n\nUse `launchctl setenv`, not `export` — Resolve is launched from the Dock and\nnever sees your shell's environment. Restart Resolve afterwards. A Lua canary is\ninstalled alongside so you can tell \"Python not detected\" apart from a wrong\nfolder.\n\nTwo things that bite (#182). The prefix must contain **both**\n`lib/libpython3.X.dylib` and `bin/python3` under that exact **unversioned**\nname — Homebrew's framework builds often ship only `bin/python3.13`, which is\nhalf a Python as far as Resolve is concerned, and the installer's preflight now\nsays so instead of reporting a usable prefix. And `launchctl setenv` **does not\nsurvive a reboot**; if scripts stop listing weeks later with no error, that is\nwhy. For something persistent, put an interpreter where Resolve already looks\n(this one needs `sudo`, and check that `/usr/local/bin` does not precede your\nnormal Python on `PATH`):\n\n```\nsudo ln -s \"$(command -v python3)\" /usr/local/bin/python3\n```\n\nValidated on free 21.0.3.7 and Studio 19.1.3.7, both macOS. The Windows paths\nadded in v2.70.1 (issue #106) shipped unverified; reports on free 21.0.1.11\n(issue #109) and free 21.0.3.7 (issue #112) have since shown the bridge\ninstalling, listing and serving from **both** `%PROGRAMDATA%` and `%APPDATA%` on\nWindows 11, so those paths are now confirmed rather than assumed. Linux is\nconfirmed as well: a report on free 20.3.2.9 (issue #129, Fedora 43) shows the\nbridge installing to `~/.local/share/DaVinciResolve/Fusion/Scripts/Utility`,\nlisting against the system Python — Linux has none of this discovery problem —\nand serving end-to-end. No platform now rests on an assumption: macOS was\nvalidated directly, Windows and Linux on user reports.\n\nNote that the bridge holds its port for as long as it serves. Before v2.70.3 a\nWindows bridge could outlive Resolve and block the next session's listener; if\nyou are on an older build and a bridge stops answering, check for a stale\n`fuscript.exe` still holding the port.\n\nThis is the documented in-app path, not a licence circumvention, but Blackmagic could close it — treat it as a supported-until-it-is-not tier. Loopback only, HMAC-signed requests, one-use nonces.\n\nLaunch the single-user local control panel from the repository root:\n\n```\nvenv/bin/python -m src.control_panel\n```\n\nThe command starts a loopback-only server and opens the control panel in your browser at a URL that carries a per-launch access token (`http://127.0.0.1:8765/#token=…`) — use that exact URL; the panel refuses requests without it. To have an AI coding agent do this, ask: **\"Open the Resolve MCP control panel for this repo.\"** Agents should use `venv/bin/python -m src.control_panel` unless your Python environment is already active. Persisted analysis jobs refresh the local search index automatically after successful slices; the manual Build Index action is for rebuilding from existing reports.\n\n| Mode | Entry point | Tools | Best for | \n|---|---|---|---|\n| Compound | `src/server.py` | 36 | Default mode for most assistants. Related Resolve operations are grouped behind action parameters to keep context usage low. | \n| Full / granular | `src/server.py --full` or`src/resolve_mcp_server.py` | 365 | Power users who want one MCP tool per Resolve API method. | \n\nThe compound server is recommended unless you specifically need the granular one-tool-per-method surface.\n\nThe same package ships a second, optional MCP server: **`davinci-resolve-advanced-mcp`** (bin\n`bin/davinci-resolve-advanced-mcp.mjs`). Where the Python server drives a *live* Resolve over the\nsanctioned scripting API, the advanced server does what the API **can't** — it reads and edits Resolve\n**files** (`.drp` / `.drt` / `.drx`) and applies DB/XML-level changes **with no Resolve running**, so it\nruns cloud *or* local. 18 tools: `drp`, `drt`, `drx` (per-clip grade codec **plus a deterministic,\noffline grading/QC catalog** — within-camera + cross-camera skin (v2 skin-line metric) + b-roll +\nneutral-patch WB matching, match-to-reference, saturation/black-balance, contrast-normalize, ASC CDL\nimport, lossless grade-transfer + season-look authoring, named-LUT attach, scope reads + intent tags,\nverify-grade, display-referred frame extraction, broadcast-legal QC), `offline_ref`,\n`conform` (frame-oracle conform/relink QC + lineage), `color_trace` (carry grades across a re-conform),\n`fusion`, `audio_plan`, `fairlight` (bus routing), `audio`, `project_read`, `project_db`, `pipeline`\n(a **DB-as-truth pipeline**: compile YAML project specs into a canonical SQLite DB, then run stages with\ngates, provenance, and intent↔actual drift detection), `capabilities`, `deliverable` (deliverable QC /\ncompliance), `media` (media front-end / AE ingest), `editorial` (editorial integrity / changelist),\n`provenance` (provenance / audit / episode report). It can also be consumed **as a\nlibrary** (importable engine API), not just spawned as a server.\n\nDRX grade writes are **live-calibrated against Resolve Studio**: grade params take Resolve's\non-screen panel units by default (`space: 'ui' | 'drx'`), and the structural writes (power windows,\nqualifiers, HDR zones, HSL curves, ColorSlice, blur/key/motion-effects) are panel-readback-verified —\nper-control status in `resolve-advanced/vendor/drx-parameters/CALIBRATION-STATUS.md`. It also closes\na UI-only gap: **programmatic \"Cleanup Node Graph\"** (`drx` `relayout` for one clip, `project_db`\n`relayout_node_graphs` for a whole project) — node layout tidied, grade content byte-preserved.\n\nAdd it alongside the live server (both ship in one `npm install`):\n\n```\n{\n  \"mcpServers\": {\n    \"davinci-resolve\": { \"command\": \"<python>\", \"args\": [\"<path>/src/server.py\"] },\n    \"davinci-resolve-advanced\": { \"command\": \"node\", \"args\": [\"<path>/bin/davinci-resolve-advanced-mcp.mjs\"] }\n  }\n}\n```\n\n`install.py` prints both entries. The core is pure-JS/MIT with no required native modules; a few features\nneed user-installed tools (ffmpeg for `audio`, `sharp`/` better-sqlite3` for some paths) — call the\n`capabilities` tool for live status and install hints.\n\nUnlike the Python server, this one has Node dependencies. `npx davinci-resolve-mcp setup` installs them\ninto the managed install (`npm install --omit=dev --omit=optional` under `resolve-advanced/`) and only\nthen registers the bin. If that install could not run — offline, or npm unavailable — setup registers\nan `npx` command for the advanced server instead, so the entry it writes always boots. To repair an\nexisting install without re-running setup: `npx davinci-resolve-mcp sync`.\n\nThe maintainers also build **Bradford Post Assistant**, a desktop application on top of this\nopen foundation. Where the MCP servers give an agent hands, Post Assistant is the working\ncopilot around them — an on-device AI assistant for post-production where client material\nnever leaves the workstation:\n\n- **A post-production copilot** — a desktop app that sits alongside DaVinci Resolve and\nwatches the session live (timeline, grades, and frames — not just API calls), with an\nembedded AI assistant and agent runtime, local media analysis (transcription, frame\nanalysis, editorial intelligence), and in-app conform QC.\n- **Memory** — persistent, encrypted on-device assistant memory plus cross-episode learning\nmined from your pipeline's decoded facts (season-look drift, per-camera correction priors,\nhero-frame libraries, conform path-map reuse), with accumulation managed for you and a\nreviewed-insight workflow.\n- **Self-contained by design** — Post Assistant wires everything itself: this MCP for\nResolve control, the Bradford API for its extended services, and your choice of LLM\nprovider. Nothing to configure by hand, no separate clients to manage, and the app keeps\nitself (and its bundled MCP) current with signed auto-updates.\n- **An extended professional toolset** — grade surgery on live projects, 22+ adaptive grade\nfamilies, a curated looks library, delivery-spec validation, editorial pacing/cleanup\nanalysis, natural-language color direction, and Fusion composition authoring — delivered\nthrough the managed Bradford API.\n- **Production workflows** — the raw tools composed into finished, real-world flows\n(turnover → conform → QC → delivery, season-look carry, episode reporting) with the\nguardrails and approvals a client-facing shop expects.\n\nIt is currently in **closed beta** — you can request access at\n[bradfordoperations.com/software/post-assistant](https://www.bradfordoperations.com/software/post-assistant).\nThe open-source servers are complete and fully functional on their own.\n\n```\n\"List all projects and open the one called 'My Film'\"\n\"Create a timeline called 'Assembly Cut' from all clips in the current bin\"\n\"Build a multicam prep timeline from selected camera angles and preserve source media\"\n\"Detect 2-pops or slate claps and suggest record offsets for sync prep\"\n\"Publish analysis summaries, keywords, people, and slate hints into Resolve clip metadata\"\n\"Probe this timeline for gaps, overlaps, missing media, and source frame ranges\"\n\"Safely import this image sequence, organize it into bins, and normalize clip metadata\"\n\"Build a ProRes 422 HQ render plan, validate the settings, and queue the job\"\n\"Copy review markers from the timeline to the selected clip and export a review report\"\n\"Snapshot this clip's grade, validate a CDL update, and export a temp LUT\"\n\"Create a Fusion TextPlus overlay on the selected clip and verify graph connections\"\n\"Report audio channel mappings, voice isolation availability, and subtitle support\"\n\"Install this MCP-marked DCTL or script, classify refresh/restart needs, then remove it\"\n```\n\n| Area | What the compound server supports | \n|---|---|\n| App and project control | Launch/reconnect, page switching, project CRUD, project folders, databases, cloud project wrappers, settings, presets, archives | \n| Media pool and ingest | Safe import, image sequences, multicam prep timelines, bin organization, metadata normalization, metadata field inventory, marks, annotations, relink/proxy/full-resolution guards | \n| Media analysis | Source-safe file/clip/bin/project analysis, 2-pop/slate-clap sync-event detection, default Resolve metadata and Media Pool marker writeback, persisted analysis artifacts, existing-report reuse, host_chat_paths visual analysis (finalized per clip with `commit_vision` , works with any vision-capable MCP client) with opt-out, transcription with opt-out | \n| Timeline editing and conform | Track/item probing, title text key scans/writes, copy/move/duplicate helpers, ripple insert, range operations, gaps/overlaps, source ranges, checked interchange exports/imports | \n| Review annotations | Timeline/item/clip markers, custom data, flags, clip color, copy/move/sync cleanup, review reports, marker thumbnail review | \n| Color and grading | Node graph probing, CDL validation, grade copy, DRX/LUT helpers, versions, Gallery stills, color groups | \n| Fusion | Timeline-item comps, safe tool creation, input writes, port inspection, validated connections, scoped bulk writes | \n| Audio and Fairlight | Track/item probes, source mapping, guarded audio property writes, voice isolation, auto-sync planning, transcription/subtitle probes | \n| Render and deliver | Format/codec matrix probing, render settings validation, queued job lifecycle checks, guarded Quick Export | \n| Extension authoring | Fuse, DCTL, ACES DCTL, and Resolve-page Lua/Python script lifecycle helpers with safe MCP-marked install/remove | \n| Craft guidance | The bundled editorial, colour, audio, and workflow guidance served as prose over MCP — indexed, searchable, and readable by any client, not just ones with this repository on disk | \n\nEvery compound tool return carries an `_operation` block beside its payload, so\nan agent reads one shape instead of a different key per tool: `status`\n(`success` / `partial` / `blocked` / `failed`), `verification` (with\n`contradiction` kept distinct — Resolve reported success and the readback\ndisagreed), `changes` (the semantic delta), `warnings`, and an `execution_id`.\n\nTwo absences are meaningful and deliberate. `verification.status: \"unverified\"`\nmeans *no evidence was reported*, not \"checked and clean\". A missing `changes`\nmeans the action did not report a delta, not that nothing changed — an empty\n`{}` there would be a confident, wrong answer about an edit that simply never\ndeclared one.\n\nThe envelope is namespaced rather than merged into the top level because\n`status`, `operation`, `warnings`, `result` and `changes` are all already domain\nkeys here; flattening would rewrite a background job's `status: \"done\"` and a\nconfirm gate's `status: \"confirmation_required\"`. `setup(action=\"set_defaults\", params={\"result_envelope\": \"pure\" | \"legacy\"})` changes the shape, per call via\n`params={\"envelope\": ...}`, per process via `RESOLVE_MCP_RESULT_ENVELOPE`.\n\nMulti-step AI operations correlate across tool calls into unified execution\ntraces. Each trace aggregates tool durations (`duration_ms`), call counts, cumulative\nsemantic deltas (`items_deleted`, `items_added`), and readback verifications.\nAgents and editors can inspect workflows via `resolve_control`:\n`get_execution_trace(execution_id?)`, `list_recent_executions()`, or open a\nscoped execution with `begin_execution(request=\"...\")` / `end_execution()`.\n`export_execution_report(execution_id?, format=\"markdown\"|\"json\")` writes a\nreviewable audit artifact with the same summary, defaulting to\n`logs/execution-reports/<execution_id>.md`. `path` writes it anywhere you want\nit instead — alongside a conform in a dated TransferFiles folder, say — and\ncreates the directories to get there, so check the path before you send it.\nAn existing file is never replaced without `overwrite: true`.\n`inspect_operation(tool?, target_action?, target_params?)` evaluates pre-flight\nrisk level (`low`, `medium`, `high`, `critical`), destructive potential, and blast\nradius (`item`, `track`, `timeline`, `project`, `system`) before taking action, while\n`list_lifecycle_hooks()` inspects active execution interceptors.\n\nIt is a heuristic over action names, not a simulation — it never touches the\nproject and does not validate your parameters, so `recognised: false` means the\nlevels are defaults rather than a finding, and `snapshot_available: null` means\nrollback availability was not determined rather than absent. Every shipped hook\nobserves; none replaces a tool's result, so `dry_run` always reaches the real\nhandler and nothing synthesises a preview for an action that has none.\n\nA report for a run where nothing was verified says **\"not established — no\nchecks recorded\"**, not \"passed\". Absence of evidence is a question still open,\nand an audit document is the last place to let a reader read it as an all-clear.\n\nTraces live in a 100-entry in-memory ring and are appended to\n`logs/execution-traces.jsonl` beside `server.log` — `RESOLVE_MCP_TRACE_FILE`\nmoves it, and `RESOLVE_MCP_LOG_FILE` moves `server.log` itself (a path, or empty\nfor no file; the offline test suite points it at a temporary file so it never\nwrites into the operator's log). `list_recent_executions` reports that path and whether it is\nwritable, so \"the log is empty\" and \"nothing is being written\" are\ndistinguishable without reading the source. What is recorded is tool name,\naction, timing, status, semantic deltas and verification — no parameters and no\nfile paths. The one free-text field is the `request` you pass to\n`begin_execution`, so treat it the way you would a commit message on a client\nproject.\n\nThe core install is deliberately small: Python, ffmpeg, and the Resolve scripting\nAPI. Some features need more, and **each one refuses honestly with its own\ninstall line rather than degrading into a guess** — a fabricated tempo or an\ninvented level produces confident, wrong output, which is worse than no feature.\n\nRun `python scripts/doctor.py` to see which of these you have.\n\n| Extra | Unlocks | Licence | \n|---|---|---|\n| **ffmpeg** on PATH | Silence detection, dead-space markers, level measurement, audio analysis. The single most useful thing to install. | LGPL/GPL — invoked as a subprocess, never bundled | \n| `pip install numpy` | Colour pre-balance, reference-still matching, sound-density audit | BSD | \n| `pip install librosa` | Beat, bar and phrase detection for music-driven cutting | ISC | \n| `pip install -U openai-whisper` | Transcription, and everything word-level built on it | MIT | \n| `pip install open_clip_torch` | Visual similarity and `find_similar` | MIT | \n| `pip install transformers` | CLAP audio embeddings | Apache-2.0 | \n| `pip install opencv-python` | Additional frame analysis | Apache-2.0 | \n\n`media_analysis` action `capabilities` reports the analysis stack in detail and\ntells you what each missing piece would enable.\n\n**Nothing here is bundled.** Model weights carry their own licences separate from\nthe code that loads them; check them before commercial use.\n\nKnowing where a tool stops is worth as much as knowing what it does, and it is cheaper to read it here than to discover it mid-project.\n\n| Not supported | Why, and what you get instead | \n|---|---|\n| **Choosing the best take** | Performance is most of what makes a take right, and none of it is measurable from a waveform or a transcript. `rank_takes` ranks*fluency* — fillers, restarts, script coverage — and says so in every response. The take that plays is regularly the least fluent one, because the hesitation is often the acting. Use it to find the clean safety take, not to choose the read. | \n| **Automatic music editing** | Optional `librosa` support provides beat detection and beat/bar/phrase cut-point plans, not a finished assembly. Downbeats are inferred from the first beat; use`beat_offset` for pickups. Speech-silence tools are unsuitable for finding musical edit points. | \n| **Judging a cut** | Nothing here has an opinion about whether an edit is good. Every destructive action is plan → review → confirm for that reason. | \n| **Replacing an editor** | The output is a first-pass assembly, in the assistant-editor sense: ingest, sync, organize, string out, flag problems. It is a starting point you cut, not a finished cut. Defaults are deliberately **generous** — a first assembly is supposed to run long, because trimming is fast and visible while recovering discarded material is slow and invisible. | \n| **Modifying your source media** | By design and without exception — see below. | \n\nAnything analyzed but unverifiable is reported as unverified, never folded into \"fine\". An empty result means \"nothing found\", never \"nothing to find\".\n\nThis project treats camera originals and source media as immutable. Analysis tools read source files and write reports only to sidecar, scratch, or project analysis directories; confirmed metadata publishing writes only to Resolve's project database. The server must not modify, transcode, proxy, or create derivatives of source media unless the user explicitly asks for that. See [Media Analysis Guide](/samuelgursky/davinci-resolve-mcp/blob/main/docs/guides/media-analysis-guide.md) for the detailed source-safe workflow.\n\nThe default server is a local stdio process launched by your MCP client; it does not expose a network listener or built-in multi-user auth surface. The two opt-in local HTTP surfaces — the control panel and the networked MCP transport — bind loopback only and require a per-launch bearer token on every request, with Host/Origin checks against DNS rebinding and CSRF. Tool metadata includes MCP client-safety hints for read-only, destructive, idempotent, and external-resource operations. See [Security Policy](/samuelgursky/davinci-resolve-mcp/blob/main/SECURITY.md) for operational boundaries, confirmation guidance, and vulnerability reporting.\n\n| Metric | Value | \n|---|---|\n| MCP Tools | **36** compound /**365** granular (live server) | \n| Advanced (offline) tools | **18** — .drp/.drt/.drx + DB authoring, no Resolve running | \n| Kernel Actions | **136** guarded workflow actions across 9 compound tools | \n| API Methods Covered | **361/361** (100%) | \n| Methods Live Tested | **338/361** (93.6%) | \n| Live Test Pass Rate | **338/338** (100%) | \n| Tested Against | DaVinci Resolve 19.1.3 Studio + Resolve 20.3.2 Studio + Resolve 21.0.2 Studio + Resolve 21.0.3 **free** (via the in-app bridge) | \n\nFor method-by-method status, see [API Coverage and Test Results](/samuelgursky/davinci-resolve-mcp/blob/main/docs/reference/api-coverage.md). For current workflow support, see [Kernel Action Coverage](/samuelgursky/davinci-resolve-mcp/blob/main/docs/kernels/README.md).\n\n`analyze_media` executes directly by default, persists inspectable reports/artifacts under the analysis root, requests host-chat visual analysis via the `host_chat_paths` protocol (analyze returns absolute frame paths + a JSON schema; the host chat reads each frame as an image and calls `media_analysis(action=\"commit_vision\", ...)` to finalize), runs transcription through the configured local backend, and writes analysis summaries plus source-time Media Pool clip markers back to the Resolve project. Pass `include_visuals=false`, `include_transcription=false`, `publish_metadata=false`, `timed_markers=no`, or `dry_run=true` only when you want to opt out of those default behaviors. Skipping `commit_vision` leaves the run in `pending_host_vision_analysis` — surfaced as a failure mode, not silently downgraded.\n\n| Document | Use it for | \n|---|---|\n| [Installation and Configuration](/samuelgursky/davinci-resolve-mcp/blob/main/docs/install.md) | Requirements, installer options, supported clients, server modes, manual config | \n| [API Coverage and Test Results](/samuelgursky/davinci-resolve-mcp/blob/main/docs/reference/api-coverage.md) | Key stats, API coverage table, live-test status, full method reference | \n| [Kernel Action Coverage](/samuelgursky/davinci-resolve-mcp/blob/main/docs/kernels/README.md) | Current guarded workflow action map | \n| [AI Skill Reference](/samuelgursky/davinci-resolve-mcp/blob/main/docs/SKILL.md) | Operational context for AI assistants using the compound server | \n| [Control Panel Guide](/samuelgursky/davinci-resolve-mcp/blob/main/docs/guides/control-panel.md) | Local browser panel tour: Overview, Review (bin/clip/shot), Analyze, Setup, Preferences | \n| [Media Analysis Guide](/samuelgursky/davinci-resolve-mcp/blob/main/docs/guides/media-analysis-guide.md) | Source-safe FFprobe, FFmpeg, Whisper, sidecar, and analysis-root workflows | \n| [Multicam Setup Helper Guide](/samuelgursky/davinci-resolve-mcp/blob/main/docs/guides/multicam-setup-guide.md) | Stacked timeline prep, helper/API boundary, and Resolve UI conversion steps | \n| [Editorial Decision Guide](/samuelgursky/davinci-resolve-mcp/blob/main/docs/guides/editorial-decision-guide.md) | Project-owned editorial craft guidance for analysis and timeline decisions | \n| [Conforming an Avid AAF](/samuelgursky/davinci-resolve-mcp/blob/main/docs/guides/conforming-an-avid-aaf.md) | Why all three Resolve-native routes fail on a consolidated turnover, and which one is dangerous | \n| [Native .drt Authoring](/samuelgursky/davinci-resolve-mcp/blob/main/docs/guides/native-drt-authoring.md) | Offline template-spliced timeline authoring: cuts, retimes, transitions, fades, markers, compounds — and the measured laws behind them | \n| [Headless Edit Loop](/samuelgursky/davinci-resolve-mcp/blob/main/docs/guides/headless-edit-loop.md) | Driving Resolve from the command line: which interchange formats relink and round-trip, measured in GUI and -nogui | \n| [Color Decision Guide](/samuelgursky/davinci-resolve-mcp/blob/main/docs/guides/color-decision-guide.md) | Project-owned color correction guidance and Resolve color API boundaries | \n| [Contributing and Project Layout](/samuelgursky/davinci-resolve-mcp/blob/main/docs/contributing.md) | Contribution workflow, platform support, security notes, repository structure | \n| [Security Policy](/samuelgursky/davinci-resolve-mcp/blob/main/SECURITY.md) | Local stdio trust boundary, tool metadata, confirmation guidance, reporting | \n| [Release Process](/samuelgursky/davinci-resolve-mcp/blob/main/docs/process/release-process.md) | Maintainer release checklist, version surfaces, validation, tags, and release notes | \n| [Changelog](/samuelgursky/davinci-resolve-mcp/blob/main/CHANGELOG.md) | Historical release notes | \n\nExtension authoring references live in [docs/authoring](/samuelgursky/davinci-resolve-mcp/blob/main/docs/authoring). Resolve developer-package notes live in [docs/notes](/samuelgursky/davinci-resolve-mcp/blob/main/docs/notes) and [docs/integrations](/samuelgursky/davinci-resolve-mcp/blob/main/docs/integrations). Prompt recipes live in [examples](/samuelgursky/davinci-resolve-mcp/blob/main/examples).\n\n- DaVinci Resolve 18.5+ on macOS, Windows, or Linux. **Studio** supports external scripting directly. The**free edition** does not — Blackmagic gates external scripting to Studio — but it is still reachable through the[in-app bridge](#free-edition-in-app-bridge) , which runs inside Resolve from the ungated**Workspace ▸ Scripts** menu.\n- Python 3.10+ (3.10-3.12 is the lowest-risk range). Python 3.13/3.14 also work on recent Resolve builds (verified on Studio 20.3.2); older builds may fail to connect on 3.13+, in which case use 3.10-3.12.\n- Resolve external scripting set to **Local** (Studio). On the free edition this\npreference has no effect — use the[in-app bridge](#free-edition-in-app-bridge) instead.\n\nResolve 19.1.3 remains the compatibility baseline. Resolve 20.x scripting calls are additive, version-guarded, and live-tested on 20.3.2. Resolve 21.0 scripting additions (audio classification, speaker-detection transcription, IntelliSearch, slate analysis, motion-deblur, speech generation, session background-task control) are exposed behind runtime capability detection, so they stay inert on older builds and activate automatically on Resolve 21+. They are live-tested on Studio 21.0.2.4 — see the [Resolve 21 delta](/samuelgursky/davinci-resolve-mcp/blob/main/docs/reference/api-coverage.md#resolve-21-delta-detail). Note that `AnalyzeForIntellisearch`, `AnalyzeForSlate` and `GenerateSpeech` each require a separately-downloaded AI Extras pack, and Resolve reports a missing pack inconsistently (some return `False`, others an error string), so these actions report `success: false` with the Resolve-supplied reason rather than guessing.\n\n```\npython src/server.py          # Compound server\npython src/server.py --full   # Granular server\nvenv/bin/python tests/test_import.py\nvenv/bin/python scripts/audit_api_parity.py\n```\n\nRelease and validation rules are in [docs/process/release-process.md](/samuelgursky/davinci-resolve-mcp/blob/main/docs/process/release-process.md). AI agents working in this repository should start with [AGENTS.md](/samuelgursky/davinci-resolve-mcp/blob/main/AGENTS.md); Claude Code users can also read [CLAUDE.md](/samuelgursky/davinci-resolve-mcp/blob/main/CLAUDE.md), which points to the same canonical instructions.\n\nMIT\n\nSamuel Gursky ([samgursky@gmail.com](mailto:samgursky@gmail.com))\n\n- GitHub: [github.com/samuelgursky](https://github.com/samuelgursky)\n\n- Blackmagic Design for DaVinci Resolve and its scripting API\n- The Model Context Protocol team for enabling AI assistant integration", "url": "https://wpnews.pro/news/mcp-server-integration-for-davinci-resolve-studio", "canonical_source": "https://github.com/samuelgursky/davinci-resolve-mcp", "published_at": "2026-09-09 09:44:11+00:00", "updated_at": "2026-09-09 10:12:36.921167+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools", "ai-agents"], "entities": ["DaVinci Resolve Studio", "Blackmagic", "Claude Desktop", "Claude Code", "Cursor", "VS Code", "Windsurf", "Zed"], "alternates": {"html": "https://wpnews.pro/news/mcp-server-integration-for-davinci-resolve-studio", "markdown": "https://wpnews.pro/news/mcp-server-integration-for-davinci-resolve-studio.md", "text": "https://wpnews.pro/news/mcp-server-integration-for-davinci-resolve-studio.txt", "jsonld": "https://wpnews.pro/news/mcp-server-integration-for-davinci-resolve-studio.jsonld"}}