Repository navigation
Releases
PPMCP v1.3.1 — fix(test): relay-auth test ESM import on Windows
Install: download
PPMCP-Setup-1.3.1.zipbelow, extract the whole folder, double-clickSetup.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-tokenand 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
hellowith a missing or wrong token gets a clearauthErrorand close
code 4401; it can no longer replace or drop the connected panel. maxPayload(64 MB) on the relay socket; clienttimeoutMsclamped to
1 s–10 min.@modelcontextprotocol/sdk^1.32.1 andnpm audit fix(fast-uri, hono):
npm auditis 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. captureFramelooks upffmpeg/magickwithexecFileSyncinstead 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
Install: download
PPMCP-Setup-1.3.0.zipbelow, extract the whole folder, double-clickSetup.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
(UXPTranscriptAPI) as segments or words, mapped to sequence time for
every instance of the clip.transcribe: trueruns 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 aplanToken;confirm: truewith 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_splitat 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_silenceplaced 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
optionalsequenceOffsetSecondsplaces them manually. The description no
longer mentions a nonexistentapplyCutsoption. -
clip.list/clip.getPropertiesnow also return the clip's
mediaFilePath. -
Markers added by
workflow_clean_silence,analyze_silence, the other
analyze tools andmarkers_add_manylost their comment: the tools sent
commentswhile the plugin readscomment. Silence markers now also get
the silence length as their duration. -
media_get_info/media_analyze_file_infonow return duration
(durationTicks,durationSeconds), frame rate and pixel aspect ratio. -
shape_set_sizesets the exact width and height (non-uniform Motion scale)
instead of averaging them into one uniform scale. -
export_frame,sequence_export_stillandsequence_export_framenow
export the real sequence frame with Premiere'sExporter.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
Install: download
PPMCP-Setup-1.2.0.zipbelow, extract the whole folder, double-clickSetup.bat. Already installed? Choose Update / reinstall, then reload the panel in UXP Developer Tool.
Added
- Relative Lumetri adjustments (#4).
color_adjustadds a delta to each
clip's current value (exposure: 0.3,saturation: -10, any other param
viadeltas, 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 optionalmin/max.edit_quality_passgradeMode: "relative"(also passed through
polish): adds the look's offset from Lumetri's defaults instead of
overwriting existing grades. The default is stillabsolute.- Blend modes (#6).
clip_set_blend_modesets 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
mainnow 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:patchby 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.mdlists what Lumetri exposes;
tone-curve-style changes go through Highlights / Shadows / Whites / Blacks. color_apply_lutnow 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.mjschecks 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
Install: download
PPMCP-Setup-1.1.1.zipbelow, extract the whole folder, double-clickSetup.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_splitinserted a full-length copy of the clip instead of cutting it. It now cuts cleanly and also splits the linked audio.clip_slipmoved the clip on the timeline. Now only the source moves.clip_slidesent the clip far down the timeline. It now slides by the requested amount.clip_ripple_deleteleft the gap open. It now closes on both video and audio.clip_liftalso lifts the linked audio now.clip_movefailed with "Invalid parameter" when moving a clip past its old end.clip_roll/clip_slide/clip_slipnow 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_transformandaudio_add_volume_keyframe. They now land atatTicks, which is sequence time and is converted to the clip's source time internally. effect_set_paramwithatTicksnow creates real keyframes instead of overwriting the static value.
Bins and project
- Nested bins work:
project_list_itemswithbinPath/recursive,isBin: true, and media inside bins can be inserted by id. project_create_binno 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.
- New
effect_list_applied/color_get_paramsreturn each param's currentvalue,valueType,keyframedandduplicateName.audio_add_effecttakes display names ("Dynamics", "Parametric Equalizer", "DeNoise"). AnAE.ADBEprefix is ignored, and an unknown name returns the closest matches.analyze_find_unused_mediadoes one plugin-side scan, matched by project item id. It no longer times out on large projects.sequence_screenshotreports the real window-capture error.edit_quality_passhas a newfadeEdgesoption.maxTransitions: 0gives hard cuts.- Errors caused by bad arguments now return
INVALID_PARAMSinstead ofPREMIERE_API_ERROR.
Full list: CHANGELOG.md · PR #3 · fixes #2
PPMCP v1.1.0 — self-service tool surface, CI, rewritten connection docs
Install: download
PPMCP-Setup-1.1.0.zipbelow, extract the whole folder, double-clickSetup.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, notmcpServers, 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_profilewere subject to the ~220 ms rate-limit floor. That floor protects Premiere from edit spam, but these three never touch Premiere — a model gotRATE_LIMITEDpurely for orienting itself. Now exempt;tool_invokedeliberately is not.- Stale status banners.
PLAN.mdstill said "0 production code written" andFEATURES.md"0 of these 275 exist as working code today", with 277 tools shipping since 1.0.0. npm run buildfailed on a tree without workspace symlinks (Cannot find module '@ppmcp/shared'). CI catches it now.npm run release:wincould 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
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 returnsnull. The old code readversionoff theApplicationclass, but per Adobe'sppro_referenceversionis 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 — confirmhost.versionis 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
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 theSequenceobject itself (sequence.createSetInPointAction/createSetOutPointAction, Premiere 25.6+), not onSequenceEditorwhere the previous attempt looked. Both points are now committed in one compound transaction. (Confirmed working in v1.0.2.)clip_append— confirmed working: sharesclip_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_availablegains akind: "video" | "audio"filter (pull the video-only Effects panel, ~105 effects);effect_addaccepts either a friendlydisplayName(e.g."Lens Distortion") or the rawmatchName. Agent guidance added toskill/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 onSequenceorSequenceEditor. The track count is fixed at sequence creation and cannot be increased afterward by any means — plan it atsequence_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; newCHANGELOG.md.
Full changelog: https://github.com/CaYatur/PremiereProMCP/blob/main/CHANGELOG.md
PPMCP v1.0.0
First public release of Premiere Pro MCP (PPMCP).
Install
- Download
PPMCP-Setup-1.0.0.zipbelow. - Extract the whole folder.
- 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