Skip to main content
Glama

LibreOffice MCP Tools

npm version

[!WARNING] このプロジェクトは GitHub Copilot によって作成 されており、人間による完全なレビューは行われていません。 コードにはバグ、セキュリティ上の問題、または予期しない動作が含まれている可能性があります。自己責任で使用してください。 十分なレビューなしに本番環境で使用しないでください。

Model Context Protocol (MCP) サーバーであり、AIエージェント(Claude、Copilot、Gemini、Cursorなど)がLibreOfficeを介して Officeドキュメントを読み取り、書き込み、編集 する機能を提供します。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およびフォーマット変換には必須)

インストール

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の claude_desktop_config.json)に追加します:

{
  "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

2次元の値範囲を設定

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

LibreOffice soffice 実行ファイルへのパス

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