mcp-server-anki
Version:
Model Context Protocol (MCP) server enabling AI assistants (Claude, GPT-4, Gemini, etc.) to interact with Anki flashcards through AnkiConnect.
120 lines (119 loc) • 2.13 kB
TypeScript
/**
* Global type definitions
* All TypeScript interfaces and types used throughout the project
*/
/**
* Arguments passed to MCP tools
*/
export interface ToolArguments {
[key: string]: any;
}
/**
* Content returned by MCP tools
*/
export interface ToolContent {
type: 'text';
text: string;
}
/**
* Response format for MCP tools
*/
export interface ToolResponse {
content: ToolContent[];
isError?: boolean;
}
/**
* AnkiConnect request format
*/
export interface AnkiConnectRequest {
action: string;
version: number;
params?: any;
}
/**
* AnkiConnect response format
*/
export interface AnkiConnectResponse<T = any> {
result: T;
error: string | null;
}
/**
* Anki card information structure
*/
export interface CardInfo {
cardId: number;
fields: Record<string, {
value: string;
order: number;
}>;
fieldOrder: number;
question: string;
answer: string;
modelName: string;
deckName: string;
css: string;
factor: number;
interval: number;
note: number;
ord: number;
queue: number;
reps: number;
type: number;
}
/**
* Anki note information structure
*/
export interface NoteInfo {
noteId: number;
fields: Record<string, string>;
tags: string[];
modelName: string;
cards: number[];
}
/**
* Parameters for adding a new note
*/
export interface AddNoteParams {
deckName: string;
modelName: string;
fields: Record<string, string>;
tags?: string[];
}
/**
* Anki deck information
*/
export interface DeckInfo {
name: string;
id: number;
}
/**
* Parameters for getting cards from a deck
*/
export interface GetCardsParams {
deck: string;
limit?: number;
}
/**
* Parameters for searching cards
*/
export interface SearchCardsParams {
query: string;
limit?: number;
}
/**
* Card statistics information
*/
export interface CardStats {
total: number;
new: number;
learning: number;
due: number;
}
/**
* Error information structure
*/
export interface ErrorInfo {
message: string;
code?: string;
details?: any;
}