io.github.faisalkhanzemi/insta-edits
Drives Instagram's Edits for Mac desktop video editor through its built-in automation server, exposing the full editor tool set (274 tools) once a project is open: importing clips, arranging timelines and cutting on beats, adding text and word-by-word captions, effects, transitions, keyframes, speed ramps, audio and titles, checking rendered frames, and rendering/exporting reels. Publishing stays manual in the Edits window unless explicitly requested.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@io.github.faisalkhanzemi/insta-editsmake a 15-second beat-synced reel with captions and export it"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Insta Edits for Claude
Let Claude Code edit in Instagram Edits for Mac, with the full editor and not just the home screen.
Edits for Mac, which Meta launched on 5 November 2026, has a built-in automation server that speaks MCP: in Meta's words, you can connect AI agents "to the desktop editor through MCP so they can help with your projects". You can point Claude Code at it directly, but you only get part of it.
Edits changes its tools with the screen. The home screen offers 32 tools: projects, imports and catalogs. Open a project and it offers 274, with text, captions, effects, transitions, keyframes, audio and export. Edits says it will announce that change (tools.listChanged: true) but never sends the notification. Claude keeps the 32 home tools for the whole session and never sees the editor.
This bridge sits between the two. After every tool call it asks Edits which tools it offers now. If the set has changed, it tells Claude, and Claude refreshes the list. It also fixes a reply format that some Claude Code builds reject, gives readable errors, and keeps your token out of config files.
Claude Code ──stdio──▶ insta-edits ──HTTP──▶ Edits for Mac (127.0.0.1:19501)
◀── tools/list_changed ──┘ checks the tool set after each callWorks with Claude Code in the terminal and in the Code tab of the Claude desktop app. It's a standard stdio MCP server, so other MCP clients (the Claude desktop chat, Cursor, Codex) can run insta-edits serve too, though we've only tested Claude Code.
What you get
The full editor. Claude receives
notifications/tools/list_changedas soon as Edits moves between home (32 tools) and the editor (274). Without the bridge, that notification never arrives.Replies that every Claude Code build accepts. Edits marks each result
"resultType": "complete"without the caching fields that newer MCP schemas pair with it. Some Claude Code builds then dropped every tool, withInvalid result for tools/list: ttlMs … cacheScope. The bridge removes the marker only when those fields are missing.Your token stays private. The plugin keeps it in the macOS keychain. The CLI keeps it in a
0600file. It never appears in~/.claude.json, in logs or in error messages.Start in any order. If Edits isn't open yet, the bridge still connects and reports no tools, then tells Claude the moment Edits answers, so the editor appears without a restart.
Errors you can act on. "Cannot reach Edits: open it and enable the Automation Server" replaces a stack trace. A rejected token says how to update it.
doctorchecks every link from the app to the sign-in, and--jsongives you a report to attach to a bug.An
editsskill that teaches Claude how the server behaves: discover before guessing, work in normalised canvas coordinates, check rendered frames, and never publish without your explicit go-ahead.Python standard library only. Nothing to
pip installfor the plugin, and it runs on thepython3that comes with macOS.
Related MCP server: Oh My Cassette
Requirements
A Mac with Apple silicon (M1 or later) and Edits for Mac, free and signed in to Instagram
Claude Code
python33.9 or newer. Runxcode-select --installif macOS asks for the command line tools.
Install
1. Turn on the automation server in Edits
Go to Edits › Settings › Automation, switch on Enable Automation Server, and copy the Access token. Keep Edits open while Claude works.
2a. As a Claude Code plugin (recommended)
Start claude in a terminal and type:
/plugin marketplace add faisalkhanzemi/insta-edits-for-claude
/plugin install insta-edits@insta-editsClaude Code asks for the access token with a masked prompt and stores it in your keychain. Restart Claude Code, then run /mcp: edits should show as connected. The plugin also installs the edits skill.
The shell commands do the same thing but don't prompt for the token, so set it afterwards with /plugin configure insta-edits@insta-edits inside Claude Code:
claude plugin marketplace add faisalkhanzemi/insta-edits-for-claudeclaude plugin install insta-edits@insta-editsA plugin installed this way, at user scope, also shows up in the Code tab of the Claude desktop app, which reads the same settings.
2b. As a standalone MCP server
pipx install insta-editsinsta-edits set-tokenclaude mcp add --scope user edits -- insta-edits serveset-token asks for the token with a hidden prompt and saves it to ~/.config/insta-edits/token with 0600 permissions. Never put the token itself on the claude mcp add line: it would end up in plain text in ~/.claude.json and in your shell history.
Check the connection
insta-edits doctorinsta-edits 0.1.0 doctor
✓ macOS 27.0.1
✓ Edits app installed /Applications/Edits.app
✓ Automation server answering at http://127.0.0.1:19501/mcp (HTTP 403 without a token, as expected)
✓ Access token from ~/.config/insta-edits/token
✓ Sign-in metapilot-native 1.0.0, protocol 2025-06-18
✓ Tools 32 on the current screen (home screen; Edits offers more once a project is open)
✓ Reply format normalised for older Claude Code builds (resultType without caching fields)
✓ Edits automation schema 2026.10.19-1
✓ Tool-change notifications Edits announces them but never sends any; the bridge checks after each call and tells Claude
All good. Claude can drive Edits.Each ✗ line names its fix. Plugin users who want doctor can install the CLI as in 2b. The plugin token lives in the keychain, so without set-token the doctor checks stop at the sign-in step.
Using it
Ask for edits in plain words:
Open my latest Edits project and tell me what's on the timeline.
Import
~/Movies/broll/into a new project, cut it to the beat of the voice-over, and add word-by-word captions in a clean sans.
Add a soft zoom on every product close-up and a whoosh on each cut, then render a preview so I can check the frames.
Claude opens the project, the editor tools appear, and it works from them. It doesn't post. Publishing stays in the Edits window unless you explicitly tell Claude to share a specific video.
How it works
Step | What happens |
Session | The bridge forwards |
Replies | It accepts both JSON and |
Tool sync | After each |
Notifications | If a future Edits build opens a server-to-client stream, the bridge listens on it and forwards what arrives. Edits doesn't offer one today, so the bridge stops trying after the first refusal. Turn it off with |
Edits closed | The bridge answers |
Errors | A tool call while Edits is closed returns JSON-RPC |
Settings come from the environment: EDITS_MCP_URL (default http://127.0.0.1:19501/mcp), EDITS_MCP_TOKEN, and EDITS_MCP_TOKEN_FILE. Logs go to stderr.
Tested with
Version | |
Edits for Mac | 454.0.0 (server |
Claude Code | 2.1.296 |
macOS | 27.0.1 |
Python | 3.9.6 (system), 3.11, 3.13 in CI |
Edits updates often and its automation server is undocumented. If a new build breaks something, run insta-edits doctor --json and open an issue with the output. It contains no token.
Troubleshooting
Symptom | Fix |
| Open Edits and switch on Settings › Automation › Enable Automation Server. |
HTTP 401 or 403 | The token changed in Edits. Update it in |
Only home tools, even with a project open | Check that |
Import fails with | Edits doesn't expand |
Import fails with | Edits is sandboxed. In our tests it imported from |
Exported video is silent where the song should be | Songs from Edits' music library come in as licensed tracks, and exports started through automation leave them out: the music bed was silent in every test, while our own audio files exported fine. Export or post from the Edits window when a library song matters. |
| Passing a track id sometimes added another track. Passing the exact title added the right song in our test. |
Security
The bridge only connects to the URL you configure, which defaults to
127.0.0.1. It sends nothing anywhere else and has no telemetry.The token is redacted in every log line, error message and
repr.doctor --jsonreports where the token came from, never its value.Edits is signed in to your Instagram account. The bundled skill tells Claude never to publish, share or schedule without your explicit go-ahead for that specific post.
Report vulnerabilities privately as described in SECURITY.md.
FAQ
How do I connect Claude to Instagram Edits? Install Edits for Mac, switch on Settings › Automation › Enable Automation Server, then add this plugin with the two /plugin lines under Install. Claude can then open your projects and edit them.
Can Claude edit Instagram Reels? Yes, inside Edits for Mac. It can import clips, cut them on the beat, add captions, text, transitions, zooms and speed ramps, check rendered frames and export. You post the reel from Edits yourself.
Does it work with claude.ai in the browser? No. Edits runs on your Mac and only listens locally, so it needs Claude Code (or another MCP client) running on the same Mac.
Is this official? No. It's an independent open-source project, not affiliated with or endorsed by Meta, Instagram or Anthropic. "Instagram" and "Edits" are trademarks of Meta Platforms, Inc.
Does it work on Windows or with the Edits phone app? No. Edits on desktop is only available on macOS, and the automation server only exists there.
Do I still need this if my Claude Code build accepts Edits' replies? Yes, for the editor tools. Edits never announces that its tools changed, and no client can find that out without asking.
Can Claude post to Instagram for me? The bridge won't stop Claude from calling Edits' share tools, but the bundled skill tells it to wait for your explicit go-ahead. Posting from the Edits window is the safer default.
Development
git clone https://github.com/faisalkhanzemi/insta-edits-for-claude && cd insta-edits-for-claude
python3 -m venv .venv && . .venv/bin/activate
pip install -e . pytest ruff
pytest && ruff check . && ruff format --check .The tests run against tests/fake_edits.py, a stand-in that behaves like the real server: it sends no notifications, changes its tool set when a project opens, and replies with resultType. You don't need a Mac or Edits to run them. See CONTRIBUTING.md.
Credits
Demo footage: stock clips from Pexels (Pexels License). Music: "Tech House vibes" by Alejandro Magaña, Mixkit (Mixkit License).
License
MIT © Faisal Khan
Maintenance
Related MCP Connectors
AI video editor for agents and humans: timeline, captions, color, audio and generation as MCP tools.
Compose, edit and render video with your AI agent. Turn footage into finished edits with content-aware reframing, word-timed captions and motion graphics. Hosted MCP with OAuth sign-in; cloud processing uses credits.
MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.
The agentic video editor for ChatGPT and Claude. Ask in your chat and it cuts, captions, adds music, titles and motion graphics on a real timeline you can open and adjust.
Related MCP Servers
- AlicenseBqualityCmaintenanceExposes a shared video-editing timeline as MCP tools, letting Claude Code, Codex or any MCP client cut, trim, layer, caption, mix and generate motion graphics on the same versioned project the browser editor has open. Every edit an agent makes shows up live, is labelled with its author, and can be undone.41MIT
- FlicenseNot gradedqualityAmaintenanceEnables Claude Code, Codex, Hermes, OpenCode, and other MCP hosts to turn natural-language prompts over raw video clips into finished, beat-synced montage edits with music matching, subtitles, transitions, and picture-in-picture, while returning reviewable timeline digests and contact sheets before rendering.-
- FlicenseNot gradedqualityAmaintenanceEnables Claude and other MCP clients to read, edit, and generate real Final Cut Pro timelines from FCPXML, including cut detection, markers, roles, silence removal, transcript-based editing, cross-NLE export, and pushing changes into a running Final Cut Pro. Every write is journaled and undoable, with validation and safety checks for reliable timeline edits.-
- FlicenseNot gradedqualityAmaintenanceEnables an MCP client like Claude to read, edit, and generate real Final Cut Pro timelines from exported FCPXML, covering cut and flash-frame detection, silence and gap removal, markers, keyframes, speed ramps, transcript-based editing, cross-NLE export, and pushing the result into a running Final Cut Pro. Every write is journaled with its sha256 so changes can be undone and unreviewed cuts refused.-