{"id":"ankimcp-anki-mcp-server","name":"anki-mcp-server","homepage":"https://ankimcp.ai","repo_url":"https://github.com/ankimcp/anki-mcp-server","category":"ai-ml","subcategories":[],"tags":["mcp","anki","anki-connect","flashcards","spaced-repetition","ai-assistant","notes","media","developer-tools"],"what_it_does":"Provides an MCP server (with optional local STDIO or remote HTTP mode) that lets AI assistants interact with an Anki collection via the AnkiConnect plugin—supporting sync, deck management, note CRUD, media management, and note model/template retrieval.","use_cases":["AI-assisted spaced repetition workflows (review, explanations, and adaptive practice)","Automating note creation/updates in Anki from conversational prompts","Searching and organizing Anki notes/decks using natural language mapped to AnkiConnect/MCP tools","Managing Anki media (upload/download/delete) as part of study content flows","Integration with MCP-capable desktop/editor clients (Claude Desktop, Cursor, Cline, Zed)","Read-only exploration of Anki data via MCP to reduce risk of accidental changes"],"not_for":["Running without AnkiConnect installed (server relies on AnkiConnect)","Use as a general Anki automation API for non-MCP environments without suitable transport support","Scenarios requiring strong network-based access control (especially when using exposed ngrok tunnels)"],"best_when":"You want an AI assistant to read and (optionally) update your local Anki collection through an MCP client, with AnkiConnect running and (preferably) using local STDIO mode or a tightly controlled HTTP setup.","avoid_when":"You cannot control who can reach the HTTP/ngrok endpoint, or you need guarantees that updates won’t fail in edge cases (e.g., Anki UI open during updateNoteFields).","alternatives":["Using AnkiConnect directly from your application (custom client calls)","Different MCP servers tailored to Anki/AnkiConnect","Direct integration via AnkiConnect REST calls without MCP","Using a different spaced-repetition platform with a supported API and auth model"],"af_score":60.2,"security_score":44.5,"reliability_score":35.0,"package_type":"mcp_server","discovery_source":["github"],"priority":"high","status":"evaluated","version_evaluated":null,"last_evaluated":"2026-03-30T13:38:13.099631+00:00","interface":{"has_rest_api":true,"has_graphql":false,"has_grpc":false,"has_mcp_server":true,"mcp_server_url":null,"has_sdk":false,"sdk_languages":[],"openapi_spec_url":null,"webhooks":false},"auth":{"methods":["MCP transport to local/remote server (STDIO or HTTP)","Optional AnkiConnect API key via environment variable ANKI_CONNECT_API_KEY (if configured in AnkiConnect)"],"oauth":false,"scopes":false,"notes":"The MCP server itself appears to rely on local trust/transport. Authentication is primarily via AnkiConnect configuration (optional API key) and network exposure controls when using HTTP/ngrok."},"pricing":{"model":null,"free_tier_exists":false,"free_tier_limits":null,"paid_tiers":[],"requires_credit_card":false,"estimated_workload_costs":null,"notes":"No package pricing details were provided in the supplied README/manifest beyond npm metadata."},"requirements":{"requires_signup":false,"requires_credit_card":false,"domain_verification":false,"data_residency":[],"compliance":[],"min_contract":null},"agent_readiness":{"af_score":60.2,"security_score":44.5,"reliability_score":35.0,"mcp_server_quality":82.0,"documentation_accuracy":75.0,"error_message_quality":0.0,"error_message_notes":null,"auth_complexity":85.0,"rate_limit_clarity":10.0,"tls_enforcement":35.0,"auth_strength":45.0,"scope_granularity":20.0,"dependency_hygiene":55.0,"secret_handling":70.0,"security_notes":"Security posture depends heavily on transport and network exposure. Local STDIO mode is safer than exposing an HTTP server publicly via ngrok. The README warns that anyone with the ngrok URL can access the Anki data, implying weak access control when tunneling. Optional AnkiConnect API key support exists via ANKI_CONNECT_API_KEY, but there is no evidence of fine-grained authorization scopes. TLS is not explicitly described; default HTTP mode suggests loopback by default (127.0.0.1), but remote hosting and ngrok exposure can increase risk. Dependency hygiene is inferred from manifest only; no CVE/SBOM info provided in the supplied content.","uptime_documented":0.0,"version_stability":55.0,"breaking_changes_history":50.0,"error_recovery":35.0,"idempotency_support":"false","idempotency_notes":"Some operations are inherently non-idempotent (addNote/addNotes, updateNoteFields, deleteNotes). Read-only and search-style operations are closer to safe to repeat, but explicit idempotency guidance was not observed.","pagination_style":"none","retry_guidance_documented":false,"known_agent_gotchas":["updateNoteFields may silently fail if the note is currently being viewed in Anki’s browser window (upstream AnkiConnect limitation).","deleteNotes requires confirmDeletion: true; agents must supply explicit confirmation to avoid accidental deletions.","Media upload best practice recommends using file paths/URLs (base64 is discouraged due to speed/token inefficiency).","Project is labeled Beta and APIs/features may change."]}}