Everything plus the kitchen sink for Excel: never hands your AI a number it cannot back up.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Landing page Β· llms.txt (machine-readable capability manifest for agents and LLM crawlers)
Everything plus the kitchen sink for Microsoft Excel: the .xlsx MCP server that never hands your AI a number it cannot back up. 129 workbook operations across 67 tools, a lite core that opens at about 13,800 tokens, and a safety core that backs up before every change and verifies every save.
Here is the dirty secret of every tool that reads Excel files: a spreadsheet remembers its answers, not its thinking. When something changes upstream, the old answers just sit there, looking exactly like real numbers. Most AI tools will read one anyway and confidently report it, and you will make a decision based on it. This server refuses to bluff. Every number it hands your AI comes with the truth attached: freshly calculated, remembered from the last save, or missing, with the affected cells named. And when it really matters, it asks Excel itself to recalculate and prove it.
Insert one column in a real workbook and you find out how much of a spreadsheet lives to the right of where you clicked. Formulas, totals, charts, that table on sheet three that quietly feeds the summary: all of them have opinions about where their cells just went.
Most tools do the cheap version: move the cells, save the file, hope. The damage never shows up when the edit runs. It shows up three days later, in a meeting, in the one total that quietly stopped including its last row.
This server moves everything that should move, and checks the result against what Excel itself would have done. When an edit cannot be done safely, it says no out loud instead of guessing quietly. A refusal costs you a minute. A quiet guess costs you the deal.
manage_worksheet
alone performs seven distinct operations, manage_table nine, validate
runs nine correctness batteries. The operations figure comes from
scripts/count_operations.py, which reads the dispatch values each tool
actually validates, out of committed source, and never from hand-math. Its
docstring carries the counting definition and what is deliberately excluded.
A committed snapshot (scripts/operations_snapshot.json) plus a guard test
make a drifting figure a test failure rather than a marketing decision.enable_tools call. Load every pack and
the full surface measures about 22,900 tokens. All figures come from
scripts/measure_surface.py; see Context cost.The stock is arranged in capability packs, the way a good shop groups what
belongs together. A session opens on the lite core and switches on the pack a
job needs with one call. Numbers below come straight from
scripts/measure_surface.py, never hand-counted.
| Pack | Tools | Approx tokens | What it carries |
|---|---|---|---|
| lite (startup) | 40 | ~13.8k | The everyday bench: an anchored grid view of the workbook, labeled reads of cells and ranges, server-side query and aggregation, formula write and audit, structural row and column edits that carry their references, sort and filter with Excel's own ranking, tables, formatting, import and export, backups, diagnostics, and the enable_tools switchboard |
| design | 9 | ~4.0k | Named cell styles, a format painter, a style-bloat audit, conditional formatting, data validation, images, charts, the full table lifecycle (columns, totals, resize, banding), and named ranges including LAMBDA definitions and a cleanup pass |
| io | 9 | ~2.6k | Page layout and print setup, headers and footers, advisory protection, legacy comments, multi-sheet export, and the read-side inspectors: external links, VBA, existing pivot tables, and data connections |
| com | 11 | ~2.6k | Drives a private hidden Excel instance, never your open session: real recalculation, real pivot tables, goal seek, PDF export, sheet render to image, format conversion, real encryption, sparklines, true autofit, an opens-clean check, and an honest status report |
| Full surface | 69 | ~22.9k | Everything (67 workbook tools plus enable_tools / disable_tools) |
A session begins with the lite core. When a task needs more, the agent turns on the pack by name:
The lite core carries no degraded stand-ins, so the lazy path is a dead end on
purpose: a refusal for out-of-scope work names the exact pack and the exact
call that unlocks it. Power users who want everything loaded from the start
can pin it with KS4XL_MODE=full in the server environment, or a
comma-separated pack list. Administrators can lock the selection with
KS4XL_PACK_POLICY=locked.
Feature grids flatter everybody. Here it is instead as the requests an agent actually gets:
| "Hey, could youβ¦" | π KitchenSink4XL | haris-musa (openpyxl), 4,155β β | The rest of the aisle* |
|---|---|---|---|
| "Insert a column in the middle, keep every formula pointing where it should." | β formulas, tables, named ranges, charts and cross-sheet links all follow, checked against Excel's own recalculation | β nothing in the docs says otherwise, and openpyxl, the library underneath, states plainly that it does not maintain formulas, tables or charts when rows and columns move | Excel does the shifting itself, on Windows, with the workbook closed and the application running |
| "Is this total current, or left over from the last save?" | β every value labeled calculated, cached or absent, and the stale cells named by address | β reads return the formula string; there is no way to get even the cached value | the COM server recalculates with Excel's own engine, but the value comes back with no freshness marking of any kind |
| "Sort it the way Excel would sort it, blanks and all." | β numbers, then text case-insensitively, then FALSE, TRUE, errors, blanks last, both directions, checked cell for cell against Excel | β no sort tool | Excel's own sort, with the application running |
| "Write a LAMBDA the file can still open afterward." | β modern functions and their declared parameters prefixed correctly; 80 formulas across every documented family opened with no repair prompt | n/d, and no Excel MCP server surveyed documents the modern functions either way, as support or as a limitation | n/d |
| "Read the big workbook without torching my context window." | β compact reads, a grid view, and server-side query and aggregation so the rows stay on the server | β no pagination and no token budgeting anywhere in the docs; with no end cell given it reads the whole used range | the Go server pages reads by cell count, 4,000 cells at a time by default |
| "Recalculate it for real and prove it." | β a private hidden Excel does the arithmetic and the result comes back labeled calculated, never mixed in with cached values | β no recalculation tool, and the documentation never raises the subject | real recalculation on the COM server, which asks for Windows, an installed Excel, an interactive desktop and the workbook closed first |
Capability survey as of 2026-09-04, compiled from public repositories, documentation, and issue trackers. n/d: not documented in the sources surveyed, which is not a claimed absence. The most popular Excel MCP server is haris-musa/excel-mcp-server, 25 tools on openpyxl, last released 2026-04-12; its own open issues #94 and #118 ask for computed values instead of formula text. openpyxl's documentation states that it does not manage dependencies such as formulae, tables and charts when rows or columns are inserted or deleted. * The rest of the aisle: negokaz/excel-mcp-server (Go, seven tools, paginated reads, live editing on Windows), sbroenne/mcp-server-excel (C#, 31 tools over 326 operations driving the real Excel application, the capability ceiling, but Windows with Excel and exclusive access to the file, and no file-based tier). Two newer servers, PSU3D0/agent-spreadsheet and logisky/logisheets-mcp, embed real calculation engines and are worth watching. Microsoft ships no Excel MCP server, and Claude for Excel is an Office add-in rather than an MCP server. β Star counts read from the GitHub API on 2026-09-04, shown for context: stars say how long a shelf has been in view, not what is on it. Corrections welcome: open an issue.
Pick the line that describes you. Most people are the first one.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/kitchensink4xl)<a href="https://allmcps.com/mcp/kitchensink4xl"><img src="https://allmcps.com/api/badge/kitchensink4xl?style=directory" alt="KitchenSink4XL on AllMCPs" /></a>