Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
create_sceneB

Create a new manimgl scene with the given configuration.

IMPORTANT: Always use MCP tools for scene operations. Do NOT write or execute standalone manim scripts.

get_scene_infoA

Get the current scene's configuration and element counts.

IMPORTANT: Always use MCP tools for scene operations.

Returns: Scene information including resolution, mobject/animation counts.

Example: >>> get_scene_info()

clear_sceneA

Remove all mobjects and animations from the current scene.

IMPORTANT: Always use MCP tools for scene operations.

Returns: True if successful.

Example: >>> clear_scene()

add_waitB

Add a wait/pause to the scene timeline.

IMPORTANT: Always use MCP tools for scene operations.

save_stateB

Save the current scene state for later restoration.

IMPORTANT: Always use MCP tools for scene operations.

Returns: True if state was saved.

Example: >>> save_state()

restore_stateA

Restore the scene to a previously saved state.

IMPORTANT: Always use MCP tools for scene operations.

Returns: True if state was restored, False if no saved state exists.

Example: >>> restore_state()

set_cameraB

Configure the camera position and/or orientation.

IMPORTANT: Always use MCP tools for scene operations.

set_configC

Set global rendering configuration parameters.

IMPORTANT: Always use MCP tools for scene operations.

add_custom_codeA

Inject custom Python code into the scene script.

The code will be inserted inside the construct() method body. Use this for advanced manim functionality not covered by other tools.

IMPORTANT: Always use MCP tools for scene operations. Do NOT write or execute standalone manim scripts.

verify_scene_overlapsA

Detect overlapping visual elements (mobjects) in the current scene.

Computes axis-aligned bounding boxes for each mobject based on its stored position and dimension properties (radius, width, height, side_length, font_size). Reports any pair whose bounding boxes intersect.

NOTE: Positions are only reliably updated by move_to(). After shift/scale/rotate/next_to/align_to, the stored position may be stale. Text and TeX dimensions are estimated from font_size and character count — actual rendered glyphs may differ.

Returns: List of overlap reports, each with the pair of overlapping mobjects, their positions, types, and overlap magnitudes.

Example: >>> verify_scene_overlaps()

generate_scene_scriptA

Generate the full Python script for the current scene.

IMPORTANT: Always use MCP tools for scene operations. Do NOT write or execute standalone manim scripts. Use render_scene() and get_render_result() for rendering instead.

Returns: The complete Python script as a string.

Example: >>> generate_scene_script()

add_circleD
add_squareD
add_rectangleD
add_polygonD
add_lineD
add_arrowD
add_dotD
add_textD
add_texD
add_function_graphD
add_parametric_curveD
add_coordinate_systemD
add_vectorD
add_labeled_pointD
add_3d_objectD
add_braceD
add_number_lineD
add_decimal_numberD
add_matrixD
move_toD
shiftD
scaleD
rotateD
set_colorD
set_opacityD
next_toD
align_toD
animate_transformD
animate_fade_inD
animate_fade_outD
animate_growD
animate_rotateD
animate_scaleD
animate_shiftD
animate_indicateD
animate_writeD
animate_set_colorD
animate_move_along_pathD
animate_groupD
render_sceneA

Render the current scene to a video file.

Renders in the background to avoid MCP timeouts. Returns a render_id immediately. Poll get_render_result() with that render_id to check completion and get the output path.

get_render_resultA

Poll for the result of an async render started by render_scene().

Returns the render result dict when done, or a "still running" status. Keep polling until status is "completed" or "failed". The caller should use exponential backoff between polls: 1s, 2s, 4s, 8s... (cap at 30s). The count resets when the render completes or fails.

IMPORTANT: Always use this MCP tool for scene operations. Do NOT write or execute standalone manim scripts.

save_frameA

Save a single frame (image) of the current scene.

IMPORTANT: Always use this MCP tool for scene operations. Do NOT write or execute standalone manim scripts.

get_render_statusA

Check if manimgl and OpenGL are available for rendering.

IMPORTANT: Always use this MCP tool for scene operations. Do NOT write or execute standalone manim scripts.

Returns: Dictionary with availability status of manimgl and OpenGL.

Example: >>> get_render_status()

verify_videoA

Inspect a rendered video file and return its technical properties.

Uses ffprobe to extract codec info, streams, duration, resolution, and bitrate. Verifies the file exists and has both video and audio.

IMPORTANT: Always use this MCP tool for scene operations. Do NOT write or execute standalone manim scripts.

audio_durationA

Get the duration of any audio file in seconds.

Accepts audio files (.mp3, .wav, .ogg, .mid) created by the server. Uses ffprobe internally.

add_narrationA

Generate and add a text-to-speech narration audio track to the scene.

The audio plays at the point in the timeline where this tool is called. Uses Google TTS (gTTS) for voice synthesis.

IMPORTANT: Always use MCP tools for scene operations.

add_background_musicA

Add background music to the scene.

The music plays from the beginning of the rendered video. Accepts audio files (.mp3, .wav, .ogg) or MIDI files (.mid, .midi). MIDI files are rendered to audio using FluidSynth and a system SoundFont.

When narration tracks are also present, the music volume auto-ducks during narration via sidechain compression in post-processing.

IMPORTANT: Always use MCP tools for scene operations.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
get_info

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/daedalus/mcp-manimgl'

If you have feedback or need assistance with the MCP directory API, please join our Discord server