overview
Workbook overview
Map a spreadsheet file (or list the spreadsheets in a folder; no path lists all allowed folders): sheets, used ranges, header row, columns and types. Call this first.
path
io.github.j4flmao由 GitHub 账号 j4flmao 发布v0.1.0更新于 Oct 30, 2026
Spreadsheet MCP for any agent: reads xlsx/xls/ods/csv, SQL, cleaning, formulas, safe edits
本地 MCP 服务器,让助手读取、查询、清洗、编辑和排版电子表格(xlsx、xls、ods、csv 等),并生成品牌化仪表板。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
参照 仓库 中的启动说明。
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.
Host configuration for every client (Claude, Cursor, OpenCode, Codex, LM Studio, Ollama/mcpo, Open WebUI, Cline, Continue) is in docs/hosts.md.
Pick exact tools with SLIM_SHEET_TOOLS=overview,read,query.
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:
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:
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.
.xls, .xlsb, .ods, Apple Numbers and password-protected xlsx.next cursors to continue."Report.2").<name>.slim.xlsx unless overwrite=true, writes are atomic, every replaced file
is journaled, and undo steps back.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.XLOOKUP in Excel 2016 → suggests INDEX/MATCH), offline
evaluation with dependency chasing.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._xlfn. prefixes and spilling formulas as real
dynamic arrays, with a warning when something blocks the spill..ssh and non-spreadsheet files are refused. Read-only SQL with file access locked, no model-written code is executed, no network.Extras: formula (offline evaluate and what_if), crypto (encrypted xlsx), numbers (Apple Numbers), images (insert pictures with annotate), all.
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.
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).
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.
来源:README.md,提交 c9e9976
Workbook overview
Map a spreadsheet file (or list the spreadsheets in a folder; no path lists all allowed folders): sheets, used ranges, header row, columns and types. Call this first.
pathRead cells
Read cells as a table with A1 coordinates (sheet, range 'A1:F50', cursor). sheet='#vba' lists macros; range='Module1' shows its code.
path必填rangesheetcursorformatmax_tokensFind cells
Find cells containing text (or a regex) across sheets; returns Sheet!A1 addresses. Example: find(path='sales.xlsx', text='refund')
path必填text必填regexsheetmax_resultsSQL query
Run one read-only SQL SELECT; tables are sheet names, quote names with spaces. Example: sql='SELECT "Region", sum("Total") FROM "Orders" GROUP BY 1'
sql必填path必填offsetmax_tokensProfile columns
Column statistics for a sheet: type, nulls, distinct, min, max, mean, median, top values. Optional columns list.
path必填sheetcolumnsWrite cells
Write a 2-D values array starting at range's top-left cell, e.g. values=[['Total', 120]]. Saves to <name>.slim.xlsx unless overwrite=true.
path必填range必填sheet必填values必填out_pathoverwriteExplain formula
Explain and check an Excel formula: steps, references, syntax/arity errors. Pass formula='=...' or path plus cell like 'Sheet1!C7'.
cellpathsheetformulaBuild dashboard
Build a branded, print-ready dashboard from a data sheet. Example: kpis=['Revenue=sum:Rev 2025|vs:Rev 2024:2024'], charts=['trend:Month:Total','table:Region:Total'], messages=['finding']
kpispath必填brandsheettitle必填chartsmessagesout_pathsubtitleoverwritedata_sheet必填Clean table
Clean a table: ops from trim, collapse_spaces, remove_nonprintable, unify_null, numbers_from_text, normalize_dates, drop_empty_rows, drop_empty_cols, dedupe. Previews unless apply=true.
ops必填keyspath必填applysheetout_pathoverwriteFind anomalies
Find suspicious cells (duplicates, types, outliers, typos); scope='formulas' audits models; scope='macros' rates VBA risks; scope='client' checks readiness for clients.
path必填scopesheetcolumnsmax_resultsJoin or reconcile tables
Join two tables on keys (how=left|inner|full|anti), or how=reconcile to label rows matched/different/only_left/only_right. keys=['ID'] or ['ID=Order No'].
howkeys必填path必填sheetcompareout_pathoverwritetolerancemax_tokensother_path必填other_sheetConvert or split
Convert to xlsx/csv/tsv/parquet/json by out_path extension; CSV: delimiter=';', encoding='cp1252', decimal=','. split_by='Region' splits; a folder exports VBA.
modepath必填sheetdecimalencodingout_pathsplit_bydelimiteroverwriteCompare files
Compare two files cell by cell, or row by row with key='ID'. Example: diff(path='a.xlsx', other_path='a.slim.xlsx')
keypath必填sheetother_path必填max_resultsUndo last write
Undo the last slim-sheet write to a file (every editing tool is journaled).
path必填Evaluate or check formula
Calculate a formula offline, or check it with check_only=true (target='2016'). Example: evaluate(path='x.xlsx', cell='Calc!C7')
cellpathsheettargetformulacheck_onlyDescribe and trace cell
Everything about one cell: value, formula, format, note, validation; trace='precedents' or 'dependents' follows formulas across sheets.
cell必填path必填depthsheettraceStyle table
Make a table look professional in one call: header, number formats, totals, widths, print setup, and restyles the sheet's charts. preset=report|data|finance|striped|minimal|charts.
path必填brandrangesheet必填presetout_pathoverwritetotal_rownumber_formatWhat-if analysis
Change inputs in memory and see outputs move: op=delta|goal_seek|grid. Example: inputs=['Inputs!B3=8%'], outputs=['Model!B20']. Never writes.
oppath必填sheetinputs必填targetoutputs必填Create workbook
Create a new empty branded .xlsx with the given sheet names. Example: create_workbook(path='out.xlsx', sheets=['Data','Summary'])
path必填brandsheetsoverwriteSheet operations
Add, rename, delete, copy, move, hide or unhide a sheet (op=...). Renames also fix formulas that point to the sheet.
op必填path必填sheet必填new_nameout_pathpositionoverwriteRange operations
Edit a block: op=fill|copy|move|transpose|sort|replace|insert|delete|clear|split. Example: op='fill', range='D2:D200'. where="Status='Closed'" filters rows.
byop必填todescfindpath必填whatrangesheet必填whereheaderreplace另有 5 个Defined names
List, add or delete defined names. Example: name_ops(path, op='add', name='TaxRate', ref='Rates!B2')
op必填refnamepath必填out_pathoverwriteFormat cells
Style a range: role ('title','header','total'...), bold, colors, number_format ('percent','m'...), align, border, merge, autofit.
boldpath必填rolewrapalignmergerange必填sheet必填borderitalicvalignautofit另有 6 个Excel table
Turn a range with a header row into a named Excel table; same name again resizes it. Example: set_table(path, sheet='Data', range='A1:D50', name='Sales', totals=true)
name必填path必填range必填sheet必填styletotalsout_pathoverwriteValidation and highlight rules
Add a dropdown/input rule (kind=list|whole|decimal|date|text_length|custom) or highlight rule (greater_than|between|duplicates|top_n|color_scale|data_bar|formula...).
kind必填path必填range必填sheet必填valuevalue2valuesformulamessageout_pathoverwritefill_color另有 2 个Add chart
Insert a clean branded chart (type=auto picks one) from data_range: header row + category column + series columns. Optional highlight='North'; replace=true swaps the chart at anchor.
path必填type必填brandsheet必填titleanchorreplacex_titley_titleout_pathhighlightoverwrite另有 1 个Pivot summary
Summarise a table: rows=['Region'], values=['Total'], agg=sum|count|avg|min|max, columns='Month'. to_sheet saves it; native=true makes a real Excel PivotTable.
aggpath必填rows必填sheetnativevalues必填columnsout_pathto_sheetoverwritemax_tokensRecalculate
Recalculate every formula with LibreOffice so cached values are fresh (needs LibreOffice installed).
path必填out_pathoverwriteSheet layout
Set how a sheet looks and prints: freeze, widths=['A=14'], heights, filter_range, hide, gridlines, zoom, print_area, landscape, fit_width, protect; workbook: calc_mode, protect_structure.
hidepath必填zoomsheet必填freezeunhidewidthsheightsprotectout_pathcalc_modefit_width另有 6 个Notes, links, images
Add a note, hyperlink or image to a cell, or remove objects: op=note|link|image|remove. Example: op='link', cell='B2', url='https://...'
op必填urlcell必填path必填textsheet必填targetout_pathoverwriteimage_path已满足适用检查项的 90%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
uvx slim-sheet mcp # MCP server over stdiouvx slim-sheet overview sales.xlsx # or use any tool from the shelluvx --from "slim-sheet[all]" slim-sheet mcp # + offline formula engine, encrypted files, Apple Numbers{ "mcpServers": { "slim-sheet": { "command": "uvx", "args": ["slim-sheet", "mcp"], "env": { "SLIM_SHEET_TIER": "lite", "SLIM_SHEET_ROOTS": "/path/to/your/data" } } }}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"]){ "name": "Acme", "primary": "#C8102E", "body_font": "Arial", "currency": "$", "profile": "finance" }slim-sheet schema --format openai --tier lite # function-calling schemas for any OpenAI-compatible APIslim-sheet schema --format anthropic --tier full # Messages API tool definitionsSLIM_SHEET_TOKEN=... slim-sheet mcp --transport streamable-http --host 0.0.0.0 --port 8765uv sync --all-extrasuv run pre-commit install # ruff, mypy, manifests, commit-message rule, tests on pushuv run python scripts/make_demo.py # sample workbooks in ~/Documents/slim-sheet-demouv run ruff check . && uv run ruff format --check . && uv run mypy src && uv run pytest -q