premiere-pro-mcp 1.3.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -6,6 +6,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.3.1] - 2026-07-25
10
+
11
+ ### Fixed
12
+
13
+ - Fixed `set_sequence_frame_rate` to convert frames per second into Premiere's required
14
+ ticks-per-frame `Time` value and verify the applied setting instead of assigning a numeric frame
15
+ period that could corrupt the sequence timebase. ([#37](https://github.com/leancoderkavy/premiere-pro-mcp/issues/37))
16
+
9
17
  ## [1.3.0] - 2026-07-25
10
18
 
11
19
  ### Added
package/README.md CHANGED
@@ -27,10 +27,12 @@ An [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that l
27
27
 
28
28
  The AI handles the entire workflow through 269 tools spanning the supported ExtendScript, QE DOM, and safe edit-planning surfaces.
29
29
 
30
- ### What's new in 1.3.0
30
+ ### What's new in 1.3.1
31
31
 
32
32
  - Windows npm releases now include a verified, signed CEP ZXP and install it automatically, covering
33
33
  hosts that reject the raw development bundle even when `PlayerDebugMode` is enabled.
34
+ - `set_sequence_frame_rate` now converts frames per second to Premiere ticks per frame and verifies
35
+ the applied setting instead of assigning a numeric frame period.
34
36
  - `premiere-pro-mcp --diagnose-cep` checks the installed manifest, debug-key types, and recent
35
37
  Premiere signature failures.
36
38
  - TypeScript 7, Vitest 4, Zod 4, MCP SDK 1.29, Next.js 16.2, and patched transitive dependencies
Binary file
@@ -1,8 +1,8 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <ExtensionManifest Version="7.0" ExtensionBundleId="com.mcp.premiere.bridge" ExtensionBundleVersion="1.3.0" ExtensionBundleName="MCP Bridge">
2
+ <ExtensionManifest Version="7.0" ExtensionBundleId="com.mcp.premiere.bridge" ExtensionBundleVersion="1.3.1" ExtensionBundleName="MCP Bridge">
3
3
  <ExtensionList>
4
- <Extension Id="com.mcp.premiere.bridge.panel" Version="1.3.0"/>
5
- <Extension Id="com.mcp.premiere.bridge.headless" Version="1.3.0"/>
4
+ <Extension Id="com.mcp.premiere.bridge.panel" Version="1.3.1"/>
5
+ <Extension Id="com.mcp.premiere.bridge.headless" Version="1.3.1"/>
6
6
  </ExtensionList>
7
7
  <ExecutionEnvironment>
8
8
  <HostList>
@@ -104,6 +104,8 @@ export declare function getUtilityTools(bridgeOptions: BridgeOptions): {
104
104
  properties: {
105
105
  frame_rate: {
106
106
  type: string;
107
+ minimum: number;
108
+ maximum: number;
107
109
  description: string;
108
110
  };
109
111
  };
@@ -210,12 +210,20 @@ export function getUtilityTools(bridgeOptions) {
210
210
  properties: {
211
211
  frame_rate: {
212
212
  type: "number",
213
+ minimum: 1,
214
+ maximum: 240,
213
215
  description: "New frame rate (e.g., 23.976, 24, 25, 29.97, 30, 50, 59.94, 60)",
214
216
  },
215
217
  },
216
218
  required: ["frame_rate"],
217
219
  },
218
220
  handler: async (args) => {
221
+ if (!Number.isFinite(args.frame_rate) || args.frame_rate < 1 || args.frame_rate > 240) {
222
+ return {
223
+ success: false,
224
+ error: "frame_rate must be a finite value between 1 and 240 fps",
225
+ };
226
+ }
219
227
  const script = buildToolScript(`
220
228
  var seq = app.project.activeSequence;
221
229
  if (!seq) return __error("No active sequence");
@@ -223,10 +231,30 @@ export function getUtilityTools(bridgeOptions) {
223
231
  var settings = seq.getSettings();
224
232
  if (!settings) return __error("Could not get sequence settings");
225
233
 
226
- settings.videoFrameRate = ${args.frame_rate};
234
+ var requestedFps = ${args.frame_rate};
235
+ var requestedTicks = Math.round(TICKS_PER_SECOND / requestedFps);
236
+ var frameDuration = new Time();
237
+ frameDuration.ticks = requestedTicks.toString();
238
+ settings.videoFrameRate = frameDuration;
227
239
  seq.setSettings(settings);
228
240
 
229
- return __result({ frameRate: ${args.frame_rate}, sequence: seq.name });
241
+ var applied = seq.getSettings();
242
+ if (!applied || !applied.videoFrameRate) {
243
+ return __error("Premiere did not return the updated sequence frame rate");
244
+ }
245
+ var appliedTicks = parseFloat(applied.videoFrameRate.ticks);
246
+ if (!isFinite(appliedTicks) || Math.abs(appliedTicks - requestedTicks) > 1) {
247
+ return __error(
248
+ "Premiere did not apply the requested frame rate: expected " +
249
+ requestedTicks + " ticks/frame, got " + appliedTicks
250
+ );
251
+ }
252
+
253
+ return __result({
254
+ frameRate: requestedFps,
255
+ ticksPerFrame: requestedTicks.toString(),
256
+ sequence: seq.name
257
+ });
230
258
  `);
231
259
  return sendCommand(script, bridgeOptions);
232
260
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "premiere-pro-mcp",
3
- "version": "1.3.0",
3
+ "version": "1.3.1",
4
4
  "description": "Adobe Premiere Pro MCP server with 269 AI video editing tools for timeline automation, effects, media management, and export.",
5
5
  "main": "dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -2,7 +2,7 @@
2
2
  "manifestVersion": 5,
3
3
  "id": "com.ppmcp.premiere.uxp",
4
4
  "name": "Premiere Pro MCP Bridge",
5
- "version": "1.3.0",
5
+ "version": "1.3.1",
6
6
  "main": "index.html",
7
7
  "host": { "app": "premierepro", "minVersion": "25.6.0" },
8
8
  "entrypoints": [