Skip to main content

LibreOffice MCP

État au 2026-10-02 : réinstallé sur le poste julie (le PC eliob après la réinstallation de Windows du 2026-08-08, qui avait emporté l'ancienne configuration). Extension Nelson MCP 0.14.3, serveur actif sur 127.0.0.1:8766 (process soffice.bin), MCP nelson inscrit en portée utilisateur dans C:\\Users\\julie\\.claude.json — voir « Installation sur julie » ci-dessous.

É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, MCP nelson enregistré dans Claude Code pour le projet D:\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 .oxt embarque 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

Menu Nelson → Start HTTP Server (le libellé bascule en « Stop HTTP Server » quand il tourne, avec icône d'état vert/orange/gris). Le serveur peut aussi démarrer automatiquement si http.enabled est coché dans les options.

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.

3 bis. Installation sur le poste julie (2026-10-02)

Le CLI claude n'est pas dans le PATH de ce poste (application de bureau) : claude mcp add est impossible, l'entrée s'écrit à la main dans C:\\Users\\julie\\.claude.json (sauvegarder d'abord), puis on ferme et rouvre l'application.

json mcpServers: { nelson: { type: http, url: http://127.0.0.1:8766/mcp } }

⚠ Piège : en portée projet, le MCP n'est pas chargé. Première inscription sous projects > D:\\Syncthing\\Jux_univers\\Claude-pcelio+jux\\.claude > mcpServers : après redémarrage, aucun outil Nelson — et pas davantage ceux de bookstack ou kdrive, inscrits au même endroit. Seul caldav, en portée utilisateur (mcpServers à la racine du fichier), était chargé. Nelson a donc été déplacé à la racine. Contrepartie : ses outils sont présents dans toutes les sessions, quel que soit le projet.

Nombre d'outils variable. Le tools/list interrogé en HTTP, LibreOffice ouvert sans document, n'a rendu que 26 outils (gestion de documents, images, formes, styles, jobs, batch_execute) au lieu des 110 relevés en août. Les outils Writer, Calc ou Draw n'apparaissent que si un document de ce type est actif — ouvrir le document avant de démarrer la session.


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.json pointant sur <url>/mcp
  • .claude/settings.json avec "allow": ["mcp__nelson__*"] — auto-approbation de tous les outils Nelson
  • CLAUDE.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 pysqlite3 compilé (_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