A side-by-side look at the Anki MCP and Moodle MCP Server Aql MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Anki MCP for education work as a local process; choose Moodle MCP Server Aql for education as a local process. You can also run both side by side in one mcpServers block.
manage_flashcards, study_session, manage_decks.MOODLE_URL, MOODLE_TOKEN.list_courses, get_course, list_course_users.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Education | Education |
| Quality signal | 59/100 · Good | 56/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | None listed | MOODLE_URLMOODLE_TOKEN |
| Verified owner | Community listing | Community listing |
| GitHub stars | 11 | 1 |
| Directory activity | 2 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
| Tools | 25 | 10 |
| Full listing | View Anki MCP | View Moodle MCP Server Aql |
manage_flashcardsCreate, update, delete, search, inspect, and tag Anki flashcards through one high-level note/card workflow. Use this for note lifecycle work and card lookup, not for deck structure, note-type schema changes, or study scheduling. Mutating operations change the local Anki collection immediately; searches are read-only. Choose `operation` first, then provide the operation-specific IDs, query, fields, tags, or pagination inputs described by the schema.study_sessionFind due cards and apply review-state actions such as answering, suspending, unsuspending, resetting, and relearning cards. Use this for scheduling and review flow, not for editing note content or reorganizing decks. Several operations mutate card state in Anki immediately; `find_due` and `check_status` are read-only. Select `operation`, then pass either `query`, `cardIds`, or `answers` as required for that action.manage_decksCreate, delete, list, inspect, move cards between, and configure Anki decks. Use this for deck-level organization, not for editing flashcard fields, note types, or study answers. Create, delete, move, and config operations mutate the collection; list and stats/config reads do not. Set `operation` first and supply the matching deck names, card IDs, target deck, or config ID.get_analyticsRead study analytics and review history for decks, the collection, or specific cards. Use this when the agent needs reporting or diagnostics, not when it needs to mutate Anki data. This tool is read-only but some scopes can return large payloads, so prefer the narrowest scope and explicit card IDs or timestamps when available. Choose `scope`, then provide the deck, cards, or review start timestamp required by that scope.manage_modelsList, create, and modify Anki note types, including fields, templates, and CSS styling. Use this for schema/template work, not for individual note content, decks, or review scheduling. All operations except `list` mutate the collection and can affect future rendering or compatibility of notes using that model. Pick `operation` first, then provide the model name plus the exact field, template, CSS, or creation inputs needed.anki_operationsRun general Anki utility operations: sync, version lookup, package import/export, profile listing, and media storage or retrieval. Use this for cross-cutting maintenance tasks that do not belong to flashcard, deck, model, or study workflows. Import, export, sync, and media writes have external side effects; version and profile reads do not. Select `operation`, then provide the relevant deck name, file path, filename, media payload, URL, or pattern.get_media_fileRetrieve one named Anki media file as base64 data and, for images, as MCP image content that compatible clients can inspect. Use this when an agent needs the actual contents of a referenced media asset, not when it only needs media names or storage operations; those belong in `anki_operations`. This tool is read-only and rejects path traversal. Pass a simple filename exactly as stored in Anki media.gui_add_cardsgui_answer_cardgui_browsegui_check_databasegui_current_cardlist_coursesFull course catalog with category drill-downget_courseDetail view for any courselist_course_usersEnrolled users with roles and access data (now supports course name search with interactive selection)list_assignmentsAll assignments with due dateslist_categoriesFull hierarchy with exact parent resolutionget_site_infoInstance overview — site name, version, course countget_userDetail view for a Moodle userlist_user_coursesCourses for a specific usersearch_usersUser search by standard Moodle identity fieldssearch_courses_by_nameSearch for courses by name with partial matching and interactive selectionPaste 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-mcp": {
"command": "npx",
"args": [
"-y",
"@arielbk/anki-mcp"
]
}
}
}
{
"mcpServers": {
"moodle-mcp-server-aql": {
"command": "npx",
"args": [
"-y",
"moodle-mcp-server-aql"
],
"env": {
"MOODLE_URL": "YOUR_MOODLE_URL_HERE",
"MOODLE_TOKEN": "YOUR_MOODLE_TOKEN_HERE"
}
}
}
}