premiere-pro-mcp 1.13.0 → 1.14.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 +62 -0
- package/README.md +126 -34
- package/artifacts/MCPBridgeCEP.zxp +0 -0
- package/cep-plugin/CSXS/manifest.xml +3 -3
- package/cep-plugin/index.html +1 -1
- package/cep-plugin/main.js +52 -1
- package/cep-plugin/updater.cjs +1 -1
- package/dist/bridge/file-bridge.d.ts +22 -1
- package/dist/bridge/file-bridge.js +101 -26
- package/dist/bridge/script-builder.js +30 -4
- package/dist/http-server.js +10 -9
- package/dist/index.js +31 -13
- package/dist/platform-capabilities.d.ts +64 -8
- package/dist/platform-capabilities.js +49 -1
- package/dist/resources/live-context-resources.d.ts +22 -0
- package/dist/resources/live-context-resources.js +494 -0
- package/dist/security/capabilities.js +21 -0
- package/dist/server.d.ts +3 -1
- package/dist/server.js +79 -15
- package/dist/telemetry.d.ts +7 -8
- package/dist/telemetry.js +11 -4
- package/dist/tool-capability-report.js +5 -2
- package/dist/tools/advanced.d.ts +28 -3
- package/dist/tools/advanced.js +166 -71
- package/dist/tools/audio.d.ts +218 -0
- package/dist/tools/audio.js +413 -41
- package/dist/tools/clipboard.js +28 -4
- package/dist/tools/competitor-gaps.d.ts +370 -0
- package/dist/tools/competitor-gaps.js +829 -0
- package/dist/tools/discovery.js +3 -3
- package/dist/tools/export.d.ts +167 -0
- package/dist/tools/export.js +360 -22
- package/dist/tools/health.d.ts +64 -7
- package/dist/tools/health.js +21 -10
- package/dist/tools/inspection.d.ts +55 -0
- package/dist/tools/inspection.js +252 -0
- package/dist/tools/interchange-analysis.d.ts +248 -0
- package/dist/tools/interchange-analysis.js +264 -0
- package/dist/tools/media-analysis.d.ts +243 -0
- package/dist/tools/media-analysis.js +216 -0
- package/dist/tools/media.d.ts +5 -0
- package/dist/tools/media.js +16 -3
- package/dist/tools/metadata.d.ts +16 -2
- package/dist/tools/metadata.js +81 -13
- package/dist/tools/playhead.js +17 -9
- package/dist/tools/project.d.ts +16 -1
- package/dist/tools/project.js +169 -33
- package/dist/tools/recovery.d.ts +35 -0
- package/dist/tools/recovery.js +62 -3
- package/dist/tools/sequence.d.ts +16 -0
- package/dist/tools/sequence.js +150 -45
- package/dist/tools/spot-workflows.d.ts +379 -0
- package/dist/tools/spot-workflows.js +519 -0
- package/dist/tools/text.d.ts +5 -0
- package/dist/tools/text.js +21 -4
- package/dist/tools/track-targeting.js +81 -14
- package/dist/tools/utility.d.ts +6 -3
- package/dist/tools/utility.js +153 -44
- package/dist/tools/uxp.d.ts +153 -0
- package/dist/tools/uxp.js +69 -0
- package/dist/workflows/tool-metadata.d.ts +1 -1
- package/dist/workflows/tool-metadata.js +6 -0
- package/dist/workflows/tool-packs.d.ts +36 -0
- package/dist/workflows/tool-packs.js +152 -0
- package/docs/editorial-workflow-host-validation.md +81 -0
- package/docs/licensed-host-report.template.json +20 -0
- package/docs/licensed-host-sweep.matrix.json +35 -0
- package/docs/licensed-host-sweep.md +73 -0
- package/docs/licensed-host-sweep.schema.json +70 -0
- package/docs/licensed-host-sweep.template.json +47 -0
- package/docs/mcp-2026-07-28-capabilities.md +87 -0
- package/docs/quickstart/README.md +16 -0
- package/docs/quickstart/en.md +70 -0
- package/docs/quickstart/es.md +77 -0
- package/docs/quickstart/ja.md +70 -0
- package/docs/quickstart/locales.json +18 -0
- package/docs/supported-actions.md +57 -21
- package/package.json +27 -10
- package/scripts/build-connector-installer.sh +4 -0
- package/scripts/check-quickstart-locales.mjs +34 -0
- package/scripts/create-licensed-host-sweep.mjs +75 -0
- package/scripts/generate-supported-actions.mjs +1 -2
- package/scripts/install-cep.ps1 +35 -1
- package/scripts/uninstall-cep.ps1 +34 -0
- package/scripts/uninstall-cep.sh +64 -0
- package/scripts/validate-licensed-host-report.mjs +94 -6
- package/scripts/validate-mcp-registry-metadata.mjs +34 -0
- package/scripts/validate-project-intake-host-report.mjs +211 -0
- package/scripts/verify-npm-package.mjs +119 -0
- package/scripts/verify-release-tag.mjs +36 -0
- package/uxp-plugin/README.md +2 -1
- package/uxp-plugin/commands.cjs +49 -1
- package/uxp-plugin/index.cjs +3 -1
- package/uxp-plugin/manifest.json +1 -1
- package/uxp-plugin/protocol.cjs +5 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,68 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [1.14.2] - 2026-08-28
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- Added dual-era MCP serving with the stable TypeScript SDK v2: modern
|
|
14
|
+
`2026-07-28` discovery and stateless request handling over HTTP and stdio,
|
|
15
|
+
with legacy protocol compatibility through `2025-11-25`.
|
|
16
|
+
- Added validated modern routing headers, cache hints, subscription-listen
|
|
17
|
+
support, a formal Premiere extension capability, and a machine-readable MCP
|
|
18
|
+
protocol report in `get_capabilities`.
|
|
19
|
+
- Added an evidence-backed capability matrix covering implemented, SDK-ready,
|
|
20
|
+
external-boundary, deprecated, and intentionally unsupported MCP surfaces.
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- Migrated tool, resource, prompt, client, stdio, and Node HTTP integrations
|
|
25
|
+
from `@modelcontextprotocol/sdk` v1 to the split v2 packages and Standard
|
|
26
|
+
Schema registration APIs.
|
|
27
|
+
|
|
28
|
+
### Fixed
|
|
29
|
+
|
|
30
|
+
- Restored strict JSON Schema 2020-12 tool compatibility and corrected legacy
|
|
31
|
+
CEP argument contracts, Premiere Time units, Adobe Media Encoder output
|
|
32
|
+
paths, active-sequence verification, metadata readback, XMP patch merging,
|
|
33
|
+
and single-extension UXP frame exports.
|
|
34
|
+
- Replaced false-success responses for structural edits, duplicate
|
|
35
|
+
consolidation, effect copying, nesting, deletion, and other host mutations
|
|
36
|
+
with verified outcomes or explicit fail-closed errors.
|
|
37
|
+
- Added bounded UXP selection lift and native transition adapters while keeping
|
|
38
|
+
unavailable track-management and global-redo capabilities explicit.
|
|
39
|
+
|
|
40
|
+
### Safety
|
|
41
|
+
|
|
42
|
+
- Live Premiere resources remain private and uncached, and tool discovery is
|
|
43
|
+
private-cache scoped. The tasks extension and OAuth discovery are not
|
|
44
|
+
advertised without the durable storage and authorization infrastructure they
|
|
45
|
+
require.
|
|
46
|
+
|
|
47
|
+
## [1.14.1] - 2026-08-27
|
|
48
|
+
|
|
49
|
+
### Fixed
|
|
50
|
+
|
|
51
|
+
- Made npm package verification isolate its temporary tarball and select the
|
|
52
|
+
package matching `package.json`, avoiding a current npm CLI packaging
|
|
53
|
+
regression before publication.
|
|
54
|
+
|
|
55
|
+
## [1.14.0] - 2026-08-27
|
|
56
|
+
|
|
57
|
+
### Added
|
|
58
|
+
|
|
59
|
+
- Added focused `essential`, `inspection`, `delivery`, and `captions` tool packs
|
|
60
|
+
so compatible MCP clients can begin with a smaller task-specific catalog.
|
|
61
|
+
- Added `inspect_sequence_review_report`, a read-only, handoff-oriented sequence
|
|
62
|
+
report, and explicit MCP output schemas for every registered tool.
|
|
63
|
+
|
|
64
|
+
### Safety
|
|
65
|
+
|
|
66
|
+
- Tool packs change discoverability, not authority. Review reports redact media
|
|
67
|
+
paths by default and include marker comments only with explicit opt-in.
|
|
68
|
+
- Package and response-contract checks remain distinct from licensed Premiere
|
|
69
|
+
host verification.
|
|
70
|
+
|
|
9
71
|
## [1.13.0] - 2026-08-22
|
|
10
72
|
|
|
11
73
|
### Added
|
package/README.md
CHANGED
|
@@ -2,15 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
# MCP for Adobe Premiere Pro
|
|
4
4
|
|
|
5
|
+
<!-- mcp-name: io.github.leancoderkavy/premiere-pro -->
|
|
6
|
+
|
|
5
7
|
[](https://mcptoplist.com/server/glama%2Fleancoderkavy%2Fpremiere-pro-mcp)
|
|
6
8
|
|
|
7
9
|
**Give compatible AI assistants structured control over supported Adobe Premiere Pro workflows.**
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
320 core tools across 37 modules, 14 resources, and 11 guided workflows. A connected UXP host adds 54 capability-gated tools.
|
|
10
12
|
|
|
11
13
|
[](LICENSE)
|
|
12
14
|
[](https://nodejs.org)
|
|
13
|
-
[](https://modelcontextprotocol.io/specification/2026-07-28)
|
|
14
16
|
[](https://www.npmjs.com/package/premiere-pro-mcp)
|
|
15
17
|
[](https://premiere-pro-mcp.fly.dev)
|
|
16
18
|
[](https://www.adobe.com/products/premiere.html)
|
|
@@ -29,21 +31,33 @@ An [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that l
|
|
|
29
31
|
"Add the B-roll clips to V2, apply a cross dissolve between each, color correct them to match the A-roll, and export a 1080p ProRes."
|
|
30
32
|
```
|
|
31
33
|
|
|
32
|
-
The AI handles the entire workflow through
|
|
34
|
+
The AI handles the entire workflow through 320 core tools spanning the supported ExtendScript, QE DOM, local media and interchange analysis, revisioned project-context retrieval, safe edit-planning, project-intake preview, review handoff, and connection-verification surfaces. A compatible, authenticated UXP panel adds 54 documented, capability-gated tools without replacing the production CEP bridge.
|
|
33
35
|
|
|
34
|
-
### Latest release: 1.
|
|
36
|
+
### Latest release: 1.14.2
|
|
35
37
|
|
|
36
|
-
- **
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
- **
|
|
42
|
-
|
|
38
|
+
- **Focused discovery:** compatible MCP clients can select essential,
|
|
39
|
+
inspection, delivery, or captions tool packs instead of beginning with the
|
|
40
|
+
full catalog.
|
|
41
|
+
- **Review handoff:** `inspect_sequence_review_report` returns a read-only,
|
|
42
|
+
path-redacted sequence report, with marker comments only when requested.
|
|
43
|
+
- **Interoperability:** all registered MCP tools now declare explicit output
|
|
44
|
+
schemas; this release does not substitute automated checks for licensed-host
|
|
45
|
+
verification.
|
|
46
|
+
- **Reliable packaging:** npm package verification now isolates its temporary
|
|
47
|
+
tarball, keeping the validated distribution path compatible with the current
|
|
48
|
+
npm CLI.
|
|
43
49
|
|
|
44
|
-
See the [v1.
|
|
50
|
+
See the [v1.14.2 release notes](https://github.com/leancoderkavy/premiere-pro-mcp/releases/tag/v1.14.2)
|
|
45
51
|
for complete details. Live installation in Premiere Pro still requires host verification.
|
|
46
52
|
|
|
53
|
+
### Current MCP protocol support
|
|
54
|
+
|
|
55
|
+
The server uses the stable TypeScript SDK v2 and serves the `2026-07-28`
|
|
56
|
+
stateless protocol over HTTP and stdio, while retaining legacy MCP compatibility
|
|
57
|
+
through `2025-11-25`. Modern clients receive discovery, validated routing headers,
|
|
58
|
+
cache hints, subscription-stream support, and the formal Premiere extension
|
|
59
|
+
capability. See the [complete MCP capability and boundary report](docs/mcp-2026-07-28-capabilities.md).
|
|
60
|
+
|
|
47
61
|
---
|
|
48
62
|
|
|
49
63
|
## For editors evaluating an AI workflow
|
|
@@ -58,20 +72,44 @@ or small test sequence.
|
|
|
58
72
|
For product context, see the [Adobe Premiere AI Assistant and MCP comparison](https://premiere-pro-mcp.com/blog/adobe-premiere-ai-assistant-vs-mcp/)
|
|
59
73
|
and the [Claude Desktop setup guide](https://premiere-pro-mcp.com/blog/claude-desktop-premiere-pro-mcp-setup/).
|
|
60
74
|
|
|
75
|
+
If you are deciding between a single local project, an Adobe Production on shared
|
|
76
|
+
storage, or a remote Team Project, use the [Premiere Pro collaboration workflow
|
|
77
|
+
guide](https://premiere-pro-mcp.com/premiere-pro-collaboration-workflow/) before
|
|
78
|
+
you evaluate an MCP path. It links the relevant Adobe guidance, makes no project
|
|
79
|
+
inspection request, and ends with the same read-only connection check.
|
|
80
|
+
|
|
81
|
+
For a concrete first Project Intake preview, choose one of the three
|
|
82
|
+
[schema-checked, no-sensitive-data starter templates](https://premiere-pro-mcp.com/project-intake/#starter-template).
|
|
83
|
+
They are evaluation samples only: a human policy owner must review and replace
|
|
84
|
+
their bins, media rules, and organization rules before a facility uses one.
|
|
85
|
+
|
|
61
86
|
---
|
|
62
87
|
|
|
63
88
|
## Quick Start
|
|
64
89
|
|
|
65
90
|
### Easiest supported path: Claude Desktop
|
|
66
91
|
|
|
67
|
-
1. Download the current [Claude Desktop bundle (`.mcpb`)](https://github.com/leancoderkavy/premiere-pro-mcp/releases/download/v1.
|
|
92
|
+
1. Download the current [Claude Desktop bundle (`.mcpb`)](https://github.com/leancoderkavy/premiere-pro-mcp/releases/download/v1.14.2/premiere-pro-mcp-1.14.2.mcpb).
|
|
68
93
|
2. In Claude Desktop, open **Settings > Extensions > Advanced settings > Install Extension**, select the downloaded bundle, and restart Claude Desktop.
|
|
69
|
-
3. Download the separate [signed Premiere connector (`.zxp`)](https://github.com/leancoderkavy/premiere-pro-mcp/releases/download/v1.
|
|
94
|
+
3. Download the separate [signed Premiere connector (`.zxp`)](https://github.com/leancoderkavy/premiere-pro-mcp/releases/download/v1.14.2/MCPBridgeCEP.zxp). Open it with your trusted ZXP installer. If your computer has no ZXP installer, use the npm connector installer in **Advanced setup** below.
|
|
70
95
|
4. Restart Premiere, open a project, then open **Window > Extensions > MCP for Adobe Premiere Pro**.
|
|
71
96
|
5. In Claude, enter: `Safely check my Premiere connection with verify_premiere_connection. Make no changes.`
|
|
72
97
|
|
|
73
98
|
The Claude bundle contains the local MCP server, so this route does not require Node.js. The Premiere connector is a separate required install. The first prompt is read-only and reports whether the server is installed, configured, connected, and live-verified.
|
|
74
99
|
|
|
100
|
+
### First proof, before the first edit
|
|
101
|
+
|
|
102
|
+

|
|
103
|
+
|
|
104
|
+
*This is an illustrated workflow, not a Premiere panel screenshot or licensed-host proof.*
|
|
105
|
+
|
|
106
|
+
1. Open a copied test project and an active sequence in Premiere.
|
|
107
|
+
2. Open **Window > Extensions > MCP for Adobe Premiere Pro**. “Running” means the local panel bridge is available; it does not show that an edit completed.
|
|
108
|
+
3. Run `premiere-pro-mcp --doctor` to check only local package/configuration readiness.
|
|
109
|
+
4. Ask the AI client: `Run verify_premiere_connection. Make no changes.` The returned check is read-only and avoids project names, paths, and media details.
|
|
110
|
+
|
|
111
|
+
If a bridge, project, or active sequence is missing, fix that setup state before allowing a mutation. For a concise, translatable version of this path, see [quick starts in English, Spanish, and Japanese](docs/quickstart/README.md). The translations are machine-assisted drafts and retain command names in English.
|
|
112
|
+
|
|
75
113
|
### Other AI assistants
|
|
76
114
|
|
|
77
115
|
Cursor, VS Code/Copilot, Windsurf, and other MCP clients do not currently have a project-provided one-click installer. Use their MCP settings with the advanced npm route below. Keep the assistant, server, connector, and Premiere on the same computer.
|
|
@@ -128,6 +166,16 @@ premiere-pro-mcp --doctor
|
|
|
128
166
|
|
|
129
167
|
Then ask your MCP client to run `verify_premiere_connection`. The check is read-only.
|
|
130
168
|
|
|
169
|
+
#### Remove the CEP connector
|
|
170
|
+
|
|
171
|
+
Fully quit Premiere, then remove only this connector:
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
premiere-pro-mcp --uninstall-cep
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
The uninstaller intentionally leaves Adobe's shared `PlayerDebugMode` setting in place so it does not disrupt other CEP extensions. Remove the MCP server from your AI client's configuration and uninstall the npm package separately if you no longer use it. On macOS, `--uninstall-cep` removes the per-user npm/source install; the signed system-wide `.pkg` route has a separate privileged removal command in [distribution readiness](docs/distribution-readiness.md#connector-removal).
|
|
178
|
+
|
|
131
179
|
</details>
|
|
132
180
|
|
|
133
181
|
---
|
|
@@ -290,11 +338,11 @@ From a clone of this repository:
|
|
|
290
338
|
```bash
|
|
291
339
|
codex plugin marketplace add .
|
|
292
340
|
codex plugin add premiere-pro@premiere-pro-mcp
|
|
293
|
-
npx -y premiere-pro-mcp@1.
|
|
341
|
+
npx -y premiere-pro-mcp@1.14.2 --install-cep
|
|
294
342
|
```
|
|
295
343
|
|
|
296
344
|
Restart Premiere Pro and start a new Codex session after installation. The plugin
|
|
297
|
-
launches `premiere-pro-mcp@1.
|
|
345
|
+
launches `premiere-pro-mcp@1.14.2` through `npx`; the separate CEP installation is
|
|
298
346
|
required because the MCP server communicates with the running Premiere host through
|
|
299
347
|
the local bridge.
|
|
300
348
|
|
|
@@ -314,7 +362,7 @@ For Claude Code, add this repository as a marketplace and install the plugin:
|
|
|
314
362
|
Then install the Premiere bridge and start a new Claude Code session:
|
|
315
363
|
|
|
316
364
|
```bash
|
|
317
|
-
npx -y premiere-pro-mcp@1.
|
|
365
|
+
npx -y premiere-pro-mcp@1.14.2 --install-cep
|
|
318
366
|
```
|
|
319
367
|
|
|
320
368
|
The Claude Code package lives in
|
|
@@ -353,13 +401,36 @@ installed separately.
|
|
|
353
401
|
QE-backed tools are reported as `experimental` because QE is undocumented and can vary between Premiere builds. Authority availability is reported separately from implementation support, so disabling `edit`, for example, does not incorrectly label editing tools as unsupported. Static metadata never claims that a Premiere operation succeeded; use `ping` and inspect each tool result for runtime evidence.
|
|
354
402
|
|
|
355
403
|
MCP `tools/list` is filtered to the active authority profile. The default
|
|
356
|
-
`inspect,edit,export,filesystem` profile advertises
|
|
404
|
+
`inspect,edit,export,filesystem` profile advertises 318 of the 320 registered
|
|
357
405
|
tools and omits `execute_extendscript` and `evaluate_expression`, which require
|
|
358
406
|
explicit `unsafe-script` authority. `ping` and `get_capabilities` remain visible
|
|
359
407
|
under every profile so a restricted or misconfigured server can still explain
|
|
360
408
|
its state. The call-time capability guard remains authoritative even if listing
|
|
361
409
|
metadata is wrong.
|
|
362
410
|
|
|
411
|
+
### Workflow-scoped discovery packs and structured outputs
|
|
412
|
+
|
|
413
|
+
By default, the full permitted catalog remains available. Set
|
|
414
|
+
`PREMIERE_MCP_TOOL_PACKS` to `essential`, `inspection`, `delivery`, `captions`,
|
|
415
|
+
or a comma-separated combination such as `inspection,captions` to reduce the
|
|
416
|
+
tool discovery and registered session surface for a focused client. `full` is the explicit
|
|
417
|
+
full-catalog mode and cannot be combined with another pack. `ping` and
|
|
418
|
+
`get_capabilities` remain listed for diagnosis, and every registered call still
|
|
419
|
+
passes through the same capability guard; a pack never grants authority.
|
|
420
|
+
|
|
421
|
+
Every listed tool now declares the same machine-readable result envelope through
|
|
422
|
+
MCP `outputSchema`: `ok`, `tool`, plus `data` on success or `error` on failure.
|
|
423
|
+
The tool-specific `data` shape remains versioned by the individual tool result,
|
|
424
|
+
so clients can reliably distinguish transport success from a Premiere or local
|
|
425
|
+
operation failure without parsing the text block.
|
|
426
|
+
|
|
427
|
+
`inspect_sequence_review_report` creates one read-only handoff report from
|
|
428
|
+
Premiere timeline readback: sequence structure, primary-track gaps, disabled
|
|
429
|
+
clips, muted tracks, marker timing, and offline-source evidence. It never
|
|
430
|
+
returns media paths; marker comments are omitted unless explicitly requested.
|
|
431
|
+
The report is not proof of rendered pixels, audio quality, caption accuracy,
|
|
432
|
+
rights, or editorial approval.
|
|
433
|
+
|
|
363
434
|
The MCP handshake reads `serverInfo.version` from the installed `package.json`,
|
|
364
435
|
so clients receive the package version that is actually running rather than a
|
|
365
436
|
separately maintained literal.
|
|
@@ -433,7 +504,7 @@ PREMIERE_UXP_TOKEN="replace-with-a-long-random-secret" premiere-pro-mcp
|
|
|
433
504
|
|
|
434
505
|
Enter the same token in the UXP panel. The listener binds only to `127.0.0.1:7777`, authenticates the WebSocket upgrade, requires a versioned capability handshake, correlates concurrent requests, and fails pending work on timeout or disconnect. Set `PREMIERE_UXP_PORT` to use another loopback port.
|
|
435
506
|
|
|
436
|
-
When enabled, MCP discovery includes
|
|
507
|
+
When enabled, MCP discovery includes 54 capability-gated UXP additions. The first expansion covers effects, deterministic timeline selection, selection batches, scene detection, proxy/ingest, relink, metadata, color conformance, Source Monitor audition, storage, and least-privilege workspace access. The second adds Project-panel selection, marker CRUD, bin organization, sequence settings, imports, typed effect parameters/keyframes, track-item transforms, SequenceEditor timeline edits, sequence lifecycle, and AME encoding. The third wave begins with a redacted event journal, conservative AME terminal receipts, explicit host-readiness gates, safe multi-project sessions, lease-based growing-media control, namespaced workflow checkpoints, bounded media-health maintenance, caption-aware track mute state, and transactional source trim/framing documented in [the third-wave workflow matrix](docs/third-wave-uxp-workflows.md). The bounded migration surface also includes a non-ripple selected-item lift plus native video-transition listing and transactions; it does not claim direct empty-track create/delete or global redo support. A separate [hybrid benchmark gate](docs/uxp-hybrid-benchmark.md) keeps native acceleration disabled until reproducible cross-platform evidence exists. See also [the first stable workflow matrix](docs/uxp-stable-workflows.md) and [the next-ten workflow matrix](docs/uxp-next-ten-workflows.md). Commands are advertised only while the authenticated local UXP bridge is connected; the host capability handshake remains the authority for support in the running Premiere build. A failed UXP command is never silently retried through CEP because the first operation may have partially succeeded.
|
|
437
508
|
|
|
438
509
|
The panel now requests access to one operator-selected workspace instead of declaring full filesystem access. Choose the folder in the panel before invoking a path-based UXP workflow. Media, relink, preset, export, and Source Monitor file paths must remain inside it; the persistent capability token and native root path are never returned over MCP. Lexical containment alone cannot exclude symlink, junction, or reparse-point escapes, and Adobe's request-scoped UXP filesystem API does not document canonical-path resolution. Builds without a host-supplied canonical resolver therefore advertise path-based UXP commands as unsupported and fail closed at invocation; use the existing CEP fallback for those operations.
|
|
439
510
|
|
|
@@ -508,11 +579,11 @@ The file-based IPC bridge is simple, reliable, and works across macOS and Window
|
|
|
508
579
|
|
|
509
580
|
---
|
|
510
581
|
|
|
511
|
-
## Tools (
|
|
582
|
+
## Tools (320 core total; 318 under the default profile; 372 with a connected UXP bridge)
|
|
512
583
|
|
|
513
584
|
The [complete supported-actions catalog](docs/supported-actions.md) lists every
|
|
514
585
|
registered core tool, the two tools restricted behind explicit `unsafe-script`
|
|
515
|
-
authority, and all
|
|
586
|
+
authority, and all 54 authenticated UXP additions with their current action or mode
|
|
516
587
|
values. It is generated from the same MCP registration surface returned to clients;
|
|
517
588
|
the tables below are a shorter workflow-oriented overview.
|
|
518
589
|
|
|
@@ -556,8 +627,7 @@ the tables below are a shorter workflow-oriented overview.
|
|
|
556
627
|
| `ripple_delete` | Remove clip and close gap (QE) |
|
|
557
628
|
| `roll_edit` / `slide_edit` / `slip_edit` | Professional trim modes (QE) |
|
|
558
629
|
| `move_clip_to_track` | Move between tracks (QE) |
|
|
559
|
-
| `reverse_clip` |
|
|
560
|
-
| `speed_change` / `set_clip_speed_qe` | Unavailable: Premiere has no supported scripting API for changing clip speed |
|
|
630
|
+
| `reverse_clip` / `speed_change` / `set_clip_speed_qe` | Unavailable: Premiere has no supported scripting API for changing a timeline clip's speed or direction |
|
|
561
631
|
| `split_clip` / `trim_clip` / `move_clip` | Basic edits; trim verifies source points and visible timeline edges |
|
|
562
632
|
| `set_clip_properties` | Opacity, scale, rotation, position (speed requests fail before mutation) |
|
|
563
633
|
| `link_selection` / `unlink_selection` | Link/unlink A/V |
|
|
@@ -571,8 +641,8 @@ the tables below are a shorter workflow-oriented overview.
|
|
|
571
641
|
> to blend adjacent source frames. See [issue #21](https://github.com/leancoderkavy/premiere-pro-mcp/issues/21).
|
|
572
642
|
|
|
573
643
|
> **Speed, caption, and visual-keyframe boundaries:** Premiere Pro 26.3 exposes no supported
|
|
574
|
-
> scripting setter or Time Remapping component for timeline-clip speed. `
|
|
575
|
-
> `set_clip_speed_qe`, and `set_clip_properties` with `speed` now stop before host mutation;
|
|
644
|
+
> scripting setter or Time Remapping component for timeline-clip speed or direction. `reverse_clip`,
|
|
645
|
+
> `speed_change`, `set_clip_speed_qe`, and `set_clip_properties` with `speed` now stop before host mutation;
|
|
576
646
|
> use the Speed/Duration UI or pre-render retimed media. `add_text_overlay` likewise stops
|
|
577
647
|
> before mutation because a raw-text-to-caption API is not exposed; import an `.srt`/`.vtt`
|
|
578
648
|
> and use `create_caption_track`, or use a MOGRT/PNG overlay. Keyframe and caption-track
|
|
@@ -673,7 +743,7 @@ than presenting UI-only operations as available tools.
|
|
|
673
743
|
| `set_offline` / `has_proxy` / `detach_proxy` | Offline/proxy management |
|
|
674
744
|
| `set_override_frame_rate` | Override FPS |
|
|
675
745
|
| `set_scale_to_frame_size` | Auto-scale to sequence frame |
|
|
676
|
-
| `get_xmp_metadata` / `set_xmp_metadata` | Raw XMP access |
|
|
746
|
+
| `get_xmp_metadata` / `set_xmp_metadata` | Raw XMP access; writes merge a well-formed patch without removing unrelated fields |
|
|
677
747
|
| `get_color_space` | Color space info |
|
|
678
748
|
|
|
679
749
|
### Sequence Management (11)
|
|
@@ -708,15 +778,29 @@ Track targeting, batch operations, markers, audio levels, motion/transform, meta
|
|
|
708
778
|
|
|
709
779
|
## MCP Resources
|
|
710
780
|
|
|
711
|
-
The server exposes
|
|
781
|
+
The server exposes fourteen LLM context resources and eleven workflow prompts:
|
|
712
782
|
|
|
713
783
|
| Resource URI | Description |
|
|
714
784
|
| :----------- | :---------- |
|
|
715
785
|
| `config://premiere-instructions` | Best practices: workflow order, timeline rules, effect tips, error handling |
|
|
716
786
|
| `config://extendscript-reference` | Complete ExtendScript API reference for writing custom scripts |
|
|
717
787
|
| `config://premiere-workflows` | Machine-readable catalog for rough cuts, dialogue cleanup, captions, and delivery |
|
|
718
|
-
|
|
719
|
-
|
|
788
|
+
| `config://premiere-project-context` | Revisioned local project-context indexing and retrieval workflow |
|
|
789
|
+
| `premiere://project/info` | Fresh, path-redacted current-project and active-sequence summary |
|
|
790
|
+
| `premiere://project/sequences` | Bounded sequence inventory with stable Premiere IDs |
|
|
791
|
+
| `premiere://project/media` | Bounded, path-redacted project-media inventory |
|
|
792
|
+
| `premiere://project/bins` | Bounded, path-redacted project-bin inventory |
|
|
793
|
+
| `premiere://timeline/active` | Bounded active-timeline tracks, clips, and markers snapshot |
|
|
794
|
+
| `premiere://effects/available` | Bounded video/audio effect catalog for planning |
|
|
795
|
+
| `premiere://effects/applied` | Bounded active-timeline component inventory |
|
|
796
|
+
| `premiere://transitions/available` | Bounded video/audio transition catalog for planning |
|
|
797
|
+
| `premiere://export/presets` | Bounded export-preset names and formats, without native paths |
|
|
798
|
+
| `premiere://project/metadata` | Read-only project and active-timeline summary, without paths or timestamps |
|
|
799
|
+
|
|
800
|
+
The ten `premiere://` snapshots are read-only CEP bridge requests. They include a
|
|
801
|
+
revision token for stale-state detection and omit native media, project-tree, preset,
|
|
802
|
+
and output paths. A successful snapshot proves bridge readback only—not licensed-host
|
|
803
|
+
feature coverage, playback, rendering, or editorial correctness.
|
|
720
804
|
|
|
721
805
|
---
|
|
722
806
|
|
|
@@ -801,10 +885,18 @@ Then connect with:
|
|
|
801
885
|
| `POSTHOG_DISTINCT_ID` | Optional stable anonymous server identifier | Fly machine ID or random boot ID |
|
|
802
886
|
|
|
803
887
|
When PostHog is enabled, the server records `mcp_connection_attempt`,
|
|
804
|
-
`mcp_request`, `mcp_request_rejected`, and `mcp_tool_call`.
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
888
|
+
`mcp_request`, `mcp_request_rejected`, and `mcp_tool_call`. It also records
|
|
889
|
+
`premiere_mcp_activation_completed` only after the read-only
|
|
890
|
+
`verify_premiere_connection` check confirms the selected bridge, an open
|
|
891
|
+
project, and an active sequence. Events contain bounded operational fields such
|
|
892
|
+
as method, tool name, outcome, status code, duration, and selected bridge.
|
|
893
|
+
Authentication tokens, IP addresses, MCP arguments, project paths, media names,
|
|
894
|
+
and tool results are never sent. Person profiles are disabled for these events.
|
|
895
|
+
|
|
896
|
+
This signal is an aggregate emission, not proof that an analytics provider
|
|
897
|
+
received it, a count of unique people or editors, or evidence that an editing
|
|
898
|
+
workflow succeeded. It does not carry a person or editor identifier, so it
|
|
899
|
+
cannot safely infer "first value."
|
|
808
900
|
|
|
809
901
|
---
|
|
810
902
|
|
|
@@ -815,7 +907,7 @@ premiere-pro-mcp/
|
|
|
815
907
|
├── src/
|
|
816
908
|
│ ├── index.ts # Entry point — stdio transport setup
|
|
817
909
|
│ ├── http-server.ts # Entry point — HTTP/SSE transport (Fly.io / remote)
|
|
818
|
-
│ ├── server.ts # MCP server — registers
|
|
910
|
+
│ ├── server.ts # MCP server — registers 320 tools, filtered by authority profile
|
|
819
911
|
│ ├── bridge/
|
|
820
912
|
│ │ ├── file-bridge.ts # File-based IPC (write .jsx, poll .json)
|
|
821
913
|
│ │ └── script-builder.ts # ExtendScript generator with ES3 helpers
|
|
Binary file
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<ExtensionManifest Version="7.0" ExtensionBundleId="com.mcp.premiere.bridge" ExtensionBundleVersion="1.
|
|
2
|
+
<ExtensionManifest Version="7.0" ExtensionBundleId="com.mcp.premiere.bridge" ExtensionBundleVersion="1.14.2" ExtensionBundleName="MCP for Adobe Premiere Pro">
|
|
3
3
|
<ExtensionList>
|
|
4
|
-
<Extension Id="com.mcp.premiere.bridge.panel" Version="1.
|
|
5
|
-
<Extension Id="com.mcp.premiere.bridge.headless" Version="1.
|
|
4
|
+
<Extension Id="com.mcp.premiere.bridge.panel" Version="1.14.2"/>
|
|
5
|
+
<Extension Id="com.mcp.premiere.bridge.headless" Version="1.14.2"/>
|
|
6
6
|
</ExtensionList>
|
|
7
7
|
<ExecutionEnvironment>
|
|
8
8
|
<HostList>
|
package/cep-plugin/index.html
CHANGED
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
<section class="update-section" aria-live="polite">
|
|
82
82
|
<div class="update-copy">
|
|
83
83
|
<span class="section-label">Connector updates</span>
|
|
84
|
-
<strong id="updateTitle">Version 1.
|
|
84
|
+
<strong id="updateTitle">Version 1.14.2</strong>
|
|
85
85
|
<span id="updateDetail">Checking for updates…</span>
|
|
86
86
|
</div>
|
|
87
87
|
<button id="btnUpdate" class="button button-update" onclick="handleUpdateClick()" type="button" disabled>
|
package/cep-plugin/main.js
CHANGED
|
@@ -8,6 +8,8 @@ var pollInterval = null;
|
|
|
8
8
|
var commandCount = 0;
|
|
9
9
|
var tempDir = "";
|
|
10
10
|
var POLL_MS = 200;
|
|
11
|
+
var HEARTBEAT_MS = 1000;
|
|
12
|
+
var heartbeatInterval = null;
|
|
11
13
|
|
|
12
14
|
// ---- Logging ----
|
|
13
15
|
function log(msg, cls) {
|
|
@@ -136,12 +138,57 @@ function writeFile(filePath, content) {
|
|
|
136
138
|
}
|
|
137
139
|
}
|
|
138
140
|
|
|
141
|
+
// Publish responses atomically so the MCP process never sees a partially-written
|
|
142
|
+
// JSON file. The staging suffix is not a response filename the server will read.
|
|
143
|
+
function writeResponseFile(filePath, content) {
|
|
144
|
+
var stagedPath = filePath + ".staged";
|
|
145
|
+
try {
|
|
146
|
+
fs.writeFileSync(stagedPath, content, "utf-8");
|
|
147
|
+
fs.renameSync(stagedPath, filePath);
|
|
148
|
+
return true;
|
|
149
|
+
} catch (e) {
|
|
150
|
+
deleteFile(stagedPath);
|
|
151
|
+
log("Error publishing " + filePath + ": " + e.message, "err");
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
139
156
|
function deleteFile(filePath) {
|
|
140
157
|
try {
|
|
141
158
|
if (fs.existsSync(filePath)) fs.unlinkSync(filePath);
|
|
142
159
|
} catch (e) {}
|
|
143
160
|
}
|
|
144
161
|
|
|
162
|
+
// The heartbeat carries only protocol state. It is published by rename so a
|
|
163
|
+
// server never observes partial JSON, and an older server can ignore it.
|
|
164
|
+
function writeBridgeHeartbeat() {
|
|
165
|
+
if (!tempDir) return;
|
|
166
|
+
var heartbeatPath = path.join(tempDir, "bridge-heartbeat.json");
|
|
167
|
+
var stagedPath = heartbeatPath + "." + ENGINE_ID + ".staged";
|
|
168
|
+
try {
|
|
169
|
+
fs.writeFileSync(stagedPath, JSON.stringify({
|
|
170
|
+
protocolVersion: 1,
|
|
171
|
+
state: bridgeRunning ? "running" : "waiting"
|
|
172
|
+
}), "utf-8");
|
|
173
|
+
fs.renameSync(stagedPath, heartbeatPath);
|
|
174
|
+
} catch (e) {
|
|
175
|
+
deleteFile(stagedPath);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
function startBridgeHeartbeat() {
|
|
180
|
+
if (heartbeatInterval) clearInterval(heartbeatInterval);
|
|
181
|
+
writeBridgeHeartbeat();
|
|
182
|
+
heartbeatInterval = setInterval(writeBridgeHeartbeat, HEARTBEAT_MS);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
function stopBridgeHeartbeat() {
|
|
186
|
+
if (heartbeatInterval) clearInterval(heartbeatInterval);
|
|
187
|
+
heartbeatInterval = null;
|
|
188
|
+
// Keep the last heartbeat in place. Its age lets newer servers diagnose a
|
|
189
|
+
// stopped connector, while concurrent visible/headless panels stay isolated.
|
|
190
|
+
}
|
|
191
|
+
|
|
145
192
|
// ---- Script Execution ----
|
|
146
193
|
function executeScript(script, callback) {
|
|
147
194
|
// Script is already wrapped in an IIFE by the MCP server's buildScript(),
|
|
@@ -234,7 +281,7 @@ function processOneCommand(cmdFileName) {
|
|
|
234
281
|
}
|
|
235
282
|
}
|
|
236
283
|
|
|
237
|
-
|
|
284
|
+
writeResponseFile(resFilePath, response);
|
|
238
285
|
});
|
|
239
286
|
}
|
|
240
287
|
|
|
@@ -249,6 +296,7 @@ function startBridge() {
|
|
|
249
296
|
|
|
250
297
|
ensureDir(tempDir);
|
|
251
298
|
bridgeRunning = true;
|
|
299
|
+
startBridgeHeartbeat();
|
|
252
300
|
setStatus("waiting", "Connector running");
|
|
253
301
|
log("Connector started and ready for safe checks.", "ok");
|
|
254
302
|
|
|
@@ -264,6 +312,8 @@ function startBridge() {
|
|
|
264
312
|
|
|
265
313
|
function stopBridge() {
|
|
266
314
|
bridgeRunning = false;
|
|
315
|
+
writeBridgeHeartbeat();
|
|
316
|
+
stopBridgeHeartbeat();
|
|
267
317
|
if (pollInterval) clearInterval(pollInterval);
|
|
268
318
|
pollInterval = null;
|
|
269
319
|
|
|
@@ -423,6 +473,7 @@ function handleUpdateClick() {
|
|
|
423
473
|
// one to click Start, and macOS periodically purges the temp dir — so create it
|
|
424
474
|
// rather than gating auto-start on its existence.
|
|
425
475
|
ensureDir(tempDir);
|
|
476
|
+
startBridgeHeartbeat();
|
|
426
477
|
log("Auto-starting bridge...");
|
|
427
478
|
setTimeout(startBridge, 500);
|
|
428
479
|
setTimeout(checkForUpdates, 1200);
|
package/cep-plugin/updater.cjs
CHANGED
|
@@ -1,18 +1,39 @@
|
|
|
1
|
+
export declare const BRIDGE_HEARTBEAT_FILE = "bridge-heartbeat.json";
|
|
2
|
+
export declare const BRIDGE_HEARTBEAT_STALE_MS = 3000;
|
|
1
3
|
export interface BridgeOptions {
|
|
2
4
|
tempDir?: string;
|
|
3
5
|
timeoutMs?: number;
|
|
6
|
+
/**
|
|
7
|
+
* Reject a health-style command without publishing it when a current CEP
|
|
8
|
+
* connector explicitly reports that it is waiting or its heartbeat is stale.
|
|
9
|
+
* A missing heartbeat remains compatible with older installed connectors.
|
|
10
|
+
*/
|
|
11
|
+
failFastOnUnreadyHeartbeat?: boolean;
|
|
4
12
|
}
|
|
5
13
|
export interface CommandResult {
|
|
6
14
|
success: boolean;
|
|
7
15
|
data?: unknown;
|
|
8
16
|
error?: string;
|
|
9
17
|
}
|
|
18
|
+
export type BridgeLivenessState = "running" | "waiting" | "stale" | "unknown";
|
|
19
|
+
export interface BridgeLiveness {
|
|
20
|
+
state: BridgeLivenessState;
|
|
21
|
+
ageMs: number | null;
|
|
22
|
+
}
|
|
10
23
|
export declare function getTempDir(options?: BridgeOptions): string;
|
|
24
|
+
/**
|
|
25
|
+
* Inspect the CEP panel's small, content-free heartbeat. This never creates a
|
|
26
|
+
* directory or reads command, response, project, or media data. Unknown is
|
|
27
|
+
* intentionally non-fatal so a server upgrade stays compatible with older CEP
|
|
28
|
+
* panels that do not publish a heartbeat yet.
|
|
29
|
+
*/
|
|
30
|
+
export declare function getBridgeLiveness(options?: BridgeOptions, nowMs?: number): BridgeLiveness;
|
|
11
31
|
/**
|
|
12
32
|
* Send a command (ExtendScript) to the CEP plugin and wait for a response.
|
|
13
33
|
*
|
|
14
34
|
* Protocol:
|
|
15
|
-
* 1. Write script to
|
|
35
|
+
* 1. Write the script to a staging file, then atomically publish it as
|
|
36
|
+
* <tempDir>/cmd_<id>.jsx. The CEP panel only sees complete commands.
|
|
16
37
|
* 2. CEP plugin picks it up, executes, writes result to <tempDir>/res_<id>.json
|
|
17
38
|
* 3. We poll for the response file and parse it.
|
|
18
39
|
*/
|