davinci-resolve-mcp 2.33.1 → 2.33.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/README.md +1 -1
- package/docs/SKILL.md +4 -1
- package/docs/authoring/setting-files/README.md +152 -0
- package/docs/authoring/setting-files/references/category-patterns.md +780 -0
- package/docs/authoring/setting-files/references/controls.md +259 -0
- package/docs/authoring/setting-files/references/format.md +568 -0
- package/docs/authoring/setting-files/references/gotchas.md +168 -0
- package/docs/authoring/setting-files/references/thumbnails.md +106 -0
- package/install.py +1 -1
- package/package.json +1 -1
- package/src/granular/common.py +1 -1
- package/src/server.py +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
Release history for the DaVinci Resolve MCP Server. The latest release is summarized in the root README; older entries live here to keep the README focused.
|
|
4
4
|
|
|
5
|
+
## What's New in v2.33.2
|
|
6
|
+
|
|
7
|
+
Documentation: a guide for hand-authoring DaVinci Resolve `.setting` template
|
|
8
|
+
files.
|
|
9
|
+
|
|
10
|
+
- **Added** `docs/authoring/setting-files/` — how to author Edit effects,
|
|
11
|
+
transitions, titles, generators, and Fusion macros as `.setting` files: the
|
|
12
|
+
Lua-table format, the `InstanceInput`/`UserControls` control catalog, thumbnail
|
|
13
|
+
conventions, Templates install paths, and a set of hard-won gotchas (ordered
|
|
14
|
+
vs unordered `Inputs`, `ControlGroup` anchoring, transition easing via
|
|
15
|
+
`LUTLookup`, `KeyStretcher` on titles, the category-subfolder rule, OFX
|
|
16
|
+
boilerplate, and more). Includes 13 copyable starter templates and is linked
|
|
17
|
+
from `docs/SKILL.md`.
|
|
18
|
+
|
|
5
19
|
## What's New in v2.33.1
|
|
6
20
|
|
|
7
21
|
Clip transcription read-back and more trustworthy auto-sync reporting.
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# DaVinci Resolve MCP Server
|
|
2
2
|
|
|
3
|
-
[](https://github.com/samuelgursky/davinci-resolve-mcp/releases)
|
|
4
4
|
[](https://www.npmjs.com/package/davinci-resolve-mcp)
|
|
5
5
|
[](docs/reference/api-coverage.md)
|
|
6
6
|
[-blue.svg)](#server-modes)
|
package/docs/SKILL.md
CHANGED
|
@@ -53,7 +53,10 @@ restart-required classification, Python installed-script execution, and
|
|
|
53
53
|
Python/Lua `run_inline`. Use `docs/kernels/extension-authoring-kernel.md` for the
|
|
54
54
|
kernel boundary map, `docs/authoring/fuse-dctl-authoring.md` for the Fuse + DCTL coverage
|
|
55
55
|
matrix, and `docs/authoring/script-plugin-authoring.md` for the script DSL spec and the
|
|
56
|
-
conversational-execution model.
|
|
56
|
+
conversational-execution model. For hand-authoring `.setting` template files
|
|
57
|
+
(Edit effects/transitions/titles/generators and Fusion macros) — the format,
|
|
58
|
+
control catalog, thumbnail conventions, install paths, and gotchas, plus copyable
|
|
59
|
+
starter templates — see `docs/authoring/setting-files/`.
|
|
57
60
|
|
|
58
61
|
Extension Authoring kernel actions (v2.16.0+) are exposed through
|
|
59
62
|
`script_plugin`:
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# Authoring DaVinci Resolve Custom Effects (`.setting` files)
|
|
2
|
+
|
|
3
|
+
Guide and reference for hand-authoring DaVinci Resolve effects, transitions,
|
|
4
|
+
titles, generators, and Fusion macros as `.setting` files — the serialized
|
|
5
|
+
Fusion-composition format Resolve indexes from its Templates directory. No
|
|
6
|
+
plugin SDK, no compile step. Start from a [template](templates/) and consult the
|
|
7
|
+
[reference docs](#reference-docs) for the format and the hard-won gotchas.
|
|
8
|
+
|
|
9
|
+
Use this when a task touches building a new effect, packaging a Fusion comp as a
|
|
10
|
+
reusable template, making a title or transition preset, editing
|
|
11
|
+
`InstanceInput`/`UserControls`, or the `.setting` file format, thumbnail
|
|
12
|
+
conventions, or the Fusion Templates install directory.
|
|
13
|
+
|
|
14
|
+
## What a `.setting` file actually is
|
|
15
|
+
|
|
16
|
+
A `.setting` file is a **Fusion composition serialized as a Lua table**. It is NOT a custom binary format — it's a readable, hand-editable text file. When Resolve loads it, Fusion instantiates every node described in the file; when the user drops the template onto a clip, Fusion wires the clip into the node graph using the `MainInput*` hooks declared at the top of the file.
|
|
17
|
+
|
|
18
|
+
Everything you need to build a custom Resolve effect lives in that single text file plus a handful of PNG thumbnails that sit next to it. No plugin SDK, no code signing, no compile step.
|
|
19
|
+
|
|
20
|
+
## The Five Categories You Can Ship
|
|
21
|
+
|
|
22
|
+
There are five roles a `.setting` file can play. Each hooks into a different part of the Resolve UI and has different wiring requirements:
|
|
23
|
+
|
|
24
|
+
| Role | Location (user install) | MainInputs | MainOutputs | Typical top-level node |
|
|
25
|
+
|------|-------------------------|-----------|-------------|------------------------|
|
|
26
|
+
| **Edit Effect** (clip filter) | `Templates/Edit/Effects/` | `MainInput1` → source clip | `MainOutput1` → result | GroupOperator |
|
|
27
|
+
| **Edit Transition** | `Templates/Edit/Transitions/` | `MainInput1` (Background) + `MainInput2` (Foreground) | `MainOutput1` | GroupOperator |
|
|
28
|
+
| **Edit Title** | `Templates/Edit/Titles/` | *(none — generates)* | `MainOutput1` | GroupOperator wrapping TextPlus |
|
|
29
|
+
| **Edit Generator** | `Templates/Edit/Generators/` | *(none — generates)* | `MainOutput1` | GroupOperator or raw node |
|
|
30
|
+
| **Fusion Macro** (Tools / Backgrounds / Generators / Particles / Shaders / Styled Text / Motion Graphics / Lens Flares / How To) | `Templates/Fusion/<subfolder>/` | Optional — whatever makes sense for that node type | Optional | GroupOperator OR raw tool(s) |
|
|
31
|
+
|
|
32
|
+
**Fusion/Looks is different — it is NOT a `.setting` file.** Looks are `.alut3` files (plain-text 3D LUTs with an `F5LT3` header). They apply via the Color page, not Fusion. Don't confuse them with the composition-based categories.
|
|
33
|
+
|
|
34
|
+
## Install Paths
|
|
35
|
+
|
|
36
|
+
User-installed templates go here (create any missing subfolders):
|
|
37
|
+
|
|
38
|
+
- **Windows**: `%APPDATA%\Blackmagic Design\DaVinci Resolve\Support\Fusion\Templates\<role>\<category>\`
|
|
39
|
+
- **macOS (user)**: `~/Library/Application Support/Blackmagic Design/DaVinci Resolve/Fusion/Templates/<role>/<category>/`
|
|
40
|
+
- **macOS (system-wide)**: `/Library/Application Support/Blackmagic Design/DaVinci Resolve/Fusion/Templates/<role>/<category>/`
|
|
41
|
+
|
|
42
|
+
`<role>` is literally `Edit` or `Fusion`. `<category>` mirrors the folders you see in the effects library (`Effects`, `Transitions`, `Titles`, `Generators`, `Tools`, `Backgrounds`, etc.). Restart Resolve after dropping new files in; they get indexed at launch.
|
|
43
|
+
|
|
44
|
+
**The `<category>` subfolder is not optional.** A file at `Templates/Edit/MyEffect.setting` (loose in `Edit/`, no category folder) is invisible to the Edit page — it falls through to the Fusion-page library instead, which silently indexes anything under `Templates/`. Always write the full path including the category: `Templates/Edit/Effects/MyEffect.setting`. Same rule applies to Fusion macros (`Fusion/Tools/`, not loose in `Fusion/`). See gotcha 18.
|
|
45
|
+
|
|
46
|
+
## Anatomy of a `.setting` File
|
|
47
|
+
|
|
48
|
+
The outermost structure is always a table containing a `Tools` list and (optionally) an `ActiveTool` pointer:
|
|
49
|
+
|
|
50
|
+
```lua
|
|
51
|
+
{
|
|
52
|
+
Tools = ordered() {
|
|
53
|
+
MyEffect = GroupOperator {
|
|
54
|
+
Inputs = ordered() { ... exposed controls ... },
|
|
55
|
+
Outputs = { MainOutput1 = InstanceOutput { ... } },
|
|
56
|
+
Tools = ordered() { ... the internal node graph ... }
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
ActiveTool = "MyEffect"
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
- `ordered() { ... }` preserves the order of keys (regular `{}` tables do not). Use it anywhere the order matters — the `Inputs` list drives the display order of controls in the inspector.
|
|
64
|
+
- `MyEffect` is the internal tool ID. It must be a valid identifier (letters/digits/underscore) and match `ActiveTool`.
|
|
65
|
+
- The **outer** `Tools` list is the top level of the composition; the **inner** `Tools` list inside the GroupOperator is the macro's internal graph.
|
|
66
|
+
|
|
67
|
+
Inside the GroupOperator you have three sections:
|
|
68
|
+
|
|
69
|
+
1. **`Inputs = ordered() { ... }`** — the controls the user sees in the inspector. Each entry is an `InstanceInput` that re-exposes one parameter of one internal node. `MainInput1` / `MainInput2` are reserved for clip wiring.
|
|
70
|
+
2. **`Outputs = { ... }`** — what the rest of the pipeline sees. `MainOutput1` is the pixel output Resolve reads.
|
|
71
|
+
3. **`Tools = ordered() { ... }`** — the actual internal nodes (Blur, Merge, Background, ofx.*, TextPlus, etc.) with their parameters and connections between each other via `SourceOp` / `Source`.
|
|
72
|
+
|
|
73
|
+
## Wiring Rules That Matter
|
|
74
|
+
|
|
75
|
+
- **`SourceOp = "NodeName"`, `Source = "OutputName"`** is how you connect nodes. The referenced node must exist in the same `Tools` list. Outputs are typed — image tools use `"Output"`, mask tools use `"Mask"`, value nodes use `"Value"`, text outputs `"Result"`.
|
|
76
|
+
- **`MainInput1`'s `Source` must be the node input Resolve should feed the clip into.** On effects, that's typically `"Input"` on the first node. On transitions, `MainInput1` and `MainInput2` both point at a `Merge` or `Dissolve` node's `Background` / `Foreground`.
|
|
77
|
+
- **Transition progress is automatic** — don't try to wire a "progress" parameter. The idiom is: drive your transition with a `Dissolve` node whose `Mix` is sourced from an `AnimCurves = LUTLookup` using `Curve = FuID { "Easing" }`. Fusion evaluates that curve across the clip length and you get a free 0→1 ramp shaped by the easing you chose.
|
|
78
|
+
- **Titles use `KeyStretcher`** to make their internal animation stretch to fit the clip length. Wrap your animated `TextPlus` output with a `KeyStretcher` and output that from `MainOutput1`.
|
|
79
|
+
- **Generators / Backgrounds have no MainInput** — they're pure sources. Just expose the interesting params and point `MainOutput1` at the terminal node.
|
|
80
|
+
|
|
81
|
+
## Exposing Controls
|
|
82
|
+
|
|
83
|
+
Every user-visible control in the inspector is an `InstanceInput` that re-publishes an input of one of your internal nodes. Pattern:
|
|
84
|
+
|
|
85
|
+
```lua
|
|
86
|
+
Intensity = InstanceInput {
|
|
87
|
+
SourceOp = "PrismBlur1", -- the internal node
|
|
88
|
+
Source = "AberrationStrength", -- its parameter
|
|
89
|
+
Name = "Aberration", -- label in the inspector (optional — defaults to Source)
|
|
90
|
+
Default = 0.4, -- initial value
|
|
91
|
+
MinScale = 0, -- soft slider minimum
|
|
92
|
+
MaxScale = 1, -- soft slider maximum
|
|
93
|
+
Page = "Controls", -- which inspector tab this sits on
|
|
94
|
+
ControlGroup = 4, -- group with other inputs sharing this number (colors, etc.)
|
|
95
|
+
Width = 0.5, -- horizontal width fraction (0-1) for side-by-side layouts
|
|
96
|
+
},
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
See `references/controls.md` for the complete control-attribute catalog, how `ControlGroup` collapses R/G/B/A into a single color picker, and how to add **new** controls (buttons, checkboxes, labels) that aren't tied to an existing node input using `UserControls`.
|
|
100
|
+
|
|
101
|
+
## Thumbnails
|
|
102
|
+
|
|
103
|
+
Each `.setting` ships with a bundle of PNG thumbnails named after the `.setting` file. Thumbnail shape depends on the category:
|
|
104
|
+
|
|
105
|
+
| Category | Files you need |
|
|
106
|
+
|----------|---------------|
|
|
107
|
+
| Edit/Effects, Generators, Fusion/Tools, Backgrounds, Generators, Particles, Shaders, Lens Flares, Motion Graphics, How To, Styled Text | `Name.large.png` (128×128), `Name.large@2x.png` (256×256), `Name.small.png` (30×30), `Name.small@2x.png`, plus `.small.active/hover/push` button-state variants |
|
|
108
|
+
| Edit/Transitions | `Name.small.*` suite (30×30) + `Name.wide.png` (52×29) + `@2x` versions |
|
|
109
|
+
| Edit/Titles | `Name.wide.png` (52×29) + `Name.wide@2x.png` (104×58) — no `.large` or `.small` |
|
|
110
|
+
|
|
111
|
+
Resolve will render a missing thumbnail from a generic placeholder (`_default.png` exists as a fallback in some stock folders). You can ship with only `.large.png` + `@2x` for a quick-and-dirty effect; the inspector degrades gracefully. See `references/thumbnails.md` for the exhaustive list.
|
|
112
|
+
|
|
113
|
+
## The Five-Minute Recipe
|
|
114
|
+
|
|
115
|
+
1. **Decide the role.** Effect / Transition / Title / Generator / Fusion macro. This sets your MainInputs, template file, and install path.
|
|
116
|
+
2. **Prototype the node graph in Fusion first.** Open Resolve → Fusion page → build your composition → select your nodes → right-click → **Macro → Create Macro…**. Save it. That gives you a working `.setting` file with the outer structure correct. 99% of real-world authoring starts from a working Fusion comp, not from a blank text editor.
|
|
117
|
+
3. **Open the resulting `.setting` file** in a text editor and rename / reorder / prune the `Inputs` list until the inspector shows only the controls you want, in the order you want.
|
|
118
|
+
4. **Set `Default`, `MinScale`, `MaxScale`, `Name`, `Page`, `ControlGroup`, `Width`** on each `InstanceInput` to tune presentation.
|
|
119
|
+
5. **Drop it into the correct Templates subfolder**, add thumbnails alongside, restart Resolve, and test from the Effects Library.
|
|
120
|
+
|
|
121
|
+
Templates for each category live in `templates/`. Copy one and modify.
|
|
122
|
+
|
|
123
|
+
## When NOT to Use This Skill
|
|
124
|
+
|
|
125
|
+
- **OFX plugins.** Those are compiled C++ shared libraries — completely separate system, not `.setting` files.
|
|
126
|
+
- **Color grade LUTs.** `.cube` / `.3dl` / `.alut3` files go in the LUT directory and apply from the Color page. Don't confuse `Fusion/Looks/*.alut3` with custom effects.
|
|
127
|
+
- **Project-wide scripting.** If you want to *drive* Resolve (build timelines, apply grades, queue renders), use this server's MCP tools (see [docs/SKILL.md](../../SKILL.md)) — not a custom template.
|
|
128
|
+
|
|
129
|
+
## Reference Docs
|
|
130
|
+
|
|
131
|
+
| File | What's in it |
|
|
132
|
+
|------|-------------|
|
|
133
|
+
| `references/format.md` | Full `.setting` Lua-table syntax: `ordered()`, `Input`, `FuID`, `BezierSpline`, `LUTLookup`, `GroupOperator`, `InstanceOutput`, `CustomData`, `UserControls` shape |
|
|
134
|
+
| `references/controls.md` | Every `InstanceInput` attribute + `UserControls` control types (SliderControl, ButtonControl, CheckboxControl, LabelControl, MultiButtonControl) with examples |
|
|
135
|
+
| `references/category-patterns.md` | Side-by-side minimal skeletons for Effect vs Transition vs Title vs Generator vs Fusion macro — shows what's different about each |
|
|
136
|
+
| `references/thumbnails.md` | Exact filename grid, dimensions, which files are required vs optional per category |
|
|
137
|
+
| `references/gotchas.md` | Hard-won rules: transition progress curves, `KeyStretcher` on titles, what breaks when you rename `ActiveTool`, SourceOp name collisions, the difference between `Inputs = {}` (unordered) and `Inputs = ordered() {}` |
|
|
138
|
+
| `templates/MCP Test Blur.setting` | Minimal clip-filter effect — one Blur exposed as "Strength" (Edit / Effects) |
|
|
139
|
+
| `templates/MCP Test Vignette.setting` | Ellipse-mask vignette darkening the edges — exercises mask-feeding + Merge.Blend (Edit / Effects) |
|
|
140
|
+
| `templates/MCP Test Color Tint.setting` | Tint via colored Background → Merge, with `ControlGroup` collapsing R/G/B/A into a single color picker (Edit / Effects) |
|
|
141
|
+
| `templates/MCP Test Wipe.setting` | Gradient-map luma wipe transition with an easing curve (Edit / Transitions) |
|
|
142
|
+
| `templates/MCP Test Iris.setting` | Circular iris transition using an EllipseMask as the Dissolve.Map (Edit / Transitions) |
|
|
143
|
+
| `templates/MCP Test Cross Dissolve.setting` | Dead-simplest transition — `DFTDissolve` with no Map, just a Mix ramp (Edit / Transitions) |
|
|
144
|
+
| `templates/MCP Test Title.setting` | Minimal TextPlus title with Color/Size/Position controls (Edit / Titles) |
|
|
145
|
+
| `templates/MCP Test Lower Third.setting` | TextPlus + RectangleMask-bordered Background composite — exercises multi-node title composition (Edit / Titles) |
|
|
146
|
+
| `templates/MCP Test Fade Title.setting` | TextPlus with animated alpha via a `BezierSpline`, stretched by `KeyStretcher` (Edit / Titles) |
|
|
147
|
+
| `templates/MCP Test Noise.setting` | FastNoise generator with Detail/Contrast/Scale/Speed controls (Edit / Generators) |
|
|
148
|
+
| `templates/MCP Test Solid Color.setting` | Solid-color Background with `ControlGroup` color picker (Edit / Generators) |
|
|
149
|
+
| `templates/MCP Test Gradient.setting` | Linear gradient Background with exposed Start/End points and Gradient colors widget (Edit / Generators) |
|
|
150
|
+
| `templates/MCP Test Glow.setting` | Minimal Fusion-page tool with MainInput + one control (Fusion / Tools) |
|
|
151
|
+
|
|
152
|
+
**Start from a template.** Copying `templates/MCP Test Blur.setting` and renaming it is ~10x faster than writing one from scratch and the result will always be well-formed. The filenames match what shows up in Resolve's Effects Library, so renaming the copy is all you need to do to change the display name.
|