manim-mcp
by zcsabbagh
README.md
# manim-mcp
MCP server that generates 3Blue1Brown-style math videos with [Manim](https://www.manim.community/) directly inside Claude Desktop. Videos render with AI-narrated voiceover via [ElevenLabs](https://elevenlabs.io/) and play inline in the chat.
https://github.com/user-attachments/assets/placeholder
## Quick Start
### 1. Get an ElevenLabs API key
Sign up at [elevenlabs.io](https://elevenlabs.io/) and copy your API key from the [API Keys page](https://elevenlabs.io/app/settings/api-keys).
### 2. Add to Claude Desktop
Open **Settings > Developer > Edit Config** and add:
```json
{
"mcpServers": {
"manim": {
"command": "npx",
"args": ["-y", "manim-mcp", "--stdio"],
"env": {
"ELEVEN_API_KEY": "sk_your_key_here"
}
}
}
}
```
### 3. Restart Claude Desktop
That's it. Ask Claude to "create a video on the Pythagorean theorem" and watch it render.
## Requirements
- **Node.js 18+** — for running the MCP server
- **Python 3.9+** — for Manim rendering (auto-installed into `~/.manim-mcp/.venv` on first run)
- **ffmpeg** — for video concatenation (`brew install ffmpeg` on macOS)
- **ElevenLabs API key** — for AI voiceover
Python dependencies (`manim`, `manim-voiceover`, `elevenlabs`) are automatically installed on first run. This takes ~20 seconds and only happens once.
## How it Works
```
You: "create a video on eigenvalues"
Claude plans 2-4 scenes with narration scripts
-> writes Manim Python code for each scene
-> calls render_video with all scenes
-> server auto-fixes common issues (wrong TTS service, LaTeX, colors)
-> scenes render in parallel with ElevenLabs voiceover
-> concatenated into one video
-> inline video player appears in chat
```
The server provides comprehensive Manim reference and 3Blue1Brown style guidelines in its instructions, so Claude generates good animation code. A `fixGeneratedCode` step silently corrects common mistakes before rendering:
- Wrong TTS service (GTTSService, etc.) -> ElevenLabsService with correct config
- LaTeX classes (MathTex, Tex) -> Text() with Unicode
- Invalid colors (CYAN) -> TEAL
- Invented APIs (set_speech_synthesizer) -> correct set_speech_service
## Development
```bash
git clone https://github.com/zcsabbagh/manim-mcp.git
cd manim-mcp
npm install
npm run build
# Point Claude Desktop at local build:
# "command": "node",
# "args": ["/path/to/manim-mcp/dist/index.js", "--stdio"]
```
## License
MIT
TDQS
A4.2/5.0
Scored across 2 tools
Disambiguation5/5
render_video and show_demo_video are clearly distinct: one creates a video from user-provided scenes, the other displays a pre-rendered demo. There is no overlap in purpose or output.
Naming Consistency5/5
Both tool names follow a consistent verb_noun pattern (render_video, show_demo_video), making the API predictable and easy to navigate.
Tool Count3/5
With only two tools, the server feels minimal for a video rendering domain, but it targets a narrow use case (rendering with voiceover and demoing), so it is borderline acceptable.
Completeness3/5
The server lacks operations like listing available scenes, rendering individual scenes without concatenation, or retrieving prior renders, leaving notable gaps for agents needing more granular control over the rendering process.
Maintenance
ActivityInactive
ResponsivenessNo issues