Xlsx For AI MCP server
50 spreadsheet tools for .xlsx: recalc formulas, repair broken refs, read/write, diff, audit.
6 stars506 downloads/wk
Reviews
Write oneNobody has reviewed Xlsx For AI yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Xlsx For AI tools (78, 8 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
csv_checkVerify CSV structure and injection safety
importable_connectConnect this agent to a Shopify store via a merchant-minted code
importable_convertwrite actionConvert a merchant file to a Shopify import plan (dry-run)
importable_entitiesList Importable-drivable Shopify entities
importable_exportExport a Shopify entity from the connected store
importable_importwrite actionApply a file to the connected Shopify store (dry-run, then owner-approved commit)
importable_job_statuswrite actionCheck the status of an Importable import or export run
printful_catalog_importProduce Shopify products import CSV from Printful catalog
printful_catalog_pullPull Printful catalog snapshot
printify_catalog_importProduce Shopify products import CSV from Printify catalog
printify_catalog_pullPull Printify catalog snapshot
shopify_amazon_feedProduce Amazon inventory feed
shopify_collections_importProduce Shopify collections import CSV
shopify_ebay_feedProduce eBay File Exchange feed CSV
shopify_google_feedProduce Google Shopping feed CSV
shopify_inventory_importProduce Shopify inventory import CSV
shopify_metafields_safe_reimportProduce a safe Shopify metafields re-import CSV
shopify_product_metafields_importProduce Shopify product-metafields import CSV
shopify_products_importProduce Shopify products import CSV
shopify_products_import_fixFix Shopify products import CSV
shopify_ups_feedProduce UPS WorldShip batch CSV
shopify_url_redirects_importProduce Shopify URL redirects import CSV
shopify_variant_metafields_importProduce Shopify variant-metafields import CSV
xlsx_aggregatepandas-style df.groupby([cols]).agg({col: func}) on a LOCAL .xlsx file. funcs: sum / mean / min / max / count / count_distinct.
xlsx_chartsList every chart in a LOCAL .xlsx file with type (bar / line / pie / scatter / area / doughnut / radar / stock / surface / bubble), title, axis titles, and per-series formula refs (the cell ranges the chart pulls from). Sheet attribution via the OOXML drawing rel chain.
xlsx_checkVerify Excel workbook with an independent engine
xlsx_commentslist every cell comment in a workbook — both legacy notes (yellow stickies, cell.note) AND modern threaded comments (multi-author conversations stored separately in the OOXML zip). Per entry: kind, sheet, cell, author, text, plus any reply thread.
xlsx_conditional_formatslist every conditional formatting rule in a workbook — color scales, data bars, icon sets, formula-based highlights, top-N, duplicate / unique values, contains-text, time-period, above-average. Per rule: range, type, operator, formulae, priority, stopIfTrue.
xlsx_convertuniversal spreadsheet format converter. Reads ANY of 25+ input formats (xlsx, xlsb, xlsm, xls, ods, fods, numbers, csv, tsv, dbf, lotus 1-2-3, quattro pro, sylk, dif, html, rtf, etc.) and emits ANY supported output format (xlsx, csv, json, md, html, etc.).
xlsx_data_cleanAI-native data cleaning for a LOCAL .xlsx file. Scans for the seven most common data-grime issues — NA variants (N/A, NA, null, -), merged-cell residue, type-coercion mistakes (numeric-as-text / date-as-serial / leading-zero stripped), trailing-row noise (footers / totals), header-row-not-first (preamble before headers), encoding glitches (UTF-8-as-CP1252 mojibake), and duplicate column headers —
xlsx_data_validationslist every cell-level data validation rule (dropdowns, numeric/date bounds, text-length caps, custom formulas) defined in a workbook — the constraints that Excel enforces when a human types into the cell.
xlsx_describepandas-style df.describe() per column — count, nulls, unique, min/max/mean/std for numerics, dtype with purity score.
xlsx_diffcompute a semantic diff between two LOCAL .xlsx files — cell-level deltas, formula changes, added/removed rows.
xlsx_doctorONE-CALL workbook health report for a LOCAL .xlsx file. Scans for macros, external workbook references, hidden / veryHidden sheets, missing creator metadata, large embedded images, and surfaces interesting feature flags (LAMBDA, dynamic arrays, pivot cache, slicers, threaded comments). Findings ranked HIGH / MEDIUM / LOW. Plus quick_facts: sheet count, formulas, named ranges, merges, hyperlinks, v
xlsx_evalevaluate Excel formulas against a LOCAL .xlsx file with our own recalc engine. xlwings-style.
xlsx_external_linkslist every external workbook reference this file depends on — `=[Budget.xlsx]Sheet1!A1` style formulas. Per link: target path (decoded), classification (http / network share / absolute / relative), sheets pulled from the external workbook, count of cached cell values, and defined-name references.
xlsx_filterpandas-style row filter on a LOCAL .xlsx file with predicates AND-combined: eq/ne/gt/gte/lt/lte/contains/in/is_null/not_null.
xlsx_form_controlswrite actionlist every form control (Check Box, Button, Drop-down, List Box, Option Button, Scroll Bar, Spinner, Label, Group Box) in a workbook with the linked cell, current value, dropdown source range, and min/max/step bounds where applicable.
xlsx_formulasextract every formula in a LOCAL .xlsx workbook — cell coord (A1), formula text, cached result. openpyxl-style read-only metadata.
xlsx_healer_cureApply ONE specific cure operation against a diagnosed workbook. Operations: rename_move (rewrite ref paths), pattern_bulk (regex-style ref rewrites), source_deleted_freeze (replace broken refs with cached values), source_deleted_redirect (point at a replacement file), source_deleted_localize (snapshot external source into a local copy), permission_denied (strip credentials), structure_changed (rew
xlsx_healer_diagnoseproduce a structured diagnostic report of external references that are broken or at risk in a workbook. Returns five classes of finding: (1) external-workbook references that can't resolve, (2) defined-name external refs, (3) Power Query connections with embedded credentials, (4) #REF! propagation maps from upstream breakage, (5) multi-hop chains (workbook → workbook → workbook). Findings carry re
xlsx_healer_intentGoal-driven healing. Caller declares an INTENT (`make-it-work`, `make-standalone`, or `migrate`) instead of a specific cure operation; Healer plans the operation sequence + applies it. make-it-work: minimum surgery to clear errors. make-standalone: fully de-externalize (snapshot every external dep). migrate: rewrite all references against a from/to prefix pair. Returns the planned operations, cure
xlsx_healer_simulatesimulate recipient-side accessibility of a workbook's external references. Given a list of paths the recipient CAN see (`accessible_paths`), returns which references will still resolve at the recipient end and which will break (and why). Read-only; produces no output workbook.
xlsx_hyperlinkslist every hyperlink in a workbook with its anchor cell, target URL/anchor, display text, tooltip, and a kind classifier (external / internal / mailto / unknown).
xlsx_imagesList every embedded image in a LOCAL .xlsx file with format (png / jpg / gif / svg / bmp / tiff / emf / wmf), size in bytes, sheet attribution, and anchor cell range (the cells the image floats over). Reads xl/media/* + xl/drawings/* directly.
xlsx_list_sheetslist sheet names, dimensions, and visibility for a LOCAL .xlsx file.
xlsx_macrosInspect xlsm / xlsb workbooks for VBA macro presence, vbaProject.bin size, and likely module names (ThisWorkbook / Sheet<N> / Module<N> / Class<N> / UserForm<N> via heuristic UTF-16LE scan). Returns short safety advice the LLM should relay to the user.
xlsx_merged_cellslist every merged-cell region with master-cell value, range, span dimensions, and kind heuristic ("header" / "horizontal" / "vertical" / "block"). Pandas reads merged cells by dropping the relationship — it sees one value in the master cell and three blanks alongside. xlsx_merged_cells is the layout-aware view: "A1:D1 is ONE cell that says Q4 2024" rather than four cells where three are mysterious
xlsx_named_rangeslist all defined names (named ranges) in a LOCAL .xlsx workbook — name, scope (workbook or sheet), kind (cell / range / formula), reference.
xlsx_pii_cleanRedact personal or sensitive data from an Excel file
xlsx_pii_scanScan Excel for personal or sensitive data
xlsx_pivotpandas-style pivot_table() on a LOCAL .xlsx file — reshape a flat table into a 2D matrix where rows are unique values of `index`, columns are unique values of `columns`, and cells are an aggregation of `values`.
xlsx_pivot_tablesList every PRE-EXISTING pivot table definition in a LOCAL .xlsx file (the ones an Excel user already built). Per pivot: sheet, name, location range, source range (or named-range / table reference), row / column / page fields, and data fields with their agg function (sum / count / average / max / min / product / stdDev / etc.).
xlsx_post_slackwrite actionupload a local .xlsx file to a Slack channel as a file attachment, with an optional accompanying message.
xlsx_post_teamswrite actionUpload a local .xlsx file to a Microsoft Teams channel as a file attachment, with an optional accompanying message.
xlsx_print_settingssurface "what would Excel print right now" per worksheet — print area, orientation, paper size (A4 / Letter / Legal / Tabloid / etc.), scale or fitToPage, margins, headers/footers split into Excel's L/C/R zones, print titles (rows / columns repeated on every page), manual page breaks, plus B&W / draft / centered flags.
xlsx_propertiesSurface the workbook's identity card from a LOCAL .xlsx file. Core: creator, last_modified_by, created/modified/lastPrinted timestamps, title, subject, company, manager, keywords, category, description. Application: app name + version, doc security label, hyperlink base. Custom: every user-defined Info > Properties entry (Department, ReviewedBy, ApprovalRequired, etc.) with type tag and value.
xlsx_protectionSurface every protection setting in a LOCAL .xlsx file so an agent knows what it can and cannot edit. Workbook-level (lockStructure, lockWindows), per-sheet (protected? password? hidden state?), per-action allow/block list (formatCells, sort, insertRows, pivotTables, etc.), and per-cell unlocked / hidden samples — these are the cells a human would actually be allowed to type into when the sheet is
xlsx_readxfa — read an .xlsx file by path and return a rendered markdown/JSON/SQL representation.
xlsx_read_handlewrite actionread a workbook that has already been uploaded to the server via the chunked upload flow, by its server-side cache handle, WITHOUT re-transferring the bytes. Returns the same shape as xlsx_read (text / json / markdown) but skips the file_b64 round-trip.
xlsx_receiptAttach an AI-generation receipt to a LOCAL .xlsx file — a cryptographic attestation embedded in docProps/custom.xml that says "this file was generated by THIS agent, at THIS time, against THESE inputs." Returns the receipted workbook as base64 in _meta.file_b64; pass out_path to write to disk.
xlsx_redactredact PII and sensitive values from a LOCAL .xlsx file before sharing or archiving.
xlsx_schemainfer column schema of a LOCAL .xlsx file — types, nullable flags, header row, sample values.
xlsx_session_set_validationsconfigure per-session data-validation rules the server will apply to subsequent calls in the same session (e.g., reject rows missing required columns, enforce enum values on a category column, range-bound numeric inputs). Stateful — affects this session only.
xlsx_slicers_timelinesList every slicer (interactive filter button) and timeline (date-range filter visual) in a LOCAL .xlsx file with their captions, source bindings (table column or pivot table), and timeline granularity (years / quarters / months / days) plus the currently-selected date range.
xlsx_sortpandas-style df.sort_values() on a LOCAL .xlsx file with multi-column sort and per-column direction (asc/desc, default asc).
xlsx_stampSign a LOCAL .xlsx file with a "workbook integrity verification" stamp — a cryptographic attestation embedded in docProps/custom.xml that says "this file was generated by these tools, passed these N specific checks, signed at this time, and hasn't been tampered with since." Factual claims only (never an opinion-shaped seal of approval). Returns the stamped workbook as base64 in _meta.file_b64; pas
xlsx_stylessurface cell formatting (number formats, fonts, fills, alignment) so an agent knows what a cell LOOKS like, not just its raw value. Default mode: per-sheet rollup of top-N number formats / fonts / fills with counts. Detailed mode (opt-in, capped at 1000 cells): per-cell breakdown for narrow queries.
xlsx_tableslist every Excel ListObject ("Format as Table" structures) in a LOCAL .xlsx workbook — name, sheet, range, header/totals flags, columns.
xlsx_topologyone-call workbook orientation. Returns sheets × dimensions × formulas × named ranges × tables × validations × hyperlinks × merges in one shot, plus feature flags (macros / external refs / pivots / LAMBDA / dynamic arrays).
xlsx_validatecross-engine consistency check on a LOCAL .xlsx file — runs the workbook through TWO independent renderers (@protobi/exceljs and @cj-tech-master/excelts) and reports cell-level divergences.
xlsx_value_countspandas-style Series.value_counts() on one column of a LOCAL .xlsx file — count each unique value, sorted by frequency desc, with percentage.
xlsx_vault_cureClean hidden or risky content from an Excel file
xlsx_vault_scanScan Excel for hidden or risky content
xlsx_verify_receiptverify a workbook's embedded AI-generation receipt. Returns whether the signature is valid, whether the recomputed content hash matches the hash IN the receipt, and the full caller-declared claims (agent identity, generation timestamp, source-file hashes, prompt hash, MCP tools called, description).
xlsx_verify_stampverify a workbook's embedded integrity-verification stamp. Returns whether the cryptographic signature is valid, whether the workbook bytes match what was signed (recomputed hash vs hash IN the stamp), and the full check-result content of the stamp.
xlsx_workbook_viewsSurface the UI state of a LOCAL .xlsx file — what a human sees when they open it in Excel. Per sheet: visibility (visible / hidden / veryHidden), view state, zoom, active cell + selection, frozen-pane breakdown, gridlines / row-col headers / ruler / RTL flags, tab color. Workbook level: which sheet is active when Excel opens.
xlsx_writewrite actioncreate or update a LOCAL .xlsx file from a structured spec.
Public scan report
scanner v0.1.5 · 2026-09-19 · same rubric, same numbers if you re-run it
- Code scan15 source files scanned15/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 4 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Findings (2)
- mediumnpm install lifecycle script present
install.script - mediumnpm install lifecycle script present
install.scriptpackage.json: …cripts/check-publish-allowlist.js", "postinstall": "node scripts/postinstall.js" }, "k…
What the publisher says
From the Xlsx For AI repository's README, as published. We do not edit it. Read it on GitHub
xlsx-for-ai
Short name: xfa — a real CLI command (xfa , xfa samples, xfa --version) and the prompt shorthand (e.g. "use xfa to read this file"). Same entrypoint as xlsx-for-ai; matches the internal xfa / XFA brand surface.
Verified values, preserved structure, up to 100MB
The missing reliability layer for spreadsheet work in LLM agents. Read, write, diff, validate, and analyze .xlsx files end-to-end — with merged cells, formulas, named ranges, conditional formatting, pivots, and charts preserved.
xlsx-for-ai makes Claude reliable on real-world Excel files. Forty-plus tools cover the structural surface that pandas-style sandboxes drop on the floor: merged cells, named ranges, formulas with results, conditional formatting, pivots, slicers, charts, comments, data validations, hyperlinks, cross-sheet topology, external links, form controls, VBA macros, document properties, and protection settings. Cross-engine validation catches the corruption other readers silently mask. A hosted recalc engine computes served values in-house — no third-party formula engine in the serve path.
npm install -g xlsx-for-aiThe global install puts the xlsx-for-ai-mcp binary on your PATH — that's what the canonical configs below point at. A pinned global install launches fast and works offline; upgrade with npm install -g xlsx-for-ai@latest when a new version ships.
Upgrading from 1.5.x? This is a re-architecture, not a feature bump: the heavy local engine is gone from the npm package. All rendering happens server-side. The cursor-reads-xlsx alias still works. See Migration below.
MCP configuration
Add the server to your agent runtime under the name xfa (so "use xfa to read this" resolves). First invocation auto-registers an anonymous client UUID — no email, no signup, no friction.
Claude Code
The global install auto-registers the xfa MCP server in ~/.claude.json — no extra step:
npm install -g xlsx-for-aiIf your environment skips install scripts (--ignore-scripts, CI, or a sudo install), register it manually:
claude mcp add xfa -- xlsx-for-ai-mcpVerify: in a new Claude Code session, ask "what MCP tools do you have?" — 52 xlsx tools should appear, including xlsxdoctor (one-call health report — try it first on any unknown workbook).
Then run xfa samples (shorthand for xlsx-for-ai samples) to drop two demo workbooks in your working directory and get paste-ready prompts to try.
Cursor
Config file: ~/.cursor/mcp.json
{
"mcpServers": {
"xfa": {
"command": "xlsx-for-ai-mcp"
}
}
}Verify: open Cursor settings → MCP → confirm xfa shows 52 xlsx_* tools.
Continue
Config file: ~/.continue/config.json
{
"mcpServers": [
{
"name": "xfa",
"command": "xlsx-for-ai-mcp"
}
]
}Verify: restart VS Code, open the Continue panel, and check the MCP server list.
Codex CLI
Pass --mcp-server on the command line, or add to your Codex config:
{
"mcpServers": {
"xfa": {
"command": "xlsx-for-ai-mcp"
}
}
}Verify: run codex --list-tools and confirm 52 xlsx_* tools are listed.
Zed
Config file: ~/.config/zed/settings.json
{
"context_servers": {
"xfa": {
"command": {
"path": "xlsx-for-ai-mcp"
}
}
}
}Verify: open Zed's assistant panel — the xlsx tools should appear in the tool picker.
Windsurf
Config file: ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"xfa": {
"command": "xlsx-for-ai-mcp"
}
}
}Verify: open Windsurf → Cascade → settings, confirm xfa is listed as an active MCP server.
Custom agents / API
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Install directly
Runs npx -y xlsx-for-ai on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add xlsx-for-ai -- npx -y xlsx-for-ai
Xlsx For AI: common questions
- Is Xlsx For AI MCP server safe?
- Mostly: it is graded B (77/100). Read the Xlsx For AI safety report
- How do I install Xlsx For AI?
- It runs on your machine. Copy the Claude Code, Claude Desktop or Cursor config from the install section.
- Does Xlsx For AI need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is Xlsx For AI maintained?
- The last commit was 5 days ago (2026-09-16). The latest release is v4.0.6.