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."
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 |
|
| 2 | XLSX | Executive KPI Dashboard | excel.basic |
|
| 3 | XLSX | Budget vs Actual Variance | excel.basic |
|
| 4 | XLSX | Balance Sheet with Ratios | excel.basic |
|
| 5 | XLSX | Revenue Forecast | excel.basic |
|
| 6 | XLSX | Cost Analysis | excel.basic |
|
| 7 | DOCX | Invoice | word.invoice |
|
| 8 | DOCX | Annual Business Report | word.report |
|
| 9 | DOCX | IT Service Agreement | word.report |
|
| 10 | DOCX | Digital Strategy Report | word.report |
|
| 11 | Financial Report Export | office_export_pdf |
Interactive showcase →
showcase/use-cases.htmlwith 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c74c6a1b82eaad9d3c5aa7df18bb29fb6792993d2bdda64759a72fd8aadb269
|
|
| MD5 |
d2881f32fc21a327702f8997975503d6
|
|
| BLAKE2b-256 |
55615e51c89b1e19651a81739132d5d08354a2aa73aa4ef179327b5bcdbfef00
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3490e6dd36218b7513649eba9163c9c4d041990df869a37050477aef163304f9
|
|
| MD5 |
46005e6e611ad9a243622dc0691f54cc
|
|
| BLAKE2b-256 |
d19f9a7e86d8a35cd7efa766b88b2eb4e7269108ae99189f4e935d5274bdce0e
|