premiere-pro-mcp 1.9.0 → 1.9.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,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.9.1] - 2026-08-02
10
+
11
+ ### Security
12
+
13
+ - Added a production HTTP header baseline for the landing site, health route,
14
+ and remote MCP responses: CSP, HSTS, MIME sniffing protection, frame denial,
15
+ referrer and permissions policies, and cross-origin opener isolation.
16
+ - Restricted the browser connection policy to the application, configured
17
+ analytics endpoints, and the bounded PostHog host.
18
+
9
19
  ## [1.9.0] - 2026-08-02
10
20
 
11
21
  ### Added
package/README.md CHANGED
@@ -29,7 +29,13 @@ An [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that l
29
29
 
30
30
  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.
31
31
 
32
- ### What's new in 1.9.0
32
+ ### What's new in 1.9.1
33
+
34
+ - **Production browser hardening:** every HTTP response now includes CSP, HSTS,
35
+ MIME sniffing protection, frame denial, bounded permissions, and explicit
36
+ referrer and cross-origin policies.
37
+
38
+ ### Previous release: 1.9.0
33
39
 
34
40
  - **Assistant-first setup:** Claude Desktop users start with a validated MCPB
35
41
  bundle, while npm and manual JSON configuration stay under Advanced setup.
@@ -73,9 +79,9 @@ The AI handles the entire workflow through 280 core tools spanning the supported
73
79
 
74
80
  ### Easiest supported path: Claude Desktop
75
81
 
76
- 1. Download the current [Claude Desktop bundle (`.mcpb`)](https://github.com/leancoderkavy/premiere-pro-mcp/releases/download/v1.9.0/premiere-pro-mcp-1.9.0.mcpb).
82
+ 1. Download the current [Claude Desktop bundle (`.mcpb`)](https://github.com/leancoderkavy/premiere-pro-mcp/releases/download/v1.9.1/premiere-pro-mcp-1.9.1.mcpb).
77
83
  2. In Claude Desktop, open **Settings > Extensions > Advanced settings > Install Extension**, select the downloaded bundle, and restart Claude Desktop.
78
- 3. Download the separate [signed Premiere connector (`.zxp`)](https://github.com/leancoderkavy/premiere-pro-mcp/releases/download/v1.9.0/MCPBridgeCEP.zxp). Open it with your trusted ZXP installer. If your computer has no ZXP installer, use the npm connector installer in **Advanced setup** below.
84
+ 3. Download the separate [signed Premiere connector (`.zxp`)](https://github.com/leancoderkavy/premiere-pro-mcp/releases/download/v1.9.1/MCPBridgeCEP.zxp). Open it with your trusted ZXP installer. If your computer has no ZXP installer, use the npm connector installer in **Advanced setup** below.
79
85
  4. Restart Premiere, open a project, then open **Window > Extensions > MCP Bridge**.
80
86
  5. In Claude, enter: `Safely check my Premiere connection with verify_premiere_connection. Make no changes.`
81
87
 
@@ -299,11 +305,11 @@ From a clone of this repository:
299
305
  ```bash
300
306
  codex plugin marketplace add .
301
307
  codex plugin add premiere-pro@premiere-pro-mcp
302
- npx -y premiere-pro-mcp@1.9.0 --install-cep
308
+ npx -y premiere-pro-mcp@1.9.1 --install-cep
303
309
  ```
304
310
 
305
311
  Restart Premiere Pro and start a new Codex session after installation. The plugin
306
- launches `premiere-pro-mcp@1.9.0` through `npx`; the separate CEP installation is
312
+ launches `premiere-pro-mcp@1.9.1` through `npx`; the separate CEP installation is
307
313
  required because the MCP server communicates with the running Premiere host through
308
314
  the local bridge.
309
315
 
@@ -323,7 +329,7 @@ For Claude Code, add this repository as a marketplace and install the plugin:
323
329
  Then install the Premiere bridge and start a new Claude Code session:
324
330
 
325
331
  ```bash
326
- npx -y premiere-pro-mcp@1.9.0 --install-cep
332
+ npx -y premiere-pro-mcp@1.9.1 --install-cep
327
333
  ```
328
334
 
329
335
  The Claude Code package lives in
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.9.0" ExtensionBundleName="MCP Bridge">
2
+ <ExtensionManifest Version="7.0" ExtensionBundleId="com.mcp.premiere.bridge" ExtensionBundleVersion="1.9.1" ExtensionBundleName="MCP Bridge">
3
3
  <ExtensionList>
4
- <Extension Id="com.mcp.premiere.bridge.panel" Version="1.9.0"/>
5
- <Extension Id="com.mcp.premiere.bridge.headless" Version="1.9.0"/>
4
+ <Extension Id="com.mcp.premiere.bridge.panel" Version="1.9.1"/>
5
+ <Extension Id="com.mcp.premiere.bridge.headless" Version="1.9.1"/>
6
6
  </ExtensionList>
7
7
  <ExecutionEnvironment>
8
8
  <HostList>
@@ -81,7 +81,7 @@
81
81
  <section class="update-section" aria-live="polite">
82
82
  <div class="update-copy">
83
83
  <span class="section-label">Connector updates</span>
84
- <strong id="updateTitle">Version 1.9.0</strong>
84
+ <strong id="updateTitle">Version 1.9.1</strong>
85
85
  <span id="updateDetail">Checking for updates…</span>
86
86
  </div>
87
87
  <button id="btnUpdate" class="button button-update" onclick="handleUpdateClick()" type="button" disabled>
@@ -7,7 +7,7 @@
7
7
  })(this, function () {
8
8
  "use strict";
9
9
 
10
- var CURRENT_VERSION = "1.9.0";
10
+ var CURRENT_VERSION = "1.9.1";
11
11
  var LATEST_RELEASE_API =
12
12
  "https://api.github.com/repos/leancoderkavy/premiere-pro-mcp/releases/latest";
13
13
  var RELEASES_URL =
@@ -0,0 +1,12 @@
1
+ import type http from "node:http";
2
+ export declare const HTTP_SECURITY_HEADERS: Readonly<{
3
+ "Content-Security-Policy": string;
4
+ "Strict-Transport-Security": "max-age=31536000; includeSubDomains";
5
+ "X-Content-Type-Options": "nosniff";
6
+ "X-Frame-Options": "DENY";
7
+ "Referrer-Policy": "strict-origin-when-cross-origin";
8
+ "Permissions-Policy": "camera=(), microphone=(), geolocation=()";
9
+ "Cross-Origin-Opener-Policy": "same-origin";
10
+ }>;
11
+ export declare function applyHttpSecurityHeaders(res: http.ServerResponse): void;
12
+ //# sourceMappingURL=http-security.d.ts.map
@@ -0,0 +1,28 @@
1
+ export const HTTP_SECURITY_HEADERS = Object.freeze({
2
+ "Content-Security-Policy": [
3
+ "default-src 'self'",
4
+ "base-uri 'self'",
5
+ "frame-ancestors 'none'",
6
+ "object-src 'none'",
7
+ "form-action 'self'",
8
+ "img-src 'self' data: https:",
9
+ "media-src 'self'",
10
+ "font-src 'self'",
11
+ "style-src 'self' 'unsafe-inline'",
12
+ "script-src 'self' 'unsafe-inline' https://www.googletagmanager.com",
13
+ "connect-src 'self' https://www.google-analytics.com https://www.googletagmanager.com https://us.i.posthog.com https://*.posthog.com",
14
+ "upgrade-insecure-requests",
15
+ ].join("; "),
16
+ "Strict-Transport-Security": "max-age=31536000; includeSubDomains",
17
+ "X-Content-Type-Options": "nosniff",
18
+ "X-Frame-Options": "DENY",
19
+ "Referrer-Policy": "strict-origin-when-cross-origin",
20
+ "Permissions-Policy": "camera=(), microphone=(), geolocation=()",
21
+ "Cross-Origin-Opener-Policy": "same-origin",
22
+ });
23
+ export function applyHttpSecurityHeaders(res) {
24
+ for (const [name, value] of Object.entries(HTTP_SECURITY_HEADERS)) {
25
+ res.setHeader(name, value);
26
+ }
27
+ }
28
+ //# sourceMappingURL=http-security.js.map
@@ -29,6 +29,7 @@ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/
29
29
  import { createServer } from "./server.js";
30
30
  import { cleanupTempDir, getTempDir } from "./bridge/file-bridge.js";
31
31
  import { getTelemetry } from "./telemetry.js";
32
+ import { applyHttpSecurityHeaders } from "./http-security.js";
32
33
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
33
34
  const LANDING_DIR = path.resolve(__dirname, "../landing-dist");
34
35
  const MIME = {
@@ -106,6 +107,7 @@ console.error(`[premiere-pro-mcp] Temp directory: ${tempDir}`);
106
107
  cleanupTempDir(bridgeOptions);
107
108
  // Each request gets its own transport+server instance (stateless per-request model)
108
109
  const httpServer = http.createServer(async (req, res) => {
110
+ applyHttpSecurityHeaders(res);
109
111
  // Health check
110
112
  if (req.method === "GET" && req.url === "/health") {
111
113
  res.writeHead(200, { "Content-Type": "application/json" });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "premiere-pro-mcp",
3
- "version": "1.9.0",
3
+ "version": "1.9.1",
4
4
  "description": "Adobe Premiere Pro MCP server with 280 core AI video editing tools and a capability-aware UXP bridge for supported Premiere workflows.",
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.9.0",
5
+ "version": "1.9.1",
6
6
  "main": "index.html",
7
7
  "host": { "app": "premierepro", "minVersion": "25.6.0" },
8
8
  "entrypoints": [