UNPKG

yanki-mcp-server

Version:

A Model Context Protocol server for interacting with Anki flashcards

168 lines (125 loc) 5.04 kB
# Yanki MCP Server ( Yet Another Anki MCP Server ) A Model Context Protocol server implementation that connects to a locally running Anki, providing card review and creation. This is a fork of [scorzeth/anki-mcp-server](https://github.com/scorzeth/anki-mcp-server) with date-based organization features. Available as an npm package: [yanki-mcp-server](https://www.npmjs.com/package/yanki-mcp-server) This server is designed to work with the [Anki desktop app](https://apps.ankiweb.net/) and the [Anki-Connect](https://foosoft.net/projects/anki-connect/) add-on. Make sure you have the add-on installed before using. ## Resources - **anki://search/deckcurrent** - Returns all cards from current deck - Equivalent of `deck:current` in Anki - **anki://search/isdue** - Returns cards in review and learning waiting to be studied - Equivalent of `is:due` in Anki - **anki://search/isnew** - Returns all unseen cards - Equivalent of `is:new` in Anki ## Tools - **update_cards** - Marks cards with given card IDs as answered and gives them an ease score between 1 (Again) and 4 (Easy) - Inputs: - `answers` (array): Array of objects with `cardId` (number) and `ease` (number) fields - **add_card** - Creates a new card in a date-structured deck (format: `DECK::YYYY::MM::DD`) - Inputs: - `front` (string): Front of card - `back` (string): Back of card - **get_due_cards** - Returns n number of cards currently due for review - Inputs: - `num` (number): Number of cards - **get_new_cards** - Returns n number of cards from new - Inputs: - `num` (number): Number of cards ## Installation & Usage You can use this package without installation via npx: ```bash npx yanki-mcp-server ``` Or install it globally: ```bash npm install -g yanki-mcp-server yanki-server ``` ## Development Clone the repository and install dependencies: ```bash git clone https://github.com/htlin222/yanki-mcp-server.git cd yanki-mcp-server npm install ``` Build the server: ```bash npm run build ``` For development with auto-rebuild: ```bash npm run watch ``` Run the server directly during development: ```bash npm run dev ``` ## Configuration To use with Claude Desktop, add the server config: On MacOS: `~/Library/Application Support/Claude/claude_desktop_config.json` On Windows: `%APPDATA%/Claude/claude_desktop_config.json` ```json { "mcpServers": { "yanki-mcp-server": { "command": "npx", "args": ["yanki-mcp-server"], "env": { "DECK": "Default" } } } } ``` ### Debugging Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the [MCP Inspector](https://github.com/modelcontextprotocol/inspector), which is available as a package script: ```bash npm run inspector ``` The Inspector will provide a URL to access debugging tools in your browser. ## Date-Based Card Organization This server automatically organizes new cards using a date-based structure instead of traditional topic-based organization. When you create a new card, it's added to a deck with the following format: ``` DECK::YYYY::MM::DD ``` Where: - `DECK` is the base deck name (default: "00_Inbox" or configured via environment variable) - `YYYY` is the 4-digit year - `MM` is the 2-digit month - `DD` is the 2-digit day ### Benefits of Date-Based Organization 1. **Effortless Organization**: Cards are automatically organized by creation date without manual categorization 2. **Temporal Context**: Review cards created during specific time periods (e.g., during a course or project) 3. **Natural Spaced Repetition**: Cards naturally group by when you learned concepts 4. **Time-Efficient**: No need to spend time deciding which category each card belongs to 5. **Historical Record**: See your learning journey over time ### Configuration You can customize the base deck name by setting the `DECK` environment variable in your MCP server configuration: ```json "env": { "DECK": "YourCustomDeckName" } ``` If not specified, it defaults to "00_Inbox". ## Changelog ### 1.0.5 (2025-05-31) - Completely removed all console output and logging functionality - Simplified codebase by eliminating all non-essential output - Ensured 100% clean MCP protocol communication with no extraneous output - Removed all filesystem operations related to logging ### 1.0.4 (2025-05-31) - Fixed critical issue with logs directory path being created at filesystem root - Improved logging system with robust error handling and fallback mechanisms - Ensured logs are always created relative to the current working directory - Added silent failure for logging to prevent breaking MCP protocol if logging fails ### 1.0.3 (2025-05-31) - Fixed MCP communication protocol issue by redirecting all console output to log files - Added file-based logging system that preserves all debug and status information - Logs are stored in the `logs` directory with date-based filenames - Ensured clean stdout communication for proper MCP JSON-RPC protocol compliance