mcp-manimgl
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| 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
| Name | Description |
|---|---|
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| get_info |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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