Skip to content

Releases

PPMCP v1.3.1 — fix(test): relay-auth test ESM import on Windows

Choose a tag to compare

@github-actions github-actions released this 15 Oct 14:13

Install: download PPMCP-Setup-1.3.1.zip below, extract the whole folder, double-click Setup.bat. Already installed? Choose Update / reinstall, then reload the panel in UXP Developer Tool.

Security

  • The bridge (ws://127.0.0.1:8265) now authenticates every client. A
    per-install random token is created automatically on first start at
    %APPDATA%\PPMCP\relay-token and copied into the installed plugin folder;
    the MCP server, the UXP panel and the optional CEP text bridge read it on
    every (re)connect. No setup step, prompt or config change — existing
    installs pick it up after updating.
  • WebSocket upgrades from web pages (http(s):// Origin) are refused with
    403, so a browser tab can no longer drive Premiere through the bridge.
    Node clients (no Origin) and the UXP/CEP panels are unaffected.
  • A hello with a missing or wrong token gets a clear authError and close
    code 4401; it can no longer replace or drop the connected panel.
  • maxPayload (64 MB) on the relay socket; client timeoutMs clamped to
    1 s–10 min.
  • @modelcontextprotocol/sdk ^1.32.1 and npm audit fix (fast-uri, hono):
    npm audit is clean.
  • Release build verifies the portable Node.js zip against SHASUMS256.txt.

Fixed

  • PowerShell-rendered PNG paths now use single-quote escaping (''), so a
    Windows user name containing ' no longer breaks text plates.
  • captureFrame looks up ffmpeg/magick with execFileSync instead of a
    shell string.
  • AE lower-third MOGRT lookup used a hardcoded developer path; it now uses the
    current user's %APPDATA%.

Changed

  • Removed developer scratch scripts (scripts/_*.mjs) and personal paths in
    demo scripts.
  • Docs: tool counts are 283 (full) / 112 (standard); Premiere Pro 26.0+ is
    the stated minimum everywhere, matching the plugin manifest.

Full changelog: CHANGELOG.md

PPMCP v1.3.0 — Transcript tools, confirmed silence cutting and live-verified fixes

Choose a tag to compare

@github-actions github-actions released this 14 Oct 19:37

Install: download PPMCP-Setup-1.3.0.zip below, extract the whole folder, double-click Setup.bat. Already installed? Choose Update / reinstall, then reload the panel in UXP Developer Tool.

Added

  • transcript_get: read Premiere's own Speech-to-Text transcript of a clip
    (UXP Transcript API) as segments or words, mapped to sequence time for
    every instance of the clip. transcribe: true runs Premiere's
    transcription first when the clip has none.
  • transcript_find_phrase: find every place a phrase is spoken and return
    its sequence ranges; optionally add a marker spanning each hit.
  • workflow_cut_silence: confirmed silence cutting. The dry run returns the
    exact ranges (padding kept next to speech, short cuts skipped), the total
    seconds removed and a planToken; confirm: true with that token splits
    and ripple-deletes each range on the clip and its linked audio/video, from
    the end of the timeline backward. A wrong or stale token is refused.

Fixed

  • clip_split at a time that isn't on a frame boundary failed halfway
    ("could not find the clone") and lost the left part of the clip. The cut is
    now snapped to the nearest sequence frame.

  • workflow_clean_silence placed its markers at the silence's time inside the
    media file, not on the timeline, so they were wrong for any clip that
    doesn't start at 0:00 untrimmed. Markers are now placed for every instance
    of the file in the sequence (clip start + offset from its in point, scaled
    by speed, trimmed to the visible range). If the file isn't in the sequence,
    no markers are added and the regions are returned with a note; the new
    optional sequenceOffsetSeconds places them manually. The description no
    longer mentions a nonexistent applyCuts option.

  • clip.list / clip.getProperties now also return the clip's
    mediaFilePath.

  • Markers added by workflow_clean_silence, analyze_silence, the other
    analyze tools and markers_add_many lost their comment: the tools sent
    comments while the plugin reads comment. Silence markers now also get
    the silence length as their duration.

  • media_get_info / media_analyze_file_info now return duration
    (durationTicks, durationSeconds), frame rate and pixel aspect ratio.

  • shape_set_size sets the exact width and height (non-uniform Motion scale)
    instead of averaging them into one uniform scale.

  • export_frame, sequence_export_still and sequence_export_frame now
    export the real sequence frame with Premiere's Exporter.exportSequenceFrame
    instead of falling back to a screenshot of the Premiere window.

Full changelog: CHANGELOG.md

PPMCP v1.2.0 — Relative Lumetri adjustments, blend modes and automatic releases

Choose a tag to compare

@github-actions github-actions released this 09 Oct 03:09

Install: download PPMCP-Setup-1.2.0.zip below, extract the whole folder, double-click Setup.bat. Already installed? Choose Update / reinstall, then reload the panel in UXP Developer Tool.

Added

  • Relative Lumetri adjustments (#4). color_adjust adds a delta to each
    clip's current value (exposure: 0.3, saturation: -10, any other param
    via deltas, keyed by name or "#<paramIndex>"), so existing per-clip
    corrections are kept. It works on one clip, a clip list or the timeline
    selection, applies Lumetri where it's missing, clamps to Premiere's limits
    (measured on 26.5.1) and reports what was clamped. Keyframed params are
    skipped with a reason instead of losing their keyframes.
  • effect_adjust_param: the same relative change for any numeric effect
    param, with optional min / max.
  • edit_quality_pass gradeMode: "relative" (also passed through
    polish): adds the look's offset from Lumetri's defaults instead of
    overwriting existing grades. The default is still absolute.
  • Blend modes (#6). clip_set_blend_mode sets any of the 27 Opacity blend
    modes (screen, linear_dodge, overlay, multiply, …) plus optional
    opacity, and returns the previous mode. The value table was measured live
    by rendering every mode over a known overlay and matching the blend
    formulas.
  • Automatic releases. Merging a PR into main now bumps the version
    everywhere, dates this CHANGELOG, builds the Setup ZIP and publishes the
    GitHub release (.github/workflows/release.yml, scripts/release-prepare.mjs).
    Labels pick the bump (release:patch by default, release:minor,
    release:major, no-release). Every PR runs it as a dry run first. See
    docs/RELEASING.md.

Changed

  • Lumetri curves (#5): investigated, not reachable through UXP. On
    26.5.1 the curve data params are opaque and reject every value type, so
    there is no curves tool. docs/FEATURES.md lists what Lumetri exposes;
    tone-curve-style changes go through Highlights / Shadows / Whites / Blacks.
  • color_apply_lut now explains that UXP can't load a LUT by file path
    (Input LUT is a dropdown index) instead of failing with a value-type hint.
  • scripts/check-catalog.mjs checks that the server's blend-mode list
    matches the plugin's value table.

Full changelog: CHANGELOG.md

PPMCP v1.1.1 — Premiere 26.3+ fixes, live-tested editing tools

Choose a tag to compare

@CaYatur CaYatur released this 08 Oct 15:33

Install: download PPMCP-Setup-1.1.1.zip below, extract the whole folder, double-click Setup.bat. If 1.1.0 is installed, choose Update / reinstall, then reload the panel in UXP Developer Tool.

Fixes for Premiere Pro 26.3 and later

Since Premiere 26.3, Adobe requires every create*Action() call to run inside project.lockedAccess(). PPMCP created actions before taking the lock in 44 places, so on 26.3+ many editing tools failed with Requires locked access. This affected slip/roll/slide/split/ripple-delete/lift, transitions, track/media/project-item operations and keyframed effect writes (#2). All of them now create their actions inside the lock. A new CI check (scripts/check-action-lock-scope.mjs) stops the bug from coming back.

This release was tested live on Premiere Pro 26.5.1 / UXP 9.3. With the lock error gone, the tools ran for real for the first time and exposed older bugs. Those are fixed here too.

Timeline editing

  • clip_split inserted a full-length copy of the clip instead of cutting it. It now cuts cleanly and also splits the linked audio.
  • clip_slip moved the clip on the timeline. Now only the source moves.
  • clip_slide sent the clip far down the timeline. It now slides by the requested amount.
  • clip_ripple_delete left the gap open. It now closes on both video and audio.
  • clip_lift also lifts the linked audio now.
  • clip_move failed with "Invalid parameter" when moving a clip past its old end.
  • clip_roll / clip_slide / clip_slip now refuse edits that would run past the start or end of the media (INVALID_PARAMS). Before, they produced negative source times.
  • These edits now apply one step per transaction, so undo takes a few steps instead of one. Premiere 26.5 validates batched time edits against the state before the batch, which made the batched form unreliable.

Keyframes

  • Every keyframe landed at 0. This hit effect_set_param, effect_set_opacity, effect_set_transform and audio_add_volume_keyframe. They now land at atTicks, which is sequence time and is converted to the clip's source time internally.
  • effect_set_param with atTicks now creates real keyframes instead of overwriting the static value.

Bins and project

  • Nested bins work: project_list_items with binPath / recursive, isBin: true, and media inside bins can be inserted by id.
  • project_create_bin no longer fails after creating the bin.

Effects and analysis

  • effect_set_param:
    • New paramIndex.
    • Values are converted to the param's type ("20" → 20).
    • Duplicate Lumetri names are handled.
  • effect_list_applied / color_get_params return each param's current value, valueType, keyframed and duplicateName.
  • audio_add_effect takes display names ("Dynamics", "Parametric Equalizer", "DeNoise"). An AE.ADBE prefix is ignored, and an unknown name returns the closest matches.
  • analyze_find_unused_media does one plugin-side scan, matched by project item id. It no longer times out on large projects.
  • sequence_screenshot reports the real window-capture error.
  • edit_quality_pass has a new fadeEdges option. maxTransitions: 0 gives hard cuts.
  • Errors caused by bad arguments now return INVALID_PARAMS instead of PREMIERE_API_ERROR.

Full list: CHANGELOG.md · PR #3 · fixes #2

PPMCP v1.1.0 — self-service tool surface, CI, rewritten connection docs

Choose a tag to compare

@CaYatur CaYatur released this 04 Sep 13:51
fe105a1

Install: download PPMCP-Setup-1.1.0.zip below, extract the whole folder, double-click Setup.bat.

The tool surface is now a starting point, not a cap

A session registers a profile (default standard = 109 of 277) so your client isn't handed 277 schemas before a single edit. But every tool is registered with the MCP server at boot and merely disabled outside the profile — so the model can turn them back on itself, mid-session:

tool_profile { profile: "full" }      # register all 277
tool_profile { category: "color" }    # one area, additive
tool_profile { enable: ["clip_reverse"] }
tool_profile { }                      # report current state

The server emits notifications/tools/list_changed and your client refreshes its tool list. No restart, no config edit, and the model doesn't have to ask you. tool_search finds unregistered tools; tool_invoke runs any tool whether registered or not — so nothing is ever out of reach, whichever profile you pick.

PPMCP_PROFILE=core|standard|full still sets where a session starts.

Continuous integration, for the first time

Build + typecheck + three checks on Windows and Linux, Node 20 and 22 — everything meaningful without a live Premiere. npm run check runs the same set locally.

scripts/test-tool-profile.mjs boots a real MCP stdio session and asserts the whole surface-switching path end to end: starting profile, finding a hidden tool, registering a category, dispatching the newly registered tool, taking the full catalog in one notification, shrinking back, and reaching a disabled tool via tool_invoke. 26 assertions.

Connection documentation rewritten

Verified per-client configuration in INSTALL.md and all seven READMEs, plus a generic stdio recipe, a no-client test command, and a troubleshooting table. Two real errors fixed:

  • Claude Desktop's config file path was never stated.
  • VS Code was missing entirely — it uses servers, not mcpServers, and requires "type": "stdio", so anyone adapting the old snippet could not connect.

Added: Cursor's real mcp.json paths, claude mcp add --scope user, Windsurf, and an explicit warning about JSON backslash escaping — the most common cause of a failed connection.

Also fixed

  • tool_search / tool_schema / tool_profile were subject to the ~220 ms rate-limit floor. That floor protects Premiere from edit spam, but these three never touch Premiere — a model got RATE_LIMITED purely for orienting itself. Now exempt; tool_invoke deliberately is not.
  • Stale status banners. PLAN.md still said "0 production code written" and FEATURES.md "0 of these 275 exist as working code today", with 277 tools shipping since 1.0.0.
  • npm run build failed on a tree without workspace symlinks (Cannot find module '@ppmcp/shared'). CI catches it now.
  • npm run release:win could hang for ~8 minutes and, if interrupted, poisoned every later build with a truncated Node download that it then silently reused. Fixed; a clean run is now ~5 minutes.

Unchanged platform limits

Re-verified against Adobe's ppro_reference on 2026-09-04: Sequence still exposes no add-track method, so track_add remains impossible — plan the track count at sequence_create. CaptionTrack exposes no write path either, so real caption tracks stay a feasibility question rather than a promise.

Full detail in CHANGELOG.md · roadmap in docs/ROADMAP.md

PPMCP v1.0.2

Choose a tag to compare

@CaYatur CaYatur released this 11 Jul 09:58

Follow-up release after another real Premiere test session.

Install

Download PPMCP-Setup-1.0.2.zip below, extract the folder, and double-click Setup.bat. Portable Node is bundled — no separate Node install needed. See INSTALL.md.

Confirmed working

  • sequence_set_in_out — the 1.0.1 fix is now verified live. A re-test set the sequence in/out points and returned "via": "sequence.createSetInPointAction + sequence.createSetOutPointAction". Promoted from "fix applied, pending re-test" to confirmed.

Fixed

  • app_get_version — no longer returns null. The old code read version off the Application class, but per Adobe's ppro_reference version is an instance property (Promise<string>, 25.6+), so it never resolved. Now reads the version from the UXP host object (require("uxp").host.version) and returns { version, host, uxpVersion }. (Fix applied, pending a live re-test — confirm host.version is the Premiere version, not the UXP-runtime version.)

Corrected documentation — track_add workaround retracted

1.0.1 suggested "place a clip at a higher track index and let Premiere auto-create the track." That was tested and does NOT work on this build — it fails with "[INTERNAL_ERROR] BE: An invalid track index was passed to the sequence".

The reality: the track count is fixed when the sequence is created and cannot be increased afterward by any means (no add-track method exists in the Premiere UXP API — a confirmed Adobe platform limitation). Plan the track count at sequence_create, or use a sequence preset that already has enough tracks. Tool descriptions, READMEs, docs/FEATURES.md, and the plugin error message were all corrected.

Full changelog: https://github.com/CaYatur/PremiereProMCP/blob/main/CHANGELOG.md · Compare: v1.0.1...v1.0.2

PPMCP v1.0.1

Choose a tag to compare

@CaYatur CaYatur released this 11 Jul 09:26

Note: A later test showed one workaround in this release's notes was wrong. See v1.0.2 for the correction (and grab 1.0.2 instead — it's a superset of this release). This page has been updated to strike the bad advice.

Bug-fix and capability release driven by real end-to-end Premiere testing.

Install

Download PPMCP-Setup-1.0.1.zip below, extract the folder, and double-click Setup.bat. Portable Node is bundled — no separate Node install needed. See INSTALL.md.

Fixed

  • sequence_set_in_out — root cause found and corrected. The in/out Action factories live on the Sequence object itself (sequence.createSetInPointAction / createSetOutPointAction, Premiere 25.6+), not on SequenceEditor where the previous attempt looked. Both points are now committed in one compound transaction. (Confirmed working in v1.0.2.)
  • clip_append — confirmed working: shares clip_insert's retry helper and appends clips in the correct order (previously "Script action failed to execute").
  • media_get_info / media_analyze_file_info — opportunistically probe duration / frame size / frame rate.

Added

  • The full Effects panel is now usable by the model, not just the dedicated shortcuts. effect_list_available gains a kind: "video" | "audio" filter (pull the video-only Effects panel, ~105 effects); effect_add accepts either a friendly displayName (e.g. "Lens Distortion") or the raw matchName. Agent guidance added to skill/SKILL.md.

Known limitation

  • track_add / track_add_video / track_add_audio — confirmed Adobe platform limitation, not a plugin bug: the Premiere UXP API exposes no add-track method on Sequence or SequenceEditor. The track count is fixed at sequence creation and cannot be increased afterward by any means — plan it at sequence_create, or use a preset with enough tracks. (Earlier notes here suggested dropping a clip at a higher track index to auto-create tracks; v1.0.2 testing showed that does NOT work — it fails with an invalid-track-index error. Corrected.)

Docs

  • Tool count corrected to 277 (225 per-category tools + 52 generated dedicated effect/audio/transition shortcuts), across ~20 categories.
  • Status tables updated across all READMEs and docs/FEATURES.md; new CHANGELOG.md.

Full changelog: https://github.com/CaYatur/PremiereProMCP/blob/main/CHANGELOG.md

PPMCP v1.0.0

Choose a tag to compare

@CaYatur CaYatur released this 10 Jul 23:39

First public release of Premiere Pro MCP (PPMCP).

Install

  1. Download PPMCP-Setup-1.0.0.zip below.
  2. Extract the whole folder.
  3. Double-click Setup.bat — that single file installs everything (bundled portable Node.js, no extra dependencies, no third-party installer license).

Full guide: INSTALL.md