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 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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