MCP server for syncing Obsidian flashcards to Anki via AnkiConnect
Server has 4 tools with complete input schemas and descriptions. Naming follows verb_noun convention (flashcard_parse, flashcard_sync, flashcard_list, flashcard_check). Descriptions are present (avg 95 chars) but lack actionable context for LLM selection, they state WHAT but not WHEN or WHY to use each tool. Parameters have types and descriptions, but lack constraints (enums, ranges, patterns). No output schemas documented. Error handling returns JSON with 'error' field but lacks recovery guidance or categorization. Missing tool annotations (readOnlyHint, destructiveHint). No pagination support despite list tool returning potentially large results.
Check system health: AnkiConnect connection, vault access, flashcard counts.
List flashcards in the Obsidian vault. Filter by deck or subject code.
Parse a flashcard markdown file and return extracted cards. Use this to preview what will be synced to Anki.
Sync flashcards from Obsidian vault to Anki. Creates new cards and updates existing ones.
No output schemas documented. LLMs cannot infer what fields to expect from tool responses, forcing them to parse unstructured JSON and plan downstream calls blindly.
flashcard_list lacks pagination (no offset/limit/cursor support despite returning potentially large result sets). Large result sets will blow context windows and degrade LLM reasoning.
Tool descriptions lack WHEN/WHY context. 'Parse a flashcard markdown file' does not tell LLM when to call this vs flashcard_sync or flashcard_list. Descriptions should guide tool selection.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). flashcard_sync is destructive but unmarked; flashcard_parse is read-only but unmarked. LLMs cannot infer safety/retry semantics.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Error responses lack recovery guidance. Returning {error: 'message'} tells LLM nothing about whether to retry, ask user, or give up. Should categorize errors and suggest next steps.