libre-mcp
Provides tools for controlling LibreOffice (Writer and Calc) via the UNO automation API, enabling document creation, editing, saving, and export.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@libre-mcpcreate a new Writer document and add the text 'Hello, world!'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
libre-mcp
A stdio MCP server for controlling LibreOffice (Writer, Calc & Impress) from Claude Code and other MCP clients — create and edit documents, spreadsheets, and presentations; run formulas; and export to PDF, DOCX, XLSX, PPTX, and more. macOS and Linux.
Full docs: libre-mcp.krondor.org
Install
curl -fsSL https://raw.githubusercontent.com/krondor-corp/libre-mcp/main/install.sh | bashInstalls a prebuilt, self-contained binary to ~/.local/bin (no Python needed on
the host). Update in place with libre-mcp update.
From a source checkout instead (needs uv):
make install # build + install the binary to ~/.local/binRelated MCP server: mcp-office-parser
Connect it to your coding tool
libre-mcp is a stdio MCP server, so any MCP-capable client can run it. Make
sure libre-mcp is on your PATH (or use its absolute path).
Claude Code
claude mcp add libre -- libre-mcpCursor — ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):
{
"mcpServers": {
"libre": { "command": "libre-mcp" }
}
}Claude Desktop — Settings → Developer → Edit Config (claude_desktop_config.json):
{
"mcpServers": {
"libre": { "command": "libre-mcp" }
}
}VS Code (GitHub Copilot) — .vscode/mcp.json, or code --add-mcp '{"name":"libre","command":"libre-mcp"}':
{
"servers": {
"libre": { "type": "stdio", "command": "libre-mcp" }
}
}Windsurf — ~/.codeium/windsurf/mcp_config.json: same mcpServers shape as Cursor.
Restart the client (or reload its MCP config) and libre's tools appear.
Requirements
LibreOffice must be installed:
macOS:
/Applications/LibreOffice.appDebian/Ubuntu:
apt install libreoffice-writer libreoffice-calc python3-unoOther Linux (TDF/opt builds): bundle their own Python — nothing extra.
Paths are auto-discovered; override with LIBRE_MCP_SOFFICE_PATH /
LIBRE_MCP_PYTHON_PATH if LibreOffice lives somewhere unusual.
Usage
Ask your MCP client to work with documents, spreadsheets, or presentations. The
typical flow is create/open → edit → export (e.g. build a deck and save it as
.pptx); documents stay open (referenced by doc_id) until closed.
Tool | Purpose |
| New writer/calc/impress/draw doc → |
| Open a file → |
| Inspect open docs ( |
| Save in place or to a path |
| Export (pdf, docx, xlsx, csv, …) |
| Close a doc (refuses on unsaved changes; |
| Read a Writer doc's text |
| Append text |
| Replace text |
| Page margins / background |
| Styled paragraph / heading |
| Bulleted / numbered list |
| Table (accent header row) |
| Inline image |
| Page-anchored band / callout |
| Write Calc cells/formulas |
| Read a Calc range |
| Append an Impress slide |
| Set a slide's title/bullets |
| Inspect / remove slides |
| Read a slide's title, bullets, and text boxes |
| Slide aspect (16:9 / 4:3) |
| Solid or gradient background |
| Positioned, styled text |
| Rect/round/ellipse/line (+ text) |
| Place an image on a slide |
Slide graphics (and Writer page boxes) position by percent (0-100) and take hex colors — enough to build themed, graphic-rich decks and branded documents (letterheads, reports, one-pagers). Full arguments: the tool reference.
Live editing & concurrency
The server drives one headless/visible LibreOffice in an isolated profile — its own process, separate from your everyday LibreOffice. That has two consequences worth knowing:
To watch edits live, edit the window the server opens (live mode,
show: true) — it shares the server's document model, so you and the agent see each other's changes instantly. Opening the same file in your own LibreOffice gives you a separate in-memory copy; the two processes can't see each other's unsaved edits (local LibreOffice has no real-time co-editing — that's a cloud/Collabora feature). The only bridge between two instances is the file on disk: save in one, reopen in the other.The agent won't clobber your in-flight edits. Every document carries a revision counter bumped on any change (agent or human); a tool that would edit a document you changed since the agent last looked is refused with a conflict warning until the agent re-reads it. Likewise
close_documentrefuses to discard unsaved changes unless you passforce.
Links
Acknowledgements
Built on the work of others:
LibreOffice and The Document Foundation — the office suite and its UNO / PyUNO automation API that does all the real work.
Model Context Protocol and the Python MCP SDK.
PyInstaller, uv, and git-cliff for packaging and releases.
confit — the model for this project's release and docs setup.
This server cannot be installed
Maintenance
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
- 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/krondor-corp/libre-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server