Skip to main content
Glama
Kyura77

Anki AI MCP Server

by Kyura77
README.md
# Anki AI MCP Server đŸ€–đŸ“š

Este Ă© um repositĂłrio completo que fornece um servidor **MCP (Model Context Protocol)** para integrar o seu **Anki Desktop** com InteligĂȘncias Artificiais modernas. Ele oferece duas formas de uso:

1. **Cliente Local (via TypeScript/Stdio):** Ideal para editores locais como **Cursor, Windsurf, Claude Desktop**, etc.
2. **Cliente Web (via Python/SSE + ngrok):** Ideal para conectar diretamente ao site do **ChatGPT (Web)** no formato Sandbox (seguro).

Com este servidor, a IA ganha "superpoderes" para ler, criar, buscar, editar e analisar seu banco de estudos diretamente pelo chat, inclusive extraindo textos e mĂ­dias de documentos PDF.

---

## 🔌 1. PrĂ©-requisitos Gerais (Para Ambos os MĂ©todos)

Para que qualquer uma das integraçÔes funcione, o seu computador precisa estar configurado:

### A. Instalar o Anki Desktop đŸ’»
O servidor MCP precisa se comunicar com o aplicativo instalado no seu computador.
* Baixe e instale o [Anki Desktop](https://apps.ankiweb.net/).
* *(Opcional)* Crie uma conta no [AnkiWeb](https://ankiweb.net/) para sincronizar seus cartÔes.

### B. Instalar o add-on AnkiConnect 🔌
O Anki precisa de uma extensĂŁo para conseguir conversar com o nosso servidor MCP.
1. Abra o seu **Anki Desktop**.
2. VĂĄ no menu superior em **Ferramentas** -> **Complementos** (Add-ons).
3. Clique em **Adquirir Complementos...** (Get Add-ons).
4. Insira o cĂłdigo do [AnkiConnect](https://ankiweb.net/shared/info/2055492159): `2055492159` e clique em OK.
5. Reinicie o Anki para ativar a extensĂŁo.

> [!IMPORTANT]
> **O Anki Desktop deve estar sempre aberto** e rodando em segundo plano no seu computador para que a InteligĂȘncia Artificial consiga se comunicar com os seus cartĂ”es!

---

## đŸ› ïž MĂ©todo A: Servidor Local TypeScript (Cursor, Claude Desktop, etc.)

Este método executa o servidor localmente através do terminal (`stdio`). Ele tem acesso completo de leitura/escrita e suporte ao processamento de PDFs locais.

### Requisitos:
* [Node.js](https://nodejs.org/) instalado (versĂŁo 18+).
* DependĂȘncias do script Python de PDF: `pip install pymupdf pillow`.

### Configuração:
1. Abra a pasta do projeto no terminal e rode:
   ```bash
   npm install
   npx tsc
   ```
2. Adicione o servidor nas configuraçÔes MCP do seu editor/cliente. Exemplo de configuração para o `claude_desktop_config.json`:
   ```json
   {
     "mcpServers": {
       "anki-server": {
         "command": "node",
         "args": [
           "C:/caminho/do/projeto/build/index.js"
         ]
       }
     }
   }
   ```

---

## 🌐 MĂ©todo B: Ponte Sandbox Python (ChatGPT Web)

Este mĂ©todo expĂ”e um servidor HTTP/SSE local na porta `8000` e utiliza o **ngrok** para criar um tĂșnel seguro. Ele foi desenvolvido em **modo Sandbox** (sem acesso aos seus arquivos locais), permitindo que vocĂȘ conecte o ChatGPT (Web) com segurança.

### Requisitos:
* Python 3.10+ instalado.
* Conta e CLI do [ngrok](https://ngrok.com/) configurada.

### Como Rodar e Conectar:
1. Inicie o servidor MCP rodando o arquivo `run.bat` ou executando no terminal:
   ```bash
   pip install -r requirements.txt
   python server.py
   ```
2. Abra um terminal e inicie o tĂșnel do ngrok:
   ```bash
   ngrok http 8000
   ```
   *(Dica: Registre 1 domĂ­nio estĂĄtico gratuito no site do ngrok e rode `ngrok http --url=seu-dominio.ngrok-free.dev 8000` para manter a URL permanente).*
3. Acesse o **ChatGPT Web**, vĂĄ em **Settings -> Apps**, ative o **Developer Mode** e clique em **Add Custom Connector**.
4. Configure a URL gerada pelo ngrok com `/sse` no final:
   * **URL:** `https://seu-dominio.ngrok-free.dev/sse`

---

## 🧰 Lista de Superpoderes Disponíveis (MCP Tools)

* **`list_decks` / `anki_get_deck_names`**: Lista todos os seus baralhos locais.
* **`create_deck` / `anki_create_deck`**: Cria um novo baralho no Anki.
* **`list_models`**: Lista os modelos de nota disponĂ­veis no Anki (ex: `BĂĄsico`, `Basic`).
* **`list_model_fields`**: Lista os campos especĂ­ficos de um modelo de nota (ex: `['Frente', 'Verso']`).
* **`add_card` / `anki_add_note`**: Cria e adiciona um card (Frente e Verso) no baralho escolhido. Mapeia automaticamente as perguntas/respostas para os campos do modelo (ex: Frente/Verso ou Front/Back).
* **`add_multiple_cards`**: Adiciona mĂșltiplos cards ao mesmo tempo de forma otimizada.
* **`search_cards` / `anki_find_notes`**: Busca e lista cards existentes com base em termos de busca (ex: `"deck:Biologia DNA"`).
* **`edit_card` / `anki_update_note_fields`**: Atualiza a pergunta ou resposta de um card existente usando seu ID.
* **`delete_card` / `anki_delete_decks`**: Remove cards ou baralhos.
* **`sync_anki`**: Força a sincronização dos seus cartÔes locais com o AnkiWeb.
* **`store_media_file` / `anki_store_media_file`**: Salva imagens ou mĂ­dias diretamente no Anki (Ăștil para cards com imagens criadas pelo ChatGPT).
* **`add_card_with_media`**: Cria o card e faz o upload da imagem de forma atĂŽmica em um Ășnico comando. Resolve automaticamente o mapeamento de campos (Frente/Verso ou Front/Back).
* **`get_capabilities`**: Retorna a lista completa de ferramentas e instruçÔes recomendadas para o assistente de IA.
* **`anki_parse_pdf`**: (*Apenas no MĂ©todo A*) LĂȘ PDFs locais, extrai textos/mĂ­dias e anexa automaticamente as imagens extraĂ­das na pasta de mĂ­dia do seu Anki.

---

## 💡 Exemplos de Prompts
* *"Crie 5 cards de inglĂȘs no meu baralho de VocabulĂĄrio sobre palavras corporativas avançadas."*
* *"Procure no meu Anki por cards que mencionam 'MitocĂŽndria' e me traga os textos deles."*
* *"Altere a resposta do card de ID 1685890000000 para '42'."*
* *"Sincronize o meu Anki."*

---

## 📄 Licença
Licença ISC. Desenvolvido para uso pessoal e integraçÔes seguras.