Give AI full control over Adobe Premiere Pro. 280 core tools across 31 modules, 3 resources, and 4 guided workflows. A connected UXP host adds 19 capability-gated tools.
> /plugin marketplace add leancoderkavy/premiere-pro-mcp> /plugin install premiere-pro@premiere-pro-mcp
Repo: leancoderkavy/premiere-pro-mcp
What's inside
Give AI full control over Adobe Premiere Pro.
280 core tools across 31 modules, 3 resources, and 4 guided workflows. A connected UXP host adds 19 capability-gated tools.
An MCP (Model Context Protocol) server that lets AI assistants like Claude, Windsurf, Cursor, GitHub Copilot, or any MCP-compatible client directly control Adobe Premiere Pro โ importing media, editing timelines, applying effects, managing keyframes, exporting, and more.
"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."
The AI handles the entire workflow through 280 core tools spanning the supported ExtendScript, QE DOM, local media analysis, safe edit-planning, and connection-verification surfaces. A compatible, authenticated UXP panel adds 19 documented, capability-gated workflows without replacing the production CEP bridge.
verify_premiere_connection, --doctor, the CEP
Connection Center, and sanitized support bundles explain exactly what is
installed, configured, connected, and live-verified.capabilities.get responseโnot package metadataโdecides whether the current host supports it.unsafe-script authority..mcpb)..zxp). Open it with your trusted ZXP installer. If your computer has no ZXP installer, use the npm connector installer in Advanced setup below.Safely check my Premiere connection with verify_premiere_connection. Make no changes.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.
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.
PATH for detect_silence
(brew install ffmpeg on macOS or winget install Gyan.FFmpeg on Windows).
The production Docker image already includes it.Option A โ npm:
npm install -g premiere-pro-mcp
Option B โ Clone from source:
git clone https://github.com/leancoderkavy/premiere-pro-mcp.git
cd premiere-pro-mcp
npm install
npm run build
If installed via npm:
premiere-pro-mcp --install-cep
If cloned from source:
npm run install-cep
This installs the plugin into Premiere Pro's per-user extensions folder and enables debug mode.
premiere-pro-mcp --doctor
Then ask your MCP client to run verify_premiere_connection. The check is read-only.
The easiest repeatable path is the token-free GitHub Actions workflow:
leancoderkavy/premiere-pro-mcp and workflow file npm-publish.yml.npm publish action.latest tag.The workflow installs dependencies, builds, runs tests, verifies the packed files, refuses to republish an existing version, then publishes through short-lived OIDC credentials with automatic provenance. No npm token or recurring OTP is required.
For local publishing, use the guided helper:
npm run publish:npm
Useful local variants:
npm run publish:npm:dry-run
NPM_OTP=123456 npm run publish:npm
NPM_TOKEN=npm_xxx npm run publish:npm
mkdir -p ~/Library/Application\ Support/Adobe/CEP/extensions
ln -s "$(pwd)/cep-plugin" ~/Library/Application\ Support/Adobe/CEP/extensions/MCPBridgeCEP
# Enable unsigned extensions (CSXS 9โ14)
for v in 9 10 11 12 13 14; do
defaults write com.adobe.CSXS.$v PlayerDebugMode 1
done
cep-plugin folder to %APPDATA%\Adobe\CEP\extensions\MCPBridgeCEPREG_SZ) values to 1 (not DWORD):
HKEY_CURRENT_USER\Software\Adobe\CSXS.12\PlayerDebugModeIf you installed from npm, configure the client to run the global command:
{
"mcpServers": {
"premiere-pro": {
"command": "premiere-pro-mcp"
}
}
}
If you cloned the repository instead, use the source-build configuration shown below for your client.
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"premiere-pro": {
"command": "node",
"args": ["/absolute/path/to/premiere-pro-mcp/dist/index.js"]
}
}
}
Add to your MCP server configuration:
{
"premiere-pro": {
"command": "node",
"args": ["/absolute/path/to/premiere-pro-mcp/dist/index.js"]
}
}
Add to .cursor/mcp.json in your project or global config:
{
"mcpServers": {
"premiere-pro": {
"command": "node",
"args": ["/absolute/path/to/premiere-pro-mcp/dist/index.js"]
}
}
}
Add to your VS Code MCP server configuration:
{
"mcpServers": {
"premiere-pro": {
"command": "node",
"args": ["/absolute/path/to/premiere-pro-mcp/dist/index.js"]
}
}
}
get_capabilities, then ping, with Premiere open.The default bridge directory is derived from the operating system on both sides, so most local setups should not set PREMIERE_TEMP_DIR. If you override it, use the same absolute path in the MCP server and CEP panel; Windows and macOS paths are not interchangeable.
This repository includes an installable Codex plugin that bundles the local MCP server with a safety-oriented Premiere editing skill.
From a clone of this repository:
codex plugin marketplace add .
codex plugin add premiere-pro@premiere-pro-mcp
npx -y premiere-pro-mcp@1.9.2 --install-cep
Restart Premiere Pro and start a new Codex session after installation. The plugin
launches premiere-pro-mcp@1.9.2 through npx; the separate CEP installation is
required because the MCP server communicates with the running Premiere host through
the local bridge.
The plugin source lives in plugins/premiere-pro, and the
repository marketplace manifest lives in
.agents/plugins/marketplace.json.
For Claude Code, add this repository as a marketplace and install the plugin:
/plugin marketplace add leancoderkavy/premiere-pro-mcp
/plugin install premiere-pro@premiere-pro-mcp
Then install the Premiere bridge and start a new Claude Code session:
npx -y premiere-pro-mcp@1.9.2 --install-cep
The Claude Code package lives in
claude-plugins/premiere-pro, with its marketplace
at .claude-plugin/marketplace.json.
Claude Desktop uses the self-contained MCP Bundle (.mcpb) format. Build and
validate the current bundle with:
npm run build:claude
Install the resulting file from artifacts/ through Settings > Extensions >
Advanced settings > Install Extension. The Premiere CEP bridge must still be
installed separately.
| Surface | Windows | macOS | Verification boundary |
|---|---|---|---|
| CEP production bridge | Premiere Pro 2020โ2026 | Premiere Pro 2020โ2026 | Run get_capabilities, then ping with Premiere open |
| UXP preview bridge | Premiere Pro 25.6+ | Premiere Pro 25.6+ | Live loopback WebSocket and host API verification required |
| npm CEP installer | Copies plugin and verifies REG_SZ debug keys | Copies plugin and verifies the installed manifest/debug settings | Restart Premiere after installation |
| CI build and unit tests | Node 20, 22, and 24 | Node 20, 22, and 24 | GitHub-hosted OS runners; no Adobe host is available in CI |
get_capabilities reports the current operating system, temp directory, CEP/UXP coverage, enabled authority profile, and any live-host verification still required. It also includes the full tools catalog generated from the tools registered by the server, including tools disabled by the active profile. Every entry identifies:
local, CEP/ExtendScript, QE, or orchestrator);supported, limited, experimental, or unsupported);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.
MCP tools/list is filtered to the active authority profile. The default
inspect,edit,export,filesystem profile advertises 278 of the 280 registered
tools and omits execute_extendscript and evaluate_expression, which require
explicit unsafe-script authority. ping and get_capabilities remain visible
under every profile so a restricted or misconfigured server can still explain
its state. The call-time capability guard remains authoritative even if listing
metadata is wrong.
The MCP handshake reads serverInfo.version from the installed package.json,
so clients receive the package version that is actually running rather than a
separately maintained literal.
Tools with mixed execution boundaries can provide explicit operational metadata at registration. This is used for local file verification, static feature-support reports, and hybrid local-plus-Premiere validation so the capability catalog does not infer a host dependency from naming alone.
get_advanced_feature_support returns a machine-readable matrix for Productions,
Team Projects, Frame.io, Media Intelligence, Generative Extend, Object Mask,
caption translation, Speech-to-Text, Enhance Speech, and Remix. Pass an optional
Premiere version, intended backend, confirmed entitlements, and network state to
evaluate prerequisites without conflating them with API availability. It
distinguishes documented APIs from entitlements, network prerequisites, separate
service APIs, and user-assisted operations without using menu automation or
private APIs.
The report tool itself is local: it does not contact Premiere and is callable through the current MCP server. Each feature entry separately reports whether its operations are callable through the production CEP transport. Productions reports only static backend/version eligibility until a UXP host performs live capability negotiation.
The MCP server can accept a local UXP panel connection and invoke the UXP commands that are currently implemented:
PREMIERE_UXP_TOKEN="replace-with-a-long-random-secret" premiere-pro-mcp
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.
When enabled, MCP discovery includes get_uxp_capabilities, get_uxp_state, inspect_project_uxp, save_project_uxp, create_sequence_with_preset_uxp, export_interchange_uxp, get_transcript_languages_uxp, get_clip_transcript_uxp, search_clip_transcript_uxp, preview_transcript_edit_uxp, detect_object_masks_uxp, configure_encoder_uxp, export_frame_uxp, rename_track_uxp, create_subclip_uxp, list_markers_uxp, set_source_monitor_position_uxp, has_transcript_uxp, and export_aaf_uxp. 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.
Native transcript editing starts with a read-only, revision-locked planning flow. Use
get_clip_transcript_uxp to export the transcript Premiere generated for a source
clip, select source-time ranges from that JSON, and pass its SHA-256 revision to
preview_transcript_edit_uxp. The preview sorts and merges ranges and returns a
confirmation token without changing the timeline. Premiere does not expose a
documented operation that directly turns deleted transcript text into timeline cuts,
so automatic application remains withheld until the source-to-sequence mapping and
documented reconstruction path pass live-host validation. search_clip_transcript_uxp
provides read-only discovery without substituting an external transcription engine.
Premiere 26.2-26.3 hosts also expose documented UXP workflows for revisioned project inspection, verified project saves, preset-based sequence creation, OTIO/FCP XML interchange, transcript-language discovery, Object Mask detection, Adobe Media Encoder control, track renaming, subclip creation, stable marker inspection, Source Monitor positioning, and clip transcript detection. Mutations accept optional idempotency keys and return explicit verification outcomes. See the Adobe UXP 26.3 coverage matrix and the UXP capability foundation for the command matrix and live-host validation boundary.
Local (stdio):
โโโโโโโโโโโโโโโโโ stdio (MCP) โโโโโโโโโโโโโโโโ File-based IPC โโโโโโโโโโโโโโโโโ
โ AI Client โ โโโโโโโโโโโโโโโโบ โ MCP Server โ โโโโโโโโโโโโโโโโโโบ โ CEP Plugin โ
โ (Claude, โ โ (Node.js / โ .jsx commands โ (runs inside โ
โ Windsurf, โ โ TypeScript) โ .json responses โ Premiere) โ
โ Cursor, โ โโโโโโโโโโโโโโโโ โโโโโโโโฌโโโโโโโโโ
โ Copilot) โ โ
โโโโโโโโโโโโโโโโโ โ evalScript()
โผ
โโโโโโโโโโโโโโโโโ
โ Premiere Pro โ
โ ExtendScript โ
โ + QE DOM โ
โโโโโโโโโโโโโโโโโ
Remote (HTTP/SSE โ Fly.io):
โโโโโโโโโโโโโโโโโ HTTP+SSE (MCP) โโโโโโโโโโโโโโโโโโโโโโโ File-based IPC โโโโโโโโโโโโโโโโ
โ AI Client โ โโโโโโโโโโโโโโโโบ โ MCP Server โ โโโโโโโโโโโโโโโโโโบ โ CEP Plugin โ
โ (any MCP โ โ premiere-pro-mcp โ .jsx / .json โ (Premiere) โ
โ client) โ โ .fly.dev โ shared volume โโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ
add_to_timeline).jsx command file in a shared temp directoryCSInterface.evalScript()The file-based IPC bridge is simple, reliable, and works across macOS and Windows without network sockets.
| Tool | Description |
|---|---|
get_project_info | Current project name, path, sequences, items |
get_active_sequence | Detailed active sequence with all clips |
list_project_items | All items in the project panel |
get_full_project_overview | Comprehensive snapshot: bin tree, sequences, media types |
get_full_sequence_info | Exhaustive sequence data: tracks, clips, effects, markers |
get_full_clip_info | Everything about a clip: effects, keyframes, metadata |
get_timeline_summary | Human-readable overview: duration, coverage %, effects |
search_project_items | Filter by name, extension, offline status, color label |
get_premiere_state | Full snapshot: project, sequence, playhead, selection |
inspect_dom_object | Explore any Premiere Pro DOM object interactively |
get_advanced_feature_support | Collaboration/AI API support, prerequisites, entitlements, and user-assisted boundaries |
| Tool | Description |
|---|---|
save_project / save_project_as / open_project | File operations |
create_project / close_project | Project lifecycle |
import_media / import_folder / import_ae_comps | Import media and AE comps |
create_bin / delete_bin / rename_bin / create_smart_bin | Bin management |
import_sequences / import_fcp_xml | Import from other projects |
create_bars_and_tone | Generate bars & tone media |
set_scratch_disk_path | Configure scratch disks |
consolidate_and_transfer | Project Manager consolidation |
| Tool | Description |
|---|---|
add_to_timeline / overwrite_clip | Insert and overwrite edits |
ripple_delete | Remove clip and close gap (QE) |
roll_edit / slide_edit / slip_edit | Professional trim modes (QE) |
move_clip_to_track | Move between tracks (QE) |
set_clip_speed_qe / reverse_clip | Speed/reverse (QE) |
split_clip / trim_clip / move_clip | Basic edits |
set_clip_properties | Opacity, scale, rotation, position |
link_selection / unlink_selection | Link/unlink A/V |
Premiere Pro 26.3 compatibility: some installations silently ignore QE structural edits (
ripple_delete, razor/split) and existing effect-parameter writes. These tools now verify the resulting sequence state and return an error instead of a false success. For structural edits, rebuild the wanted source ranges into a new sequence withcreate_sequenceandadd_to_timeline. Native transitions are unavailable when the host does not exposeqeTrack.addTransition; overlay clips remain a workaround for transitions that do not need to blend adjacent source frames. See issue #21.
| Tool | Description |
|---|---|
apply_effect / apply_audio_effect | Apply by name (QE) |
remove_effect / remove_all_effects | Remove effects |
color_correct | Lumetri: exposure, contrast, temperature, etc. |
apply_lut | Apply LUT files |
stabilize_clip | Warp Stabilizer with configurable settings |
| Tool | Description |
|---|---|
add_keyframe / get_keyframes | Create and read keyframes |
remove_keyframe / remove_keyframe_range | Delete keyframes |
set_keyframe_interpolation | Linear / Hold / Bezier |
get_value_at_time | Query interpolated value at any time |
set_color_value | Set color properties on effects |
| Tool | Description |
|---|---|
export_sequence | Export via Adobe Media Encoder |
validate_export_preset | Validate an .epr file and resolve its output extension in Premiere |
verify_delivery_file | Verify output size and calculate SHA-256/SHA-512 checksums |
capture_frame | Export frame as PNG, return as base64 image |
export_as_fcp_xml / export_aaf / export_omf | Interchange formats |
encode_project_item / encode_file | Direct encoding |
start_batch_encode | Start render queue |
Premiere's documented automation surfaces do not currently expose OTIO or EDL
interchange, Render and Replace, cloud publishing, or Content Credentials export
configuration. get_capabilities reports these delivery gaps explicitly rather
than presenting UI-only operations as available tools.
| Tool | Description |
|---|---|
open_in_source / close_source_monitor | Source monitor control |
insert_from_source / overwrite_from_source | 3-point editing |
play_timeline / stop_playback | Playback control (QE) |
play_source_monitor | Play in source monitor |
| Tool | Description |
|---|---|
select_clips_by_name / select_clips_in_range | Smart selection |
copy_effects_between_clips | Copy effects via QE |
batch_apply_effect | Apply effect to multiple clips |
set_blend_mode | 27 blend modes |
| Tool | Description |
|---|---|
set_offline / has_proxy / detach_proxy | Offline/proxy management |
set_override_frame_rate | Override FPS |
set_scale_to_frame_size | Auto-scale to sequence frame |
get_xmp_metadata / set_xmp_metadata | Raw XMP access |
get_color_space | Color space info |
| Tool | Description |
|---|---|
create_sequence / create_sequence_from_preset | Create sequences from .sqpreset files without opening Premiere's modal dialog |
duplicate_sequence / delete_sequence | Manage sequences |
auto_reframe_sequence | Auto-reframe for social media |
attach_custom_property | FCP XML custom properties |
unnest_sequence | Replace nested sequence with its clips |
| Tool | Description |
|---|---|
get_workspaces / set_workspace | Switch workspace layouts |
create_caption_track | Create caption/subtitle tracks |
| Tool | Description |
|---|---|
execute_extendscript | Run arbitrary ExtendScript (ES3); requires explicit unsafe-script authority |
evaluate_expression | Evaluate a one-line expression; requires explicit unsafe-script authority |
Track targeting, batch operations, markers, audio levels, motion/transform, metadata, sequence settings, navigation, project analysis, and more. Run get_project_info to get started โ the AI will discover what it needs.
The server exposes three LLM context resources and four workflow prompts:
| Resource URI | Description |
|---|---|
config://premiere-instructions | Best practices: workflow order, timeline rules, effect tips, error handling |
config://extendscript-reference | Complete ExtendScript API reference for writing custom scripts |
config://premiere-workflows | Machine-readable catalog for rough cuts, dialogue cleanup, captions, and delivery |
These are automatically available to MCP clients that support resources, giving the AI deep context about how to drive Premiere Pro effectively.
The server includes an HTTP/SSE transport (src/http-server.ts) for remote access via mcp-remote or any MCP client that supports Streamable HTTP.
A live instance is running at https://premiere-pro-mcp.fly.dev.
{
"mcpServers": {
"premiere-pro": {
"command": "npx",
"args": ["mcp-remote", "https://premiere-pro-mcp.fly.dev/mcp"]
}
}
}
# Clone and deploy your own instance
git clone https://github.com/leancoderkavy/premiere-pro-mcp.git
cd premiere-pro-mcp
fly apps create your-app-name
# Required: add bearer token auth
fly secrets set MCP_AUTH_TOKEN=your-secret-token
fly deploy --remote-only
Then connect with:
{
"mcpServers": {
"premiere-pro": {
"command": "npx",
"args": ["mcp-remote", "https://your-app-name.fly.dev/mcp",
"--header", "Authorization: Bearer your-secret-token"]
}
}
}
Note: The file bridge still requires the CEP plugin to share the same
PREMIERE_TEMP_DIR. For cloud deployments this means running a sync agent or usingfly proxy/ WireGuard to reach your local machine.detect_silencecan analyze only media paths available inside the server filesystem; a desktop-only path is not automatically available to a remote Fly machine.
| Variable | Description | Default |
|---|---|---|
PREMIERE_TEMP_DIR | Shared temp directory for MCP โ CEP communication | OS temp dir + /premiere-mcp-bridge |
PREMIERE_TIMEOUT_MS | Command timeout in milliseconds | 30000 |
PREMIERE_DEFAULT_SEQUENCE_PRESET | Override the auto-discovered .sqpreset used by create_sequence | auto-discovered |
PREMIERE_MCP_CAPABILITIES | Comma-separated authority profile; add unsafe-script only when raw scripting is required | inspect,edit,export,filesystem |
PREMIERE_MCP_DEBUG | Set to 1 (or true) to emit verbose server diagnostics to stderr | unset |
PORT | HTTP port (HTTP/SSE transport only) | 3000 |
MCP_AUTH_TOKEN | Bearer token required by the HTTP transport | unset |
ALLOW_UNAUTHENTICATED | Set to 1 to run HTTP without auth (unsafe; throwaway instances only) | unset |
POSTHOG_API_KEY | PostHog project token; enables privacy-safe MCP usage telemetry | unset |
POSTHOG_HOST | PostHog ingestion host | https://us.i.posthog.com |
POSTHOG_ENVIRONMENT | Environment property attached to telemetry events | production |
POSTHOG_DISTINCT_ID | Optional stable anonymous server identifier | Fly machine ID or random boot ID |
When PostHog is enabled, the server records mcp_connection_attempt,
mcp_request, and mcp_tool_call. Events contain operational fields such as
method, tool name, outcome, status code, and duration. Authentication tokens,
IP addresses, MCP arguments, project paths, media names, and tool results are
never sent. Person profiles are disabled for these events.
premiere-pro-mcp/
โโโ src/
โ โโโ index.ts # Entry point โ stdio transport setup
โ โโโ http-server.ts # Entry point โ HTTP/SSE transport (Fly.io / remote)
โ โโโ server.ts # MCP server โ registers 280 tools, filtered by authority profile
โ โโโ bridge/
โ โ โโโ file-bridge.ts # File-based IPC (write .jsx, poll .json)
โ โ โโโ script-builder.ts # ExtendScript generator with ES3 helpers
โ โโโ tools/ # 31 tool modules
โ โ โโโ discovery.ts # Project discovery and queries
โ โ โโโ recovery.ts # Read-only autosave discovery and private bridge telemetry
โ โ โโโ project.ts # Project management and import
โ โ โโโ media.ts # Media and proxy management
โ โ โโโ sequence.ts # Sequence creation and settings
โ โ โโโ timeline.ts # Timeline clip operations
โ โ โโโ effects.ts # Effect application and color correction
โ โ โโโ transitions.ts # Transition management (QE DOM)
โ โ โโโ audio.ts # Audio levels, keyframes, and ffmpeg silence analysis
โ โ โโโ av-settings.ts # Documented AV inspection, mapping, and capability boundaries
โ โ โโโ text.ts # Text overlays and MOGRTs
โ โ โโโ markers.ts # Sequence and clip markers
โ โ โโโ tracks.ts # Track add/delete/lock/visibility
โ โ โโโ playhead.ts # Playhead, work area, in/out points
โ โ โโโ metadata.ts # Metadata, XMP, color labels
โ โ โโโ export.ts # Export, frame capture, encoding
โ โ โโโ advanced.ts # QE DOM: ripple, roll, slide, slip, speed
โ โ โโโ keyframes.ts # Keyframe CRUD and interpolation
โ โ โโโ scripting.ts # Execute arbitrary ExtendScript
โ โ โโโ inspection.ts # Deep project/sequence/clip inspection
โ โ โโโ selection.ts # Clip selection utilities
โ โ โโโ clipboard.ts # Copy effects, batch operations
โ โ โโโ source-monitor.ts # Source monitor control
โ โ โโโ track-targeting.ts # Track targeting, motion, audio props
โ โ โโโ utility.ts # Batch ops, analysis, navigation
โ โ โโโ health.ts # Connectivity ping
โ โ โโโ workspace.ts # Workspace layout switching
โ โ โโโ captions.ts # Caption track creation
โ โ โโโ playback.ts # Timeline/source playback control
โ โ โโโ project-manager.ts # Project consolidation/transfer
โ โโโ resources/
โ โโโ extendscript-reference.ts # API reference for LLM context
โโโ cep-plugin/ # CEP panel that runs inside Premiere Pro
โ โโโ CSXS/manifest.xml # Extension manifest (PPRO 14.0+)
โ โโโ index.html # Panel UI
โ โโโ main.js # Bridge polling and script execution
โ โโโ host.jsx # ExtendScript entry point
โ โโโ CSInterface.js # Adobe CEP interface library
โโโ scripts/
โ โโโ install-cep.sh # macOS CEP installer (symlink + debug mode)
โ โโโ install-cep.ps1 # Windows CEP installer (copy + REG_SZ debug mode)
โโโ Dockerfile # Multi-stage Docker build for Fly.io
โโโ fly.toml # Fly.io deployment config
โโโ RESEARCH.md # API research and implementation status
โโโ CONTRIBUTING.md # Contribution guidelines
โโโ CHANGELOG.md # Version history
โโโ LICENSE # MIT License
CEP remains the production backend because it provides broad ExtendScript access and the undocumented QE DOM used for effects, ripple deletes, and advanced trims across Premiere Pro 2020โ2026. The packaged uxp-plugin is a Premiere 25.6+ preview backend for supported frame export, capability discovery, and state events. It does not silently retry failed UXP mutations through CEP.
All generated scripts use ES3 syntax (var, manual for loops, no arrow functions, no let/const) since ExtendScript is based on ECMAScript 3. The bridge writes a versioned helper library to the shared temp directory and loads it once per ExtendScript engine via $.evalFile; each command then sends only its tool-specific script.
Understand the trust model before deploying this: any client that can reach the MCP
server can control Premiere Pro. execute_extendscript and evaluate_expression are
arbitrary-code-execution tools by design and are omitted from discovery and denied at call time
by default. Enable them only by setting
PREMIERE_MCP_CAPABILITIES=inspect,edit,export,filesystem,unsafe-script.
http-server) requires MCP_AUTH_TOKEN and refuses to start
without it. It binds 0.0.0.0 and is remotely reachable, so never expose it publicly
without a strong token (set ALLOW_UNAUTHENTICATED=1 only for a throwaway public instance).0700), and the server
refuses to use one owned by another user โ relevant on shared machines, where the CEP
panel would otherwise execute any cmd_*.jsx staged there.eval(),
new Function(), and System.callSystem() in tool-generated scripts. This is a guard
rail, not a sandbox โ it is trivially bypassable and is not a security boundary. Do not
rely on it to contain untrusted input; the real boundary is who can reach the server.Many tools use the undocumented QE DOM (enabled via app.enableQE()). These tools are marked with "Uses QE DOM" in their descriptions. The QE DOM provides capabilities unavailable through the standard ExtendScript API:
defaults read com.adobe.CSXS.12 PlayerDebugMode should return 1reg query "HKCU\SOFTWARE\Adobe\CSXS.12" /v PlayerDebugMode should report REG_SZ 1 (a REG_DWORD value is not valid for unsigned CEP discovery)ls ~/Library/Application\ Support/Adobe/CEP/extensions/MCPBridgeCEPdir "%APPDATA%\Adobe\CEP\extensions\MCPBridgeCEP"premiere-pro-mcp --diagnose-cep to check installation metadata and recent Premiere logs.Version 1.3.0 and newer installs the signed artifacts/MCPBridgeCEP.zxp included in the npm
package on Windows. If diagnostics report Signature verification failed, reinstall the latest
npm version, fully quit every Premiere process, run premiere-pro-mcp --install-cep, and relaunch.
PREMIERE_TIMEOUT_MS to 60000 or higherping tool to test basic connectivitydist/index.js is absolute and correctnode dist/index.js in a terminal to check for startup errorsnpm run build completed without errorsContributions are welcome! See CONTRIBUTING.md for guidelines.
MIT โ free for personal and commercial use.
.agents/
plugins/
marketplace.json
product-marketing.md
.bk.yaml
.buildkite/
pipeline.yml
.claude-plugin/
marketplace.json
.dockerignore
.github/
copilot-instructions.md
dependabot.yml
ISSUE_TEMPLATE/
bug_report.md
feature_request.md
pull_request_template.md
workflows/
cep-release.yml
claude-desktop-bundle.yml
connector-installers.yml
copilot-setup-steps.yml
cross-platform.yml
npm-publish.yml
uxp-package.yml
.gitignore
.npmignore
cep-plugin/
.debug
CSInterface.js
CSXS/
manifest.xml
host.jsx
index.html
main.js
styles.css
updater.cjs
CHANGELOG.md
chat-plugin/
.debug
ai-providers.js
CSInterface.js
CSXS/
manifest.xml
host.jsx
index.html
main.js
styles.css
claude-desktop/
manifest.json
README.md
claude-plugins/
premiere-pro/
.claude-plugin/
plugin.json
.mcp.json
skills/
edit-premiere-project/
SKILL.md
CODE_OF_CONDUCT.md
CONTRIBUTING.md
Dockerfile
docs/
30-day-launch-plan.md
adobe-uxp-26.3-coverage.md
distribution-readiness.md
uxp-capability-foundation.md
eslint.config.mjs
fly.toml
installer/
windows/
PremiereConnectorInstaller.csproj
Program.cs
landing/
.gitignore
app/
changelog/
page.tsx
docs/
page.tsx
favicon.ico
globals.css
layout.tsx
manifest.ts
page.tsx
privacy/
page.tsx
robots.ts
sitemap.ts
components/
components.json
sections/
architecture.tsx
connect.tsx
demo-video.tsx
editing-timeline.tsx
faq.tsx
features.tsx
final-cta.tsx
footer.tsx
hero-depth-loader.tsx
hero-depth-scene.tsx
hero.tsx
install.tsx
mobile-nav.tsx
tools-marquee.tsx
ui/
animated-gradient-text.tsx
border-beam.tsx
marquee.tsx
shimmer-button.tsx
eslint.config.mjs
lib/
onboarding-events.ts
product.ts
utils.ts
next.config.ts
package-lock.json
package.json
postcss.config.mjs
public/
file.svg
globe.svg
llms-full.txt
llms.txt
next.svg
og-image.png
premiere-pro-mcp-demo-poster.png
premiere-pro-mcp-demo.mp4
vercel.svg
window.svg
README.md
scripts/
render-demo-video.mjs
tsconfig.json
video-src/
demo.html
LICENSE
package-lock.json
package.json
PERFORMANCE.md
plugins/
premiere-pro/
.codex-plugin/
plugin.json
.mcp.json
skills/
edit-premiere-project/
agents/
openai.yaml
SKILL.md
README.md
release-metadata.json
RESEARCH.md
scripts/
build-chat-dmg.sh
build-chat-zip.sh
build-claude-desktop.mjs
build-connector-installer.ps1
build-connector-installer.sh
build-signed-cep.ps1
build-uxp-ccx.mjs
copy-adobe-uxp-coverage.mjs
install-cep.ps1
install-cep.sh
install-chat-plugin.bat
install-chat-plugin.sh
publish-npm.mjs
validate-distribution.mjs
SECURITY.md
src/
advanced-feature-support.ts
bridge/
file-bridge.ts
script-builder.ts
uxp-websocket-bridge.ts
diagnostics.ts
http-security.ts
http-server.ts
index.ts
platform-capabilities.ts
resources/
adobe-uxp-coverage.json
extendscript-reference.ts
security/
audit.ts
capabilities.ts
index.ts
server.ts
telemetry.ts
tool-capability-report.ts
tools/
advanced.ts
audio.ts
av-settings.ts
captions.ts
clipboard.ts
discovery.ts
edit-plans.ts
effects.ts
export.ts
health.ts
inspection.ts
keyframes.ts
markers.ts
media.ts
metadata.ts
playback.ts
playhead.ts
project-manager.ts
project.ts
recovery.ts
scripting.ts
selection.ts
sequence.ts
source-monitor.ts
text.ts
timeline.ts
track-targeting.ts
tracks.ts
transcript-edits.ts
transitions.ts
utility.ts
uxp.ts
workspace.ts
workflows/
catalog.ts
tool-metadata.ts
tests/
adobe-uxp-coverage.test.ts
advanced-feature-support.test.ts
bridge/
file-bridge.test.ts
script-builder.test.ts
cep-install.test.ts
cep-updater.test.ts
codex-plugin.test.ts
connector-installers.test.ts
diagnostics.test.ts
docker-build-context.test.ts
edit-plans.test.ts
http-security.test.ts
index.test.ts
mcp-modernization.test.ts
release-metadata.test.ts
schema-conversion.test.ts
security-capabilities.test.ts
server.test.ts
tools/
adobe-26-3-uxp-catalog.test.ts
av-settings.test.ts
delivery.test.ts
detect-silence.test.ts
recovery.test.ts
regressions.test.ts
structural-verification.test.ts
tool-modules.test.ts
transcript-edits.test.ts
uxp-tools.test.ts
uxp/
adobe-26-3-commands.test.ts
adobe-26-3-uxp-commands.test.ts
commands.test.ts
protocol.test.ts
transcript.test.ts
transport.test.ts
tsconfig.json
uxp-plugin/
commands.cjs
DISTRIBUTION.md
index.cjs
index.html
manifest.json
protocol.cjs
README.md
transcript.cjs
uxp-spike/
index.html
index.js
manifest.json
README.md
server.mjs
vitest.config.tsFAQ
premiere-pro-mcp is a Claude Code plugin with 2 hand-picked skills for automation work, indexed on Flowy. Install it with the command on its page. It includes edit-premiere-project, edit-premiere-project. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.