A side-by-side look at the Anki and EngrAmo MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Anki for education work as a local process; choose EngrAmo for education over a hosted endpoint. You can also run both side by side in one mcpServers block.
get_study_overview, get_due_cards, answer_cards.ENGRAMO_API_URL, ENGRAMO_API_TOKEN.get_server_version, list_catalogs, get_catalog.Rows where the two servers differ are marked.
| Spec | E EngrAmo | |
|---|---|---|
| Category | Education | Education |
| Quality signal | 56/100 · Good | 67/100 · Great |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Remote HTTP/SSE |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | None listed | ENGRAMO_API_URLENGRAMO_API_TOKEN |
| Verified owner | Community listing | Community listing |
| GitHub stars | 42 | 2 |
| Directory activity | 0 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
| Tools | 29 | 27 |
| Full listing | View Anki | View EngrAmo |
get_study_overviewToday's new/learning/review counts per deck, cards reviewed today, streak, 7/30-day totals.get_due_cardsnum` cards to study (optionally from one `deckName`), with the interval each button would give.answer_cardsRecord answers (`cardId`, `ease` 1-4) and get each card's new interval. *(Previously `update_cards`.)*find_leechesWeakest cards (leech tag / many lapses), ranked by lapses and ease.get_card_historyFull review log of up to 20 cards.get_retention_statsTrue retention (young/mature), reviews per day and time spent for a deck over N days.undoUndo the last action in Anki.find_cardsPaginated search (`query`, `limit`, `offset`); pick the sections to return with `include`: `question`, `answer`, `fields`, `stats`.suspend_cardsDeactivate/reactivate cards, e.g. all cards with tag X in deck Y. Scheduling is preserved. Pass a `label` when suspending (notes get the tag `paused::<label>`) and `unsuspend_cards { label }` later resumes exactly that group, leaving cards suspended for other reasons alone.move_cardsMove cards to `targetDeck` (created if missing).reschedule_cardsset_due_date` (`days`: `0`, `1!`, `3-7`), `forget` (reset to new) or `relearn`.add_cardCreate one note.get_server_versionGet this MCP server's own build version (not a catalog/card's `version` field)list_catalogsList all flashcard catalogsget_catalogGet a single catalog by IDupdate_catalogUpdate a catalog's name or descriptiondelete_catalogDelete a cataloglist_cardsList cards in a catalogget_cardGet a single card by IDupdate_cardUpdate a card's contentdelete_cardDelete a cardget_due_cardsGet cards due for review todayget_all_learning_cardsGet all cards in the learning queueadd_card_to_learningAdd a card to the learning queuePaste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"anki": {
"command": "npx",
"args": [
"-y",
"github:nietus/anki-mcp"
]
}
}
}
{
"mcpServers": {
"engramo": {
"command": "npx",
"args": [
"-y",
"@engramo/mcp"
],
"env": {
"ENGRAMO_API_URL": "YOUR_ENGRAMO_API_URL_HERE",
"ENGRAMO_API_TOKEN": "YOUR_ENGRAMO_API_TOKEN_HERE"
}
}
}
}