This is the one category where all three options are local. None of them uploads your workbook. agent-spreadsheet is a Rust engine aimed at formula-heavy models, with recalculation and a write, recalc, proof, diff loop. mcp-server-spreadsheet is a Python server with cell level operations and a DuckDB SQL engine over the same file. Ours is a small TypeScript server aimed at the ordinary case: read a file, answer a question about it, write a column back without breaking anything.
| Fact | Ours | agent-spreadsheet | mcp-server-spreadsheet |
|---|---|---|---|
| Tools | 8 plus license_status and license_activate | 27 baseline, up to 31 with capabilities | 25 |
| Language and runtime | TypeScript on Node 18 or newer, no native dependencies | Rust binary (npm, cargo, Homebrew, Docker) | Python 3.10 or newer, via uvx |
| Formats | xlsx, csv | xlsx, xlsm, xls, xlsb | xlsx, csv, ods |
| Formula recalculation | No | Yes, native Formualizer or LibreOffice backend | No, values only |
| SQL over sheets | No, a query tool with filters, group by and sums | No | Yes, DuckDB SELECT plus INSERT, UPDATE and DELETE |
| Licence | MIT | Apache-2.0 | MIT |
| Latest release read | 0.2.3 on the MCP registry | v0.15.0, 2026-09-02 | v0.3.3, 2026-08-11 |
| Data location | Your files, local only | Your files, local only | Your files, local only |
Pick it for real spreadsheet models: financial workbooks with formula chains where an edit has to be recalculated and proven. It exposes 27 operations by default and up to 31 with capabilities enabled, including sheet screenshots and VBA introspection, and it reads xlsm, xls and xlsb, which we do not. It also runs as an HTTP service with a canonical operation route. It is a Rust binary; the npm install ships a prebuilt one so no toolchain is needed, and recalculation is off unless you turn it on. At 54 stars it is the most used of the three.
Pick it if you want SQL. Its DuckDB engine runs SELECT with JOINs across sheets, GROUP BY, aggregates and subqueries, and its sql_execute writes INSERT, UPDATE and DELETE back into the file. It also handles OpenDocument .ods, which neither of the other two do, and it has cell and range level operations plus sheet management that our eight tools do not cover. It needs a Python 3.10 runtime.
Pick ours when the file is a data export rather than a model, and you want the smallest thing that
answers the question. Eight tools: info, read, query, stats, add column, write, find, convert. No
Python, no Rust, no native dependencies, so npx works on a machine you did not set up.
sheet_query filters, groups and sums in one call rather than making the model read rows
and add them up. Writes are checked before they land: a write that would only partly apply is refused
rather than half done. Free covers reads and queries up to 5,000 rows and writes up to 500.
The spreadsheet package carries 39 automated tests, all passing, including csv edge cases, expression evaluation, the query engine and a rounding case. The validate.mjs probe suite is at 121 of 121. In user value round 5, two spreadsheet scenarios were driven through the real Claude CLI and scored 4 of 6: a 250 row supplier CSV grouped by supplier matched an independent Python sum on all 10 groups to the cent, and an xlsx conversion computed a VAT column correctly at 1,250.00 times 1.23 equals 1,537.50, but 245 of 250 VAT cells carried more than two decimals and 5 of 250 amount cells were written as strings rather than numbers. Both are recorded as open defects rather than hidden.
Ours, Claude Code:
claude mcp add spreadsheet -- npx -y @theluckystrike/mcp-spreadsheet
agent-spreadsheet:
npm i -g agent-spreadsheet
claude mcp add spreadsheet-agent -- agent-spreadsheet-mcp --transport stdio
mcp-server-spreadsheet:
claude mcp add spreadsheet-py -- uvx mcp-server-spreadsheet
Per client config paths are on the setup pages, the product page is MCP Spreadsheet, and the guides cover querying a large CSV from chat.
agent-spreadsheet. It is the only one of the three that recalculates. Ours reads cached values and writes values; a formula you write with sheet_write is stored as text, not evaluated.
No. All three read and write files on your own disk over stdio. That is the one fact all three share, and it is the main reason to use any of them instead of a web converter.
Free covers reads, queries and stats up to 5,000 rows and writes up to 500 rows; Pro removes both limits. Very large xlsx files are held in memory, so for gigabyte workbooks the Rust option will be more comfortable.
It does not land. Writes are validated first and applied atomically through a temp file and rename, so the original file is either updated completely or left untouched.
Different aim. Ours is sized for reading an export and answering a question about it, so one query tool replaces a dozen cell level calls. If you need sheet management, cell ranges or SQL, the other two genuinely cover more surface.