Developer Tools
morphareels.ai
Manages projects and workspaces for a cloud-based editor, allowing users to create, open, and organize projects.
ENDPOINT 1
https://morphareels.ai/mcp
MCP server metadata
- Name
- morpha
- Version
- 0.1.0
Morpha is an AI video editor for short-form social video. Every project mutation, layout, animation, versioning and vision tool is here over MCP — start with describe_video, then inspect_layers, before mutating, and call save_version at the end of a change-set. Refer to projects by name, never by their opaque id. Four capabilities run a REAL LOCAL BROWSER and are NOT callable over MCP; they live in the morphareels-sdk npm package: clip upload (client.addVideo), clip processing (client.processClip / client.processProject), single-frame PNG render (client.renderFrame), and full MP4 export (client.renderVideo). If a task needs one of those, tell the user to run it via the npm SDK — you cannot perform it from MCP.
Known tools 93
list_workspacesList the workspaces (shared team spaces) the account belongs to, as { id, name, role, memberCount } entries.
Inferred read-onlyopen_projectGet a tappable link that opens a project directly in the editor (the editor loads exactly this project from the URL).
Inferred read-onlymove_project_to_workspaceMove a project into a workspace, or back to the caller's personal space.
Inferred read-onlylist_collectionList the user's reusable Collection — layers they added with add_to_collection (lower-thirds, logo stings, brand intros, or any single layer).
Inferred read-onlyadd_from_collectionAdd an item from the user's Collection into a project as a self-contained COPY.
Inferred read-onlyduplicate_projectDuplicate an existing project into a brand-new one — a full copy of its layers, animations, styles, uploaded assets, and clips.
Inferred read-onlyrename_projectUpdate a project's human-readable name (shown in the editor's project picker).
Potential side effectsreid_projectChange a project's id LOSSLESSLY — re-keys its JSON, every saved version, and all assets + clips, then deletes the old id.
Inferred read-onlydelete_projectPermanently delete a project: its JSON, shortlist, versions, uploaded assets, and uploaded clips.
Potential side effectsrestore_versionLoad a saved version's project payload over the live project — destructive on the current state.
Inferred read-onlyrename_versionRename a saved version's human-readable label (what the user sees in the picker).
Inferred read-onlydelete_versionPermanently delete one saved version (bookmark or auto-snapshot).
Potential side effectsupload_imageUpload an image into a project by fetching a public http(s) URL server-side (the still-image counterpart of upload_clip).
Potential side effectsupload_audioUpload an audio track into a project by fetching a public http(s) URL server-side — the ONLY way to get an audio file's bytes into a project over MCP/HTTP (add_audio_overlay / update_audio_overlay only reference a filename that must already be uploaded).
Potential side effectsfind_public_imageSearch a PUBLIC, Creative-Commons + public-domain image pool (Openverse) for the query, download the top suitable result, store it in the project's asset bucket, and return the filename ready for add_image_layer.
Inferred read-onlydetect_text_regionsReturn the OCR text regions detected in a clip's video frames OR a still image asset.
Inferred read-onlysafe_zonesReturn horizontal 'safe band' y-ranges of the canvas where a clip's burned-in video text (subtitles, lower thirds, titles) does NOT appear, plus the inverse 'text bands' (where it does).
Inferred read-onlyclip_processing_statusReport whether a clip — or every video clip in the project, if `clip` is omitted — has been through the browser-side video-processing pipeline: proxy build, audio split, transcription, OCR (text regions).
Inferred read-onlydescribe_videoStructural OVERVIEW of the composition (the table of contents) — canvas size, duration, the backdrop summary, and a z-ordered tree (top of stack first) of every layer with its elementId, type, name, type label (filename/clip/text/kind), geometry (x/y/width/height), and which properties are animated.
Inferred read-onlyinspect_layersFull per-element drill-in — the 'open this layer' half of the browser.
Inferred read-onlyset_pivotSet the rotation / scale pivot anchor for an image, video, shape, or text leaf.
Inferred read-onlyset_keyframes_batchAdd or overwrite MANY keyframes across MANY layers in ONE call — functionally equivalent to N add_keyframe calls but with one HTTP/MCP round-trip.
Inferred read-onlyadd_keyframesAdd many keyframes to ONE element's ONE property in a single call, with an optional loop mode applied in the same call.
Inferred read-onlyshift_trackBulk-shift every keyframe's VALUE on one property of one layer by `delta`.
Inferred read-onlyadd_curveDraw an editable arrow / curved line — a stroked quadratic bezier with an arrowhead.
Inferred read-onlyduplicate_layerComposition primitive: clone a leaf (image.<id> / video.<id> / shapes.<id> / text.<id>) `count` times, applying a cumulative per-step transform — copy i is offset by i·(dx,dy) px, rotated by i·d_rotation°, and scaled by d_scale^i.
Inferred read-onlyset_text_backgroundAdd or update the rounded background box behind a TEXT layer (text.<id>) in one call — sets the backdrop fill plus the box's padding, corner radius, and optional stroke.
Potential side effectsremove_color_keyframeRemove the colour keyframe at an exact frame on a fill track.
Potential side effectsset_layer_visibleShow or hide a layer instantly by writing a single opacity keyframe (1 or 0) at frame 0.
Inferred read-onlyapply_preset_staggerApply the same preset to a LIST of layers with a per-element startFrame offset — one call instead of N apply_preset calls.
Inferred read-onlyungroup_layersDissolve a group: its children are spliced into the group's parent at the group's old position.
Inferred read-onlyremove_from_collectionRemove a layer from the user's Collection so it's no longer offered for reuse.
Potential side effectsadd_morpha_layerEmbed another of the user's projects ("a morpha") inside this one as a version-pinned band.
Inferred read-onlyadd_audio_overlayAdd an audio overlay (mp3/m4a/wav/ogg) scheduled at a frame-aligned start.
Inferred read-onlyset_video_layer_trimPatch a video layer's trim window: source_in_frame (frame in source to start), source_out_frame (frame in source to stop, or null for natural end), timeline_start_frame (where on the project timeline the slice begins).
Inferred read-onlyset_layer_blockSet (or replace) a layer's timeline BLOCK — the [start, start+duration) window it exists for.
Inferred read-onlyset_layer_transitionSet how a layer ENTERS at the start of its on-timeline window and LEAVES at the end, instead of popping.
Inferred read-onlymove_bandPlace an embedded morpha band on the host timeline: set its TIME ORIGIN (the frame it starts).
Inferred read-onlyshift_groupMOVE a group and everything inside it along the timeline, keeping its internal timing intact — the 'slide this whole section later' operation.
Inferred read-onlyset_group_windowTRIM a group's own visible window — the [start, start+duration) range over which the group and its subtree are drawn.
Inferred read-onlyset_durationAuthor an EXPLICIT composition length in seconds, pinning it (duration_authored=true) so the auto-fit no longer drives it.
Inferred read-onlyfit_duration_to_contentClear an authored composition length and return to AUTO-FIT — the comp length tracks the furthest content (keyframe / video window / audio end) again, with a 1-second floor.
Inferred read-onlycut_rangeRipple-delete a time window [startFrame, endFrame) — remove that span and pull all later content earlier by delta = endFrame - startFrame (the NLE 'ripple delete' / 'close gap').
Potential side effectsset_embed_originsReplace the project's embed allowlist — the hostnames permitted to load this project through the public <morpha-video> embed.
Inferred read-onlyadd_embed_originAdd one hostname to the project's embed allowlist (the hostnames permitted to load the public <morpha-video> embed).
Inferred read-onlyset_custom_fontRegister a typeface Morpha does NOT ship, so text layers can use it by family name via font_family (exactly like a built-in family).
Inferred read-onlylist_fontsList available font families across every source the editor knows about (Google + Bunny + Fontshare + Fontsource + Velvetyne) PLUS the project's user-uploaded custom_fonts (surfaced as source: "custom").
Inferred read-onlyadd_text_layerCreate a new text layer — a first-class leaf that animates, groups, and z-orders exactly like an image or shape.
Potential side effectssplit_caption_lineSplit one caption line into two at a COMPOSITION frame strictly inside its window (in the editor this is the playhead).
Inferred read-onlyrename_layerSet the human-readable name of a video / image / shape / text layer — the label shown in the Inspector, and the basis for the layer's auto-derived <morpha-video> embed attribute (so renaming a layer to "caption" makes the embed attribute `caption`).
Inferred read-onlyset_loopSet the project's loop section: the whole composition repeats once per value, with one field of one layer varying across the repeats.
Inferred read-onlyset_image_filenameRepoint an existing image layer at a different uploaded asset — keeps the layer's id, position, size, animations, and styles; only the bitmap changes.
Inferred read-onlyset_video_clipRepoint an existing video layer at a different uploaded clip — keeps the layer's id, position, size, animations, styles, and trim window; only the source mp4 changes.
Inferred read-onlyset_matte_sourceSet (or clear) a track matte — the host shows only where the matte source is opaque.
Inferred read-onlyset_clip_speedPlay a clip slower or faster at a CONSTANT rate — the normal way to retime a clip.
Inferred read-onlyadd_speed_keyframeAdd or overwrite a speed-ramp (time-remap) keyframe on a video layer, for a rate that CHANGES over the clip.
Inferred read-onlyremove_speed_keyframeRemove the speed-ramp keyframe at `frame` (a PROJECT-timeline frame — the same value add_speed_keyframe and inspect_layers report) on a video layer.
Potential side effectsset_video_layer_mutedMute or unmute a video layer's baked audio (silenced in both preview and export).
Inferred read-onlyadd_pageAppend a page to the project — works on any project, turning a single-page video into a multi-page one.
Inferred read-onlyCONNECT WITH APPROVAL
Client installation
Review this server and its permissions before adding it. Secret placeholders must be set locally.
Codex
~/.codex/config.toml
[mcp_servers.morpha]
url = "https://morphareels.ai/mcp"
enabled = true
Claude Code
.mcp.json
{
"mcpServers": {
"morpha": {
"type": "http",
"url": "https://morphareels.ai/mcp"
}
}
}
Claude Desktop
Settings → Connectors → Add custom connector
Name: morpha
Remote MCP URL: https://morphareels.ai/mcp
Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.
Cursor
.cursor/mcp.json
{
"mcpServers": {
"morpha": {
"url": "https://morphareels.ai/mcp"
}
}
}
Visual Studio Code
.vscode/mcp.json
Add to Visual Studio Code{
"servers": {
"morpha": {
"type": "http",
"url": "https://morphareels.ai/mcp"
}
}
}
Generic MCP
Client-specific MCP configuration
{
"name": "morpha",
"transport": "streamable-http",
"url": "https://morphareels.ai/mcp"
}
MCP Inspector
Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.
TRUST AND VERIFICATION EVIDENCE
Loading Trust v2 evidence…
Checking the associated registrable domain. The BuiltWith key remains server-side.
Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.