MCP server for Adobe Premiere Pro that lets you execute arbitrary JavaScript against the Premiere Pro UXP API.
Unlike other Premiere Pro MCPs that expose a fixed set of tools, this one exposes a single execute-script tool. The LLM generates the code on the fly, giving you the full power of the Premiere Pro API.
LLM / Claude ──MCP──▶ Node.js MCP Server ──file──▶ UXP Plugin ──eval──▶ Premiere Pro
(stdio) ~/Documents/ppro-mcp-bridge/ (UXP API)
- The MCP server writes a command (JS code) to
~/Documents/ppro-mcp-bridge/ppro_command.json - The UXP plugin polls for commands,
eval()s the script in the Premiere Pro context - Results are written to
~/Documents/ppro-mcp-bridge/ppro_result.json - The MCP server polls for and returns the result
- macOS (Windows untested)
- Adobe Premiere Pro 2025 (v25.3.0+)
- Node.js 18+
- UXP Developer Tool — install from the Creative Cloud desktop app (search "UXP Developer Tool", it's free)
cd premiere-pro-mcp
npm install- Open Adobe Premiere Pro
- Open the UXP Developer Tool (it's a separate app — install it from Creative Cloud if you haven't)
- In UXP Developer Tool, click Add Plugin and select
src/plugin/manifest.jsonfrom this repo - Click Load to load the plugin into Premiere Pro
- The MCP Bridge panel appears in Premiere Pro and should show "Ready — listening for commands"
Important: The UXP Developer Tool must stay open while using the plugin. Closing it will unload the plugin from Premiere Pro. You also need to re-load the plugin each time you restart Premiere Pro.
For Claude Code, add to ~/.claude.json (under the relevant project key or globally):
{
"mcpServers": {
"premierepro": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/premiere-pro-mcp/build/index.js"]
}
}
}For Claude Desktop, add to your Claude Desktop config file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"premierepro": {
"command": "node",
"args": ["/absolute/path/to/premiere-pro-mcp/build/index.js"]
}
}
}Then restart Claude Code / Claude Desktop so it picks up the new MCP server.
Execute JavaScript in the Premiere Pro UXP context. Scripts have access to:
app— thepremierepromodule (require("premierepro"))constants—premierepro.Constants
All Premiere Pro APIs are async — use await. Use return to send data back.
// List all sequences
const project = await app.Project.getActiveProject();
const sequences = await project.getSequences();
return sequences.map(s => ({ name: s.name, id: s.sequenceId }));// Import media
const project = await app.Project.getActiveProject();
const root = await project.getRootItem();
await project.importFiles(["/path/to/video.mp4"], true, root);
return "Done";// Export sequence
const project = await app.Project.getActiveProject();
const sequence = (await project.getSequences())[0];
const manager = await app.EncoderManager.getManager();
await manager.exportSequence(
sequence, constants.ExportType.IMMEDIATELY,
"/output/video.mp4", "/path/to/preset.epr"
);
return "Export started";Retrieve results from the last script execution (useful if execute-script times out).
Get help text with API examples and a link to the full Premiere Pro UXP API reference.
- Timed out waiting for Premiere Pro — Make sure the MCP Bridge panel is visible in Premiere Pro and shows "Ready". Check that the UXP Developer Tool is still open.
- Plugin not appearing — In UXP Developer Tool, make sure the plugin status shows "Loaded". Try clicking Load again.
- Bridge directory mismatch — The plugin logs its bridge directory path on startup. Verify it matches
~/Documents/ppro-mcp-bridge/. Ifos.homedir()is broken in your UXP build, the plugin falls back toprocess.env.HOME.
The UXP plugin uses allowCodeGenerationFromStrings: true in its manifest to enable eval(). This lets the MCP server send arbitrary JavaScript which gets executed in the Premiere Pro UXP context with full access to the Premiere Pro API.
This is the same pattern used by the After Effects MCP, but adapted for Premiere Pro's UXP plugin system instead of After Effects' ExtendScript/CEP.