Skip to content

Agent plugins and CI ​

Scrimba Explain has a second MCP endpoint for agent plugins and CI jobs, where the people who watch an explainer aren't the ones who asked for it:

https://scrimba.com/explain/pr/mcp

It works like the main MCP server, with one difference: an explainer created through it is unlisted from the start. Post the link in a pull request comment or a team chat, and anyone who opens it can watch, no Scrimba account needed.

How it differs from /explain/mcp ​

/explain/mcp/explain/pr/mcp
A new explainer isA private draftUnlisted
Who can watchWhoever signs in and claims it through the linkAnyone with the link, no account needed
ToolsThe three stream tools, plus a playlist toolThe three stream tools only

There's no playlist tool: explaining code, a branch or a pull request takes one explainer. Everything else is the same as the main server, including the mode that picks the explainer's frame and the upload route for your own pictures.

Connecting ​

The endpoint is a remote streamable HTTP server. It has no sign-in step and takes no API key. Add it the way your tool adds MCP servers. For a developer's own machine, the Explain by Scrimba plugin is the shorter route; it connects to the main server. In Claude Code:

bash
claude mcp add --transport http scrimba-explain https://scrimba.com/explain/pr/mcp

In a CI job, where nobody is around to answer permission prompts, give the agent the server in a config file and allow the three tools up front. For Claude Code, save this as scrimba.mcp.json:

json
{
  "mcpServers": {
    "scrimba": {
      "type": "http",
      "url": "https://scrimba.com/explain/pr/mcp"
    }
  }
}

Then run it headless:

bash
claude -p "Make a Scrimba explainer of this pull request" \
  --mcp-config scrimba.mcp.json \
  --allowedTools "mcp__scrimba__start_explainer_stream,mcp__scrimba__append_explainer_chunk,mcp__scrimba__finish_explainer_stream"

The tools ​

ToolWhat it does
start_explainer_streamOpens a new explainer and hands back its link
append_explainer_chunkStreams the next part of the lesson into it
finish_explainer_streamCloses the lesson

The agent writes the lesson itself, then streams it to Scrimba. The explainer renders live from the first chunk, so the link is watchable while the agent is still writing.

The link the start tool returns ends in ?claim=.... Share that one. Until someone has opened it, the explainer stays locked, so its plain URL shows nothing. After that, the plain URL works too.

Claiming ​

An unlisted explainer doesn't belong to anyone yet. To keep it, sign in to Scrimba when you open it and claim it. Only one person can claim it.

That person becomes its owner and controls its visibility from then on. So think twice before posting the link somewhere public, like a pull request on an open-source repository.

The start tool takes an optional visibility, which applies when a signed-in user claims the explainer:

  • Leave it unset, or set it to "unlisted", and the explainer stays open to anyone with the link after it's claimed. Use this when the link is shared with a team.
  • Set it to "private" and claiming restricts it to the person who claimed it.

See Privacy, claiming and sharing.

Limits ​

  • Each explainer can hold up to 10 minutes of narration. Once it's full, further chunks are refused.
  • A stream that goes 30 minutes without a new chunk is finished automatically.
  • The limits on how many requests, and how many new explainers, Scrimba accepts per minute apply to all its MCP endpoints together, not to each caller. When Scrimba is busy, the endpoint answers 429 with a Retry-After header, so a CI job should wait that long and try again.

The Scrimba PR Explainer action ​

Scrimba's own GitHub Action, scrimba/pr-explainer, uses this endpoint. On every pull request that's ready for review, it runs Claude Code on the code, builds an explainer, and keeps one comment on the pull request updated with the link. Setup, options and what the explainer covers are on Pull requests.