Swamp DragonDocs

MCP integration

Connect Claude Code, Codex, Cursor or any MCP host and let it edit your timeline with real tools.

The Model Context Protocol (MCP) is an open standard that lets AI assistants call tools in other apps. Swamp Dragon includes an MCP server, so the assistant you already use β€” Claude Code, Codex, Cursor or any other MCP host β€” can read your timeline and edit it with real editing tools: cut clips, add zooms, animate titles, place motion graphics, apply skills and more.

Optional, and bring-your-own AI

Swamp Dragon includes no AI model and never needs an API key. MCP is off by default. Usage is billed by the assistant you connect, never by Swamp Dragon.

#How it works

  1. Your assistant starts Swamp Dragon's MCP server

    A small program bundled with the app. It contains no editing logic and no AI β€” it forwards each tool call to the running app.

  2. The app checks access and applies the edit

    Only projects you've shared are visible. Edits go through the same edit operations as the editor, so they follow the same rules and limits.

  3. You see it live

    If the project is open in the editor, the edit appears immediately, a note in the inspector says which assistant did what, and ⌘Z undoes it. If it isn't open, the project file is updated directly.

Everything stays on your computer. The server reaches the app through a local connection on your computer using a private token that's regenerated every time the integration starts.

#Requirements

PlanMCP access
FreeNot included
Starter and ProBasic integration β€” read timelines and edit cuts, clips, zooms, text, graphics, keyframes, effects, transitions, frame, look and webcam.
UnlimitedFull integration β€” everything in Basic plus skills, privacy blur, audio mix and undo.

You also need an MCP-capable assistant installed on the same computer, and Swamp Dragon must be open while the assistant works.

#Set up from the editor

  1. Install your assistant’s connector once

    Get the Claude Desktop / Claude Code bundle, Gemini Desktop / CLI package or ChatGPT Desktop / Codex plugin from the connector downloads. Other local MCP hosts can use the configuration in the editor.

  2. Open a project and click Connect AI

    Choose your assistant and click Connect this project. The app enables MCP and creates a private alphanumeric code for this project.

  3. Copy the connection message into your assistant

    The assistant calls connect_project with your code. It can list, read and edit only that project, even if other projects are shared in Integrations. The editor shows when the assistant uses the connection.

  4. Disconnect or regenerate in place

    Use the same editor dialog to revoke the code or create a replacement. Codes expire after 12 hours or an app restart. Install the connector only once; pair again when switching projects.

In ChatGPT Desktop, you can either upload swamp-dragon-chatgpt.zip under Customize β†’ Plugins β†’ Add β†’ New Plugin (and add the local MCP command under Add custom MCP server), or extract the ZIP and run Install-ChatGPT.command (Install-ChatGPT.cmd on Windows) to install both the local plugin and the MCP server automatically. In Gemini Desktop, open Connectors β†’ + Custom β†’ Set up a custom connected app β†’ Local MCP, enter Swamp Dragon as the server name, and paste node "/Users/you/.local/share/swamp-dragon/launcher.cjs" as the command (running Install-Gemini.command installs the launcher and copies this command to your clipboard).

#Manual host configuration

Copy your machine’s exact command, arguments and environment from the editor’s Local MCP configuration. Integrations also retains the general host setup snippets. A project code is always required before tools can read or edit.

Paste the copied command into your terminal. It has this shape:

claude mcp add swamp-dragon \
  -e ELECTRON_RUN_AS_NODE=1 \
  -e SWAMP_DRAGON_ENDPOINT="/Users/you/Library/Application Support/Swamp Dragon/mcp-endpoint.json" \
  -- "/Applications/Swamp Dragon.app/Contents/MacOS/Swamp Dragon" "/Applications/Swamp Dragon.app/Contents/Resources/app.asar/out/main/mcp.js"

Check it's connected with claude mcp list, or type /mcp inside Claude Code.

Add the copied JSON to ~/.cursor/mcp.json (create it if it doesn't exist), then reload Cursor. It looks like:

{
  "mcpServers": {
    "swamp-dragon": {
      "command": "/Applications/Swamp Dragon.app/Contents/MacOS/Swamp Dragon",
      "args": ["/Applications/Swamp Dragon.app/Contents/Resources/app.asar/out/main/mcp.js"],
      "env": {
        "ELECTRON_RUN_AS_NODE": "1",
        "SWAMP_DRAGON_ENDPOINT": "/Users/you/Library/Application Support/Swamp Dragon/mcp-endpoint.json"
      }
    }
  }
}

The same JSON works for other hosts that use the mcpServers format, such as Claude Desktop (claude_desktop_config.json) and Windsurf.

Add the copied block to ~/.codex/config.toml:

[mcp_servers.swamp-dragon]
command = "/Applications/Swamp Dragon.app/Contents/MacOS/Swamp Dragon"
args = ["/Applications/Swamp Dragon.app/Contents/Resources/app.asar/out/main/mcp.js"]
env = { ELECTRON_RUN_AS_NODE = "1", SWAMP_DRAGON_ENDPOINT = "/Users/you/Library/Application Support/Swamp Dragon/mcp-endpoint.json" }

Any host that supports stdio MCP servers works. Configure:

  • Command: the Swamp Dragon app executable (it doubles as a Node runtime).
  • Arguments: the path to mcp.js inside the app.
  • Environment: ELECTRON_RUN_AS_NODE=1 and SWAMP_DRAGON_ENDPOINT pointing at mcp-endpoint.json in the app's data folder.

All three values are shown in Integrations β†’ Cursor / JSON.

The examples show macOS paths. On Windows the snippet uses your install folder (for example C:\Users\you\AppData\Local\Programs\Swamp Dragon\Swamp Dragon.exe) and %APPDATA%\Swamp Dragon\mcp-endpoint.json.

#Your first edit

Open a project in the editor (so you can watch), then ask your assistant something like:

Use the connection code I copied from Swamp Dragon to call connect_project.
Read the paired project’s timeline, then:
1. remove the first 4 seconds,
2. add a "Step 1 β€” Create your workspace" title that comes in word by word,
3. zoom 1.8Γ— on the Invite button around 0:42 with an overshoot ease,
4. put a spotlight and an arrow on it while the zoom holds,
5. move the webcam to a bottom-right circle with a white border.

After pairing with connect_project, the assistant calls list_projects and get_timeline to understand the video, then trim_clip, add_text, add_zoom, add_graphic and set_webcam_layout. Each change shows up on the timeline, and the Activity list in Integrations logs every call.

#Prompts that work well

  • "Add chapter markers where I change topics and turn them into chapter cards."
  • "Make the intro kinetic: big centered title, bounce in, float loop, then a zoom-in transition into the demo."
  • "Blur the email address visible from 1:10 to 1:25." Unlimited
  • "Speed up the part where the page loads to 3Γ— and add a freeze frame on the final result."
  • "Give the whole video a crisp look, a gradient frame with 6% padding and no shadow."
  • "Trim silences longer than one second, then add zooms to every click." Unlimited

#Privacy and safety

  • You choose what's visible. Each code grants access to one project only. Project ids for other projects are refused, even if they are shared.
  • Edits, not files. Tools change the edit (the timeline), never your original recordings, and never read or write arbitrary files.
  • Local only. The bridge accepts connections only from your computer, using a random port and a private token stored in mcp-endpoint.json, which is deleted when you turn MCP off. Other computers can't reach it.
  • What the assistant sees. Timeline data (times, text, settings) is returned to your assistant, which may send it to its provider under that provider's terms. Video and audio frames are never sent.
  • Undo. With the project open, every assistant edit is one undo step labelled with the tool that made it.
  • Turn it off any time. Switch off MCP integration; the bridge stops immediately.

#Tool reference

Times are in timeline seconds (after cuts). Positions are fractions of the frame from 0 to 1, with 0,0 at the top left. Tools that add something return its new id as created_id; every editing tool returns the updated timeline.

#Reading

ToolParametersReturns
list_projectsβ€”Shared projects with id, name, duration, last update and whether it's open in the editor.
get_timelineproject_idDuration, clips (cuts, speed, reverse, freeze, transitions), layers, texts, graphics, images, effects, zooms, blurs, markers, frame style, look, webcam, audio, export settings and applied skills.
list_skillsβ€”Built-in and custom skills with ids and default parameters.

#Cuts and clips

ToolParametersNotes
trim_clipstart, endRemoves the range from every track; later items shift left.
split_clipatCreates a cut.
set_clipat, speed (0.25–4), reverseChanges the clip containing at; later items ripple.
freeze_frameat, duration (0.1–60, default 2)Inserts a still frame.
set_transitionat or all_cuts, transition, duration (0.1–3)Transitions: none, fade-black, fade-white, flash, blur, zoom-in, zoom-out, slide-left, slide-right, slide-up, slide-down, circle, spin, glitch. at is a time inside the clip the transition leads into.
add_markerat, labelMarkers become chapter cards with the Chapter card skill.

#Zoom and webcam

ToolParametersNotes
add_zoomstart, end or duration (default 2.5), scale (1–4, default 1.8), x, y, easeEase: linear, ease-in, ease-out, ease-in-out.
remove_zoomzoom_id
set_webcam_layoutshape, corner, size (10–40), visible, border (0–16), border_color, mirror, background (none, blur, image), background_blur (4–40)Image backgrounds use a picture the user already chose.

#Text and motion graphics

ToolParametersNotes
add_textstart, end, text, style, color, background, size (0.4–3), font, align, layer_id, animation fieldsStyles: title, chapter, lower-third, caption, callout, shortcut, outro.
set_text_styletext_id + any of the styling and animation fieldsRestyle or re-animate existing text.
remove_texttext_id
add_graphicstart, end, shape, x, y, w, h, fill, stroke, stroke_width, radius, layer_id, animation fieldsShapes: rect, ellipse, arrow, line, highlight, spotlight, progress, ripple, underline, bracket. Arrows and lines run from (x, y) to (x+w, y+h).
set_keyframeskind (text, image, graphic, camera), item_id, keyframes[]Each keyframe: t, dx, dy, scale, rotate, opacity, ease (adds back-out, bounce, elastic). Replaces existing keyframes; an empty list clears them.
update_itemkind, item_id, patchChange any field returned by get_timeline, e.g. {"start": 2, "end": 5}.
remove_itemkind, item_idKinds: text, image, graphic, zoom, blur, effect, marker.

Animation fields (text and graphics): animation_in (none, fade, slide-up, slide-down, slide-left, slide-right, pop, bounce, zoom, spin, blur, typewriter, words, wipe, draw), animation_out (none, fade, slide-*, pop, zoom, spin, blur, wipe, draw), animation_duration (0.05–3 s), loop (none, pulse, breathe, float, wiggle, spin, blink, shake), loop_speed (0.1–5 per second).

#Look and effects

ToolParametersNotes
add_effectstart, end, effect, amount (0–1), fade (0–5), lookEffects: shake, zoom-punch, flash, glitch, rgb-split, blur, mono, invert, pixelate, vignette, film, adjust.
set_frame_stylepadding, background_color, background_type, gradient_from, gradient_to, gradient_angle, background_blur, corner_radius, shadow (0 = off), shadow_blur, shadow_offset, border_width, border_color
set_lookpreset and/or brightness, contrast, saturation, hue, temperature, sharpen, vignette, grain, grayscale, sepia, blurPresets: none, vivid, crisp, warm, cool, mono, noir, vintage, faded, dramatic.

#Full integration only Unlimited

ToolParametersNotes
apply_skillskill_id, paramsRuns a skill (see Skills); re-running replaces its earlier result.
remove_skillskill_idSwitches a skill off and reverses what it did.
add_blurstart, end, x, y, w, hPrivacy blur over a rectangle.
set_audiomic_gain, system_gain (0–2), mic_muted, system_muted
undoproject_idRequires the project to be open in the editor.

#Activity log

Integrations β†’ Activity lists the latest tool calls: which assistant called which tool, with what arguments, whether it worked, and the error if not. In the editor, the inspector shows the last assistant action with a reminder of how to undo it.

#Troubleshooting

"Swamp Dragon is not running, or MCP integration is turned off"

Open Swamp Dragon and switch on Integrations β†’ MCP integration. The assistant can only reach the app while it's open.

The assistant says there are no projects, or that a project isn't shared

Open Integrations β†’ What it can see and choose All projects, or switch on the project. In the editor you can click MCP Β· Allow this project.

"… is part of full MCP integration (Unlimited plan)"

That tool (skills, blur, audio or undo) needs Unlimited. Everything else works on Starter and Pro.

"MCP integration needs the Starter plan or higher"

MCP isn't included in Free. See Pricing.

The tools don't appear in my assistant
  • Re-copy the snippet from Integrations β€” paths change if you move or reinstall the app.
  • Restart the assistant after editing its config.
  • In Claude Code, run claude mcp list; in Cursor, check Settings β†’ MCP for errors.
"Could not reach Swamp Dragon. Make sure the app is open."

The app was closed or restarted after the assistant started. Keep Swamp Dragon open and retry; if needed, turn MCP off and on again.

"Undo is available while the project is open in the editor"

Open the project in Swamp Dragon's editor, then ask again.