Manim MCP Server
A Model Context Protocol (MCP) server for compiling and serving Manim animations.
🎯 Two Server Modes
HTTP API Server (
app/server.py
) - For REST API calls, testing, and web integrationStandard MCP Server (
mcp_server.py
) - For Claude Desktop, Dify, and other MCP clients
See MCP_SETUP.md for detailed MCP configuration instructions.
A FastAPI-based MCP (Model Control Protocol) server that provides two main tools:
Manim Compile: Compile Manim code and return a video ID
Video Download: Download a compiled Manim video by ID
Features
Secure authentication using JWT tokens
LangGraph integration for workflow management
Support for different video qualities and resolutions
Simple API endpoints for integration
Prerequisites
Python 3.8+
Manim Community Edition (v0.19.0 or later)
FFmpeg
Required Python packages (see
requirements.txt
)
Installation
Clone the repository:
git clone <repository-url> cd manim-mcp-serverCreate a virtual environment and activate it:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activateInstall the required packages:
pip install -r requirements.txtInstall Manim and its dependencies:
pip install manim
Configuration
Set up environment variables (create a
.env
file):SECRET_KEY=your-secret-key-here ACCESS_TOKEN_EXPIRE_MINUTES=30
Running the Server
Option 1: Using the startup script (recommended)
Option 2: Using uvicorn directly
The server will be available at http://localhost:8000
API Documentation
Once the server is running, you can access the interactive API documentation at:
Swagger UI: http://localhost:8000/docs
ReDoc: http://localhost:8000/redoc
API Endpoints
Root
GET /
- Get server information and available tools
Manim Compilation
POST /tools/manim_compile
- Compile Manim code{ "parameters": { "code": "from manim import *\nclass Example(Scene):\n def construct(self):\n circle = Circle()\n self.play(Create(circle))", "scene_name": "Example" } }Parameters:
code
(required): The Manim Python code to compilescene_name
(required): Name of the specific scene class to compile
Video Download
GET /videos/{file_id}
- Download a compiled video by ID
LangGraph Compatible Endpoints
GET /v1/tools
- List all available toolsPOST /v1/tools/call
- Call a tool (LangGraph compatible){ "tool": "manim_compile", "parameters": { "code": "from manim import *\nclass Example(Scene):\n def construct(self):\n circle = Circle()\n self.play(Create(circle))" } }
Example Usage
1. Check server status
2. Compile Manim code
3. Download the compiled video
4. Compile a specific scene by name
5. List available tools
6. Run the example script
Testing
See TESTING.md for detailed testing instructions.
Quick test:
Security
Always use HTTPS in production
Consider adding authentication for production deployments
Validate and sanitize all user inputs
Set appropriate CORS policies for your use case
License
This project is licensed under the MIT License - see the LICENSE file for details.
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
Enables compilation and serving of Manim animations through natural language. Supports compiling Manim Python code into videos and downloading the generated animations with secure authentication.