davinci-resolve-mcp 2.57.0 → 2.57.1
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 +17 -0
- package/README.md +4 -1
- package/docs/process/release-process.md +11 -0
- package/docs/reference/api-coverage.md +13 -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/src/utils/api_truth.py +22 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,23 @@
|
|
|
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.57.1
|
|
6
|
+
|
|
7
|
+
Investigation outcome for community feature request #74 — no behavior change.
|
|
8
|
+
|
|
9
|
+
- **Note** (issue #74) the DaVinci Resolve scripting API does not expose the
|
|
10
|
+
Source/Auto Track Selector, so there is no way to choose the destination track
|
|
11
|
+
when inserting Text+/titles/generators. Verified live on Resolve Studio 21.0.0:
|
|
12
|
+
no get/set for the selector exists; the `Insert*IntoTimeline` family takes no
|
|
13
|
+
`trackIndex` and always lands on V1; locking lower tracks makes the insert fail
|
|
14
|
+
rather than redirect; and titles/generators can't be relocated afterward (no
|
|
15
|
+
`MediaPoolItem`). Closed as won't-fix (API limitation).
|
|
16
|
+
- **Documentation** recorded the limitation in the verified `api_truth` ledger
|
|
17
|
+
(query at runtime with `resolve_control api_truth "track"`) and in
|
|
18
|
+
`docs/reference/api-coverage.md`, with the supported alternative for
|
|
19
|
+
media-backed clips (`MediaPool.AppendToTimeline` clipInfo `trackIndex`, exposed
|
|
20
|
+
as `media_pool.append_to_timeline` `clip_infos`). Added a regression test.
|
|
21
|
+
|
|
5
22
|
## What's New in v2.57.0
|
|
6
23
|
|
|
7
24
|
Community feature requests #72 and #73.
|
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)
|
|
@@ -168,3 +168,6 @@ Samuel Gursky (samgursky@gmail.com)
|
|
|
168
168
|
|
|
169
169
|
- [@rgxdev](https://github.com/rgxdev) — configurable Media Pool inventory walk
|
|
170
170
|
(exclude bins + inventory limit), [#69](https://github.com/samuelgursky/davinci-resolve-mcp/pull/69) (v2.53.0)
|
|
171
|
+
- [@swayll](https://github.com/swayll) — Source Track Selector investigation
|
|
172
|
+
([#74](https://github.com/samuelgursky/davinci-resolve-mcp/issues/74)); confirmed
|
|
173
|
+
+ documented API limitation (v2.57.1)
|
|
@@ -86,6 +86,17 @@ env RESOLVE_SCRIPT_API="/Library/Application Support/Blackmagic Design/DaVinci R
|
|
|
86
86
|
venv/bin/python tests/live_v233_validation.py
|
|
87
87
|
```
|
|
88
88
|
|
|
89
|
+
For Fusion comp changes (masks, Text+/title text), run the issue #73 harness,
|
|
90
|
+
which creates a disposable Fusion-title project, exercises `add_fusion_mask` and
|
|
91
|
+
`set_text_plus` / `get_text_plus`, and deletes the project:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
env RESOLVE_SCRIPT_API="/Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting" \
|
|
95
|
+
RESOLVE_SCRIPT_LIB="/Applications/DaVinci Resolve/DaVinci Resolve.app/Contents/Libraries/Fusion/fusionscript.so" \
|
|
96
|
+
PYTHONPATH="/Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting/Modules" \
|
|
97
|
+
venv/bin/python tests/live_fusion_mask_title_validation.py
|
|
98
|
+
```
|
|
99
|
+
|
|
89
100
|
One-off live harnesses are acceptable during review, but reusable coverage
|
|
90
101
|
should live under `tests/`. Do not commit generated media or disposable project
|
|
91
102
|
artifacts.
|
|
@@ -44,6 +44,19 @@ maps `shot_descriptions[shot_index]` onto Media Pool shot markers, and triggers
|
|
|
44
44
|
metadata writeback for that clip. Works with any MCP client whose chat model
|
|
45
45
|
is vision-capable; no `sampling/createMessage` support required.
|
|
46
46
|
|
|
47
|
+
Some Edit-page behavior is simply not reachable through public scripting. The
|
|
48
|
+
**Source/Auto Track Selector** (the patch panel that chooses which video track a
|
|
49
|
+
clip lands on) has no get/set in the API, and the `Insert*IntoTimeline` family
|
|
50
|
+
(titles, generators, OFX, Fusion comps) takes no `trackIndex` — they always drop
|
|
51
|
+
onto the selector's current target (V1 in practice). Locking lower tracks does
|
|
52
|
+
not redirect the insert; it just makes the insert fail. Titles and generators
|
|
53
|
+
can't be relocated afterward either, since they have no `MediaPoolItem` for
|
|
54
|
+
`AppendToTimeline`/`MoveClips` to act on. For media-backed clips you *can* target
|
|
55
|
+
a track via `MediaPool.AppendToTimeline`'s clipInfo `trackIndex` (exposed as
|
|
56
|
+
`media_pool.append_to_timeline` with `clip_infos`). This limitation is recorded
|
|
57
|
+
in the verified `api_truth` ledger (query `resolve_control api_truth "track"`);
|
|
58
|
+
see issue #74.
|
|
59
|
+
|
|
47
60
|
| Class | Methods | Tools | Description |
|
|
48
61
|
|-------|---------|-------|-------------|
|
|
49
62
|
| Resolve | 22 | 22 | App control, pages, layout presets, render/burn-in presets, keyframe mode |
|
package/install.py
CHANGED
|
@@ -35,7 +35,7 @@ from src.utils.update_check import (
|
|
|
35
35
|
|
|
36
36
|
# ─── Version ──────────────────────────────────────────────────────────────────
|
|
37
37
|
|
|
38
|
-
VERSION = "2.57.
|
|
38
|
+
VERSION = "2.57.1"
|
|
39
39
|
# Only hard floor: mcp[cli] requires Python 3.10+. There is no upper bound —
|
|
40
40
|
# Resolve's scripting bridge loads into newer interpreters on recent builds
|
|
41
41
|
# (Python 3.14 verified against Resolve Studio 20.3.2). Older Resolve builds
|
package/package.json
CHANGED
package/src/granular/common.py
CHANGED
|
@@ -80,7 +80,7 @@ if not logging.getLogger().handlers:
|
|
|
80
80
|
handlers=[logging.StreamHandler()],
|
|
81
81
|
)
|
|
82
82
|
|
|
83
|
-
VERSION = "2.57.
|
|
83
|
+
VERSION = "2.57.1"
|
|
84
84
|
logger = logging.getLogger("davinci-resolve-mcp")
|
|
85
85
|
logger.info(f"Starting DaVinci Resolve MCP Server v{VERSION}")
|
|
86
86
|
logger.info(f"Detected platform: {get_platform()}")
|
package/src/server.py
CHANGED
package/src/utils/api_truth.py
CHANGED
|
@@ -158,6 +158,28 @@ API_TRUTH: List[Dict[str, Any]] = [
|
|
|
158
158
|
"need a comp to operate on.",
|
|
159
159
|
"tags": ["fusion", "timeline"],
|
|
160
160
|
},
|
|
161
|
+
{
|
|
162
|
+
"symbol": "Source Track Selector / destination track for Insert*IntoTimeline",
|
|
163
|
+
"object": "Timeline",
|
|
164
|
+
"reality": "There is no API to read or set the Source/Auto Track Selector "
|
|
165
|
+
"(the Edit-page patch panel that picks the destination track). "
|
|
166
|
+
"InsertTitleIntoTimeline, InsertFusionTitleIntoTimeline, "
|
|
167
|
+
"InsertGeneratorIntoTimeline, InsertFusionGeneratorIntoTimeline, "
|
|
168
|
+
"InsertOFXGeneratorIntoTimeline and "
|
|
169
|
+
"InsertFusionCompositionIntoTimeline take no trackIndex and "
|
|
170
|
+
"always drop the clip on the selector's current target (V1 in "
|
|
171
|
+
"practice). Locking lower video tracks does NOT redirect the "
|
|
172
|
+
"insert — verified live on 21.0.0: locking V1 makes the insert "
|
|
173
|
+
"FAIL rather than land on V2. Titles/generators also can't be "
|
|
174
|
+
"moved afterward (no MediaPoolItem, so AppendToTimeline clipInfo "
|
|
175
|
+
"and MoveClips don't apply).",
|
|
176
|
+
"recommended": "Accept the limitation for titles/generators (insert lands "
|
|
177
|
+
"on V1). For clips that DO have a MediaPoolItem, target a "
|
|
178
|
+
"track with MediaPool.AppendToTimeline's clipInfo 'trackIndex' "
|
|
179
|
+
"instead (exposed as media_pool append_to_timeline clip_infos). "
|
|
180
|
+
"See issue #74.",
|
|
181
|
+
"tags": ["missing-method", "timeline", "title", "generator", "track"],
|
|
182
|
+
},
|
|
161
183
|
{
|
|
162
184
|
"symbol": "subprocess inheriting stdin under the MCP stdio server",
|
|
163
185
|
"object": "(server runtime)",
|