Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
CAVALRY_MCP_HOSTNoHost the bridge listens on. Keep it on loopback.127.0.0.1
CAVALRY_MCP_PORTNoMust match CONFIG.port in the bridge script.37650
CAVALRY_MCP_FROZEN_MSNoFail fast with BridgeFrozenError when Cavalry processes nothing for this long (0 disables). Rendering, saving, opening and batches are exempt.5000
CAVALRY_MCP_TIMEOUT_MSNoMax wait for a single operation (raise it for heavy renders).15000
CAVALRY_MCP_ALLOW_SCRIPTNoRegisters cavalry_run_script. The bridge must also allow it.false
CAVALRY_MCP_POLL_INTERVAL_MSNoHow often the server polls the bridge for results.40

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

CapabilityDetails
tools
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
cavalry_pingA

Check that Cavalry is running and the bridge is reachable. Returns bridge and Cavalry versions.

cavalry_scene_infoA

Describe the open scene: file path, unsaved state, current frame, compositions, and the active composition's resolution / frame range / fps when available. Call this first to orient yourself.

cavalry_set_frameA

Move the playhead of the active composition to a frame.

cavalry_playbackB

Start or stop playback in the viewport.

cavalry_list_layersA

List layers in the active composition with their id, name, type and parent.

cavalry_get_selectionB

Return the layers currently selected in Cavalry, in hierarchy order.

cavalry_selectB

Replace the current selection with the given layers.

cavalry_create_primitiveA

Create a primitive shape layer (e.g. "rectangle", "ellipse", "star", "polygon") and optionally set attributes in the same call, e.g. {"generator.dimensions": [400, 200], "position": [0, 0], "material.materialColor": "#00c2ff"}.

cavalry_create_layerA

Create a layer of any Cavalry type (e.g. "null", "group", "textShape", "duplicator", "colorMaterial", "javaScript") and optionally set attributes in the same call.

cavalry_duplicate_layerB

Duplicate a layer. Returns the ids of the newly created layers.

cavalry_rename_layerB

Change a layer's display name.

cavalry_set_parentA

Parent a layer under another layer (e.g. a group), or pass parentId null to un-parent it.

cavalry_delete_layersA

Delete one or more layers. Ids that do not exist are reported back instead of failing.

cavalry_list_attributesB

List every attribute path available on a layer, optionally with data types.

cavalry_get_attributesA

Read the current values of one or more attributes on a layer.

cavalry_set_attributesA

Set one or more attribute values on a layer at the current frame (does not create keyframes). Every path is checked first, because Cavalry silently ignores writes to unknown paths. In 2D, rotate with "rotation.z".

cavalry_get_bounding_boxA

Return a layer's bounding box (x, y, width, height, centre, left/right/top/bottom). Use it to lay out, align and check that layers fit inside the composition.

cavalry_inspect_connectionsA

List a layer's incoming and outgoing attribute connections, to understand an existing node graph.

cavalry_add_dynamic_attributeA

Add a dynamic attribute to layers that support them (e.g. JavaScript layers). Returns the new array count; use cavalry_list_attributes to find the new attribute path.

cavalry_set_generatorB

Swap the generator on a layer, e.g. set a Duplicator's "generator" to "circleDistribution" or a Basic Shape's to "ellipse".

cavalry_set_expressionB

Set (or clear, with an empty string) a JavaScript expression on an attribute.

cavalry_connectA

Connect an output to an input. A layer's main output is its "id" attribute, e.g. connect shape "id" -> duplicator "shapes", or colorMaterial "id" -> shape "material" with force=true.

cavalry_disconnectC

Remove a connection between two attributes.

cavalry_set_keyframesB

Create keyframes on a layer. Each keyframe sets one or more attribute values at a frame and can apply a Magic Easing to the keyframes it creates. Example: [{"frame": 0, "values": {"position.x": -300}, "easing": "SlowOut"}, {"frame": 30, "values": {"position.x": 300}}].

cavalry_delete_keyframesA

Delete keyframes on an attribute at specific frames, or all of its animation when frames is omitted.

cavalry_render_pngA

Render the active composition to a PNG file on the local machine (useful for checking your work visually). Use an absolute path; the .png extension is added automatically.

cavalry_save_sceneA

Save the scene in place, or to a new .cv path when filePath is given.

cavalry_open_sceneA

Open a .cv scene file. Unless force is true, Cavalry may ask the user about unsaved changes in the current scene.

cavalry_batchA

Run several operations in one round-trip, in order. Stops at the first failure; earlier operations are NOT rolled back. Each item is {"op": "", "args": {...}} where op is the tool name without the "cavalry_" prefix. Reference earlier results with "$" strings: "$0" is the id created by operation 0, "$2.created.0.id" walks into a result. Example: [{"op": "create_primitive", "args": {"shape": "ellipse"}}, {"op": "set_keyframes", "args": {"layerId": "$0", "keyframes": [...]}}].

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
attribute-guideCommon layer types, attribute paths, Magic Easing names and gotchas for driving Cavalry.

TDQS

A3.6/5.0

Scored across 29 tools

Disambiguation4/5

Each tool targets a distinct resource and action, with clear separation between attribute reads (get_attributes), path discovery (list_attributes), and writes (set_attributes vs set_keyframes). The only minor overlap is create_layer vs create_primitive, since primitives are a subset of layers, but the descriptions make the boundary reasonably clear.

Naming Consistency5/5

Every tool uses the same cavalry_ prefix followed by a consistent verb_noun pattern (e.g. cavalry_set_attributes, cavalry_delete_layers, cavalry_create_layer). No mixed casing or verb-style deviations.

Tool Count3/5

With 29 tools the surface is on the heavy side, and several could be folded together (e.g. create_primitive into create_layer). However, the domain—scene, layer, attribute, keyframe, and connection management for a motion graphics app—genuinely needs broad coverage, so it is borderline rather than excessive.

Completeness4/5

The set covers layer lifecycle (create/duplicate/rename/delete), attributes, keyframes, connections, parenting, selection, scene open/save, playback, frame control, and rendering. Minor gaps exist, such as creating a fresh scene or exporting video/image sequences, but core workflows are fully supported.

Maintenance

ActivityMaintained
ResponsivenessNo issues