Back to MCP Servers

Spreadsheet

High-performance, token-efficient spreadsheet analysis/editing (xlsx/xlsm) with region detection, structured reads, formula/style inspection, forking mechanics, and recalculation. Cross-platform.

developer-toolsperformance
By PSU3D0
486Updated 1 week agoRustApache-2.0

Installation

npx -y spreadsheet-mcp

Configuration

{
  "mcpServers": {
    "spreadsheet-mcp": {
      "command": "npx",
      "args": ["-y", "spreadsheet-mcp"]
    }
  }
}

How to use

  1. Run the installation command above (if needed)
  2. Open your Claude Code settings file (~/.claude/settings.json)
  3. Add the configuration to the mcpServers section
  4. Restart Claude Code to apply changes

spreadsheet-kit

CI Crates.io npm License

spreadsheet-kit

spreadsheet-kit is the tool interaction service for agent-based spreadsheet usage.

It gives agents a safe, inspectable, token-efficient way to read, analyze, mutate, verify, and operationalize Excel workbooks without falling back to brittle UI automation.

If you want an agent to work with spreadsheets like a real system instead of a screenshot puppet, this is the stack.


What this project is

spreadsheet-kit ships a unified spreadsheet interaction layer across four surfaces:

SurfaceBinary / PackageModeBest for
CLIasp / agent-spreadsheetStatelessOne-shot reads, safe edits, pipelines, CI, agent tool calls
MCP serverspreadsheet-mcpStatefulMulti-turn agent sessions, workbook caching, fork/recalc workflows
JS SDKspreadsheet-kit-sdkBackend-agnosticApp integrations that can target MCP today and WASM/session backends over time
WASM runtimespreadsheet-kit-wasmIn-processExperimental byte/session embedding for local runtimes

Supported workbook modes:

  • .xlsx / .xlsm — read + write
  • .xls / .xlsb — discovery/read-oriented workflows only

Why agents use spreadsheet-kit

Built for tool use, not just humans

  • deterministic JSON contracts
  • schema and example discovery from the CLI itself
  • explicit pagination and compact output modes
  • machine-readable warnings and error envelopes

Safe mutation, not blind mutation

  • dry-run first workflows
  • stateless output modes and overwrite safety
  • event-sourced session editing
  • verification surfaces for proving downstream outcomes
  • structural impact analysis before risky workbook changes

Spreadsheet-aware, not generic file editing

  • region detection
  • table and footer-aware append helpers
  • template row / row band cloning
  • formula-specific replace and diagnostics
  • named range CRUD
  • recalculation + diff + proof flows

Good agent ergonomics

  • nested command groups with legacy alias compatibility
  • token-efficient reads
  • exact-cell inspection and layout inspection
  • workflow helpers for the repetitive parts agents usually get wrong

What is new / what makes this stack different

The current surface is much stronger than a plain “read some cells” tool. Major capabilities now include:

  • asp as the primary CLI with agent-spreadsheet preserved as a compatibility alias
  • grouped verification via asp verify proof and asp verify diff
  • preview-first workflow helpers for:
    • write append
    • write clone-template-row
    • write clone-row-band
  • formula-safe batch workflows with parse-policy diagnostics
  • cell/layout/export/import inspection surfaces
  • named range management (write name define|update|delete)
  • formula-only replacement (write formulas replace)
  • event-sourced session editing with log, branch, undo/redo, fork, apply, and materialize
  • SheetPort manifest lifecycle + execution for contract-driven spreadsheet automation

Install

npm (recommended for CLI)

npm i -g agent-spreadsheet
asp --help

Installs both:

  • asp — primary command
  • agent-spreadsheet — compatibility alias

Downloads a prebuilt native binary for your platform. No Rust toolchain required.

Cargo

# CLI
cargo install spreadsheet-kit --features recalc --bin asp --bin agent-spreadsheet

# MCP server
cargo install spreadsheet-mcp

Formualizer (the native Rust recalc engine) is included by default.

Docker

# Read-only / slim
docker pull ghcr.io/psu3d0/spreadsheet-mcp:latest

# Write + recalc + screenshots
docker pull ghcr.io/psu3d0/spreadsheet-mcp:full

JavaScript SDK

npm i spreadsheet-kit-sdk

Prebuilt binaries

Download from GitHub Releases.

Published native assets include:

  • Linux x86_64
  • macOS x86_64
  • macOS arm64
  • Windows x86_64

Start here: the core workflows

1) Orient the workbook before reading cells

# What sheets are here?
asp read sheets data.xlsx

# What regions/tables/parameter blocks does this sheet contain?
asp read overview data.xlsx "Model"

# What named items are available?
asp read names data.xlsx

# Read a structured region as a table
asp read table data.xlsx --sheet "Model"

2) Inspect exactly what an agent needs

# Raw values for exact ranges
asp read values data.xlsx Model A1:C20

# Detail-view for targeted cells (value / formula / cached / style triage)
asp read cells data.xlsx Model B2 D10:F12

# Layout-aware rendering for a bounded range
asp read layout data.xlsx Model --range A1:H30 --render both

# Export a bounded range to csv or grid json
asp read export data.xlsx Model A1:H30 --format csv --output model.csv

3) Do a safe stateless edit → recalc → proof → diff loop

asp workbook copy data.xlsx /tmp/draft.xlsx
asp write cells /tmp/draft.xlsx Inputs "B2=500" "C2==B2*1.1"
asp workbook recalculate /tmp/draft.xlsx
asp verify proof data.xlsx /tmp/draft.xlsx --targets Summary!B2,Summary!B3 --named-ranges
asp verify diff data.xlsx /tmp/draft.xlsx --details --limit 50

A representative label-mode lookup:

asp analyze find-value data.xlsx "Net Income" --mode label --label-direction below

4) Preview structural risk before mutating the workbook

asp analyze ref-impact data.xlsx --ops @structure_ops.json --show-formula-delta

This is intentionally read-only. It surfaces shifted spans, absolute-reference warnings, token counts, and optional before/after formula samples.

5) Use workflow helpers instead of reinventing row logic

# Stateless batch writes
asp write batch transform data.xlsx --ops @ops.json --dry-run
asp write batch style data.xlsx --ops @style_ops.json --dry-run

# Append rows into a detected region or table, respecting footer rows when present
asp write append data.xlsx --sheet Revenue --table-name RevenueTable --from-csv rows.csv --header --dry-run

# Clone one template row with preview-first planning
asp write clone-template-row data.xlsx --sheet Inputs --source-row 8 --after 8 --count 3 --dry-run

# Clone a contiguous row band repeatedly
asp write clone-row-band data.xlsx --sheet Forecast --source-rows 12:16 --after 16 --repeat 4 --dry-run

6) Use a stateful session when the edit story gets complex

asp session start --base data.xlsx --workspace .
asp session op --session <id> --ops @edit.json --workspace .
asp session apply --session <id> <staged_id> --workspace .
asp session materialize --session <id> --output result.xlsx --workspace .

And when you need proper history and branching:

asp session log --session <id> --workspace .
asp session fork --session <id> scenario-a --workspace .
asp session undo --session <id> --workspace .
asp session redo --session <id> --workspace .
asp session checkout --session <id> <op_id> --workspace .

7) Turn workbook interfaces into contracts with SheetPort

# Discover candidate ports from workbook structure
asp sheetport manifest candidates model.xlsx

# Validate or normalize a manifest
asp sheetport manifest validate manifest.yaml
asp sheetport manifest normalize manifest.yaml

# Bind-check a workbook against a manifest
asp sheetport bind-check model.xlsx manifest.yaml

# Execute the manifest with JSON inputs
asp sheetport run model.xlsx manifest.yaml --inputs @inputs.json

CLI overview

The primary CLI is asp.

agent-spreadsheet remains available as a compatibility alias, so both of these are valid:

asp read sheets data.xlsx
agent-spreadsheet read sheets data.xlsx

Preferred command groups

  • asp read ...
  • asp analyze ...
  • asp write ...
  • asp workbook ...
  • asp verify ...
  • asp session ...
  • asp sheetport ...

Legacy aliases

Legacy flat commands are still normalized to the new nested surface where practical. That makes migration easier for older prompts, docs, and automation.

Discoverability built into the CLI

When an agent is unsure of payload shape, it can ask the tool directly:

asp schema write batch transform
asp example write batch transform
asp schema session op transform.write_matrix
asp example session op transform.write_matrix

This is a core design principle: the surface should explain itself to the agent.


Command families

read — extraction and inspection

CommandPurpose
asp read sheets <file>List sheets with summary metadata
asp read overview <file> <sheet>Detect regions, headers, and orientation
asp read values <file> <sheet> <range> [range...]Pull raw values for exact A1 ranges
asp read export <file> <sheet> <range>Export a bounded range to csv or grid json
asp read cells <file> <sheet> <target> [target...]Inspect exact cells/ranges with value/formula/cached/style snapshots
asp read page <file> <sheet> ...Deterministic sheet paging with next_start_row
asp read table <file> ...Structured table/region read with deterministic next_offset
asp read names <file>Named ranges, named formulas, and table items
asp read workbook <file>Workbook-level metadata
asp read layout <file> <sheet>Layout-aware rendering with widths, merges, borders, and optional ascii output

Why these matter for agents

Agents rarely need “the whole spreadsheet.” They need:

  • the right region
  • the right page
  • the right cells
  • just enough layout to understand intent

That is why the read surface combines region detection, structured reads, detail inspection, and explicit continuation.


analyze — search, diagnostics, and impact understanding

CommandPurpose
asp analyze find-value <file> <query>Search by value or by label semantics
asp analyze find-formula <file> <query>Text search within formulas
asp analyze formula-map <file> <sheet>Summarize formulas by complexity/frequency
asp analyze formula-trace <file> <sheet> <cell> <precedents|dependents>Dependency tracing with continuation
asp analyze scan-volatiles <file>Find volatile formulas
asp analyze sheet-statistics <file> <sheet>Density and type statistics
asp analyze table-profile <file>Header/type/cardinality profiling
asp analyze ref-impact <file> --ops @structure_ops.jsonPreflight structural edit impact without mutation

Why this matters

Headless spreadsheet automation wins when it can explain consequences, not just execute mutations. ref-impact, formula-trace, and grouped diagnostics are all part of that story.


write — safe mutations and workflow helpers

CommandPurpose
asp write cells <file> <sheet> ...Direct shorthand cell edits
asp write import <file> <sheet> ...Import grid json or csv into a workbook range
asp write append ...Footer-aware row append into a region or table
asp write clone-template-row ...Clone one template row with preview-first planning
asp write clone-row-band ...Clone a multi-row template band repeatedly
asp write formulas replace ...Formula-only find/replace on a sheet/range
`asp write name defineupdate

View source on GitHub