mankey-cli
npx skills add https://github.com/briansunter/mankey --skill mankey-cli
Agent 安装分布
Skill 文档
Mankey CLI & MCP Tool Reference
Mankey is an MCP server and CLI for managing Anki via Anki-Connect. All commands
use npx -y mankey or the local bun bin/mankey.ts.
Quick Start
# Start MCP server (default)
npx -y mankey
# CLI commands
npx -y mankey tools # List all tools
npx -y mankey deck list # List decks
npx -y mankey note add --deck Default --model Basic --front "Q" --back "A"
npx -y mankey run <toolName> '<json>' # Run any tool by name
Global option: --url <url> overrides Anki-Connect URL (default: http://127.0.0.1:8765, env: ANKI_CONNECT_URL).
CLI Subcommands
deck
| Command | Description |
|---|---|
deck list |
List all deck names |
deck create <name> |
Create a deck (use :: for nesting) |
deck stats <names...> |
Get new/learn/review/total counts |
deck delete <names...> |
Delete decks and their cards |
note
| Command | Description |
|---|---|
note add --deck D --model M --front F --back B [--tags t1,t2] [--allow-duplicate] |
Create a note |
note find <query> [--offset N] [--limit N] |
Search notes |
note info <ids...> |
Get note details |
note update <id> [--fields '{}'] [--tags t1,t2] |
Update a note |
note delete <ids...> |
Delete notes permanently |
note tags <id> |
Get tags for a note |
card
| Command | Description |
|---|---|
card find <query> [--offset N] [--limit N] |
Search cards |
card info <ids...> |
Get card details |
card suspend <ids...> |
Suspend cards |
card unsuspend <ids...> |
Unsuspend cards |
card answer <cardId> <ease> |
Answer card (1=Again 2=Hard 3=Good 4=Easy) |
card next [--deck D] [--limit N] |
Get next due cards in review order |
model
| Command | Description |
|---|---|
model list |
List all note types |
model fields <name> |
Get field names for a model |
model create --name N --fields f1,f2 --templates '<json>' [--css C] [--cloze] |
Create model |
stats
| Command | Description |
|---|---|
stats today |
Today’s review count |
stats due [--deck D] |
Due cards with learning/review breakdown |
stats collection |
Full collection statistics HTML |
Generic Runner
npx -y mankey run <toolName> '<jsonArgs>'
# Example:
npx -y mankey run addNote '{"deckName":"Default","modelName":"Basic","fields":{"Front":"Hello","Back":"World"}}'
npx -y mankey run findCards '{"query":"deck:Default is:due","limit":20}'
Any of the 96 tools below can be called via run. Arguments are validated with Zod before execution.
Complete Tool Reference
For full parameter schemas, types, and defaults, see references/tools-by-category.md.
Deck Tools (6)
- deckNames – List all decks with pagination (
offset,limit) - createDeck – Create deck (
deckname,::for nesting) returns ID - getDeckStats – Stats for decks (
decks[]) returns new/learn/review/total - deckNamesAndIds – Deck name-to-ID mapping with pagination
- getDeckConfig – Get config group for a deck (
deck) - deleteDecks – Delete decks (
decks[],cardsToodefault true)
Note Tools (16)
- addNote – Create single note (
deckName,modelName,fields{},tags[],allowDuplicate) - addNotes – Bulk create (
notes[]) returns array of IDs (null for failures) - findNotes – Search (
query,offset,limit) returns IDs + pagination - notesInfo – Full note data (
notes[]) auto-batches >100 - updateNote – Update fields/tags (
id,fields{},tags[]) - updateNoteFields – Update only fields (
note.id,note.fields{}) - deleteNotes – Delete permanently (
notes[]) - getTags – All collection tags with pagination
- getNoteTags – Tags for one note (
noteID) - addTags – Add tags to notes (
notes[],tagsspace-separated) - removeTags – Remove tags from notes (
notes[],tagsspace-separated) - replaceTags – Replace tag in specific notes (
notes[],tagToReplace,replaceWithTag) - replaceTagsInAllNotes – Global tag replace (
tagToReplace,replaceWithTag) - clearUnusedTags – Remove orphaned tags (no params)
- removeEmptyNotes – Delete notes with no cards (no params)
- notesModTime – Modification timestamps (
notes[])
Card Tools (19)
- findCards – Search (
query,offset,limit) returns IDs + pagination - getNextCards – Due cards in review order (
deck,limit,offset) - cardsInfo – Full card data (
cards[]) auto-batches >100 - answerCards – Batch answer (
answers[].cardId,answers[].ease1-4) - suspend / unsuspend – Toggle suspension (
cards[]) - areSuspended – Check suspension status (
cards[]) returns booleans - areDue – Check due status (
cards[]) returns booleans - getEaseFactors / setEaseFactors – Get/set ease (
cards[],easeFactors[]) - getIntervals – Current intervals in days (
cards[],complete) - cardsToNotes – Map card IDs to note IDs (
cards[]) - cardsModTime – Modification timestamps (
cards[]) - forgetCards – Reset to new state (
cards[]) - relearnCards – Move to relearning queue (
cards[]) - setSpecificValueOfCard – Modify internal properties (
card,keys[],newValues[]) - getDecks – Deck names for cards (
cards[]) - changeDeck – Move cards to deck (
cards[],deck) - canAddNotes – Validate without creating (
notes[]) returns booleans
Model Tools (9)
- modelNames – List all models with pagination
- modelFieldNames – Field names for model (
modelName) - modelNamesAndIds – Model name-to-ID mapping with pagination
- createModel – Create note type (
modelName,inOrderFields[],cardTemplates[],css,isCloze) - modelFieldsOnTemplates – Fields used per template (
modelName) - modelTemplates – Get templates for model (
modelName) - modelStyling – Get CSS for model (
modelName) - updateModelTemplates – Update templates (
model.name,model.templates{}) - updateModelStyling – Update CSS (
model.name,model.css)
Media Tools (5)
- storeMediaFile – Store file (
filename, one of:database64 /url/path,deleteExisting) - retrieveMediaFile – Get file as base64 (
filename) - getMediaFilesNames – List files (
patternwith wildcards) - deleteMediaFile – Delete file (
filename) - getMediaDirPath – Get media folder path (no params)
Stats Tools (7)
- getNumCardsReviewedToday – Today’s review count (no params)
- getDueCardsDetailed – Due cards breakdown (
deckoptional) - getNumCardsReviewedByDay – Reviews by day (no params)
- getCollectionStatsHTML – Full stats HTML (
wholeCollection) - cardReviews – Review history (
deck,startID) - getLatestReviewID – Latest review ID (
deck) - getReviewsOfCards – Reviews for specific cards (
cards[])
GUI Tools (17)
- guiBrowse – Open browser (
query,reorderCards{}) - guiAddCards – Open add dialog (
note{}) - guiCurrentCard – Current review card (no params)
- guiAnswerCard – Answer current card (
ease1-4) - guiShowQuestion / guiShowAnswer – Toggle card sides
- guiStartCardTimer – Start review timer
- guiDeckOverview – Open deck overview (
name) - guiDeckBrowser – Open deck list
- guiDeckReview – Start reviewing (
name) - guiSelectedNotes – Get selected notes in browser
- guiSelectCard – Select card in browser (
card) - guiEditNote – Open edit dialog (
note) - guiUndo – Undo last action
- guiCheckDatabase – Run integrity check
- guiImportFile – Open import dialog (
path) - guiExitAnki – Close Anki
System Tools (17)
- sync – Sync with AnkiWeb
- getProfiles / loadProfile / getActiveProfile – Profile management
- exportPackage – Export .apkg (
deck,path,includeSched) - importPackage – Import .apkg (
path) - version – Anki-Connect version
- requestPermission – Request API permission
- apiReflect – API metadata (
scopes[],actions[]) - reloadCollection – Reload from disk
- multi – Batch multiple actions (
actions[]) - setDueDate – Override due date (
cards[],days) - suspended – Check single card suspension (
card) - saveDeckConfig – Update deck config (
config{}) - setDeckConfigId – Assign config to decks (
decks[],configId) - cloneDeckConfigId – Clone config (
name,cloneFrom) - removeDeckConfigId – Delete config (
configId)
Key Patterns
Pagination: Tools returning lists support offset/limit. Response includes pagination: { total, offset, limit, hasMore, nextOffset }.
Auto-batching: notesInfo and cardsInfo auto-split requests >100 items.
Input flexibility: IDs accept number/string/array. Tags accept array, space-separated string, or JSON string.
Search syntax: deck:Name, tag:name, is:due, is:new, is:suspended, "field:value", -tag:exclude. Combine with spaces (AND). Use quotes around deck names with ::.