adobe-premiere-cc-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pingA | Check that Premiere is running and the bridge panel is alive. Returns the Premiere version, project name and active sequence. Call this before anything else. |
| get_timelineA | Full picture of the active sequence: resolution, frame rate, duration, and every clip on every track with its node ID, timing, effects and Motion scale. The best first call before editing anything. |
| get_clipA | Everything about one clip: timing, in-point, and every effect with all of its property values and keyframe state. Read this before changing a clip so you know what you are overwriting. |
| list_sequencesA | List every sequence in the project and say which one is active. |
| set_active_sequenceA | Make a sequence the active one, so every other tool operates on it. Match by name or sequence ID. |
| create_sequence_from_itemsA | Create a new sequence built from one or more project items, and confirm it exists. Premiere derives the settings from the first item, so this needs no preset and opens no dialog. Useful for making a scratch sequence to experiment in. |
| check_editA | Inspect the whole sequence and report the problems that quietly ruin an edit: clips scaled above 100 percent, stabilisers that were never analysed, audio above unity or with keyframes that spike, disabled clips, gaps on the main video track, muted tracks, and clips missing a grade while their neighbours have one. Read only, so it is always safe to run. |
| contact_sheetA | Export one still per clip on a video track, taken from the middle of each clip, and return the file paths. Read the images afterwards to judge a grade across the whole edit at once instead of one frame at a time. Slow, since every frame is a real render. |
| get_gradeA | Read the Lumetri Basic Correction values of every graded clip in one call, so a grade can be compared across shots without inspecting clips one at a time. |
| get_playheadB | Current playhead position in the active sequence, in seconds and as timecode. |
| set_playheadA | Move the playhead to a time in seconds and read the position back. Useful before export_frame, since that captures wherever the playhead lands. |
| set_track_stateA | Mute or unmute a video or audio track and read the state back. Muting a video track hides it from the program monitor and from exports. |
| list_markersA | List every marker on the active sequence with its time, name and comment. |
| add_markerA | Add a marker to the active sequence at a given time, then confirm it exists. Handy for noting beats, cut points or review comments. |
| delete_markerA | Delete the marker nearest a given time, within a small tolerance, and report how many remain. Deleting cannot be undone from here, so check list_markers first. |
| list_project_itemsA | List the project panel contents: bins and media, with the node ID of each. Use this to find footage before adding it to a timeline. |
| import_mediaA | Import one or more media files into the project panel and confirm the item count grew. Paths must be absolute. |
| create_binA | Create a bin in the project panel and confirm it exists. |
| set_clip_enabledA | Enable or disable a clip. A disabled clip stays on the timeline but is skipped in playback and export, which makes it a safe way to try removing a shot. |
| split_clipA | Cut every clip on a track at the given time, the same as the razor tool. Returns the new clip count so you can confirm the cut landed. |
| remove_clipA | Remove a clip from the timeline. Ripple closes the gap and shifts everything after it; lift leaves a gap. Destructive, so confirm the node ID with get_timeline first. |
| add_to_timelineA | Place a project item onto a track at a given time and confirm the clip count grew. Overwrite replaces whatever is already there; insert pushes later clips further down the track. Use list_project_items to get the item ID. |
| move_clipA | Move a clip to a new start time on its own track and confirm it landed. The move fails if another clip already occupies the destination. |
| set_clip_speedA | Change a clip's playback speed. 100 is normal, 50 is half speed and twice as long, 200 is double speed. Confirms the new duration. |
| trim_clipA | Trim a clip's start or end on the timeline and confirm the new duration. Trimming the end shortens the tail; trimming the start moves the head later, leaving a gap. |
| set_scaleA | Set a clip's Motion scale and read it back to confirm. 100 means native pixels. Check the source resolution first: scaling above 100 on footage that already matches the sequence frame throws away real detail and cannot be recovered on export. |
| grade_clipsA | Apply the same Lumetri Basic Correction to a group of clips in one pass, then read every value back. Grade shot groups that share a lighting condition together; a single correction across mixed lighting is what makes an edit look amateur. Reports per clip, so one failure does not hide the rest. |
| set_lumetriA | Set Lumetri Basic Correction values on a clip and read them back. Only the fields you pass change. The clip needs a Lumetri Color effect already; add one with apply_effect. Note that the creative Look itself cannot be set by script, only its intensity. |
| set_audio_levelA | Set a clip's audio level in decibels and read it back. 0 dB is unity and the practical ceiling; dialogue usually sits near -14 dB with a music bed under it around -26 dB. Any existing volume keyframes on the clip are cleared first, since they would otherwise override the level. |
| set_fadeA | Put a clean fade in and/or out on a clip: Opacity for video, Volume for audio. Existing keyframes on that property are cleared first, because new keys interleave with old ones rather than replacing them, which is how envelopes end up spiking to full. Also handles the source-time offset that makes naive keyframes on stills and graphics silently never fire. |
| list_effectsA | List every video or audio effect name Premiere can apply. Use this to get exact names for apply_effect. |
| apply_effectA | Add a video or audio effect to a clip by name and confirm it attached. Use list_effects for exact names. |
| list_transitionsA | List every video transition name Premiere can apply, for use with add_transition. |
| add_transitionA | Add a video transition at a clip's head or tail and confirm it appeared on the track. Note that a transition needs media beyond the cut to draw from; without handles Premiere may refuse or shorten it. |
| get_stabilizer_statusA | Report Warp Stabilizer state for every clip that has it. |
| set_stabilizer_modeA | Set Warp Stabilizer to 'no_motion' (locked static frame, what static-camera edits need) or 'smooth_motion' (keeps camera movement, smoothed). Premiere will NOT re-analyse from a script, so the response tells you whether the clip still needs Analyze clicked in Effect Controls. |
| export_frameA | Write a full resolution still of the sequence at a given time. Use this to actually look at your work after a grade or a reframe, instead of trusting a tool's success flag. |
| list_export_presetsA | List Adobe .epr export presets on disk, including the ones Premiere ships itself. Adobe Media Encoder does not need to be installed. Pass the path of one to export_sequence. |
| export_sequenceA | Render the active sequence to a file using Premiere's own encoder; Adobe Media Encoder is not required. Long running, so raise timeout_ms for big sequences. The output file is confirmed on disk before this reports success. |
| save_projectA | Save the current project. Nothing auto-saves, so call this after a batch of edits. |
| run_scriptA | Escape hatch: run raw ExtendScript in Premiere for anything the typed tools do not cover. ES3 only (var, no arrow functions, no template literals, no JSON object). End with |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MarvelCollin/adobe-premiere-cc-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server