Skip to main content
Glama

spreadsheet-audit-mcp

An MCP server that lets Claude (or any MCP client) audit an .xlsx workbook for the errors that quietly break spreadsheet models. Local and read-only: it opens the file you point it at, never writes to it, never uses the network.

What it checks

Rule

Severity

What it catches

CALC-ERROR

HIGH

#DIV/0!, #REF!, #N/A, #VALUE!, #NAME? after an independent recalculation (pure-Python formulas engine)

CACHED-ERROR

HIGH

error values stored in the file by the last app that saved it

TYPED-OVER

HIGH

a hard-coded number sitting inside a filled-down formula run

PATTERN-BREAK

HIGH

the one formula that differs from consistent neighbours above and below

EXT-LINK

HIGH

formulas that read another file

NAME-REF

HIGH

named ranges that point to #REF!

MAGIC-NUMBER

MEDIUM

rates and thresholds buried in formulas instead of labelled inputs (rounding tolerances like <=0.005 are ignored)

LOOKUP-APPROX

MEDIUM

VLOOKUP with approximate match (omitted or TRUE)

HIDDEN-SHEET

MEDIUM

hidden or very-hidden sheets

HIDDEN-ROWCOL, VOLATILE

LOW

hidden rows/columns; INDIRECT, OFFSET, TODAY, NOW, RAND

Repeated MAGIC-NUMBER, VOLATILE and LOOKUP-APPROX hits are grouped per sheet with a count, so 700 repeats do not bury the real problems.

Related MCP server: sheetspec

Tools

Tool

What it does

audit_workbook

Full audit (path, recalc, min_severity, limit).

inspect_cell

One cell's formula, stored result and the cells it reads (path, sheet, cell).

Install and use

Requires Node 18+, Python 3.9+ with openpyxl (and optionally formulas for the recalculation check): pip install openpyxl formulas.

npm install
npm test        # 14 Python tests + 8 end-to-end MCP client checks

Claude Desktop / Claude Code config:

{ "mcpServers": { "spreadsheet-audit": { "command": "node", "args": ["/absolute/path/to/server.mjs"] } } }

Then ask: "Audit ./budget.xlsx and tell me which findings could change the bottom line."

Honest limits

Heuristic. It points at where models usually go wrong; it cannot prove a model is right, and some findings are intentional (for example a sensitivity grid with fixed steps). If the recalculation engine cannot handle a workbook it says so in recalculation_note and the static checks still run.

Need a spreadsheet model built or reviewed, or a custom MCP server for your tools?

Open an issue or message the author.

License: MIT

Available Tools

2 tools
audit_workbookAudit a spreadsheet for formula and model errorsA
Read-onlyIdempotent

Audits an .xlsx workbook: error values after an independent recalculation, typed-over formulas, formulas that break the pattern of their neighbours, hard-coded numbers inside formulas, approximate-match lookups, volatile functions, external links, hidden sheets/rows/columns and broken named ranges. Heuristic: it points at where models usually go wrong, it cannot prove a model is right.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the .xlsx file
limitNo
recalcNoRecalculate with an independent engine to find error values (slower on big files)
min_severityNoLOW

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly=true, idempotent=true and closed-world, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: it performs an independent recalculation, it is heuristic rather than conclusive, and it points at likely fault locations rather than proving correctness. It stops short of describing result shape or severity-level meaning.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The check list is front-loaded and every clause names a distinct defect class, so the length is earned rather than padding. The closing heuristic caveat is a single tight sentence that adds honest framing; structure is efficient overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With readOnly annotations covering safety but no output schema, the description should carry more of the result contract. It doesn't say what a finding looks like, how severity is assigned or what 'limit' truncates. The heuristic caveat is a meaningful inclusion, but the undocumented severity/limit parameters leave the invocation picture incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%: 'path' and 'recalc' are documented in the schema, but 'limit' and 'min_severity' have no descriptions anywhere. The description's mention of 'independent recalculation' merely restates the recalc param and it says nothing about the result-count limit or what the severity thresholds mean, so it does not compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Audits an .xlsx workbook') and then enumerates the exact classes of defect it targets — error values, typed-over formulas, pattern-breaking formulas, hard-coded numbers, approximate-match lookups, volatile functions, external links, hidden sheets/rows/columns, broken named ranges. This scope is unmistakably distinct from the cell-level sibling inspect_cell, so an agent can route correctly without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the fitting context (when you suspect model errors) and honestly scopes the tool's power with 'it cannot prove a model is right'. However, it never names inspect_cell or any alternative, and gives no explicit when-not to use it, leaving the choice between workbook-level auditing and cell inspection to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inspect_cellShow one cell's formula and what it readsA
Read-onlyIdempotent

Returns the formula (or value), the stored result if the file has one, and the cells the formula reads. Use it to follow a suspicious number back to its inputs.

ParametersJSON Schema
NameRequiredDescriptionDefault
cellYes
pathYes
sheetYes

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, so safety and repeatability are covered. The description adds real behavioral detail beyond that: it discloses the return contents (formula or value, cached result when present, and precedent cells), including the conditional "if the file has one" for stored results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler. The return contents are front-loaded and the second sentence earns its place by supplying the investigative use case.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly carries the burden of explaining what comes back, and it does so reasonably well. However, it omits error behavior for empty or missing cells and the meaning of path/sheet, so an agent still lacks enough to call it confidently in edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%: path, sheet, and cell carry only types, and the description says nothing about any of them. The schema's regex hints that cell is an A1-style reference, but path (workbook file?) and sheet semantics are entirely undocumented in both places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it returns the formula or value of one cell, its stored result, and the cells the formula reads. That distinguishes it clearly from audit_workbook in substance, though the sibling is never named or contrasted.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use it to follow a suspicious number back to its inputs" gives a concrete use case, which is more than nothing. But there is no when-not guidance and no explicit routing between this cell-level inspection and the workbook-level audit_workbook sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv0.1.0
    • First observedaudit_workbook
    • First observedinspect_cell

TDQS

A3.7/5.0

Scored across 2 tools

Disambiguation5/5

The two tools are cleanly separated: audit_workbook performs a whole-file heuristic sweep, while inspect_cell zooms in on a single cell's formula, value, and precedents. The drill-down workflow is explicitly described, so an agent can always tell which to reach for.

Naming Consistency5/5

Both names follow the same verb_noun snake_case convention (audit_workbook, inspect_cell), with verbs that accurately mirror each tool's scope. No stylistic deviations.

Tool Count3/5

Two tools is at the thin edge for a spreadsheet auditing server; the surface is coherent but leaves no room for reporting, filtering, or remediation operations. It works as a minimal diagnose-then-drill pair, nothing more.

Completeness3/5

Detection and follow-up tracing are covered, but there is no way to export or summarize findings, fix/annotate flagged issues, or compare across workbooks. For a read-only audit domain this is workable, but agents will hit dead ends on any remediation or reporting task.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    50 tools and 400 functions for working with Excel/.xlsx spreadsheets — read/write, recalculate formulas, diff, repair broken references, and audit. Built for AI agents.
    50
    3,303 npm
    6
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Validates Excel (.xlsx) workbooks against reviewed, lockable acceptance contracts, catching errors and outputting structured issues that agents can repair.
    1
    MIT
  • F
    license
    C
    quality
    B
    maintenance
    An MCP server for safe .xlsx inspection and controlled workbook writes, enabling spreadsheet reads, search, filtering, aggregation, and preview-based writes with workspace confinement and audit logging.
    12
    -