Use Explanimate in your coding tool

MCP is a standard way to plug extra tools into AI coding assistants. Connect Explanimate once and you can ask for a video from inside your editor.

What you need

  • Node 20 or newer, with pnpm. That is what the project itself runs on.
  • ffmpeg on your PATH, and Chrome or Chromium installed. The renderer encodes with ffmpeg and checks the finished frames in Chrome.
  • A Meta Muse key (MODEL_API_KEY). The server tells you on startup if it is missing, and the run fails without it. Planning can use that key or an OpenRouter key (OPENROUTER_API_KEY).
  • A Deepgram key (DEEPGRAM_API_KEY) for the narration. Without it the video renders silent, with timed captions.
  • Backup keys, optional. When Meta is the provider and a call fails, planning falls back to OpenRouter if OPENROUTER_API_KEY is set; when Deepgram fails, the narration falls back to Cartesia if CARTESIA_API_KEY is set.

Install it

  1. Clone the repo and install it. There is no build step: the server runs from source.
    Terminal · bash
    git clone https://github.com/slubbles/explanimate && cd explanimate
    pnpm install
    cp .env.example .env   # add your keys (see below)
  2. Put your keys in .env. That file is for the command line; your coding tool also needs the keys in its own config below, because the server only reads its environment.

Connect your tool

Replace /path/to/explanimate below with where you cloned the repo.

Claude Code

In a terminal, with the repo cloned. The keys go on the command line, with the server command after the --.

Terminal · bash
claude mcp add explanimate --transport stdio \
  --env MODEL_API_KEY=your-meta-key \
  --env DEEPGRAM_API_KEY=your-deepgram-key \
  -- node /path/to/explanimate/packages/mcp/bin/explanimate-mcp.mjs

Claude Desktop

Open it from Settings, Developer, Edit Config. Claude Desktop does not read your shell environment, so the keys go in the file; keep it private. Fully quit and reopen the app after saving.

claude_desktop_config.json · json
{
  "mcpServers": {
    "explanimate": {
      "command": "node",
      "args": ["/path/to/explanimate/packages/mcp/bin/explanimate-mcp.mjs"],
      "env": { "MODEL_API_KEY": "your Meta key", "DEEPGRAM_API_KEY": "your Deepgram key" }
    }
  }
}

Cursor

Use ~/.cursor/mcp.json for every project, or .cursor/mcp.json inside one project. Cursor fills ${env:NAME} from your environment, so the file names the secret without containing it.

~/.cursor/mcp.json · json
{
  "mcpServers": {
    "explanimate": {
      "command": "node",
      "args": ["/path/to/explanimate/packages/mcp/bin/explanimate-mcp.mjs"],
      "env": { "MODEL_API_KEY": "${env:MODEL_API_KEY}", "DEEPGRAM_API_KEY": "${env:DEEPGRAM_API_KEY}" }
    }
  }
}

Codex

Add one table to ~/.codex/config.toml, then restart Codex.

~/.codex/config.toml · toml
[mcp_servers.explanimate]
command = "node"
args = ["/path/to/explanimate/packages/mcp/bin/explanimate-mcp.mjs"]

[mcp_servers.explanimate.env]
MODEL_API_KEY = "your Meta key"
DEEPGRAM_API_KEY = "your Deepgram key"

VS Code Copilot

In .vscode/mcp.json in your workspace. VS Code's own format uses the servers key, not mcpServers.

.vscode/mcp.json · json
{
  "servers": {
    "explanimate": {
      "type": "stdio",
      "command": "node",
      "args": ["/path/to/explanimate/packages/mcp/bin/explanimate-mcp.mjs"],
      "env": { "MODEL_API_KEY": "your Meta key", "DEEPGRAM_API_KEY": "your Deepgram key" }
    }
  }
}

Muse Code

Merge with what is already in ~/.config/muse/settings.json.

~/.config/muse/settings.json · json
{
  "schema_version": 1,
  "mcp_servers": {
    "explanimate": {
      "transport": "stdio",
      "command": "node",
      "args": ["/path/to/explanimate/packages/mcp/bin/explanimate-mcp.mjs"],
      "env": { "MODEL_API_KEY": "${MODEL_API_KEY}", "DEEPGRAM_API_KEY": "${DEEPGRAM_API_KEY}" },
      "mode": "optional"
    }
  }
}

Ask for a video

Type one of these in your tool once the server is connected:

Your coding tool · text
/explanimate how does this repo work
/explanimate explain what this repo is about https://github.com/milind-soni/OpenMausBot

Say this repo without a link and it explains the folder you are in. You get back the paths of the mp4 and both boards; the files land in ~/explanimate-videos/<name>.

Behind the prompt are three tools, in plain words: explain starts a video, explain_status waits and reports progress until it is done, and explain_cancel stops a running one. A video takes a few minutes, so the agent checks back while it works.

If something is wrong

  • The tool does not show up. Save the config and restart the app; Claude Desktop needs a full quit and reopen.
  • It says MODEL_API_KEY is not set. The keys must be in the env part of your tool's config, not just in the repo .env, which the server does not read.
  • Where did the video go? Each run writes to its own folder under ~/explanimate-videos, unless you pass a different folder.
  • The render fails about Chrome or ffmpeg. Install both, then try again. If Chrome is not in a standard place, point EXPLANIMATE_CHROME at its binary.