anki-mcp
Servidor MCP para Anki. Este servidor permite la interacción con Anki mediante el Protocolo de Contexto de Modelo (MCP). Permite a los usuarios gestionar tarjetas, mazos y procesos de revisión mediante programación.
Prerrequisitos
Node.js y npm instalados.
Complemento AnkiConnect instalado y ejecutándose en Anki.
Related MCP server: Anki MCP Server
Configuración y ejecución
Se recomienda encarecidamente ejecutarlo localmente, ya que Anki Connect solo funciona localmente.
Para ejecutar localmente:
Clonar el repositorio:
git clone https://github.com/nietus/anki-mcpInstalar dependencias:
npm installCompilar el proyecto: El script
prepareenpackage.jsondebería ejecutar la compilación automáticamente tras la instalación. Si necesita compilar manualmente:npm run buildEste comando compila el código TypeScript y hace que el script del cliente sea ejecutable.
Integrar con la configuración del cursor para Windows
"anki": { "command": "cmd", "args": [ "/c", "node", "c:/Users/-/Downloads/anki-mcp/build/client.js" ] }
Herramientas disponibles
Para depurar las herramientas, utilice
El servidor proporciona las siguientes herramientas para interactuar con Anki:
update_cards:Descripción: Después de que el usuario responda las tarjetas en las que lo has interrogado, utiliza esta herramienta para marcarlas como respondidas y actualizar su facilidad.
Entrada: una matriz de respuestas, cada una con
cardId(número) yease(número, 1-4).
add_card:Descripción: Crea una nueva flashcard en Anki. Nota: El contenido usa HTML.
Saltos de línea:
<br>Código:
<pre style="background-color: transparent; padding: 10px; border-radius: 5px;">Listas:
<ol>y<li>Negrita:
<strong>Cursiva:
<em>
Aporte:
fields: (objeto) Un objeto donde las claves son los nombres de campo (por ejemplo, "Hanzi", "Pinyin") y los valores son su contenido HTML.modelName: (cadena) El nombre del tipo de nota Anki (modelo) a utilizar.deckName: (cadena opcional) El nombre del mazo al que se añadirá la carta. El valor predeterminado es el mazo actual o "Predeterminado".tags: (matriz opcional de cadenas) Una lista de etiquetas para agregar a la nota.
get_due_cards:Descripción: Devuelve una cantidad determinada de tarjetas que deben revisarse.
Entrada:
num(número).
get_new_cards:Descripción: Devuelve una cantidad determinada de tarjetas nuevas y no vistas.
Entrada:
num(número).
get-deck-names:Descripción: Obtenga una lista de todos los nombres de mazos de Anki.
Entrada: Ninguna.
find-cards:Descripción: Encuentra tarjetas mediante una consulta de búsqueda Anki sin procesar. Devuelve información detallada de la tarjeta, incluidos los campos.
Entrada:
query(cadena, p. ej.,'deck:Default -tag:test'o'"deck:My Deck" tag:important'). Para filtrar campos vacíos, utilice'-FieldName:_*'(p. ej.,'-Hanzi:_*').
update-note-fields:Descripción: Actualizar campos específicos de una nota Anki determinada.
Entrada:
noteId(número),fields(objeto, p. ej.,{"Front": "New Q", "Back": "New A"}).
create_deck:Descripción: Crea un nuevo mazo de Anki.
Entrada:
deckName(cadena).
bulk_update_notes:Descripción: Actualizar campos específicos para múltiples notas de Anki.
Entrada: una matriz de
notes, donde cada nota tienenoteId(número) yfields(objeto).
get_model_names:Descripción: Enumera todos los nombres de tipos y modelos de notas Anki disponibles.
Entrada: Ninguna.
get_model_details:Descripción: Recupera los campos, las plantillas de tarjetas y el estilo CSS para un tipo de nota específico.
Entrada:
modelName(cadena).
get_deck_model_info:Descripción: Recupera información sobre los tipos de notas (modelos) utilizados en un mazo específico. Ayuda a determinar si se utiliza un solo modelo, varios, o si el mazo está vacío o no existe.
Entrada:
deckName(cadena).Salida: Un objeto con
deckName,status(por ejemplo, "single_model_found", "multiple_models_found", "no_notes_found", "deck_not_found") y, condicionalmente,modelName(cadena) omodelNames(matriz de cadenas).
add_note_type_field:Descripción: Agrega un nuevo campo a un tipo de nota.
Entrada:
modelName(cadena),fieldName(cadena).
remove_note_type_field:Descripción: Elimina un campo existente de un tipo de nota.
Entrada:
modelName(cadena),fieldName(cadena).
rename_note_type_field:Descripción: Cambia el nombre de un campo en un tipo de nota.
Entrada:
modelName(cadena),oldFieldName(cadena),newFieldName(cadena).
reposition_note_type_field:Descripción: Cambia el orden (índice) de un campo en un tipo de nota.
Entrada:
modelName(cadena),fieldName(cadena),index(número).
update_note_type_templates:Descripción: Actualiza las plantillas HTML (por ejemplo, anverso y reverso) para las tarjetas de un tipo de nota.
Entrada:
modelName(cadena),templates(objeto, p. ej.,{"Card 1": {"Front": "html", "Back": "html"}}).
update_note_type_styling:Descripción: Actualiza el estilo CSS para un tipo de nota.
Entrada:
modelName(cadena),css(cadena).
create_model:Descripción: Crea un nuevo tipo de nota Anki (modelo).
Entrada:
modelName(cadena),fieldNames(matriz de cadenas),cardTemplates(matriz de objetos, cada uno con las cadenas HTMLName,Front,Back),css(cadena opcional),isCloze(booleano opcional, el valor predeterminado es falso),modelType(cadena opcional, el valor predeterminado es 'Estándar').
add_bulk:Descripción: Agrega varias tarjetas a Anki en una sola operación. El contenido de las notas usa HTML. Esta herramienta permite agregar varias notas (tarjetas) a la vez.
Entrada: una matriz de
notes, donde cada objeto de nota tiene:fields: (objeto) Un objeto donde las claves son los nombres de los campos y los valores son su contenido HTML.modelName: (cadena) El nombre del tipo de nota Anki (modelo) que se utilizará para esta nota.deckName: (cadena opcional) El nombre del deck para esta nota. El valor predeterminado es 'Default'.tags: (matriz opcional de cadenas) Una lista de etiquetas para esta nota.
Puede encontrar más información aquí Integración de Anki | Smithery