Premiere-Pro-MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Premiere-Pro-MCPapply a 1 second cross dissolve to all cuts on V1"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Premiere-Pro-MCP
Control Adobe Premiere Pro with Claude. Started as "apply a Cross Dissolve at every cut in one sentence" — now a full beat-synced auto-edit toolchain:
You: here's a 60s music track and a folder of clips — build me a reel cut on the beat
Claude: detects 142.86 BPM → drops 34 bar markers → shuffles 12 clips into 35 beat slots, each sliced from a different part of its source → exactly 60.000s, zero gaps, every cut within half a frame of a downbeat → cross dissolves on all 34 cuts
Architecture — two MCP servers
┌─ premiere-pro (Node) ── stdio ⇄ WS bridge :3001 ⇄ UXP plugin in Premiere
Claude ─────┤
└─ media-analysis (Python) ── stdio; beat detection, whisper, SRT, text-PNGsClaude orchestrates between them: analysis tools return data (beats, transcripts) into the conversation; Claude makes the creative decisions (which clip in which slot); editing primitives execute them in Premiere.
Package | What |
| Shared wire types for the bridge |
| Node MCP server + embedded WebSocket bridge |
| UXP panel inside Premiere (executes all timeline commands) |
| Python MCP server (beat_this, faster-whisper, Pillow) — models lazy-load once and stay resident |
Requirements
Windows (verified) or macOS, Node.js ≥ 20, uv
Adobe Premiere Pro 25.6+ (verified on 26.2.2)
Adobe UXP Developer Tools (UDT) from the Creative Cloud app
Claude Code or Claude Desktop
Install (one time)
git clone https://github.com/nguyenph88/Premiere-Pro-MCP.git
cd Premiere-Pro-MCP
npm install && npm run build
cd packages\analysis-server && uv sync && cd ..\..Enable developer mode in Premiere: Edit ▸ Preferences ▸ Plug-ins ▸ check "Enable developer mode", restart Premiere. (Without it UDT can't see Premiere.)
Load the plugin: UDT ▸ Add Plugin ▸ packages/uxp-plugin/manifest.json ▸
Load & Watch. The "MCP Bridge" panel appears in Premiere.
Register both servers (Claude Code):
claude mcp add premiere-pro -- node "<repo>\packages\server\dist\index.js"
claude mcp add media-analysis -- uv run --directory "<repo>\packages\analysis-server" ppmcp-analysis(Run claude mcp add from the folder you'll start Claude sessions in — registration is per-project-directory.)
Daily use
Launch Premiere → load plugin in UDT (once per Premiere launch) → start Claude → the panel dot goes 🟢.
Things to say
"apply a 1 second cross dissolve to every cut on V1" — the original classic; warns before overwriting existing transitions
"detect the beats of the music on A1 and mark them on the timeline"
"build a 60s beat-synced edit from the clips in
D:\footageusingsong.mp3" — the full pipeline"add a title that says MUI NE 2026 over the first 3 seconds" — rendered as transparent PNG, imported, placed on V2
"transcribe the voiceover and make subtitles" — produces an
.srt; drag it into Premiere for native captions (the one manual step — Premiere's plugin API can't create caption tracks)"show me the clips on V1", "what's in my project bin?"
Slash commands (project skills)
Repo-bundled skills in .claude/skills/ — all prefixed pp-. They wrap the
tools below with the verified recipes and gotchas baked in:
Command | What it does |
| Full beat-synced reel: cuts on downbeats, music on A1, dissolves on every cut, optional PNG title on V2. Ends at 59s by default, never 60 — YouTube rounds 60s+ past a minute. |
| Detect the music on A1 and drop a marker per downbeat (or every beat) on the timeline ruler. Any length; markers chunked at 500/call. |
| Cross Dissolve at every cut on V1 in one bulk pass, default 1s centered. |
Re-run semantics (the API has no per-marker/per-transition identity, so
re-running a skill is wipe-and-replace): /pp-mark-beats clears ALL ruler
markers and re-marks; /pp-add-cross-dissolve replaces ALL V1 transitions
with a fresh uniform set (use its skip mode to keep hand-placed ones).
Idempotent — running twice never duplicates.
Tools
premiere-pro (15): premiere_health, premiere_ping, get_project_info,
list_sequences, get_sequence_clips, get_audio_clips (incl. media file paths),
list_project_items, import_files, create_sequence, place_clip (slice via
in/out + place at exact time — the beat-edit primitive), remove_clips,
add_markers (batched, colored), list_available_transitions,
apply_transition_to_all_cuts, apply_transition_to_clip.
media-analysis (6): analysis_health, detect_beats (beats + downbeats + BPM,
any media format), find_best_moments (ranked most-interesting windows per clip —
motion/sharpness/exposure scoring, ffmpeg+numpy, ~1s per clip), transcribe
(faster-whisper, word timestamps), generate_srt, render_text_png (text overlays).
The beat-edit recipe (what /pp-create-reel does internally)
detect_beatson the music → downbeat list; slot boundaries =[0] + downbeats under target + [target](target 59s by default)Probe candidates (
packages/analysis-server/tests/probe_media.py— duration/resolution/fps) and reject any footage with an audio stream — placed audio would land over the music and there is no audio-remove tool; thenfind_best_momentson each survivor — slices come from its ranked windows, and the single best window across all clips opens the reel (the hook)create_sequencefrom a clip (settings match media; prefer a 60fps seed for cut precision), clear the seed clipPlace music sliced
in=0, out=targetin this one placement (audio on A1 can never be shortened later), thenremove_clipsits video item — the linked audio stays on A1Per downbeat slot:
place_clipwith a varying source slice, overshooting ~3 frames — the next overwrite trims it frame-tight (this defeats mp4 start-offset quirks). Strictly chronological; last slot gets an exact out, no overshootadd_markersat downbeats,apply_transition_to_all_cuts(0.5s reads better than 1s at 140+ BPM) to finish
Known limitations (Premiere 26.x UXP API)
No native text/titles → text is rendered to transparent PNGs (Pillow) and placed as overlays; re-render to change wording
No caption-track creation →
.srtis generated, you drag it in (5 seconds)Existing transitions are count-only → bulk-apply warns and asks before overwriting; selective skip activates automatically if Adobe fixes the API
No clip speed changes, no razor (razor is emulated via slice-and-place)
MOGRT text is API-blocked — a prototype (see commit d7ced57, since removed) verified that
SequenceEditor.insertMogrtFromPathinserts Essential Graphics fine and numeric/boolean params are settable viaparam.createKeyframe(value)→createSetValueAction, but "Source Text" can be neither read nor written (Adobe-confirmed UXP gap, Feb 2026). Revisit when Adobe ships ExtendScript parity.
Troubleshooting (learned the hard way)
UDT "No applications are connected": enable developer mode in Premiere (above), restart Premiere.
Panel log
Permission denied to the url ws://...: manifest must use"network": { "domains": "all" }(already set); UXP rejects per-URL localhost entries.Manifest changes ignored on Reload: Unload → Load & Watch (UDT caches manifests).
PREMIERE_API_ERRORwithown:{...} proto:{...}dumps: that's the built-in API-discovery reflection — the error shows the real object shape; fix the accessor inpackages/uxp-plugin/src/handlers/, rebuild, UDT hot-reloads.Tools say plugin not connected: the MCP Bridge panel must be open with a green dot; reload via UDT after every Premiere restart.
First
detect_beats/transcribecall is slow: model download + load (one-time per process); subsequent calls are fast.
Dev
npm run build # protocol + server + plugin
npm run watch:plugin # pair with UDT Watch for hot reload
node scripts/smoke.mjs # protocol round-trip without Premiere (isolated port 3199)
cd packages\analysis-server; uv run python tests/smoke.py # synthesized 120BPM click-track testAdding a Premiere tool: command in packages/protocol/src/commands.ts → handler in
packages/uxp-plugin/src/handlers/ → register in dispatcher.ts → tool in
packages/server/src/mcp/registerTools.ts. Adding an analysis tool: one decorated
function in packages/analysis-server/src/ppmcp_analysis/server.py.
This server cannot be deployed
Maintenance
Related MCP Connectors
AI video editor for agents and humans: timeline, captions, color, audio and generation as MCP tools.
Compose, edit and render video with your AI agent. Turn footage into finished edits with content-aware reframing, word-timed captions and motion graphics. Hosted MCP with OAuth sign-in; cloud processing uses credits.
MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.