- name
- office-oxide-mcp-rust-document-processor
- description
- Rust-native MCP server for Office document processing (Excel, Word, PowerPoint, PDF) with sub-millisecond performance
- triggers
- ["process office documents with rust","read and write excel word powerpoint files","fill pdf forms programmatically","generate office documents from data","extract data from office files","create xlsx docx pptx files with rust","automate office document workflows","convert office documents to json markdown"]
# office-oxide-mcp-rust-document-processor
> Skill by [ara.so](https://ara.so) — MCP Skills collection.
## Overview
`office-oxide-mcp` is a Rust-native MCP (Model Context Protocol) server for processing Office documents (Excel, Word, PowerPoint, PDF). It provides sub-millisecond performance for reading, writing, and manipulating office files locally without external dependencies. Think of it as an open-source alternative to Aspose with native Rust performance.
**Key capabilities:**
- **Read**: Extract content from XLSX, DOCX, PPTX, PDF to JSON/Markdown/Text/Chunks
- **Write**: Create and modify Excel spreadsheets, Word documents, PowerPoint presentations
- **PDF Forms**: Fill AcroForm/XFA fields, overlay text at coordinates, analyze layout
- **Skills System**: Pre-built templates for invoices, reports, dashboards, pitch decks
- **Coherence Engine**: Maintain consistency across linked cells and documents
**Performance**: ~10-50× faster than Python equivalents (openpyxl, python-docx, etc.)
## Installation
### Install Binary
```bash
cargo install office-oxide-mcp
```
Or download from [GitHub Releases](https://github.com/Aimino-Tech/office-oxide-mcp/releases).
### Configure MCP Client
**Claude Desktop** (`~/Library/Application Support/Claude/claude_desktop_config.json`):
```json
{
"mcpServers": {
"office": {
"command": "office-oxide-mcp",
"args": ["--transport", "stdio"]
}
}
}
```
**Cursor** (`~/.cursor/config.json`):
```json
{
"mcpServers": {
"office-oxide-mcp": {
"command": "office-oxide-mcp",
"args": ["--transport", "stdio"]
}
}
}
```
**VS Code Copilot** (`.vscode/mcp.json`):
```json
{
"servers": {
"office-oxide-mcp": {
"command": "office-oxide-mcp",
"args": ["--transport", "stdio"]
}
}
}
```
### Build from Source
```bash
git clone https://github.com/Aimino-Tech/office-oxide-mcp.git
cd office-oxide-mcp
cargo build --release
# Binary at target/release/office-oxide-mcp
```
## Core MCP Tools
### Document Information
**`list_formats`** - List all supported formats:
```json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "list_formats"
},
"id": 1
}
```
**`get_document_info`** - Get file metadata:
```json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "get_document_info",
"arguments": {
"file_path": "/path/to/document.xlsx"
}
},
"id": 2
}
```
### Reading Documents
**`office_read`** - Read document content:
```json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "office_read",
"arguments": {
"file_path": "/path/to/data.xlsx",
"output_format": "json"
}
},
"id": 3
}
```
**Output formats**: `json`, `markdown`, `text`, `chunks` (for RAG embeddings)
## Excel Operations
### Create Spreadsheet
**`office_create_xlsx`** - Create new Excel file:
```json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "office_create_xlsx",
"arguments": {
"file_path": "/path/to/output.xlsx",
"sheet_name": "Q1 Revenue"
}
},
"id": 4
}
```
### Write Data
**`office_write_cell`** - Write single cell:
```json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "office_write_cell",
"arguments": {
"file_path": "/path/to/output.xlsx",
"sheet_name": "Q1 Revenue",
"cell": "A1",
"value": "Revenue",
"format": "bold"
}
},
"id": 5
}
```
**`office_write_range`** - Write range of cells:
```json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "office_write_range",
"arguments": {
"file_path": "/path/to/output.xlsx",
"sheet_name": "Q1 Revenue",
"start_cell": "A2",
"data": [
["Jan", 120000, 95000],
["Feb", 135000, 102000],
["Mar", 148000, 110000]
]
}
},
"id": 6
}
```
### Formatting
**`office_format_range`** - Apply formatting:
```json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "office_format_range",
"arguments": {
"file_path": "/path/to/output.xlsx",
"sheet_name": "Q1 Revenue",
"range": "B2:C4",
"format": {
"number_format": "$#,##0.00",
"bold": false,
"font_size": 11
}
}
},
"id": 7
}
```
### Charts
**`office_create_chart`** - Create chart:
```json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "office_create_chart",
"arguments": {
"file_path": "/path/to/output.xlsx",
"sheet_name": "Q1 Revenue",
"chart_type": "column",
"data_range": "A1:C4",
"title": "Quarterly Revenue vs Cost",
"position": "E2"
}
},
"id": 8
}
```
**Chart types**: `column`, `bar`, `line`, `pie`, `scatter`, `area`
### Sheet Management
**`office_add_sheet`** - Add worksheet:
```json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "office_add_sheet",
"arguments": {
"file_path": "/path/to/output.xlsx",
"sheet_name": "Q2 Revenue"
}
},
"id": 9
}
```
**`office_merge_cells`** - Merge cells:
```json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "office_merge_cells",
"arguments": {
"file_path": "/path/to/output.xlsx",
"sheet_name": "Q1 Revenue",
"range": "A1:D1"
}
},
"id": 10
}
```
## Word Operations
### Create Document
**`office_create_docx`** - Create Word document:
```json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "office_create_docx",
"arguments": {
"file_path": "/path/to/report.docx",
"title": "Annual Business Report 2024"
}
},
"id": 11
}
```
### Write from Markdown
**`office_write_docx_from_md`** - Convert Markdown to DOCX:
```json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "office_write_docx_from_md",
"arguments": {
"file_path": "/path/to/report.docx",
"markdown": "# Executive Summary\n\nQ1 2024 revenue increased **23%** to $1.2M.\n\n## Key Metrics\n\n- Revenue: $1,200,000\n- Growth: 23%\n- Customers: 450"
}
},
"id": 12
}
```
### Add Elements
**`office_add_table`** - Insert table:
```json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "office_add_table",
"arguments": {
"file_path": "/path/to/report.docx",
"rows": [
["Metric", "Q1", "Q2", "Q3"],
["Revenue", "$1.2M", "$1.4M", "$1.6M"],
["Profit", "$320K", "$410K", "$520K"]
],
"style": "grid"
}
},
"id": 13
}
```
**`office_add_image`** - Insert image:
```json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "office_add_image",
"arguments": {
"file_path": "/path/to/report.docx",
"image_path": "/path/to/chart.png",
"width": 400,
"height": 300
}
},
"id": 14
}
```
## PowerPoint Operations
### Create Presentation
**`office_create_pptx`** - Create PowerPoint:
```json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "office_create_pptx",
"arguments": {
"file_path": "/path/to/deck.pptx",
Auf GitHub ansehen