{
  "markdown": "# xlsx-audit-mcp\n\nAn [MCP](https://modelcontextprotocol.io) server that **audits Excel workbooks**. Other Excel MCP servers read and write your data — this one reviews your *model*:\n\n- *\"What feeds the Total cell on the Summary sheet?\"* — precedent tracing\n- *\"If I change this assumption, what breaks?\"* — dependent tracing, including cells that consume it through ranges like `SUM(A1:A40)`\n- *\"Audit this workbook\"* — circular references with example chains, volatile functions (`INDIRECT`, `OFFSET`, `NOW`, `RAND`...), hardcoded constants buried inside formulas, external workbook links, merged cells, extra-long formulas\n\nSpreadsheet mistakes are famously expensive. This is the \"trace precedents\" discipline auditors apply by hand, exposed to an LLM for a whole workbook at once. Local files only; nothing leaves your machine.\n\n## Quick start\n\n**Claude Code**\n\n```bash\nclaude mcp add xlsx-audit -- npx -y xlsx-audit-mcp\n```\n\n**Claude Desktop** — add to `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"xlsx-audit\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"xlsx-audit-mcp\"]\n    }\n  }\n}\n```\n\nThen: *\"Audit C:\\\\models\\\\budget-2026.xlsx and tell me what looks fragile.\"*\n\n## Tools\n\n| Tool | What it does |\n|------|--------------|\n| `workbook_overview` | Sheets, dimensions, formula counts, defined names, external links |\n| `list_formulas` | Formulas with addresses and cached values, filterable (`INDIRECT`, `VLOOKUP`, ...) |\n| `trace_cell` | One cell's formula, value, precedents, and dependents (direct + via ranges) |\n| `audit_workbook` | Ranked risk report across the whole model |\n\n## How it works\n\n- **Reference tokenizer** that understands real formulas: string literals are stripped first (the `\"A1\"` in `INDIRECT(\"A1\")` is not a reference), function names can't collide (the `G10` in `LOG10(...)` is not a cell), `$` absolutes, quoted sheet names (`'My Data'!A1`), and ranges are handled.\n- **Shared formulas are materialized.** Excel stores filled formulas once with an offset scheme; the loader translates them per-cell (relative refs shifted, absolutes preserved), so dependency queries see what each cell actually computes.\n- **Ranges are never expanded for storage** — dependents queries use range-containment tests, and cycle detection caps range fan-out (a `SUM(A:A)` can't explode the graph; capped ranges are reported, not silently dropped).\n- **No formula evaluation.** Cached values from the file are shown instead — no spreadsheet engine dependency.\n\nKnown limitations: R1C1 notation and structured table references (`[@Column]`) are counted but not resolved into the graph.\n\n## Development\n\n```bash\nnpm install\nnpm test                 # offline tests — synthetic workbooks built in-suite\nnpm run build            # tsc → dist/\nnode scripts/smoke.mjs   # end-to-end: generates a workbook, drives the server over stdio\n```\n\nArchitecture: [`src/xlsx.ts`](src/xlsx.ts) (zip + XML → workbook model) and [`src/formulas.ts`](src/formulas.ts) (tokenizer, graph, smells) are pure logic; [`src/index.ts`](src/index.ts) is the MCP wiring.\n\n## License\n\nMIT\n",
  "bytes": 3092,
  "sha": "4f513f77e4bded16ecd31ea811c0bfc66a60a2061707d2c5c401c24e788f839a",
  "repo_slug": "arose26/xlsx-audit-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_arose26_xlsx_audit_mcp_6d55eff3/readme"
}