h5p-mcp
<div align="center">
<img src="https://raw.githubusercontent.com/falkenslab/h5p-mcp/main/docs/static/img/logo.svg" alt="h5p-mcp logo" width="112"/>
# h5p-mcp
**Your AI agent writes interactive H5P content, as a package ready to upload.**<br/>
Multiple choice, true/false, fill in the blanks, drag the words, cards, question sets and course presentations, built and checked on your computer.


[](https://www.npmjs.com/package/@falkenslab/h5p-mcp)
[](LICENSE)
**[π Documentation](https://falkenslab.github.io/h5p-mcp/)** Β· [π DocumentaciΓ³n en espaΓ±ol](https://falkenslab.github.io/h5p-mcp/es/)
</div>
h5p-mcp is an MCP server that turns content an AI agent writes (questions and their answers, cards, slides) into an `.h5p` package on your computer, checked against its content type before it's written, and reads one back to review or reuse it. The packages carry only their content, not H5P's code, so they're small and play on any site that has the content type, such as a Moodle with its H5P activity. It uploads nothing: in Moodle, the moodle-teacher extension does that.
## β¨ Why h5p-mcp
- π¦ **Packages a site takes.** The format Moodle validates and deploys, tried on a real site.
- β
**Checked before it's written.** A question without its right answer, or a blank without its word, is refused with what to fix.
- π **Read back.** An existing package's content, in the same shape, to review it, change it and build it again.
- π **Reviewed before uploading.** A plain preview of the questions, options and cards, without H5P's player.
- πͺΆ **Nothing else on your computer.** One bundled file run with `npx`; no H5P code to install or keep up to date.
## π Quick start
With [Node.js](https://nodejs.org) 20 or later, add it to Claude Code:
```bash
claude mcp add h5p-mcp -- npx -y @falkenslab/h5p-mcp
```
Then ask for an activity. Other AI apps, and agents built on agent-kit, are in [Getting started](https://falkenslab.github.io/h5p-mcp/getting-started).
## π¬ What you can ask
π©βπ« As a teacher:
- "Make me a ten-question quiz on the water cycle, as an H5P package in my Downloads folder."
- "Turn these vocabulary pairs into Dialog Cards, in Spanish."
- "Read this .h5p and add two harder questions to it."
## π§° What's inside
| Area | For example |
| --- | --- |
| π§© Content types | `H5P.MultiChoice`, `H5P.TrueFalse`, `H5P.Blanks`, `H5P.DragText`, `H5P.Dialogcards`, `H5P.Flashcards`, `H5P.QuestionSet`, `H5P.CoursePresentation` |
| π οΈ Tools | `list_h5p_types` (the types and their fields), `build_h5p` (the package and its preview), `read_h5p` (a package's content) |
| π Languages | Buttons and messages in the package's language, from each type's own translations (about fifty languages) |
| π For agents | The `h5p` extension in [agent-extensions](https://github.com/falkenslab/agent-extensions), with its skills and the `h5p-authoring` capability |
The [tools reference](https://falkenslab.github.io/h5p-mcp/reference/tools) has every tool with the description the agent reads.
## π Documentation
- **[Getting started](https://falkenslab.github.io/h5p-mcp/getting-started)**: install it in your AI app.
- **[Building packages](https://falkenslab.github.io/h5p-mcp/packages)**: the content types, what is checked, languages and what isn't supported yet.
- **[Tools](https://falkenslab.github.io/h5p-mcp/reference/tools)**: every tool, with the description the agent reads.
## π οΈ Developing
The design is in [`.minispec/`](.minispec/README.md) and the main decision in [ADR-005](.minispec/decisions/ADR-005-content-only-packages.md); `CLAUDE.md` lists every command. `npm run build`, `npm test` and `npm run check` before every commit. Releases are published to npm by the owner.
<div align="center">
Made with π by Falken's Lab Team
</div>
TDQS
Scored across 4 tools
Each tool has a clearly distinct role: listing supported H5P types and their field schemas, building a package, reading an existing package, and reporting server metadata. There is no overlapping behavior that would make tool selection ambiguous.
Three core tools follow a clear verb_noun_h5p pattern (list_h5p_types, build_h5p, read_h5p), making their relationship obvious. server_info is a minor deviation, but the overall convention remains readable and predictable.
Four tools are well-scoped for a package builder: schema discovery, build, read, and server metadata. No tool feels redundant, and the surface is compact without being thin.
The core lifecycle of discovering types, building validated packages, and reading packages is covered. Upload/deployment is explicitly out of scope, but the surface otherwise lacks no obvious operation needed for content-only package work.