motion-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| motion_openA | Open and index a .motn or .moti file. Required before any other tool can operate on it. Returns a summary (canvas size, frame rate, duration, layer/text-layer/published-parameter counts). |
| motion_list_layersB | List every layer in the template's layer tree (id, name, factory kind e.g. Text/Image/Emitter/Shape/Generator, nesting depth, locked). |
| motion_list_text_layersB | List every Text-factory layer with its current on-screen string and the scenenode id needed by motion_set_text. |
| motion_get_parameterA | Inspect a parameter by slash-separated name path from a scenenode, e.g. "Object/Text" or "Style/Face/Color/Red". Returns its current value/default, whether it's keyframed, and child parameter names if it's a group rather than a leaf. |
| motion_list_keyframesA | List every keypoint on an animated parameter's curve, in document order, with time (seconds) and value. |
| motion_list_rigA | List every published (rig) parameter — the controls Final Cut Pro's Inspector shows when this template is used as an FCP title/generator/ effect. |
| motion_set_textA | Change the on-screen string of a Text-factory layer. Font, color, and behaviors are untouched — only the text content changes. |
| motion_set_parameter_valueA | Set a leaf parameter's static value (e.g. "Object/Face/Opacity"). Refuses to touch an already-keyframed parameter unless force=True is passed explicitly, to avoid silently breaking an existing animation — use motion_add_keypoint for animated parameters instead. |
| motion_set_colorB | Set RGB(A) on a color parameter group, e.g. "Style/Face/Color" for a Text layer's face color (values are Motion's native 0.0-1.0 range, though Motion permits >1.0 for over-bright colors). |
| motion_create_keyframe_curveA | Start animating a leaf parameter that has NEVER been keyframed in
Motion — creates its from scratch, seeded with one keypoint,
so you can author dynamic/procedural motion rather than only editing
curves Motion already created. Grounded in a structural scan of real
Motion documents: every keyframed leaf parameter observed (Position
X/Y/Z, Scale, Angle, Opacity, RGB(A) channels, behavior Amounts, ...)
uses the same universal scalar curve type — Motion animates compound
properties like Position or Color by keyframing each numeric child
parameter independently, so target one scalar channel at a time (e.g.
"Style/Face/Color/Red", not "Style/Face/Color"). Refuses a parameter
that's already keyframed (use motion_add_keyframe instead) or that's a
group with its own child parameters rather than a bare value.
|
| motion_add_keyframeA | Append a keypoint to a parameter that is ALREADY keyframed in Motion (has an existing with at least one keypoint). If the parameter has never been keyframed at all, call motion_create_keyframe_curve first to seed its curve, then use this tool for every keypoint after that. |
| motion_publish_parameterA | Publish an internal parameter as a rig control visible in Final Cut
Pro's Inspector when this template is used as an FCP title/generator/
effect. |
| motion_unpublish_parameterC | Remove a published (rig) parameter. |
| motion_save_asA | Write the open, modified document to |
| motion_open_in_motionA | Open a file in Motion.app for visual review — this server cannot render frames or drive Motion's UI itself, so final visual QC always happens by handing the file to the app this way. |
| motion_validateA | Round-trip-check a file: re-parse it fresh from disk and confirm the root is a recognizable document. Useful right after motion_save_as to confirm the write didn't corrupt the XML. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 16 tools
Each tool targets a distinct resource/action. The only potentially overlapping pairs (set_parameter_value vs set_color, create_keyframe_curve vs add_keyframe) are clearly separated by explicit use-case descriptions, leaving no ambiguity.
All tools share a motion_ prefix and use verb-first snake_case. Most follow verb_noun, but a few like motion_open, motion_save_as, and motion_validate deviate slightly from the noun-object pattern, creating minor inconsistency.
At 16 tools, the set is just over the ideal 3-15 range. The count is reasonable for a comprehensive Motion editing server, and each tool has a legitimate role, so it feels only slightly heavy.
The server covers the full editing lifecycle: open, list, inspect, modify, animate, publish, save, and validate. Minor gaps exist (e.g., no delete keyframe or enumerate all parameters), but core workflows are fully supported.