Nuit Blanche
· 3 min de lecture

office-mcp : un serveur MCP pour Word, Excel et PowerPoint dans LibreChat

office-mcp : un serveur MCP pour Word, Excel et PowerPoint dans LibreChat

En bref

office-mcp est un serveur MCP open source qui permet à un assistant LLM de créer et modifier des documents Word, Excel et PowerPoint dans LibreChat, en stockage local ou OneDrive.

office-mcp est un serveur MCP (Model Context Protocol) open source qui permet à un assistant LLM de créer et modifier des documents Word, Excel et PowerPoint, en stockage local ou OneDrive. Le dépôt vient de passer public sur GitHub sous licence MIT. Voici pourquoi je l’ai construit et ce qui vient ensuite.

Le manque : aucun outillage bureautique dans LibreChat

Je fais tourner LibreChat en self-hosted comme front conversationnel multi-modèles (Claude, GPT, modèles locaux dans la même interface). La couche outils restait maigre côté bureautique : produire un .docx ou un .xlsx correctement mis en forme, ça voulait dire soit coller du Markdown dans Word à la main, soit câbler une chaîne pandoc côté serveur, soit basculer sur Claude Desktop pour utiliser la skill docx d’Anthropic.

La skill d’Anthropic est excellente, mais elle repose sur docx-js (Node.js) avec un workflow unpack-edit-repack qui exige un shell. Ça convient à un agent comme Claude Code, pas à un serveur MCP qui expose des outils métier à des clients conversationnels quelconques.

Ce que fait office-mcp

J’ai porté la doctrine en Python pur (python-docx, openpyxl, python-pptx) et je l’ai packagé en serveur FastMCP sur le transport streamable-http, compatible avec n’importe quel client MCP standard (LibreChat, Claude Desktop, autres).

La surface est volontairement réduite : 17 outils répartis en quatre groupes (Word, Excel, PowerPoint, filesystem), tous « batchés par intention ». docx_create prend toute la structure du document en un seul appel au lieu de forcer le LLM à enchaîner create + N append + M insert. Même logique pour xlsx_create (un seul recalcul LibreOffice pour toutes les feuilles) et pptx_create.

Côté stockage, deux backends sont câblés : local:// (volume Docker) et od:// (OneDrive de l’utilisateur via Microsoft Graph, OAuth délégué). Le StorageBackend est une interface abstraite, donc SharePoint, S3 ou Azure Blob peuvent être ajoutés sans toucher aux outils. Chaque outil mutateur renvoie une download_url signée, donc le fichier est à un clic de l’utilisateur final, sans aller-retour d’upload.

Multi-utilisateur dès le premier jour : le contexte utilisateur est extrait des headers de la requête, les fichiers sont scopés par utilisateur, et le token Graph de l’utilisateur final est transmis tel quel pour les appels /me/drive/*.

Le dépôt : github.com/soulkill3r/office-mcp.

Ce qui vient ensuite : une skill pourrait remplacer le serveur MCP

LibreChat travaille sur un support natif des Skills. Une fois que ça sortira, un serveur MCP comme celui-ci commence à paraître lourd. Une skill, c’est juste un dossier d’instructions plus quelques scripts que le modèle exécute directement : pas de FastMCP, pas de streamable-http, pas de container à maintenir. La doctrine de mise en forme, les moteurs Python (python-docx, openpyxl, python-pptx) et les templates se portent proprement vers cette forme.

Je compte repackager office-mcp en skill une fois que LibreChat les supportera. La forme serveur MCP était la bonne réponse pour aujourd’hui, mais une forme plus légère l’emporte quand le runtime peut héberger des scripts directement.

Deux pièces survivent dans tous les cas : la doctrine de mise en forme (à garder hors de l’improvisation de chaque modèle) et un catalogue de templates (fichiers .docx et .pptx thématisés, chargeables par tenant). Qu’elles soient livrées comme ressources MCP ou comme assets de skill, c’est un détail d’implémentation.

J’espère pouvoir vous montrer tout ça très bientôt. À dans le prochain billet.

Yacine

Articles liés