libre-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LIBRE_MCP_LOG_LEVEL | No | stderr log level | INFO |
| LIBRE_MCP_PROFILE_DIR | No | per-instance profile root | ./.lo_profiles |
| LIBRE_MCP_PYTHON_PATH | No | bundled python override | auto |
| LIBRE_MCP_KEEP_PROFILE | No | keep profiles for debugging | false |
| LIBRE_MCP_SOFFICE_PATH | No | soffice binary override | auto |
| LIBRE_MCP_STARTUP_TIMEOUT | No | seconds to wait for soffice | 30 |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| create_documentA | Create a new empty LibreOffice document. |
| open_documentA | Open an existing document from an absolute filesystem path. |
| list_documentsA | List currently open documents as {documents: [{doc_id, kind, url}]}. |
| document_infoC | Get {kind, url, modified} for an open document. |
| save_documentA | Save a document. With no path, saves in place (the document must already have a location). With an absolute path, saves a copy; format is inferred from the extension if omitted (e.g. odt, pdf, docx, ods, xlsx, csv, html). |
| export_documentA | Export a document to an absolute path in the given format. |
| close_documentA | Close an open document. |
| get_textB | Return the full plain text of a Writer document as {text}. |
| insert_textB | Append text at the end of a Writer document. |
| find_and_replaceA | Replace all occurrences of search with replace. Returns {count}. Set regex=true to treat search as a regular expression. |
| page_setupA | Set page margins (cm) and/or page background color (hex) for a Writer
doc. |
| add_paragraphA | Append a styled paragraph to a Writer doc (the workhorse — use a large
bold size for headings). size is points; color is hex; align is
left|center|right|justify; space_before/after are cm. |
| add_listC | Append a bulleted (or numbered, if ordered=true) list — one string per item. |
| insert_tableC | Insert a table from a 2D list of rows. With header=true the first row gets the accent background + white bold text. |
| insert_imageB | Insert an image inline from an absolute path, scaled to width_cm (aspect preserved). |
| add_page_boxA | Place a page-anchored box (a colored band, header, or pull-quote
callout). x/y/w/h are percent (0-100) of the PAGE; fill is the box color
(hex, or null for transparent); optional |
| set_cellsA | Write cells in a Calc document. Returns {written}. |
| read_cellsA | Read a cell range (e.g. "A1:C10") as {values: [[...]]}. |
| add_sheetA | Add a worksheet by name (appended, or at |
| style_cellsA | Format a cell range (e.g. "A1:E1"). bold/italic, text |
| set_column_widthB | Set the width (cm) of a column or column span, e.g. "A" or "A:E". |
| add_slideA | Append a slide to an Impress presentation. Returns {index, count}. A new presentation already has one slide at index 0. layout is an Impress autolayout id (default 1 = title + content). |
| set_slide_contentB | Set a slide's title and/or bullet body by 0-based slide index. bullets is a list of strings, one per bullet line. |
| list_slidesA | List slides as {slides: [{index, title}], count}. |
| read_slideA | Read a slide's text content by 0-based index. |
| delete_slideA | Delete a slide by 0-based index. Returns {count}. |
| set_presentation_sizeA | Set the slide aspect ratio for the whole deck: "16:9" (default) or "4:3". |
| set_slide_backgroundA | Fill a slide's background. Call this FIRST on a slide (it stacks at the
back). Pass color2 for a linear gradient from color→color2 at |
| add_textboxB | Place a styled text box. x/y/w/h are percent (0-100) of the slide;
size is in points; color is hex; align is left|center|right; valign is
top|center|bottom. Use newlines in |
| add_shapeA | Draw a shape: shape is rect|round|ellipse|line. x/y/w/h are percent of
the slide. fill is hex (or null for none); pass fill2 for a gradient at
|
| add_imageC | Place an image from an absolute path. x/y/w/h are percent of the slide. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 31 tools
Most tools target a specific document type and action, but a few pairs (insert_image/add_image, save_document/export_document, add_textbox/add_shape) have overlapping potential. Descriptions usually clarify the target document/context, so an agent can mostly disambiguate.
The vast majority follow a clear snake_case verb_noun pattern (add_slide, set_cells, read_cells, close_document). Minor deviations like page_setup and document_info break the pattern but are not jarring.
31 tools is above the 25-tool threshold and will be heavy for an agent to scan. The broad Writer/Calc/Impress coverage justifies some size, but several add/insert and save/export tools could be consolidated.
The server covers document lifecycle (create/open/save/export/close) plus generation and reading for Writer, Calc, and Impress. Gaps like Writer text editing/deletion, Calc row/column manipulation, and slide reordering exist but are workable-around for typical document-building tasks.