Aller au contenu
Oui, Claude peut générer tes vidéos Manim lui-même, sans installation compliquée
Tutoriel

Oui, Claude peut générer tes vidéos Manim lui-même, sans installation compliquée

Un serveur MCP qui donne à Claude la main sur Manim : il écrit la scène, lance le rendu, et te donne directement le fichier vidéo. Installation réduite à une seule commande.

Attuoman Prince Josias

Auteur : Attuoman Prince Josias

Publié le

Écrire une scène Manim, c'est une chose. La rendre à chaque fois à la main, récupérer le fichier, vérifier qu'il n'y a pas d'erreur LaTeX, c'est autre chose. Ici, Claude fait les deux : il écrit la scène, ET il vous donne la vidéo finie. Un seul outil MCP suffit.

Le Model Context Protocol (MCP) est un standard ouvert, créé par Anthropic puis confié à la Linux Foundation fin 2025, qui permet à un assistant comme Claude de se brancher sur des outils ou des données externes sans qu'il faille coder une intégration sur mesure à chaque fois. Concrètement, un serveur MCP expose des tools, des actions que Claude peut déclencher lui-même pendant la conversation. C'est ce qu'on construit ici, avec un seul tool.

Le principe

Contrairement aux serveurs des guides précédents, celui-ci n'appelle aucune API distante. Il fait tourner un programme sur ta propre machine : Claude écrit du code Manim, le tool le passe à la commande manim en local, et renvoie le chemin de la vidéo une fois le rendu terminé.

Tout s'installe en une seule commande

Manim a une réputation compliquée à installer, parce qu'il dépend normalement de FFmpeg et d'une distribution LaTeX à installer à côté. La solution la plus simple : passer par conda-forge, qui embarque tout sauf LaTeX. Et pour rester sur une seule commande sans complexifier l'install, ce guide évite volontairement LaTeX (donc pas de formules mathématiques dans la démo, seulement des formes et du texte).

Terminalinstallation complète
# Tout est dedans, rien à ajouter à côté : Python, Manim (avec FFmpeg), le SDK MCP
conda create -n manim-mcp python=3.11 -y && conda activate manim-mcp && conda install -c conda-forge manim -y && pip install mcp
Pourquoi conda et pas uv, ici : les guides précédents utilisaient uv, très bien pour des dépendances Python pures. Manim a des dépendances système (Cairo, Pango, FFmpeg) que uv ne gère pas, alors que conda-forge les embarque directement. C'est ce qui permet de tout tenir en une commande.

Le serveur : un tool, pas plus

Crée server.py. Le tool reçoit le code Manim écrit par Claude, le rend en arrière-plan, et renvoie le chemin du fichier vidéo.

Publicité
Pythonserver.py
from mcp.server.fastmcp import FastMCP
import asyncio
import tempfile
import pathlib

mcp = FastMCP("manim-video")

TIMEOUT_SECONDS = 90

@mcp.tool()
async def generate_manim_video(python_code: str, scene_name: str) -> str:
    """Genere une video a partir d'un script Manim et renvoie le chemin du fichier .mp4.

    Args:
        python_code: Code complet d'une scene Manim (imports compris), heritant de Scene.
        scene_name: Nom exact de la classe Scene a rendre.
    """
    workdir = pathlib.Path(tempfile.mkdtemp(prefix="manim_mcp_"))
    script_path = workdir / "scene.py"
    script_path.write_text(python_code, encoding="utf-8")

    process = await asyncio.create_subprocess_exec(
        "manim", "-ql", "--media_dir", str(workdir / "media"),
        str(script_path), scene_name,
        stdout=asyncio.subprocess.PIPE,
        stderr=asyncio.subprocess.PIPE,
    )

    try:
        _, stderr = await asyncio.wait_for(process.communicate(), timeout=TIMEOUT_SECONDS)
    except asyncio.TimeoutError:
        process.kill()
        return "Le rendu a depasse le delai autorise (90s). Simplifie la scene et reessaie."

    if process.returncode != 0:
        return f"Erreur de rendu Manim :\n{stderr.decode()[-800:]}"

    videos = list((workdir / "media" / "videos").rglob("*.mp4"))
    if not videos:
        return "Le rendu a reussi mais aucune video n'a ete trouvee."

    return f"Video generee : {videos[0]}"


if __name__ == "__main__":
    mcp.run(transport="stdio")
Ce qu'il ne faut jamais laisser passer
1Toujours un dossier temporaire dédié. Chaque rendu part d'un dossier propre, pas d'un fichier existant qu'on risquerait d'écraser.
2Jamais sans timeout. Un rendu qui boucle ou plante ne doit pas bloquer le serveur indéfiniment.
3L'échec doit remonter, jamais disparaître. Une erreur de syntaxe Manim doit arriver jusqu'à Claude en texte lisible, pas s'effacer dans un plantage silencieux.
4Qualité rapide d'abord. Le flag -ql (basse qualité) rend en quelques secondes. Passe en -qh seulement une fois la scène validée.

Connecter le serveur à Claude Code

Terminalclaude mcp add
claude mcp add manim-video -- python /chemin/absolu/vers/server.py

Détail de la commande et des options dans le guide officiel Claude Code sur MCP.

Une fois branché, une demande simple suffit : « fais-moi une animation où un cercle devient un carré, avec le texte De Le Code IA, avec Manim en dessous ». Claude écrit la scène Manim lui-même, appelle le tool, attend le rendu, et te donne le chemin du fichier .mp4 prêt à poster.

La suite : un seul serveur pour tout

Ce tool, celui du taux de change et celui du foot partagent la même structure de base. Les regrouper dans un même serveur multi-tools permettrait à Claude de choisir seul lequel utiliser selon la demande.

Publicité

Une newsletter par semaine, gratuite.

Actus IA, tutoriels et outils. Zero spam, desabonnement en 1 clic.

MCP Model Context Protocol Claude Code Manim Python tutoriel FastMCP vidéo mathématique

Notez cet article

Soyez le premier a noter

Commentaires 0

Aucun commentaire pour l'instant.

Tu peux être le premier.

Connectez-vous pour laisser un commentaire

Compte gratuit, 30 secondes.