Skip to main content

16_Kavita

Kavita

Kavita is a fast, feature rich, cross platform reading server. Built with the goal of being a full solution for all your reading needs. Setup your own server and share your reading collection with your friends and family.

Image jvmilazz0/kavita:latest
Version latest
Etat Up (healthy)
Compose project kavita
Réseau kavita_default
URL https://kavita.juxjux.ovh
Source https://github.com/Kareadita/Kavita

Ports

Hote Container IP
5471 5000/tcp 0.0.0.0

Volumes

Source (hote) Destination Type Mode
/home/debian/docker/kavita/config /kavita/config bind rw
/home/debian/livres /manga bind rw

Integration Claude Code — MCP

Statut MCP MCP actif
Outils (prefix) mcp__kavita__
Configuration Script Python : C:\Users\eliob\.claude\mcp_kavita.py | Auth : JWT via POST /api/Account/login

Outils opérationnels (confirmés 2026-06-25)

  • get_libraries — liste les 53 bibliothèques
  • get_series — liste les séries (filtre library_id non fonctionnel : retourne toutes les bibliothèques)
  • get_series_detail
  • get_series_metadata — retourne genres, auteurs, éditeur, résumé, année
  • get_series_volumes
  • get_recently_added
  • get_on_deck — séries en cours de lecture
  • get_server_stats
  • search — recherche full-text sur noms de séries, genres, fichiers, chapitres

Outils cassés — 404 (endpoints dépréciés)

    get_collections /api/Collection/listcorrigé 2026-06-25 get_reading_lists /api/ReadingList/listscorrigé 2026-06-25 get_want_to_read corrigé 2026-06-25 /api/Want-To-Read/get-listadd_to_want_to_read remove_from_want_to_read get_user_stats corrigé 2026-06-25 /api/Stats/user/0/readget_reading_list

    Ce que nous pouvons faire ensemble

    • Parcourir la bibliothèque par série, volume ou bibliothèque thématique
    • Rechercher un titre, auteur ou genre
    • Consulter les séries récemment ajoutées ou en cours de lecture
    • CroiserGérer la liste "À lire" (ajout/suppression)
    Consulter les métadonnéescollections (auteuret +listes genrede + année)lecture Appeler l'API directement via PowerShell pour filtrer par genre (/api/Series/all-v2)

    REX — 2026-06-25

    Statistiques bibliothèque

    Stat Valeur
    Bibliothèques 53 (toutes de type Book/epub+PDF)
    Séries 2 976
    Fichiers 5 519
    Volumes 1 173
    Taille totale ~79 Go
    Auteurs/contributeurs indexés 3 475
    Genres indexés 6 990
    Tags 0

    Étiquettes Calibre → genres Kavita

    Les étiquettes appliquées via Calibre sont visibles dans Kavita sous le champ genres, pas tags (qui reste toujours vide, totalTags: 0).

    Mécanisme : Calibre écrit ses étiquettes dans <dc:subject> du fichier epub lors du writeback → Kavita lit ce champ et le mappe en genres.

    Exemple confirmé — "Il faut s'adapter" (Barbara Stiegler, lib. Actualités, ID série 4210) :

    • genres : Actualités, Philosophie, Politique, 2020-2025

    Conditions pour que ça fonctionne :

    • Le fichier epub doit avoir été re-sauvegardé depuis Calibre après ajout des étiquettes (Préférences > Sauvegarde des métadonnées → writeback activé)
    • La bibliothèque Kavita doit avoir enableMetadata: true (c'est le cas pour Actualités)
    • Les PDFs ne portent généralement pas les métadonnées Calibre → genres vides

    La bibliothèque Actualités (ID 63) est entièrement étiquetée et correctement indexée.

    Lecture du contenu

    Le MCP ne permet pas de lire le contenu des livres — uniquement les métadonnées. Kavita expose des endpoints de lecture (/api/Reader/image, /api/Reader/epub-file) mais non implémentés dans le MCP. Pour les epub, la lecture via appel API direct + parsing HTML serait techniquement faisable au cas par cas.

    Corrections endpoints MCP (2026-06-25)

    4 outils retournaient 404 suite à des changements d'API dans la version Kavita en production. Corrections appliquées dans mcp_kavita.py :

    Outil Ancien endpoint (404) Nouveau endpoint (200) get_collections GET /api/Collection/list GET /api/Collection get_reading_lists GET /api/ReadingList/lists?includePromoted=true POST /api/ReadingList/lists body {} get_want_to_read POST /api/Want-To-Read/get-list POST /api/Want-To-Read get_user_stats GET /api/Stats/user/0/read GET /api/Stats/user-stats?userId={id}

    Note : le userId est désormais extrait dynamiquement du payload de login (data["id"]) et stocké dans _user_id.

    Limitations MCP identifiées

    • Le paramètre library_id de get_series ne filtre pas : retourne toutes les bibliothèques triées alphabétiquement
    • Pour filtrer par genre, utiliser l'API directe : POST /api/Series/all-v2 avec filtre JSON (hors MCP, via PowerShell)
    • 4 outils sur 17 retournent 404 (endpoints Kavita dépréciés dans le script MCP)