Skip to content

jwingnut/libreoffice-mcp-ubuntu

Repository files navigation

LibreOffice MCP Server (Ubuntu)

FastMCP server that provides Claude Code with tools to control LibreOffice Writer through an HTTP API bridge.

Architecture

Claude Code (Ubuntu VM)
    │
    └── LibreOffice MCP Server (this)
            │
            │ HTTP requests (localhost:8765)
            ▼
        LibreOffice Writer
            │
            └── MCP Extension (HTTP API)

Components

1. MCP Server (libreoffice_mcp_server.py)

FastMCP server providing 9 consolidated tools for document manipulation:

Tool Actions Description
document create, info, list, content, status Document management
structure outline, paragraph, range, count Navigate document structure
cursor goto_paragraph, goto_position, position, context Cursor navigation
selection paragraph, range, delete, replace Text selection and manipulation
search find, replace, replace_all Find and replace (Track Changes aware)
track_changes status, enable, disable, list, accept, reject, accept_all, reject_all Revision tracking
comments list, add Comment management
save save, export Save and export documents
text insert, format Insert and format text

2. LibreOffice Extension (libreoffice-mcp-extension.oxt)

LibreOffice extension that provides an HTTP API on port 8765 for the MCP server to connect to.

Setup

1. Install the LibreOffice Extension

# Install via LibreOffice
unopkg add libreoffice-mcp-extension.oxt

Or: Tools → Extension Manager → Add → Select the .oxt file

2. Create Virtual Environment

uv venv
source .venv/bin/activate
uv pip install fastmcp httpx

3. Configure Claude Code

Add to .mcp.json:

{
  "mcpServers": {
    "libreoffice": {
      "command": "/home/vboxuser/projects/libreoffice-mcp/run_libreoffice_mcp.sh",
      "args": []
    }
  }
}

Usage

  1. Start LibreOffice Writer
  2. Start the MCP Server in LibreOffice: Tools → MCP Server → Start MCP Server
  3. Use Claude Code with LibreOffice tools

Example Commands

# Check connection
document(action="status")

# Create new document
document(action="create", doc_type="writer")

# Get document content
document(action="content")

# Insert text at cursor
text(action="insert", content="Hello, World!")

# Find and replace
search(action="replace_all", old="foo", new="bar")

# Enable track changes
track_changes(action="enable")

# Save document
save(action="save", file_path="/path/to/document.odt")

Integration with Zotero

This MCP server works alongside the Zotero MCP server for a complete academic writing workflow:

  1. LibreOffice MCP - Document editing and formatting
  2. Zotero MCP - Citation management with scannable cite markers
  3. Zotero ODF Plugin - Converts markers to live citations

Files

  • libreoffice_mcp_server.py - MCP server (FastMCP)
  • libreoffice-mcp-extension.oxt - LibreOffice extension
  • run_libreoffice_mcp.sh - Wrapper script for Claude Code

About

LibreOffice MCP Server for Claude Code - FastMCP bridge to control LibreOffice Writer

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •