LibreOffice MCP Tools
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DEBUG | No | Set to 'lo-mcp:*' for verbose logging | |
| SOFFICE_PATH | No | Path to LibreOffice soffice executable |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| document_apply_styleC | Apply a heading or paragraph style to a specific paragraph by index. |
| document_closeA | Close an open document and release its resources (including any temp files from format bridging). |
| document_convertA | Convert a document file to a different format using LibreOffice CLI. Creates a new file; original is not modified. Useful for: DOC→DOCX, DOCX→PDF, XLSX→CSV, etc. LibreOffice must be installed. |
| document_createB | Create a new empty document and open it. Returns a docId. Supports creating: writer (text document → .docx), calc (spreadsheet → .xlsx), impress (presentation → .pptx). |
| document_exportA | Export a document to a different format using LibreOffice. Supports exporting to: PDF, HTML, TXT, DOCX, XLSX, PPTX, ODT, ODS, ODP, CSV. LibreOffice must be installed. |
| document_get_metadataA | Get metadata for an open document: title, author, page count, word count, format, file size, dates. Token-efficient: use this before reading document content to understand its size and structure. |
| document_get_outlineA | Get the structural outline of a document:
|
| document_insert_paragraphC | Insert a new paragraph at a specific index in a Writer document. |
| document_insert_textB | Insert text into a Writer document at a specified position. Position options: 'start' (beginning), 'end' (end of document), or after a specific heading text. |
| document_listB | List all currently open documents with their docId, file path, format, and size. |
| document_openA | Open a document file and return a docId handle for use with other tools. Supports: .docx, .doc, .xlsx, .xls, .pptx, .ppt, .odt, .ods, .odp, .rtf, .csv, .txt, .pdf Legacy binary formats (.doc, .xls, .ppt, .odt, .ods, .odp, .rtf) are automatically converted via LibreOffice before parsing. Returns docId to use with all other document tools. |
| document_read_rangeA | Read a specific range of a document by paragraph index (for Writer) or slide index (for Impress). More token-efficient than document_read_text when you only need a specific section. |
| document_read_textA | Read document content as Markdown text. For large documents, use limit/offset for pagination. Default returns up to 4000 characters. Use document_get_outline first to understand structure. |
| document_replace_textC | Find and replace text in a Writer document. Optionally replace all occurrences. |
| document_saveB | Save the current state of a document to its file path (or a new path). |
| document_searchA | Search for text within a document. Returns matching paragraphs/cells/slides with surrounding context. |
| presentation_add_slideC | Add a new slide to a presentation. |
| presentation_get_notesB | Get speaker notes for all slides or a specific slide. |
| presentation_get_slideB | Get the full content of a specific slide: title, body text, and speaker notes. |
| presentation_list_slidesA | List all slides in a presentation with their index and title. Token-efficient overview before reading content. |
| presentation_update_slideC | Update the title or body text of an existing slide. |
| spreadsheet_add_sheetC | Add a new sheet to a spreadsheet workbook. |
| spreadsheet_get_formulasA | Get all formulas in a spreadsheet range (returns formula expressions, not computed values). |
| spreadsheet_get_rangeA | Read a range of cells from a spreadsheet sheet. Returns data as structured JSON and a markdown table. Use range like "A1:D10" for specific cells, or omit for paginated full sheet. Token-efficient: specify a range rather than reading the whole sheet. |
| spreadsheet_list_sheetsB | List all sheets in a spreadsheet with their names, row counts, and column counts. |
| spreadsheet_set_cellA | Set the value or formula of a single cell in a spreadsheet. Changes are saved immediately. |
| spreadsheet_set_rangeC | Set multiple cell values in a spreadsheet. Provide a 2D array of values matching the range. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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