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/mcpIt 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 is | A private draft | Unlisted |
| Who can watch | Whoever signs in and claims it through the link | Anyone with the link, no account needed |
| Tools | The three stream tools, plus a playlist tool | The three stream tools only |
There's no playlist tool: explaining code, a branch or a pull request takes one explainer.
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. In Claude Code:
claude mcp add --transport http scrimba-explain https://scrimba.com/explain/pr/mcpIn 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:
{
"mcpServers": {
"scrimba": {
"type": "http",
"url": "https://scrimba.com/explain/pr/mcp"
}
}
}Then run it headless:
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
| Tool | What it does |
|---|---|
start_explainer_stream | Opens a new explainer and hands back its link |
append_explainer_chunk | Streams the next part of the lesson into it |
finish_explainer_stream | Closes 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 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
429with aRetry-Afterheader, 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 diff, builds an explainer, and keeps one comment on the pull request updated with the link.
It skips draft pull requests, and pull requests from forks unless you allow them.
To set it up, run the installer from your repository:
npx pr-explainerIt writes .github/workflows/scrimba-pr-explainer.yml and can store the Claude Code token the workflow needs as a repository secret. It doesn't commit anything. See the README for the full setup and options.

