office-oxide-mcp-server
Rust-native MCP server for Office document processing (Excel, Word, PowerPoint, PDF) with sub-millisecond performance
How do I install this agent skill?
npx skills add https://github.com/reason-machines/mcp-skills --skill office-oxide-mcp-serverIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The skill facilitates Office document processing by installing a third-party MCP server. The primary risks involve the installation of external software and the potential for indirect prompt injection when processing untrusted document content.
- Socketpass
No alerts
- Snykpass
Risk: LOW · No issues
What does this agent skill do?
office-oxide-mcp-server
Skill by ara.so — MCP Skills collection.
Overview
office-oxide-mcp is a Rust-native MCP (Model Context Protocol) server that provides blazing-fast Office document processing capabilities. It supports Excel (XLSX/XLS), Word (DOCX), PowerPoint (PPTX), and PDF operations with sub-millisecond performance — up to 46× faster than Python alternatives.
Key capabilities:
- Read/write Excel spreadsheets with formulas, charts, pivot tables
- Create/modify Word documents from Markdown or programmatically
- Generate PowerPoint presentations with layouts and charts
- Fill PDF forms (AcroForms, XFA) or overlay text at coordinates
- Extract structured data (JSON, Markdown, chunks) from all formats
- Skills system for reusable document generation patterns
- Coherence engine for propagating edits across linked data
Installation
From Binary
cargo install office-oxide-mcp
Or download from GitHub Releases.
From Source
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
Configuration
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"office": {
"command": "office-oxide-mcp",
"args": ["--transport", "stdio"]
}
}
}
Cursor
Add to .cursor/mcp_config.json:
{
"mcpServers": {
"office-oxide-mcp": {
"command": "office-oxide-mcp",
"args": ["--transport", "stdio"]
}
}
}
VS Code (Copilot)
Add to .vscode/mcp_servers.json:
{
"servers": {
"office-oxide-mcp": {
"command": "office-oxide-mcp",
"args": ["--transport", "stdio"]
}
}
}
Core Tools
Document Information
get_document_info — Get metadata about any Office document
{
"file_path": "data/report.xlsx"
}
list_formats — List all supported formats and their capabilities
{}
Reading Documents
office_read — Read document content in various formats
{
"file_path": "data/financial.xlsx",
"output_format": "json"
}
Output formats:
json— Structured data with sheets/cellsmarkdown— Human-readable markdownchunks— Semantic chunks for RAG/embeddingstext— Plain text extraction
Example for Excel JSON output:
{
"sheets": [
{
"name": "Summary",
"cells": [
{"row": 0, "col": 0, "value": "Revenue", "formula": null},
{"row": 0, "col": 1, "value": 125000, "formula": "=SUM(B2:B10)"}
]
}
]
}
Excel Operations
office_create_xlsx — Create new spreadsheet
{
"output_path": "output/report.xlsx"
}
office_write_cell — Write single cell
{
"file_path": "output/report.xlsx",
"sheet": "Sheet1",
"row": 0,
"col": 0,
"value": "Revenue",
"value_type": "string"
}
office_write_range — Write multiple cells
{
"file_path": "output/report.xlsx",
"sheet": "Sheet1",
"start_row": 1,
"start_col": 0,
"data": [
["Q1", 25000],
["Q2", 30000],
["Q3", 35000],
["Q4", 35000]
]
}
office_format_range — Apply formatting
{
"file_path": "output/report.xlsx",
"sheet": "Sheet1",
"start_row": 0,
"start_col": 0,
"end_row": 0,
"end_col": 1,
"format": {
"bold": true,
"font_size": 12,
"bg_color": "#E0E0E0"
}
}
office_create_chart — Add chart
{
"file_path": "output/report.xlsx",
"sheet": "Sheet1",
"chart_type": "column",
"data_range": "A2:B5",
"title": "Quarterly Revenue",
"x_offset": 300,
"y_offset": 50
}
Chart types: column, bar, line, pie, area, scatter
office_add_sheet — Add new worksheet
{
"file_path": "output/report.xlsx",
"sheet_name": "Analysis"
}
office_merge_cells — Merge cell range
{
"file_path": "output/report.xlsx",
"sheet": "Sheet1",
"start_row": 0,
"start_col": 0,
"end_row": 0,
"end_col": 3
}
Word Document Operations
office_create_docx — Create new Word document
{
"output_path": "output/contract.docx"
}
office_write_docx_from_md — Generate from Markdown
{
"file_path": "output/report.docx",
"markdown": "# Annual Report\n\n## Executive Summary\n\nRevenue increased by **25%** this year.\n\n### Key Metrics\n\n- Total Revenue: $125,000\n- Net Profit: $35,000\n- Growth Rate: 25%"
}
office_add_table — Insert table
{
"file_path": "output/contract.docx",
"rows": 4,
"cols": 3,
"data": [
["Item", "Quantity", "Price"],
["Product A", "10", "$100"],
["Product B", "5", "$200"],
["Total", "15", "$300"]
]
}
office_replace_text — Find and replace
{
"file_path": "output/contract.docx",
"search": "{{CLIENT_NAME}}",
"replace": "Acme Corporation"
}
office_add_header_footer — Add header/footer
{
"file_path": "output/report.docx",
"header_text": "Confidential Report",
"footer_text": "Page {PAGE} of {NUMPAGES}"
}
PowerPoint Operations
office_create_pptx — Create presentation
{
"output_path": "output/pitch.pptx"
}
office_add_slide — Add slide
{
"file_path": "output/pitch.pptx",
"layout": "title_and_content"
}
Layouts: title, title_and_content, blank, two_content, comparison
office_add_text_box — Add text to slide
{
"file_path": "output/pitch.pptx",
"slide_index": 0,
"text": "Q4 Strategy Review",
"x": 50,
"y": 50,
"width": 600,
"height": 100,
"font_size": 32,
"bold": true
}
office_add_chart (PPT) — Add chart to slide
{
"file_path": "output/pitch.pptx",
"slide_index": 1,
"chart_type": "column",
"data": {
"categories": ["Q1", "Q2", "Q3", "Q4"],
"series": [
{"name": "Revenue", "values": [25, 30, 35, 35]},
{"name": "Profit", "values": [8, 10, 12, 15]}
]
},
"x": 100,
"y": 150,
"width": 500,
"height": 300
}
PDF Operations
office_list_pdf_fields — List form fields in PDF
{
"file_path": "forms/application.pdf"
}
Returns:
{
"fields": [
{"name": "full_name", "type": "text", "value": "", "required": true},
{"name": "date_of_birth", "type": "text", "value": "", "required": true},
{"name": "address", "type": "text", "value": "", "required": false}
]
}
office_fill_pdf_form — Fill AcroForm/XFA fields
{
"file_path": "forms/application.pdf",
"output_path": "output/application_filled.pdf",
"fields": {
"full_name": "John Doe",
"date_of_birth": "1990-05-15",
"address": "123 Main St, City, State 12345",
"email": "john@example.com"
}
}
office_analyze_pdf_layout — Get layout for coordinate overlay
{
"file_path": "forms/flat_form.pdf"
}
Returns bounding boxes for text placement on flat PDFs.
office_overlay_pdf_text — Overlay text at coordinates
{
"file_path": "forms/flat_form.pdf",
"output_path": "output/form_filled.pdf",
"fields": [
{"text": "John Doe", "page": 0, "x": 150, "y": 720, "font_size": 12},
{"text": "1990-05-15", "page": 0, "x": 150, "y": 680, "font_size": 12},
{"text": "123 Main St", "page": 0, "x": 150, "y": 640, "font_size": 12}
]
}
office_export_pdf — Export Office doc to PDF
{
"file_path": "output/report.xlsx",
"output_path": "output/report.pdf"
}
Skills System
skill_list — List available skills
{}
Built-in skills:
excel.basic— Create formatted spreadsheetsword.invoice— Generate invoicesword.report— Generate business reportsppt.deck— Create presentation decks
skill_run — Execute a skill
{
"skill_name": "excel.basic",
"parameters": {
"title": "Q4 Revenue Report",
"data": [
["Month", "Revenue", "Expenses", "Profit"],
["October", 35000, 20000, 15000],
["November", 38000, 22000, 16000],
["December", 42000, 24000, 18000]
],
"output_path": "output/q4_report.xlsx"
}
}
skill_validate — Validate skill parameters
{
"skill_name": "word.invoice",
"parameters": {
"invoice_number": "INV-2024-001",
"client_name": "Acme Corp"
}
}
Common Patterns
Pattern 1: Extract Excel Data for Analysis
// Step 1: Read spreadsheet
{
"tool": "office_read",
"params": {
"file_path": "data/sales_2024.xlsx",
"output_format": "json"
}
}
// Step 2: Process in code, then write summary
{
"tool": "office_create_xlsx",
"params": {
"output_path": "output/sales_summary.xlsx"
}
}
{
"tool": "office_write_range",
"params": {
"file_path": "output/sales_summary.xlsx",
"sheet": "Sheet1",
"start_row": 0,
"start_col": 0,
"data": [
["Metric", "Value"],
["Total Sales", 125000],
["Average Order", 2500],
["Growth Rate", "15%"]
]
}
}
Pattern 2: Generate Invoice from Template
// Use skill for structured invoice generation
{
"tool": "skill_run",
"params": {
"skill_name": "word.invoice",
"parameters": {
"invoice_number": "INV-2024-042",
"date": "2024-06-15",
"client_name": "Tech Solutions Inc",
"client_address": "456 Enterprise Blvd, Business City, BC 67890",
"items": [
{"description": "Consulting Services", "quantity": 40, "rate": 150, "amount": 6000},
{"description": "Software License", "quantity": 5, "rate": 200, "amount": 1000}
],
"subtotal": 7000,
"tax_rate": 0.10,
"tax_amount": 700,
"total": 7700,
"output_path": "output/invoice_042.docx"
}
}
}
Pattern 3: Fill Government PDF Form
// Step 1: Analyze form structure
{
"tool": "office_list_pdf_fields",
"params": {
"file_path": "forms/tax_return.pdf"
}
}
// Step 2: Fill form fields
{
"tool": "office_fill_pdf_form",
"params": {
"file_path": "forms/tax_return.pdf",
"output_path": "output/tax_return_filled.pdf",
"fields": {
"taxpayer_name": "Jane Smith",
"ssn": "123-45-6789",
"filing_status": "Single",
"total_income": "85000",
"deductions": "12550",
"taxable_income": "72450"
}
}
}
Pattern 4: Create Presentation from Data
// Step 1: Create deck
{
"tool": "office_create_pptx",
"params": {
"output_path": "output/quarterly_review.pptx"
}
}
// Step 2: Title slide
{
"tool": "office_add_slide",
"params": {
"file_path": "output/quarterly_review.pptx",
"layout": "title"
}
}
{
"tool": "office_add_text_box",
"params": {
"file_path": "output/quarterly_review.pptx",
"slide_index": 0,
"text": "Q4 2024 Business Review",
"x": 50,
"y": 200,
"width": 700,
"height": 100,
"font_size": 44,
"bold": true
}
}
// Step 3: Content slide with chart
{
"tool": "office_add_slide",
"params": {
"file_path": "output/quarterly_review.pptx",
"layout": "title_and_content"
}
}
{
"tool": "office_add_text_box",
"params": {
"file_path": "output/quarterly_review.pptx",
"slide_index": 1,
"text": "Revenue Growth",
"x": 50,
"y": 50,
"width": 700,
"height": 50,
"font_size": 32,
"bold": true
}
}
{
"tool": "office_add_chart",
"params": {
"file_path": "output/quarterly_review.pptx",
"slide_index": 1,
"chart_type": "column",
"data": {
"categories": ["Q1", "Q2", "Q3", "Q4"],
"series": [
{"name": "2024", "values": [85, 92, 98, 105]}
]
},
"x": 100,
"y": 150,
"width": 600,
"height": 350
}
}
Pattern 5: Batch Process Multiple Documents
// Read multiple spreadsheets and consolidate
{
"tool": "office_read",
"params": {
"file_path": "data/sales_north.xlsx",
"output_format": "json"
}
}
{
"tool": "office_read",
"params": {
"file_path": "data/sales_south.xlsx",
"output_format": "json"
}
}
// Create consolidated report
{
"tool": "office_create_xlsx",
"params": {
"output_path": "output/sales_consolidated.xlsx"
}
}
{
"tool": "office_add_sheet",
"params": {
"file_path": "output/sales_consolidated.xlsx",
"sheet_name": "North Region"
}
}
{
"tool": "office_add_sheet",
"params": {
"file_path": "output/sales_consolidated.xlsx",
"sheet_name": "South Region"
}
}
// Write data to respective sheets
// (continue with write_range calls for each region)
Troubleshooting
Server Won't Start
Issue: office-oxide-mcp command not found
Solution:
# Verify installation
cargo install --list | grep office-oxide-mcp
# Add cargo bin to PATH
export PATH="$HOME/.cargo/bin:$PATH"
# Or use full path
~/.cargo/bin/office-oxide-mcp --transport stdio
File Permission Errors
Issue: Cannot read/write files
Solution:
- Ensure file paths are absolute or relative to MCP server working directory
- Check file permissions:
chmod 644 input.xlsx - Verify output directory exists:
mkdir -p output/
PDF Form Fields Not Filling
Issue: office_fill_pdf_form doesn't populate fields
Solution:
// First, list fields to get exact names
{
"tool": "office_list_pdf_fields",
"params": {
"file_path": "form.pdf"
}
}
// Use exact field names from output (case-sensitive)
{
"tool": "office_fill_pdf_form",
"params": {
"file_path": "form.pdf",
"output_path": "output/form_filled.pdf",
"fields": {
"TextField1": "Value", // Use exact name from list_pdf_fields
"CheckBox2": "Yes"
}
}
}
Chart Not Appearing in Excel
Issue: Chart created but not visible
Solution:
// Ensure data range exists before creating chart
{
"tool": "office_write_range",
"params": {
"file_path": "output.xlsx",
"sheet": "Sheet1",
"start_row": 0,
"start_col": 0,
"data": [
["Month", "Sales"],
["Jan", 100],
["Feb", 150],
["Mar", 200]
]
}
}
// Then create chart with correct range (A1:B4 for above data)
{
"tool": "office_create_chart",
"params": {
"file_path": "output.xlsx",
"sheet": "Sheet1",
"chart_type": "column",
"data_range": "A1:B4", // Include headers
"title": "Monthly Sales",
"x_offset": 300,
"y_offset": 50
}
}
Performance Issues with Large Files
Issue: Slow processing on very large spreadsheets
Solution:
- Use
chunksoutput format for large documents to process incrementally - Read specific sheets only if possible (check schema first)
- For 10M+ cells, consider splitting into multiple files
- Increase system memory if available
Skill Validation Failures
Issue: skill_run reports missing parameters
Solution:
// Use skill_validate first to check requirements
{
"tool": "skill_validate",
"params": {
"skill_name": "excel.basic",
"parameters": {
"title": "My Report"
// Intentionally incomplete
}
}
}
// Response shows required fields:
// {"valid": false, "missing": ["data", "output_path"]}
// Then provide all required parameters
{
"tool": "skill_run",
"params": {
"skill_name": "excel.basic",
"parameters": {
"title": "My Report",
"data": [["A", "B"], [1, 2]],
"output_path": "output/report.xlsx"
}
}
}
Performance Tips
- Batch operations: Use
office_write_rangeinstead of multipleoffice_write_cellcalls - Reuse files: Open once, perform multiple operations, save once
- Format after data: Write all data first, then apply formatting
- Use skills: Pre-built skills are optimized for common patterns
- Read efficiently: Use
jsonformat for structured access,textfor content only
Advanced: Coherence Engine
The coherence engine tracks semantic relationships between data in documents.
// Check for inconsistencies
{
"tool": "office_check_consistency",
"params": {
"file_path": "output/financial.xlsx"
}
}
// Propagate edits to linked cells
{
"tool": "office_propagate_edit",
"params": {
"file_path": "output/financial.xlsx",
"sheet": "Summary",
"row": 5,
"col": 2,
"new_value": 150000
}
}
Related Documentation
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/reason-machines/mcp-skills/office-oxide-mcp-server">View office-oxide-mcp-server on skillZs</a>