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èquesget_series— liste les séries (filtre library_id non fonctionnel : retourne toutes les bibliothèques)get_series_detailget_series_metadata— retourne genres, auteurs, éditeur, résumé, annéeget_series_volumesget_recently_addedget_on_deck— séries en cours de lectureget_server_statssearch— recherche full-text sur noms de séries, genres, fichiers, chapitresget_collections— corrigé 2026-06-25get_reading_lists— corrigé 2026-06-25get_want_to_read— corrigé 2026-06-25add_to_want_to_readremove_from_want_to_readget_user_stats— corrigé 2026-06-25get_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
- Gérer la liste "À lire" (ajout/suppression)
- Consulter les collections et listes de 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_iddeget_seriesne filtre pas : retourne toutes les bibliothèques triées alphabétiquement - Pour filtrer par genre, utiliser l'API directe :
POST /api/Series/all-v2avec filtre JSON (hors MCP, via PowerShell)