Anki
STDIO通过AnkiConnect插件集成Anki记忆卡片的MCP服务器
通过AnkiConnect插件集成Anki记忆卡片的MCP服务器
A Model Context Protocol (MCP) server for interacting with Anki flashcards via the AnkiConnect add-on. This server exposes AnkiConnect actions as MCP tools, organized into logical services.
uv (for running and installing dependencies, optional but recommended)# Clone the repository git clone https://github.com/ujisati/anki-mcp.git cd anki-mcp # Install dependencies (using uv) uv pip install -e .
To run the MCP server:
uv run anki-mcp
The server will start and listen for MCP requests, typically interfacing with AnkiConnect at http://127.0.0.1:8765.
You can use the MCP Inspector to view the available tools:
npx @modelcontextprotocol/inspector uv run anki-mcp
If you're integrating this with an MCP client (like an AI assistant framework), you'll need to configure it to find this server. Here's an example configuration snippet:
{ "mcpServers": { "anki": { "command": "uv", "args": [ "run", // uv will find anki-mcp if run from project root "anki-mcp" ], // If running from outside the project directory, specify the path: // "args": [ // "--directory", // "/ABSOLUTE/PATH/TO/anki-mcp", // Replace with actual path // "run", // "anki-mcp" // ] } } }
This MCP server provides access to Anki functionality through tools grouped by services. The tool names correspond directly to AnkiConnect actions.
deck.*)deck.deckNamesAndIds: Gets the complete list of deck names and their respective IDs.deck.getDeckConfig: Gets the configuration group object for a given deck name.deck.deckNames: Gets the complete list of deck names for the current user.deck.createDeck: Creates a new empty deck.deck.deleteDecks: Deletes specified decks.deck.changeDeck: Moves cards to a different deck.deck.saveDeckConfig: Saves a deck configuration group.note.*)note.findNotes: Returns note IDs for a given Anki search query.note.notesInfo: Returns information for specified note IDs.note.getNoteTags: Gets the tags for a specific note ID.note.addNote: Creates a new note.note.updateNoteFields: Modifies the fields of an existing note.note.deleteNotes: Deletes specified notes.note.addNotes: Creates multiple notes.note.addTags: Adds tags to specified notes.note.removeTags: Removes tags from specified notes.note.updateNote: Modifies the fields and/or tags of an existing note.card.*)card.findCards: Returns card IDs for a given Anki search query.card.cardsInfo: Returns information for specified card IDs.card.cardsToNotes: Returns note IDs for given card IDs.card.areSuspended: Checks if specified cards are suspended.card.cardsModTime: Returns modification time for specified card IDs.card.suspended: Checks if a single card is suspended.card.suspend: Suspends specified cards.card.unsuspend: Unsuspends specified cards.card.setSpecificValueOfCard: Sets specific values of a single card (use with caution).model.*) (Note Types)model.modelNamesAndIds: Gets the complete list of model (note type) names and their IDs.model.findModelsByName: Gets model definitions for provided model names.model.modelFieldNames: Gets field names for a given model name.model.modelTemplates: Gets template content for each card of a specified model.model.modelStyling: Gets CSS styling for a given model name.model.createModel: Creates a new model (note type).model.updateModelTemplates: Modifies templates of an existing model.model.updateModelStyling: Modifies CSS styling of an existing model.model.modelFieldAdd: Adds a new field to an existing model.model.modelFieldRemove: Removes a field from an existing model.media.*)media.retrieveMediaFile: Retrieves the base64-encoded contents of a media file.media.getMediaFilesNames: Gets names of media files matching a glob pattern.media.storeMediaFile: Stores a media file (from base64, path, or URL).media.deleteMediaFile: Deletes a specified media file.To set up for development:
uv sync source .venv/bin/activate uv pip install -e .
pytest