Skip to main content

Rust-native MCP server for Office document processing — sub-millisecond, local-first, open source

Project description

opendocswork-mcp

Rust-native MCP server for Office document processing (Excel, Word, PowerPoint).
Sub-millisecond, local-first, open source — the "open source Aspose."

GitHub Discussions License


Quick Start

cargo install opendocswork-mcp

Or download from GitHub Releases.

Claude Desktop

{
  "mcpServers": {
    "office": { "command": "opendocswork-mcp", "args": ["--transport", "stdio"] }
  }
}

Cursor

{
  "mcpServers": {
    "opendocswork-mcp": { "command": "opendocswork-mcp", "args": ["--transport", "stdio"] }
  }
}

VS Code (Copilot)

{
  "servers": {
    "opendocswork-mcp": { "command": "opendocswork-mcp", "args": ["--transport", "stdio"] }
  }
}

Use Cases

Every document below was generated by opendocswork-mcp — click to download.

# Format Use Case Skill Preview
1 XLSX Profit & Loss Statement excel.basic P&L
2 XLSX Executive KPI Dashboard excel.basic KPI
3 XLSX Budget vs Actual Variance excel.basic Budget
4 XLSX Balance Sheet with Ratios excel.basic Balance
5 XLSX Revenue Forecast excel.basic Forecast
6 XLSX Cost Analysis excel.basic Cost
7 DOCX Invoice word.invoice Invoice
8 DOCX Annual Business Report word.report Report
9 DOCX IT Service Agreement word.report Contract
10 DOCX Digital Strategy Report word.report Strategy
11 PDF Financial Report Export office_export_pdf PDF

Interactive showcase → showcase/use-cases.html with full prompts, JSON-RPC calls, and details.


Tool Overview

Tool Description Inputs
list_formats All supported Office formats + capabilities
get_document_info File metadata (format, size, readability) file_path
office_read Read content → JSON / Markdown / Chunks file_path, output_format
increment Increment counter (demo)
get_value Get current counter value (demo)

Full Suite

AI Reading: to_md, to_json, to_chunks, excel_schema, coherence_check

Excel Write: office_create_xlsx, office_write_cell, office_write_range, office_format_range, office_create_chart, office_create_pivot, office_add_sheet, office_rename_sheet, office_delete_sheet, office_merge_cells, office_set_column_width, office_apply_conditional_format

Word Write: office_create_docx, office_write_docx_from_md, office_replace_text, office_set_style, office_add_table, office_add_image, office_add_header_footer, office_add_toc, office_add_comment, office_accept_changes

PPT Write: office_create_pptx, office_add_slide, office_set_slide_layout, office_add_text_box, office_add_chart, office_add_image

Skills System: skill_run, skill_list, skill_validate, skill_register

Coherence Engine: office_propagate_edit, office_check_consistency

Batch & PDF: office_batch_read, office_batch_convert, office_export_pdf, office_fill_pdf_form, office_list_pdf_fields


Architecture

┌────────────────────────────────────────────────────────┐
│                    MCP Transport                        │
│           rmcp 1.7+ — stdio + Streamable HTTP          │
│              0.38ms per call · 4,845 RPS               │
├────────────────────────────────────────────────────────┤
│                     Tool Layer                          │
│  AI Reading · Excel/Word/PPT · Skills · Coherence      │
├────────────────────────────────────────────────────────┤
│                   OOXML Engine                          │
│  calamine · rust_xlsxwriter · rdocx · office_oxide     │
│          6 formats: DOCX/XLSX/PPTX/DOC/XLS/PPT         │
├────────────────────────────────────────────────────────┤
│                  ZIP + XML Layer                        │
│    quick-xml (zero-copy) · zip · zlib-ng (SIMD)        │
├────────────────────────────────────────────────────────┤
│                 Semantic Layer                          │
│    Entity DAG · BFS propagation · Stale detection      │
└────────────────────────────────────────────────────────┘

Performance Benchmarks

Operation Python opendocswork-mcp Speedup
10M cell XLSX read (openpyxl) 239s ~25s ~10×
100K cell XLSX write (openpyxl) 1.8s 152ms ~12×
DOCX read mean (6K docs) 11.8ms 0.8ms ~14×
PPTX read mean (323 slides) 32.5ms 0.7ms ~46×
MCP tool call (FastMCP) 3ms 0.38ms ~6×
Cold start 1-5s <50ms ~100×
Memory (idle) 42.7MB <2MB ~20×

Build

cargo build                           # Debug
cargo build --release                 # Release
cargo clippy                          # Lint
cargo doc --open                      # Docs

Contributing

See CONTRIBUTING.md. All contributions welcome.

License

GNU General Public License v3.0 — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

opendocswork_mcp-0.2.0.tar.gz (16.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

opendocswork_mcp-0.2.0-py3-none-any.whl (17.1 kB view details)

Uploaded Python 3

File details

Details for the file opendocswork_mcp-0.2.0.tar.gz.

File metadata

  • Download URL: opendocswork_mcp-0.2.0.tar.gz
  • Upload date:
  • Size: 16.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for opendocswork_mcp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 9c74c6a1b82eaad9d3c5aa7df18bb29fb6792993d2bdda64759a72fd8aadb269
MD5 d2881f32fc21a327702f8997975503d6
BLAKE2b-256 55615e51c89b1e19651a81739132d5d08354a2aa73aa4ef179327b5bcdbfef00

See more details on using hashes here.

File details

Details for the file opendocswork_mcp-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: opendocswork_mcp-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 17.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for opendocswork_mcp-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3490e6dd36218b7513649eba9163c9c4d041990df869a37050477aef163304f9
MD5 46005e6e611ad9a243622dc0691f54cc
BLAKE2b-256 d19f9a7e86d8a35cd7efa766b88b2eb4e7269108ae99189f4e935d5274bdce0e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page