Skip to main content

slim-sheet

A spreadsheet MCP server that small local models can actually use. It reads xlsx xlsm xltx xltm xlsb xls ods numbers csv tsv parquet json locally (no Office, no network), keeps every response under a token budget, and gives agents SQL, cleaning, anomaly detection, a formula copilot, Excel-correct editing and one-call branded dashboards — through 8, 18 or 30 tools depending on how capable the model is.

Works with Claude Desktop / Claude Code (Free or Pro), OpenCode, Codex, Cursor, Cline, Continue, LM Studio, Ollama (via mcpo or Open WebUI) — and as a plain CLI for agents without MCP.

Install

uvx slim-sheet mcp                          # MCP server over stdio
uvx slim-sheet overview sales.xlsx          # or use any tool from the shell
uvx --from "slim-sheet[all]" slim-sheet mcp # + offline formula engine, encrypted files, Apple Numbers

Host configuration for every client (Claude, Cursor, OpenCode, Codex, LM Studio, Ollama/mcpo, Open WebUI, Cline, Continue) is in docs/hosts.md.

{
  "mcpServers": {
    "slim-sheet": {
      "command": "uvx",
      "args": ["slim-sheet", "mcp"],
      "env": { "SLIM_SHEET_TIER": "lite", "SLIM_SHEET_ROOTS": "/path/to/your/data" }
    }
  }
}

Tiers

Tier Tools For
full (default) every tool below any model that should be able to do everything
lite overview, read, find, query, profile, write, explain_formula, build_report 3B–8B local models
standard lite + clean, anomalies (+formula audit), merge, convert (+split), diff, undo, evaluate (+check), describe_cell (+trace), style_sheet, what_if mid-size and frontier models
full standard + create_workbook, sheet_ops, range_ops, name_ops, format_range, set_table, rules, add_chart, sheet_layout, annotate, pivot, split, recalc frontier models building workbooks

Pick exact tools with SLIM_SHEET_TOOLS=overview,read,query.

Design: professional output with almost no description

The model names what to show; slim-sheet decides how it looks — layout, colours, fonts, number formats, chart type, sort order and an insight title — from a brand. One call:

build_report(path="sales.xlsx", data_sheet="Sales", title="Sales performance 2025",
             kpis=["Revenue=sum:Revenue", "Margin=ratio:Profit/Revenue", "Orders=count"],
             charts=["trend:Month:Revenue", "rank:Region:Revenue", "share:Product:Revenue"])

gives a one-page dashboard: KPI tiles with live formulas (7.1m · 20.4% · 144), a line titled "Revenue rose 58% from 2025-01 to 2025-12", a sorted bar with the leader highlighted, a labelled doughnut, a source footer. style_sheet(path, sheet, preset="report") does the same for any table and reports the number formats it inferred.

Your company's look, set once. Built-in brands: slim (default), office, modern (Aptos), mono (IBCS-style), gov (UK government statistics style). Or point SLIM_SHEET_BRAND at a JSON file — only name is required:

{ "name": "Acme", "primary": "#C8102E", "body_font": "Arial", "currency": "$", "profile": "finance" }

Every workbook then carries the brand as a real Office theme, so Excel's own table and chart styles follow it too. Rules behind the defaults (IBCS, finance colour coding, UK spreadsheet accessibility guidance, chart-choice tables): PLAN.md §16.

What makes it different

  • Reads everything with one interface, including .xls, .xlsb, .ods, Apple Numbers and password-protected xlsx.
  • Budgeted output: Markdown tables with A1 coordinates, ~1,500 tokens per response, next cursors to continue.
  • Errors that teach: every error has a code, a message and a corrected example call.
  • SQL over sheets with DuckDB; messy sheets are split into regions with detected headers ("Report.2").
  • Never destroys data: edits go to <name>.slim.xlsx unless overwrite=true, writes are atomic, every replaced file is journaled, and undo steps back.
  • Excel-correct structure edits: inserting/deleting rows or renaming a sheet rewrites formulas, names, merges, validations, conditional formats, tables and charts the way Excel does.
  • Model checking: anomalies scope='formulas' finds hardcoded numbers, broken patterns, double counting and where an error starts; describe_cell trace= follows formulas across sheets; what_if runs delta, goal seek and sensitivity grids without touching the file.
  • Formula copilot: 514-function catalog, version checks (XLOOKUP in Excel 2016 → suggests INDEX/MATCH), offline evaluation with dependency chasing.
  • Macros, read-only: read sheet='#vba' shows VBA source, anomalies scope='macros' rates risk, and agents redo a macro's job with tools (prompt replace_macro). slim-sheet never runs macros.
  • Excel-exact formulas: newer functions are stored with Excel's _xlfn. prefixes and spilling formulas as real dynamic arrays, with a warning when something blocks the spill.
  • Flexible paths, safe by default: give any folder in chat (no config change); system folders, AppData, dot-folders such as .ssh and non-spreadsheet files are refused. Read-only SQL with file access locked, no model-written code is executed, no network.

Configuration

Variable Default Meaning
SLIM_SHEET_TIER full full, standard or lite
SLIM_SHEET_TOOLS — explicit comma-separated tool list
SLIM_SHEET_ROOTS current directory default folders for relative paths and overview() (; on Windows, : elsewhere)
SLIM_SHEET_STRICT_ROOTS off 1 = only paths inside SLIM_SHEET_ROOTS (the old allow-list)
SLIM_SHEET_MAX_TOKENS 1500 default response budget
SLIM_SHEET_TOKEN — bearer token for --transport streamable-http (required off loopback)
SLIM_SHEET_PASSWORD — password for encrypted workbooks (never passed through chat)
SLIM_SHEET_SOFFICE autodetect LibreOffice binary for recalc
SLIM_SHEET_AUDIT_LOG — JSONL audit log of every tool call (contents redacted)
SLIM_SHEET_RATE_LIMIT 120 HTTP tool calls per minute per client (0 = off)
SLIM_SHEET_MAX_CELLS 3000000 refuse workbooks declaring more cells (0 = off)
SLIM_SHEET_BRAND slim brand name (slim, office, modern, mono, gov) or path to a brand .json

Extras: formula (offline evaluate and what_if), crypto (encrypted xlsx), numbers (Apple Numbers), images (insert pictures with annotate), all.

Prompt library

Ready-made, data-agnostic prompts — a shared CORE method, thirteen ROLES (nine analyst roles: sales, finance, marketing, customer, operations, HR, reconciliation, data quality, general; plus model auditor, workbook editor, macro migrator and file reviewer) and eight OUTPUT patterns (dashboard, dashboard pack, report workbook, clean dataset, reconciliation report, quick answer, audit report, edited workbook), with filled-in example sets, about 50 one-paste task recipes in 8 packs (finance, sales, HR, operations, data prep, Excel tasks, reporting, Vietnam) and compact blocks for small local models: docs/prompts.

Skill packs

skills/building-client-reports turns the tools into client-ready reports: a report brief, role presets (CFO, board, sales, marketing, operations, HR, market research), a standards checklist and evals. Copy it into ~/.claude/skills/ or attach it to any agent (skills/README.md).

Non-MCP hosts

slim-sheet schema --format openai --tier lite      # function-calling schemas for any OpenAI-compatible API
slim-sheet schema --format anthropic --tier full   # Messages API tool definitions
SLIM_SHEET_TOKEN=... slim-sheet mcp --transport streamable-http --host 0.0.0.0 --port 8765

Development

uv sync --all-extras
uv run pre-commit install                 # ruff, mypy, manifests, commit-message rule, tests on push
uv run python scripts/make_demo.py        # sample workbooks in ~/Documents/slim-sheet-demo
uv run ruff check . && uv run ruff format --check . && uv run mypy src && uv run pytest -q

Issues and pull requests use the templates in .github/; security reports go through SECURITY.md.

Design and roadmap: PLAN.md · agent rules: AGENTS.md · MIT licensed.

Metadata

Release files for slim-sheet 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for slim-sheet 0.1.0
File Size Uploaded Provenance Actions
slim_sheet-0.1.0.tar.gz 307.9 kB Without provenance Details for slim_sheet-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for slim-sheet 0.1.0
File Interpreter ABI Platform Actions
slim_sheet-0.1.0-py3-none-any.whl Python 3 none any Details for slim_sheet-0.1.0-py3-none-any.whl

Total release size: 577.5 kB

Release files / slim_sheet-0.1.0.tar.gz

Download URL slim_sheet-0.1.0.tar.gz
Size 307.9 kB
Tags Source
SHA-256 checksum
How to use checksums
dd1fa675eceb22a7c340ec5f79facbc8483c926a861005647ebb0b27d703d21f
BLAKE2b-256 checksum
How to use checksums
7d2015204cd3d2e9a57901bd3c650a2796a33882e88f504d919cbb50a43aa9f7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / slim_sheet-0.1.0-py3-none-any.whl

Download URL slim_sheet-0.1.0-py3-none-any.whl
Size 269.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f46107dd34d8d13850539a6277c6bce93847715c92dcbcfde773552f2f10fee7
BLAKE2b-256 checksum
How to use checksums
15633a3b85dbf5e57f4936845d13c8cec52d149646a350db70296496662335ac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Security for slim-sheet 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page