Skip to main content
Glama

Инструменты LibreOffice MCP

npm version

[!WARNING] Этот проект был написан GitHub Copilot и не был полностью проверен человеком. Код может содержать ошибки, проблемы безопасности или неожиданное поведение. Используйте на свой страх и риск. Не используйте в продакшене без тщательной проверки.

Сервер Model Context Protocol (MCP), который дает ИИ-агентам (Claude, Copilot, Gemini, Cursor и др.) возможность читать, записывать и редактировать офисные документы через LibreOffice — с дизайном, оптимизированным по токенам, что минимизирует использование контекста LLM.

Вдохновлено архитектурой chrome-devtools-mcp.

✨ Функции

  • 22 инструмента MCP, охватывающих чтение, запись, электронные таблицы и презентации

  • Дизайн, оптимизированный по токенам: навигация по структуре, доступ по диапазонам, постраничный вывод

  • Широкая поддержка форматов: DOCX, DOC, XLSX, XLS, PPTX, PPT, ODT, ODS, ODP, RTF, CSV, TXT, PDF

  • Мост для устаревших форматов: .doc, .xls, .ppt автоматически конвертируются через LibreOffice перед парсингом

  • LibreOffice не требуется для базового чтения: нативные парсеры напрямую обрабатывают DOCX, XLSX, PPTX

  • LibreOffice требуется для: устаревших форматов, экспорта в PDF, конвертации форматов

Related MCP server: Spire.Doc MCP Server

📋 Поддерживаемые форматы

Формат

Расширения

Чтение

Запись

Метод

Word 2007+

.docx, .dotx

Нативный (mammoth read / JSZip OOXML write)

Word 97-2003

.doc, .dot

Мост LibreOffice

Excel 2007+

.xlsx, .xlsm

Нативный (ExcelJS)

Excel 97-2003

.xls

Мост LibreOffice

PowerPoint 2007+

.pptx

Нативный (JSZip OOXML)

PowerPoint 97-2003

.ppt

Мост LibreOffice

OpenDocument Text

.odt

Мост LibreOffice

OpenDocument Spreadsheet

.ods

Мост LibreOffice

OpenDocument Presentation

.odp

Мост LibreOffice

Rich Text Format

.rtf

Мост LibreOffice

CSV

.csv

Нативный

PDF

.pdf

✅ (текст)

LibreOffice CLI

Обычный текст

.txt

Нативный

🚀 Быстрый старт

Предварительные требования

  • Node.js 20+

  • LibreOffice (опционально для базового чтения DOCX/XLSX/PPTX; требуется для .doc/.xls/.ppt и конвертации форматов)

    • Windows: Скачать LibreOffice

    • macOS: brew install --cask libreoffice

    • Linux: sudo apt install libreoffice или sudo dnf install libreoffice

Установка

Использование npx (рекомендуется — установка не требуется):

{
  "mcpServers": {
    "libreoffice": {
      "command": "npx",
      "args": ["-y", "@passerbyflutter/libreoffice-mcp-tools"]
    }
  }
}

Глобальная установка:

npm install -g @passerbyflutter/libreoffice-mcp-tools

Из исходного кода:

git clone https://github.com/passerbyflutter/libreoffice-mcp-tools
cd libreoffice-mcp-tools
npm install
npm run build

Настройка вашего MCP-клиента

Добавьте в конфигурацию вашего MCP-клиента (например, claude_desktop_config.json для Claude Desktop):

{
  "mcpServers": {
    "libreoffice": {
      "command": "npx",
      "args": ["-y", "@passerbyflutter/libreoffice-mcp-tools"],
      "env": {
        "SOFFICE_PATH": "/path/to/soffice"
      }
    }
  }
}

Или используйте .mcp.json в корне вашего проекта:

{
  "mcpServers": {
    "libreoffice": {
      "command": "npx",
      "args": ["-y", "@passerbyflutter/libreoffice-mcp-tools"]
    }
  }
}

Опции CLI

node build/bin/libreoffice-mcp.js [options]

  --libreoffice-path <path>   Path to soffice executable
                              (default: auto-detected or SOFFICE_PATH env)

🛠 Справочник инструментов

Управление документами

Инструмент

Описание

document_open

Открыть файл → возвращает дескриптор docId. Автоматически связывает устаревшие форматы.

document_close

Освободить дескриптор документа и временные файлы

document_list

Список всех открытых документов

document_create

Создать новый пустой документ (writer/calc/impress)

document_save

Сохранить в текущий или новый путь

document_export

Экспорт через LibreOffice (PDF, HTML, CSV и т.д.)

document_convert

Конвертация формата файла (DOC→DOCX, XLSX→CSV и т.д.)

Чтение (оптимизировано по токенам)

Инструмент

Описание

document_get_metadata

Заголовок, автор, количество слов/страниц, даты

document_get_outline

Заголовки (Writer) / имена листов (Calc) / заголовки слайдов (Impress)

document_read_text

Постраничный текст документа в формате Markdown

document_read_range

Конкретный диапазон абзацев или слайдов

document_search

Поиск текста с окружающим контекстом

Запись (Writer)

Инструмент

Описание

document_insert_text

Вставка в начало/конец/после заголовка

document_replace_text

Поиск и замена (первое или все вхождения)

document_insert_paragraph

Вставка абзаца по конкретному индексу

document_apply_style

Применение стиля заголовка/абзаца

Электронные таблицы (Calc)

Инструмент

Описание

spreadsheet_list_sheets

Имена листов с количеством строк/столбцов

spreadsheet_get_range

Диапазон ячеек в формате JSON + таблица markdown

spreadsheet_set_cell

Установка значения или формулы ячейки

spreadsheet_set_range

Установка двумерного диапазона значений

spreadsheet_add_sheet

Добавить новый лист

spreadsheet_get_formulas

Получить формульные выражения в диапазоне

Презентации (Impress)

Инструмент

Описание

presentation_list_slides

Заголовки слайдов с индексом

presentation_get_slide

Полное содержимое слайда (заголовок, тело, заметки)

presentation_get_notes

Заметки докладчика

presentation_add_slide

Добавить новый слайд (требуется LibreOffice)

presentation_update_slide

Обновить содержимое слайда

💡 Рабочий процесс для экономии токенов

Для максимальной эффективности использования токенов следуйте этому шаблону:

1. document_open(filePath) → get docId
2. document_get_metadata(docId) → understand size/type
3. document_get_outline(docId) → see structure
4. document_read_range(docId, startIndex=N, endIndex=M) → read specific section

Вместо того чтобы выгружать весь документ целиком, вы переходите именно к тому, что вам нужно.

Рабочий процесс с электронными таблицами:

1. document_open(path) → docId
2. spreadsheet_list_sheets(docId) → see all sheets
3. spreadsheet_get_range(docId, sheetName="Sales", range="A1:D20") → targeted data

🏗 Архитектура

src/
├── index.ts                # createMcpServer() — MCP server factory
├── LibreOfficeAdapter.ts   # soffice subprocess manager
├── DocumentContext.ts      # Open document registry
├── DocumentSession.ts      # Per-document state + format bridge
├── McpResponse.ts          # Response builder (text/JSON/markdown)
├── Mutex.ts                # Serializes LibreOffice subprocess calls
├── parsers/
│   ├── DocxParser.ts           # DOCX read → {paragraphs, outline, metadata} (mammoth)
│   ├── DocxOoxmlEditor.ts      # DOCX write → direct JSZip OOXML manipulation (format-preserving)
│   ├── XlsxParser.ts           # XLSX read/write via ExcelJS
│   ├── PptxParser.ts           # PPTX read → {slides[]} (JSZip XML)
│   └── PptxOoxmlEditor.ts      # PPTX write → add/update slides, create PPTX (JSZip OOXML)
├── formatters/
│   ├── MarkdownFormatter.ts
│   ├── JsonFormatter.ts
│   └── TableFormatter.ts   # Spreadsheet → Markdown table
└── tools/
    ├── documents.ts         # open/close/list/create
    ├── reader.ts            # metadata/outline/read/search
    ├── writer.ts            # insert/replace/style
    ├── spreadsheet.ts       # get/set cells/ranges/sheets
    ├── presentation.ts      # slides/notes
    └── converter.ts         # save/export/convert

🧪 Тестирование

# Create sample fixtures
node tests/create-fixtures.mjs

# Run smoke tests
npm test

📝 Переменные окружения

Переменная

Описание

SOFFICE_PATH

Путь к исполняемому файлу soffice LibreOffice

DEBUG

Установите lo-mcp:* для подробного логирования

📄 Лицензия

MIT

Install Server
A
license - permissive license
A
quality
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Persistent docs and memory for AI agents — read, write, organize & search a shared workspace.

  • AI document editing for agents: draft, edit, export .docx/PDF. 37 MCP tools; agent self-signup.

  • Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.

View all MCP Connectors

Latest Blog Posts

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