An MCP server that converts web content into high-quality Mochi flashcards following Andy Matuschak's spaced repetition principles.
- fetch_url - Extract clean markdown from any URL via JinaAI Reader
- list_decks - List your Mochi decks
- create_cards - Create flashcards in Mochi (single or batch)
- Built-in resources with Matuschak's flashcard writing principles
- Prompt templates for generating and reviewing flashcards
- Python 3.11+
- uv for dependency management
- Mochi API key from https://app.mochi.cards/settings/api
git clone https://github.com/JoshuaOliphant/mochi_donut.git
cd mochi_donut
uv syncuv run python -m mochi_donut.serverAdd to ~/.claude/settings.json:
{
"mcpServers": {
"mochi-donut": {
"command": "uv",
"args": ["run", "--directory", "/path/to/mochi_donut", "python", "-m", "mochi_donut.server"],
"env": {
"MOCHI_API_KEY": "your-mochi-api-key"
}
}
}
}Restart Claude Code, then you can say things like:
- "Create flashcards from this article: https://example.com/article"
- "List my Mochi decks"
Once installed in Claude Code:
- Provide a URL to create flashcards from
- Claude fetches the content using
fetch_url - Claude reads the
matuschak://principlesresource for guidance - Claude generates flashcards following those principles
- Claude uses
list_decksto find your target deck - Claude creates the cards using
create_cards
# Run tests
uv run pytest
# Run specific test
uv run pytest tests/test_server.py::TestFetchUrlTool -vMinimal MCP server built with FastMCP:
src/mochi_donut/
├── __init__.py # Package entry point
└── server.py # MCP server with tools, resources, and prompts
Dependencies: fastmcp, httpx
MIT