基于Docker的环境,用于使用Manim创建数学动画,提供CLI界面和支持模型上下文协议(MCP)的Web API,以便与AI助手进行交互。
本项目提供:
从Docker Hub拉取预构建镜像:
docker pull wstcpyt/manim-docker-mcp:latest
然后使用docker-compose运行:
docker compose up -d
克隆仓库:
git clone https://github.com/YOUR_USERNAME/manim-docker-mcp.git
cd manim-docker-mcp
构建Docker镜像:
docker compose build
在animations目录中创建一个Python文件(参见下面的示例),然后运行:
docker compose run manim -pql animations/example.py ExampleScene
启动API服务器:
docker compose up -d manim-api
访问API文档:http://localhost:8000/docs
创建文件animations/example.py:
from manim import *
class CircleToSquare(Scene):
def construct(self):
circle = Circle()
circle.set_fill(BLUE, opacity=0.5)
square = Square()
square.set_fill(RED, opacity=0.5)
self.play(Create(circle))
self.wait()
self.play(Transform(circle, square))
self.wait()
# CLI模式,预览(-p),低质量(-ql)
docker compose run manim -pql animations/example.py CircleToSquare
# API模式
curl -X POST "http://localhost:8000/run-manim?filepath=/manim/temp/circle_example.py&scene_name=CircleToSquare&quality=low_quality"
manim-docker-mcp/
├── animations/ # Manim动画脚本
├── app/ # FastAPI应用程序
├── media/ # 生成的动画(CLI模式)
├── output/ # 生成的动画(API模式)
├── temp/ # 临时文件
├── uploads/ # 上传的动画脚本
├── Dockerfile # Docker镜像定义
├── docker-compose.yml # Docker Compose配置
└── README.md # 本文件
| 标志 | 分辨率 | 帧率 | 最适合 |
|---|---|---|---|
-ql | 480p | 15fps | 快速预览 |
-qm | 720p | 30fps | 通用用途 |
-qh | 1080p | 60fps | 演示 |
-qk | 1440p | 60fps | 生产视频 |
-p:预览输出文件-t:透明背景--save_last_frame:仅渲染最后一帧-c COLOR:设置背景颜色GET /list-files?directory=/manim
POST /write-file?filepath=/manim/temp/example.py
POST /run-manim?filepath=/manim/temp/example.py&scene_name=CircleToSquare
GET /download-file?filepath=/media/videos/example/480p15/CircleToSquare.mp4
完整的API文档可在/docs端点获取。
本项目支持模型上下文协议(MCP),使AI助手能够:
MCP会话示例:
用户:创建一个显示圆变成正方形的动画
AI:我将为您创建该动画...
容器中包含了一个最小化的LaTeX安装。可以在动画中使用自定义LaTeX:
formula = MathTex(r"\int_{a}^{b} f(x) \, dx = F(b) - F(a)")
self.play(Write(formula))
修改docker-compose.yml文件以挂载其他目录:
volumes:
- ./my_custom_dir:/manim/custom
如果您遇到问题:
本项目采用Apache License 2.0许可 - 详情请参阅LICENSE文件。