Develop Premiere Pro MCP
Make focused, evidence-backed changes to this TypeScript MCP server. Preserve unrelated worktree changes and distinguish automated verification from behavior proven in a live Premiere Pro host.
Orient to the repository
- Read
AGENTS.mdfirst, thenREADME.md,SECURITY.md,CONTRIBUTING.md, andRESEARCH.mdonly as needed for the task. Treat current source and release metadata as authoritative over dated snapshots. - Inspect
git statusbefore editing. Do not stage, rewrite, or remove unrelated work. - Trace the relevant path before changing it:
src/server.tsassembles the MCP surface.src/tools/contains tool schemas and handlers.src/bridge/implements host communication.cep-plugin/is the broad production bridge.uxp-plugin/is capability-aware and supports only its declared Premiere APIs.
- Use Node.js 24 for development when available; preserve the package's Node 20.19+
runtime floor. Install deterministically with
npm ciwhen dependencies are missing.
Implement safely
- Reuse nearby helpers and module patterns before adding abstractions or dependencies.
- Keep tool schemas, descriptions, registrations, structured results, authority profiles, tests, documentation, generated catalogs, and reported counts synchronized.
- Generate ExtendScript as ECMAScript 3: use
var, traditional functions and loops, and avoid arrows,let,const, template literals, and other modern runtime syntax. - Escape every user-controlled string with existing helpers before embedding it in a generated script. Never interpolate raw paths, names, expressions, or prompts.
- Keep raw scripting disabled unless the explicit
unsafe-scriptcapability is enabled. - Prefer documented Premiere APIs. Label QE DOM behavior experimental.
- Verify mutation postconditions. Do not treat a host API return value alone as proof of success, and do not silently fall back from failed UXP work to CEP or QE.
- Premiere metadata is several documented surfaces, not one blob: Project-panel
column JSON (
getProjectColumnsMetadata), Premiere-private project metadata XML, file/clip XMP, panel-layout/schema XML, plus adjacent color-label, interpretation, marker, and transcript tools. Documentedppro.Metadata.*methods are already mapped. Do not wrap undocumented QE metadata, dump unbounded packets, or treatpremiere://project/metadataas XMP. Field-level inspect/update is bounded (uxp.XMPMeta/ AdobeXMPScript, 256 fields, sensitive EXIF omitted by default, field readback). CEP still accepts a complete XML payload plusupdatedFields. Adobe exposes no field-level schema enumerator. Keep C2PA as beta until a stable host pin exists. When adding metadata behavior, updatesrc/workflows/agent-instructions.ts, the workflow catalog prompt, and bothedit-premiere-projectskill copies together. - Preserve private-directory ownership checks, authentication, size limits, secret handling, and telemetry privacy. Never collect prompts, arguments, results, tokens, IP addresses, project paths, media names, or person profiles.
Test proportionally
- Add or update tests for behavior, failure paths, validation, escaping, authorization, registration, and metadata affected by the change.
- Run the narrowest relevant tests while iterating.
- Run
npm run checkbefore completion. Runnpm run test:coveragewhen changing coverage-sensitive behavior. - Inspect the final diff and status so generated output or unrelated files are not included accidentally.
- Treat build, unit tests, mocks, and CI as package evidence only. Require a supported Premiere host and the applicable running CEP or UXP bridge for live-host claims.
Handle releases and compatibility claims
- Follow
docs/release-conventions.md: GitHub release titles equal their Git tags, exactlyv<SemVer>(for example,v1.19.0orv1.20.0-rc.1). Put summaries in release bodies; omitvin package and manifest versions. Preserve the README### Latest release:heading and existing changelog heading format. - Use
scripts/normalize-release-names.mjsto preview title drift,--checkto fail on drift, and--applyfor authorized repairs with GitHub readback. Historical cleanup edits display titles only; never retag or republish existing versions. A naming task does not authorize a new publication. - Search all version-bearing package, lock, manifest, marketplace, MCP configuration, updater, and installation files when changing a version.
- After an npm release is verified, update the README
### Latest release:heading, README install commands, both plugin.mcp.jsonpins, and bothedit-premiere-projectskill pins together;tests/release-metadata.test.tsandtests/codex-plugin.test.tsguard them. - The website lives in
leancoderkavy/premiere-pro-mcp-siteand syncs published npm facts automatically. Do not edit site facts from this repository. - Verify the exact commit, checks, registry artifact, release assets, deployment health, and host state separately when the task includes those outcomes.
- Never claim a commit, push, merge, publication, deployment, or live Premiere result without direct evidence from that layer.
- Report what changed, exact checks run, failures or skipped checks, and whether live CEP or UXP verification was performed.