LibreOffice MCP Tools
Herramientas MCP para LibreOffice
Un servidor de Model Context Protocol (MCP) que brinda a los agentes de IA (Claude, Copilot, Gemini, Cursor, etc.) la capacidad de leer, escribir y editar documentos de Office a través de LibreOffice, con un diseño eficiente en el uso de tokens que minimiza el consumo de contexto del LLM.
Inspirado en la arquitectura de chrome-devtools-mcp.
✨ Características
22 herramientas MCP que cubren lectura, escritura, hojas de cálculo y presentaciones
Diseño eficiente en tokens: navegación basada en esquemas, acceso por rangos, paginación
Amplia compatibilidad de formatos: DOCX, DOC, XLSX, XLS, PPTX, PPT, ODT, ODS, ODP, RTF, CSV, TXT, PDF
Puente para formatos heredados: conversión automática de
.doc,.xls,.pptmediante LibreOffice antes del análisisNo se requiere LibreOffice para lecturas básicas: los analizadores nativos manejan DOCX, XLSX, PPTX directamente
LibreOffice requerido para: formatos heredados, exportación a PDF, conversión de formatos
📋 Formatos compatibles
Formato | Extensiones | Lectura | Escritura | Método |
Word 2007+ |
| ✅ | ✅ | Nativo (lectura con mammoth / escritura OOXML con JSZip) |
Word 97-2003 |
| ✅ | ✅ | Puente de LibreOffice |
Excel 2007+ |
| ✅ | ✅ | Nativo (ExcelJS) |
Excel 97-2003 |
| ✅ | ✅ | Puente de LibreOffice |
PowerPoint 2007+ |
| ✅ | ✅ | Nativo (OOXML con JSZip) |
PowerPoint 97-2003 |
| ✅ | ✅ | Puente de LibreOffice |
OpenDocument Text |
| ✅ | ✅ | Puente de LibreOffice |
OpenDocument Spreadsheet |
| ✅ | ✅ | Puente de LibreOffice |
OpenDocument Presentation |
| ✅ | ✅ | Puente de LibreOffice |
Rich Text Format |
| ✅ | ✅ | Puente de LibreOffice |
CSV |
| ✅ | ✅ | Nativo |
| ✅ (texto) | ❌ | CLI de LibreOffice | |
Texto plano |
| ✅ | ✅ | Nativo |
🚀 Inicio rápido
Requisitos previos
Node.js 20+
LibreOffice (opcional para lecturas básicas de DOCX/XLSX/PPTX; requerido para .doc/.xls/.ppt y conversión de formatos)
Windows: Descargar LibreOffice
macOS:
brew install --cask libreofficeLinux:
sudo apt install libreofficeosudo dnf install libreoffice
Instalación
Usando npx (recomendado — no requiere instalación):
{
"mcpServers": {
"libreoffice": {
"command": "npx",
"args": ["-y", "@passerbyflutter/libreoffice-mcp-tools"]
}
}
}Instalación global:
npm install -g @passerbyflutter/libreoffice-mcp-toolsDesde el código fuente:
git clone https://github.com/passerbyflutter/libreoffice-mcp-tools
cd libreoffice-mcp-tools
npm install
npm run buildConfigura tu cliente MCP
Agrégalo a la configuración de tu cliente MCP (por ejemplo, claude_desktop_config.json de Claude Desktop):
{
"mcpServers": {
"libreoffice": {
"command": "npx",
"args": ["-y", "@passerbyflutter/libreoffice-mcp-tools"],
"env": {
"SOFFICE_PATH": "/path/to/soffice"
}
}
}
}O usa .mcp.json en la raíz de tu proyecto:
{
"mcpServers": {
"libreoffice": {
"command": "npx",
"args": ["-y", "@passerbyflutter/libreoffice-mcp-tools"]
}
}
}Opciones de CLI
node build/bin/libreoffice-mcp.js [options]
--libreoffice-path <path> Path to soffice executable
(default: auto-detected or SOFFICE_PATH env)🛠 Referencia de herramientas
Gestión de documentos
Herramienta | Descripción |
| Abre un archivo → devuelve un identificador |
| Libera el identificador del documento y los archivos temporales |
| Lista todos los documentos abiertos |
| Crea un nuevo documento vacío (writer/calc/impress) |
| Guarda en la ruta actual o en una nueva |
| Exporta a través de LibreOffice (PDF, HTML, CSV, etc.) |
| Convierte el formato de archivo (DOC→DOCX, XLSX→CSV, etc.) |
Lectura (eficiente en tokens)
Herramienta | Descripción |
| Título, autor, recuento de palabras/páginas, fechas |
| Encabezados (Writer) / nombres de hojas (Calc) / títulos de diapositivas (Impress) |
| Texto del documento paginado como Markdown |
| Rango específico de párrafos o diapositivas |
| Busca texto con contexto circundante |
Escritura (Writer)
Herramienta | Descripción |
| Inserta al principio/final/después de un encabezado |
| Busca y reemplaza (primera o todas las ocurrencias) |
| Inserta un párrafo en un índice específico |
| Aplica estilo de encabezado/párrafo |
Hoja de cálculo (Calc)
Herramienta | Descripción |
| Nombres de hojas con recuento de filas/columnas |
| Rango de celdas como JSON + tabla markdown |
| Establece el valor o la fórmula de una celda |
| Establece un rango 2D de valores |
| Agrega una nueva hoja |
| Obtiene expresiones de fórmulas en un rango |
Presentación (Impress)
Herramienta | Descripción |
| Títulos de diapositivas con índice |
| Contenido completo de la diapositiva (título, cuerpo, notas) |
| Notas del orador |
| Agrega una nueva diapositiva (requiere LibreOffice) |
| Actualiza el contenido de la diapositiva |
💡 Flujo de trabajo para ahorrar tokens
Para una máxima eficiencia en el uso de tokens, sigue este patrón:
1. document_open(filePath) → get docId
2. document_get_metadata(docId) → understand size/type
3. document_get_outline(docId) → see structure
4. document_read_range(docId, startIndex=N, endIndex=M) → read specific sectionEn lugar de volcar todo el documento, navegas exactamente a lo que necesitas.
Flujo de trabajo de hoja de cálculo:
1. document_open(path) → docId
2. spreadsheet_list_sheets(docId) → see all sheets
3. spreadsheet_get_range(docId, sheetName="Sales", range="A1:D20") → targeted data🏗 Arquitectura
src/
├── index.ts # createMcpServer() — MCP server factory
├── LibreOfficeAdapter.ts # soffice subprocess manager
├── DocumentContext.ts # Open document registry
├── DocumentSession.ts # Per-document state + format bridge
├── McpResponse.ts # Response builder (text/JSON/markdown)
├── Mutex.ts # Serializes LibreOffice subprocess calls
├── parsers/
│ ├── DocxParser.ts # DOCX read → {paragraphs, outline, metadata} (mammoth)
│ ├── DocxOoxmlEditor.ts # DOCX write → direct JSZip OOXML manipulation (format-preserving)
│ ├── XlsxParser.ts # XLSX read/write via ExcelJS
│ ├── PptxParser.ts # PPTX read → {slides[]} (JSZip XML)
│ └── PptxOoxmlEditor.ts # PPTX write → add/update slides, create PPTX (JSZip OOXML)
├── formatters/
│ ├── MarkdownFormatter.ts
│ ├── JsonFormatter.ts
│ └── TableFormatter.ts # Spreadsheet → Markdown table
└── tools/
├── documents.ts # open/close/list/create
├── reader.ts # metadata/outline/read/search
├── writer.ts # insert/replace/style
├── spreadsheet.ts # get/set cells/ranges/sheets
├── presentation.ts # slides/notes
└── converter.ts # save/export/convert🧪 Pruebas
# Create sample fixtures
node tests/create-fixtures.mjs
# Run smoke tests
npm test📝 Variables de entorno
Variable | Descripción |
| Ruta al ejecutable |
| Establecer en |
📄 Licencia
MIT
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/passerbyflutter/libreoffice-mcp-tools'
If you have feedback or need assistance with the MCP directory API, please join our Discord server