LibreOffice MCP Tools
Инструменты LibreOffice MCP
[!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+ |
| ✅ | ✅ | Нативный (mammoth read / JSZip OOXML write) |
Word 97-2003 |
| ✅ | ✅ | Мост LibreOffice |
Excel 2007+ |
| ✅ | ✅ | Нативный (ExcelJS) |
Excel 97-2003 |
| ✅ | ✅ | Мост LibreOffice |
PowerPoint 2007+ |
| ✅ | ✅ | Нативный (JSZip OOXML) |
PowerPoint 97-2003 |
| ✅ | ✅ | Мост LibreOffice |
OpenDocument Text |
| ✅ | ✅ | Мост LibreOffice |
OpenDocument Spreadsheet |
| ✅ | ✅ | Мост LibreOffice |
OpenDocument Presentation |
| ✅ | ✅ | Мост LibreOffice |
Rich Text Format |
| ✅ | ✅ | Мост LibreOffice |
CSV |
| ✅ | ✅ | Нативный |
| ✅ (текст) | ❌ | LibreOffice CLI | |
Обычный текст |
| ✅ | ✅ | Нативный |
🚀 Быстрый старт
Предварительные требования
Node.js 20+
LibreOffice (опционально для базового чтения DOCX/XLSX/PPTX; требуется для .doc/.xls/.ppt и конвертации форматов)
Windows: Скачать LibreOffice
macOS:
brew install --cask libreofficeLinux:
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)🛠 Справочник инструментов
Управление документами
Инструмент | Описание |
| Открыть файл → возвращает дескриптор |
| Освободить дескриптор документа и временные файлы |
| Список всех открытых документов |
| Создать новый пустой документ (writer/calc/impress) |
| Сохранить в текущий или новый путь |
| Экспорт через LibreOffice (PDF, HTML, CSV и т.д.) |
| Конвертация формата файла (DOC→DOCX, XLSX→CSV и т.д.) |
Чтение (оптимизировано по токенам)
Инструмент | Описание |
| Заголовок, автор, количество слов/страниц, даты |
| Заголовки (Writer) / имена листов (Calc) / заголовки слайдов (Impress) |
| Постраничный текст документа в формате Markdown |
| Конкретный диапазон абзацев или слайдов |
| Поиск текста с окружающим контекстом |
Запись (Writer)
Инструмент | Описание |
| Вставка в начало/конец/после заголовка |
| Поиск и замена (первое или все вхождения) |
| Вставка абзаца по конкретному индексу |
| Применение стиля заголовка/абзаца |
Электронные таблицы (Calc)
Инструмент | Описание |
| Имена листов с количеством строк/столбцов |
| Диапазон ячеек в формате JSON + таблица markdown |
| Установка значения или формулы ячейки |
| Установка двумерного диапазона значений |
| Добавить новый лист |
| Получить формульные выражения в диапазоне |
Презентации (Impress)
Инструмент | Описание |
| Заголовки слайдов с индексом |
| Полное содержимое слайда (заголовок, тело, заметки) |
| Заметки докладчика |
| Добавить новый слайд (требуется LibreOffice) |
| Обновить содержимое слайда |
💡 Рабочий процесс для экономии токенов
Для максимальной эффективности использования токенов следуйте этому шаблону:
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📝 Переменные окружения
Переменная | Описание |
| Путь к исполняемому файлу |
| Установите |
📄 Лицензия
MIT
Maintenance
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
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to create, read, edit, and manipulate LibreOffice documents with support for track changes, comments, search/replace, and real-time document operations through a native extension or HTTP API.9MIT
- AlicenseNot gradedqualityFmaintenanceEnables AI agents to create, read, modify, and convert Word documents without Microsoft Word, supporting 18 tools for document operations, paragraph manipulation, table management, formatting, and conversion between multiple formats including PDF, HTML, and Markdown.6MIT
- AlicenseAqualityFmaintenanceEnables AI assistants to create, read, convert, and manipulate LibreOffice documents programmatically, supporting 50+ file formats including Writer, Calc, Impress documents with real-time editing, batch operations, and document analysis capabilities.1495MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to read, edit, and create Microsoft Word documents (.docx) with support for rich text, tables, and images, deployable locally or via SSE.3MIT
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/passerbyflutter/libreoffice-mcp-tools'
If you have feedback or need assistance with the MCP directory API, please join our Discord server