LibreOffice MCP
État au 2026-08-05 : installé et opérationnel sur le PC Windows eliob. Extension Nelson MCP 0.7.1, LibreOffice 26.2.5.2, serveur HTTP actif sur
127.0.0.1:8766, 110 outils exposés, MCPnelsonenregistré dans Claude Code pour le projetD:\Syncthing\Jux_univers\Claude-pcelio+jux.Cette page a été réécrite le 2026-08-05 à partir de l'installation réelle. La version précédente reposait sur une recherche web et contenait plusieurs erreurs — voir la section « Erreurs de la version précédente » en fin de page.
Nelson MCP — piloter LibreOffice depuis Claude Code
Le principe
Nelson n'est pas un serveur MCP séparé qu'on lance à côté de LibreOffice. C'est une extension .oxt qui embarque un serveur HTTP dans le process soffice.bin. Claude Code s'y connecte en HTTP et pilote les documents ouverts dans la fenêtre LibreOffice, en direct, via l'API UNO.
Conséquences pratiques :
-
pas de commande à lancer, pas de service à installer — LibreOffice ouvert = serveur disponible
-
toutes les opérations UNO tournent sur le thread principal de LibreOffice (sécurité thread)
-
on voit les modifications apparaître à l'écran pendant que l'IA travaille
-
fermer LibreOffice ferme le serveur
-
Projet :
quazardous/nelson-mcp(lobehub n'est qu'un annuaire de serveurs MCP, pas la source) -
Auteur : David Berlioz — licence MPL 2.0
-
Version installée : 0.7.1
-
Dépendance déclarée : LibreOffice ≥ 4.1 (le
.oxtembarque son propre Python 3.12 et ses libs)
Installation
1. Extension
Outils → Gestionnaire des extensions → Ajouter → sélectionner nelson.oxt, puis redémarrer LibreOffice.
Emplacement après installation (Windows) :
%APPDATA%\LibreOffice\4\user\uno_packages\cache\uno_packages\<hash>.tmp_\nelson.oxt\
Le sous-dossier <hash>.tmp_ est généré par LibreOffice — sur eliob : lu3692afhf.tmp_. Ne pas le coder en dur dans un script, le retrouver par Get-ChildItem ...\uno_packages -Recurse -Filter nelson.oxt.
2. Démarrage du serveur
Valeurs par défaut : host localhost, port 8766. Modifiables dans Outils → Options → Nelson, ainsi que TLS (use_ssl, ssl_cert, ssl_key).
Vérifier :
netstat -ano | Select-String ":8766"
Le PID retourné doit être celui de soffice.bin.
3. Enregistrement dans Claude Code
claude mcp add --transport http nelson http://127.0.0.1:8766/mcp
Écrit dans C:\Users\eliob\.claude.json, section projects > <projet> > mcpServers. Vérifier avec claude mcp list → nelson: ✔ Connected.
Relancer la session Claude Code : les outils d'un MCP ajouté en cours de session ne sont pas chargés.
Endpoints HTTP
| Méthode | Chemin | Rôle |
|---|---|---|
| POST/GET/DELETE | /mcp |
MCP Streamable HTTP (transport actuel) — c'est celui à utiliser |
| POST/GET | /sse, /messages |
ancien transport SSE, pour clients qui ne gèrent pas Streamable HTTP |
| GET | /health |
état du serveur |
| GET | /api/tools |
référence HTML de tous les outils |
| GET | / |
page d'info |
| GET/POST | /api/config |
lecture/écriture de la configuration — désactivé par défaut (http.enable_config_api) |
Test de connexion en une commande :
curl -s -X POST http://127.0.0.1:8766/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"test","version":"1"}}}'
Réponse attendue : serverInfo: {"name":"Nelson MCP","version":"0.7.1"} + un en-tête Mcp-Session-Id.
Ce que ça permet réellement — 110 outils
Writer
Lecture et écriture par paragraphe (read_paragraphs, insert_at_paragraph, set_paragraph_text, delete_paragraph, duplicate_paragraph, insert_paragraphs_batch), styles, plan/outline, tableaux, images, cadres, hyperliens, commentaires, statistiques, recherche/remplacement, suivi des modifications (accept/reject), navigation (signets, titres, proximité), et un index plein texte avec stemming (33 langues embarquées via snowballstemmer, base SQLite embarquée).
Calc
Cellules, lignes, feuilles, formules, graphiques, formatage conditionnel, commentaires, navigation, recherche, et un détecteur d'erreurs de feuille.
Draw / Impress
Pages, formes, masques, notes, transitions, espaces réservés.
Transversal
execute_batch (plusieurs appels en une requête, avec chaînage de variables entre opérations), undo/redo, document_health_check (titres vides, sauts de niveau de titre, images orphelines…), ouverture/création/sauvegarde/export/impression, jobs asynchrones (list_jobs, get_job).
Galeries et images IA
- Galerie d'images indexée depuis un dossier, avec recherche plein texte et métadonnées XMP en fichier sidecar
- Galerie de documents indexée depuis un dossier
- Génération et édition d'images (
generate_image,edit_image) via AI Horde, OpenAI-compatible, ou Stable Diffusion WebUI Forge local - Fournisseur LLM Ollama pour l'indexation/description automatique
Fonction =PROMPT() dans Calc
Fournie par XPromptFunction.rdb — interroge un fournisseur IA directement depuis une formule de feuille de calcul.
Deux garde-fous activés par défaut
Ce sont les réglages les plus importants de la page Options (core) :
| Réglage | Défaut | Effet |
|---|---|---|
force_track_changes |
activé | active l'enregistrement des modifications avant toute mutation venant du MCP — toutes les modifications de l'IA sont visibles et réversibles |
follow_activity |
activé | fait défiler la vue vers l'endroit modifié, en temps réel |
À ne pas désactiver sans raison : c'est ce qui rend une session d'édition par IA relisable.
Le panneau latéral Nelson (deck NelsonDeck, visible dans Writer et Calc) affiche le journal des actions MCP et les jobs en cours.
Presets — réduire la surface d'outils
110 outils, c'est beaucoup de contexte. Nelson permet de créer des endpoints filtrés : Options → Nelson → MCP → preset puis bouton de création. L'endpoint apparaît sur /mcp/<preset>.
| Preset | Contenu |
|---|---|
minimal |
8 outils — lister/ouvrir/créer/sauver, lire et insérer des paragraphes, insérer une image |
writer-read |
14 outils, lecture seule |
writer-edit |
24 outils d'édition Writer |
calc |
13 outils tableur |
gallery |
10 outils images/documents |
Utile pour un modèle plus petit, ou pour interdire les mutations (writer-read).
Launchers intégrés — l'autre façon de faire
Nelson sait lancer lui-même Claude Code (aussi Gemini CLI et OpenCode), depuis LibreOffice. Le module launcher.claude crée alors un espace de travail dans :
~/.local/share/nelson/cli/claude
et y génère automatiquement :
.mcp.jsonpointant sur<url>/mcp.claude/settings.jsonavec"allow": ["mcp__nelson__*"]— auto-approbation de tous les outils NelsonCLAUDE.md(méta-prompt fourni par l'extension).claude/skills/nelson/SKILL.md
puis lance claude --resume dans ce dossier.
Choix retenu sur eliob : ne pas utiliser le launcher, et brancher le MCP sur les projets existants. Raisons — l'espace de travail du launcher est isolé et perd le CLAUDE.md du Jux_univers ; et l'auto-approbation globale mcp__nelson__* inclut les outils de mutation et de sauvegarde de fichiers.
Tunnels — accès distant
Modules tunnel.cloudflare, tunnel.ngrok, tunnel.tailscale (Funnel), tunnel.bore : exposent le serveur HTTP local à l'extérieur, pour piloter LibreOffice depuis un client MCP distant (l'aide embarquée documente le cas ChatGPT via Tailscale).
À manier avec prudence : cela publie sur internet un endpoint qui peut lire, modifier et enregistrer des fichiers locaux. Le serveur écoute par défaut sur localhost uniquement — c'est le bon réglage. Voir l'incident du 2026-06-09 sur l'API RC rclone exposée en 0.0.0.0 (VPS Jux), même schéma de risque.
Aide embarquée
L'extension embarque sa propre documentation HTML, consultable directement :
<...>\nelson.oxt\help\index.html
Fichiers utiles : writer.html (33 Ko), calc.html (20 Ko), draw.html, batch.html, documents.html, ai_images.html, et des how-to (howto_connect-chatgpt-tailscale, howto_setup-ollama-indexation, howto_setup-image-gallery, howto_setup-forge-images).
Points de vigilance
- Un document doit être ouvert dans LibreOffice pour la plupart des outils ; les outils sont filtrés selon le type de document actif (writer / calc / draw)
- Fermer LibreOffice coupe le MCP — Claude Code affichera le serveur comme déconnecté
- Le dossier d'installation contient un
<hash>.tmp_variable : ne jamais le figer dans un script - Le port par défaut est 8766, pas 8765
/api/config(écriture de configuration en HTTP) est désactivé par défaut : le laisser ainsi- L'extension embarque
pysqlite3compilé (_sqlite3.cp312-win_amd64.pyd) — l'installation est liée à Python 3.12 de LibreOffice
Erreurs de la version précédente de cette page
La version antérieure de cette page avait été rédigée à partir d'une recherche web, avant installation. Corrections :
| Ancienne affirmation | Réalité vérifiée |
|---|---|
| Port 8765 | Port 8766 (cfg.get("port") or 8766 dans modules/http/__init__.py) |
python3 -m nelson_mcp --port 8765 |
Cette commande n'existe pas — le serveur est embarqué dans soffice.bin |
Variante de configuration stdio |
Inexistante — HTTP uniquement |
.oxt à télécharger « depuis lobehub » |
lobehub est un annuaire ; la source est le dépôt quazardous/nelson-mcp |
| LibreOffice ≥ 24.2 requis | La dépendance déclarée est 4.1 ; LibreOffice 26.2.5.2 en place |
Alternatives libreoffice-mcp (KeithCu) port 2083, OooDev |
Sans objet une fois Nelson en place |