@ankimcp/anki-mcp-server
Version:
Model Context Protocol server for Anki - enables AI assistants to interact with your Anki flashcards
188 lines (187 loc) • 3.91 kB
TypeScript
export declare enum CardType {
New = 0,
Learning = 1,
Review = 2,
Relearning = 3
}
export interface AnkiCard {
cardId: number;
fields: Record<string, {
value: string;
order: number;
}>;
fieldOrder: number;
question: string;
answer: string;
modelName: string;
ord: number;
deckName: string;
css: string;
factor?: number;
interval?: number;
note: number;
type: number;
queue: number;
due?: number;
reps?: number;
lapses?: number;
left?: number;
mod?: number;
flags?: number;
}
export interface SimplifiedCard {
cardId: number;
front: string;
back?: string;
deckName: string;
modelName: string;
due: number;
interval: number;
factor: number;
}
export interface CardPresentation {
cardId: number;
front: string;
back?: string;
deckName: string;
modelName: string;
tags?: string[];
currentInterval: number;
easeFactor: number;
reviews: number;
lapses: number;
cardType: string;
noteId: number;
}
export interface DeckInfo {
name: string;
stats?: DeckStats;
}
export interface DeckStats {
deck_id: number;
name: string;
new_count: number;
learn_count: number;
review_count: number;
total_new: number;
total_cards: number;
}
export interface AnkiDeckStatsResponse {
deck_id: number;
name: string;
new_count: number;
learn_count: number;
review_count: number;
total_in_deck: number;
}
export declare enum CardRating {
Again = 1,
Hard = 2,
Good = 3,
Easy = 4
}
export interface AnkiConnectRequest {
action: string;
version: number;
params?: Record<string, any>;
key?: string;
}
export interface AnkiConnectResponse<T = any> {
result: T;
error: string | null;
}
export interface NoteOptions {
allowDuplicate?: boolean;
duplicateScope?: "deck" | "collection";
duplicateScopeOptions?: {
deckName?: string;
checkChildren?: boolean;
checkAllModels?: boolean;
};
}
export interface AddNoteParams {
deckName: string;
modelName: string;
fields: Record<string, string>;
tags?: string[];
options?: NoteOptions;
}
export interface Model {
name: string;
id: number;
css: string;
fields: string[];
}
export interface NoteInfo {
noteId: number;
modelName: string;
tags: string[];
fields: Record<string, {
value: string;
order: number;
}>;
cards: number[];
mod?: number;
}
export interface UpdateNoteFieldsParams {
note: {
id: number;
fields: Record<string, string>;
audio?: Array<{
url: string;
filename: string;
fields: string[];
}>;
picture?: Array<{
url: string;
filename: string;
fields: string[];
}>;
};
}
export interface CardTemplate {
Name: string;
Front: string;
Back: string;
}
export interface CreateModelParams {
modelName: string;
inOrderFields: string[];
cardTemplates: CardTemplate[];
css?: string;
isCloze?: boolean;
}
export interface UpdateModelStylingParams {
model: {
name: string;
css: string;
};
}
export interface GuiCurrentCardInfo {
answer: string;
question: string;
deckName: string;
modelName: string;
cardId: number;
buttons: number[];
nextReviews: string[];
fields?: Record<string, {
value: string;
order: number;
}>;
}
export interface GuiBrowseParams {
query: string;
reorderCards?: {
order: "ascending" | "descending";
columnId: string;
};
}
export interface GuiAddCardsParams {
note: {
deckName: string;
modelName: string;
fields: Record<string, string>;
tags?: string[];
};
}