Reads are paged by default, which is what keeps a wide sheet from swallowing the context, and writes go into the file on disk. Creating a table and formatting the range are what turn the result into something a colleague can open without noticing a machine made it.
A server over Excel files on disk. It lists a workbook's sheets, reads cell ranges with pagination, writes values and formulas back, creates tables, formats cells and copies sheets — addressing the file by absolute path, so what changes is the workbook itself.
- Every sheet in the file described before anything is read, so a call targets a range that exists
- Cell ranges read with pagination, optionally showing the formula behind a value or the style information on it, rather than pulling a whole sheet into the conversation
- Values written into an existing sheet or into a new one created on the spot, with anything starting = written as a formula
- A named table created over a range, so filtering and structured references work the way Excel expects
- Cells formatted from a style array — borders, font, fill, custom number formats and decimal places — one entry per cell in the range
- A sheet copied to a new name inside the same workbook
- On Windows only, live editing and a screenshot of a sheet range, for checking what it actually looks like
Node.js 20.x or later, run over stdio from npm as @negokaz/excel-mcp-server. The workbook is addressed by absolute path on the machine running the server, and the formats it handles are xlsx, xlsm, xltx and xltm. EXCEL_MCP_PAGING_CELLS_LIMIT sets how many cells one paged read returns, 4000 by default. Live editing and sheet screenshots are Windows-only.
One command — npx --yes @negokaz/excel-mcp-server
