数学动画创建工具

一个基于Docker的环境,用于使用Manim创建数学动画,提供CLI界面和Web API支持,并集成AI助手交互功能。

  • by wstcpyt
  • Python
  • 本地部署
  • 19 星标
  • 更新于
在 GitHub 查看 wstcpyt/manim-mcp

使用说明

Manim MCP

基于Docker的数学动画创建环境 马尼姆,具有CLI界面和web API,支持人工智能助手的模型上下文协议(MCP)。

📑 概述

该项目提供:

  1. 集装箱化机械环境:在隔离的、可复制的Docker环境中运行Manim
  2. Web API:通过HTTP请求创建和管理Manim动画
  3. MCP集成:与Claude等人工智能助手直接互动
  4. 文件管理:上传脚本并下载生成的动画

🚀 快速开始

先决条件

安装

选项1:使用预构建映像(推荐)

只需从Docker Hub中提取预构建的镜像:

docker pull wstcpyt/manim-docker-mcp:latest

然后用docker compose运行它:

docker compose up -d

选项2:本地构建

  1. 克隆存储库:

    git clone https://github.com/YOUR_USERNAME/manim-docker-mcp.git
    cd manim-docker-mcp
    
  2. 构建Docker镜像:

    docker compose build
    

用法

命令行接口命令模式

在中创建一个Python文件 animations 目录(见下面的示例),然后运行:

docker compose run manim -pql animations/example.py ExampleScene

API模式

启动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 mode with preview (-p), low quality (-ql)
docker compose run manim -pql animations/example.py CircleToSquare

# API mode
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 animation scripts
├── app/                  # FastAPI application
├── media/                # Generated animations (CLI mode)
├── output/               # Generated animations (API mode)
├── temp/                 # Temporary files
├── uploads/              # Uploaded animation scripts
├── Dockerfile            # Docker image definition
├── docker-compose.yml    # Docker Compose configuration
└── README.md             # This file

🔧 配置

质量设置

标志 分辨率 帧率 最适合
-ql 480p 15fps 快速预览
-qm 720p 30fps 通用
-qh 1080p 60fps 演示文稿
-qk 1440p 60fps 制作视频

其他有用的标志

  • -p:预览输出文件
  • -t:透明背景
  • --save_last_frame:仅渲染最后一帧
  • -c COLOR:设置背景颜色

🌐 API文档

核心终点

列出文件

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)

该项目支持 模型上下文协议(MCP),使AI助手能够:

  1. 基于自然语言描述创建Manim脚本
  2. 运行动画并提供下载链接
  3. 浏览和管理生成的媒体文件

MCP会话示例:

User: Create an animation showing a circle morphing into a square
AI: I'll create that for you...

🔍 高级用法

定制LaTeX

该容器包含一个最小的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

🛠️ 故障排除

常见问题

  • Docker未运行:确保Docker守护进程正在运行
  • 权限错误:容器需要对装载的卷进行写访问
  • 丢失媒体:检查正确的输出目录(介质/适用于CLI,输出/适用于API)

获取帮助

如果您遇到问题:

  1. 检查 Manim文档
  2. 搜索现有的GitHub问题
  3. 创建一个新问题,详细说明您的问题

📜 许可证

此项目根据Apache许可证2.0获得许可-请参阅 许可证 文件以获取详细信息。

🙏 致谢