create_documentLABSCO SUMMARY
The live window is the difference.
Document tools normally work blind: the model writes a file and you open it afterwards to find out what happened. Opening the document in LibreOffice and refreshing it as edits land turns that into something you can supervise — you see the paragraph appear, and you stop the run when it goes wrong rather than reading the damage later.
What it is
An MCP server that drives LibreOffice on your machine: creating Writer, Calc, Impress and Draw documents, reading their contents, converting between formats, editing text, and — the part that sets it apart — opening the document in the LibreOffice GUI so you watch edits land in real time.
What you get
create_documentfor Writer, Calc, Impress and Draw;read_document_text;get_document_infofor metadataconvert_documentandbatch_convert_documentsacross LibreOffice's export formats, PDF and DOCX includedinsert_text_at_positionfor Writer edits,merge_text_documentsto combine files,get_document_statisticsfor word and sentence countsread_spreadsheet_datareturning Calc and Excel contents as row-and-column arrayssearch_documentsto find documents containing given text- Live viewing:
open_document_in_libreoffice,create_live_editing_session,watch_document_changes,refresh_document_in_libreoffice - Resources
documents://to list documents anddocument://{path}for one document's content - A LibreOffice extension that embeds the server inside LibreOffice itself, with an HTTP API on
localhost:8765and access to every open document
Requirements
LibreOffice 24.2+ reachable from the command line, Python 3.12+, and uv for dependencies (uv sync). Run python src/main.py over stdio; the package is mcp-libre. A helper script, ./mcp-helper.sh, checks prerequisites, runs a demo, and starts a proxy for browser-extension clients on http://localhost:3006.
Setup effort
Build from source — git clone https://github.com/patrup/mcp-libre/
USE CASES
Turning a folder of documents into PDFs
Batch-convert them in one call instead of opening each file and exporting by hand.
Pulling numbers out of a spreadsheet
Read Calc or Excel data as row-and-column arrays the model can reason over directly.
Drafting with the document open in front of you
Start a live editing session and watch the text arrive in the LibreOffice window as it is written.
Finding the file that mentions a thing
Search across documents by content, then read the text of the ones that match.
14 tools
Listed in project docs. Your client may show a different list.
read_document_textconvert_documentget_document_inforead_spreadsheet_datainsert_text_at_positionsearch_documentsbatch_convert_documentsmerge_text_documentsget_document_statisticsopen_document_in_libreofficecreate_live_editing_sessionwatch_document_changesrefresh_document_in_libreofficeBEFORE YOU INSTALL
What to know first
Tools you get
14 tools named in the project's documentation.
Requires
- LibreOffice 24.2+ reachable from the command line
- Python 3.12+
- uv on PATH
Where it runs
Both documented clients run the server on your machine.
INSTALLATION
Connect your client
Server setup
git clone https://github.com/patrup/mcp-libre/
cd mcp-libre
uv syncMCP Clients
Claude Desktop
{
"mcpServers": {
"libreoffice": {
"command": "uv",
"args": [
"run",
"python",
"<YOUR_PATH_TO_MCP_LIBRE>/src/main.py"
],
"cwd": "<YOUR_PATH_TO_MCP_LIBRE>",
"env": {
"PYTHONPATH": "<YOUR_PATH_TO_MCP_LIBRE>/src"
}
}
}
}<YOUR_PATH_TO_MCP_LIBRE> is the full path to your clone. From inside the clone, ./generate-config.sh claude writes this file with your path filled in.
Super Assistant
Save this as the proxy's config file (./generate-config.sh mcp writes it to ~/Documents/mcp/mcp.config.json with your path filled in):
{
"mcpServers": {
"libreoffice": {
"command": "uv",
"args": [
"run",
"python",
"<YOUR_PATH_TO_MCP_LIBRE>/src/main.py"
],
"cwd": "<YOUR_PATH_TO_MCP_LIBRE>",
"env": {
"PYTHONPATH": "<YOUR_PATH_TO_MCP_LIBRE>/src"
}
}
}
}Start the proxy with npx @srbhptl39/mcp-superassistant-proxy@latest --config ~/Documents/mcp/mcp.config.json, then set the Super Assistant extension's Server URL to http://localhost:3006.