Labsco
MCP SERVER

SheetForge MCP

by iHeldan

Read, query, repair and reshape Excel workbooks from an agent — including filters, unions and lookups that span multiple workbook files — with a dry run available on the calls that write.

Spreadsheet & Tabular File AnalysisVerified
Summary
The pair that tells you how this server thinks is `apply_formula` and `write_data_to_excel`.

`apply_formula` writes a formula with verification, while `write_data_to_excel` states in its own description that it writes without any. That is the vendor's wording, and it decides which call you reach for when a formula is load-bearing. Past that, the surface goes wider than one file: `bulk_filter_workbooks`, `bulk_aggregate_workbooks`, `union_tables` and `cross_workbook_lookup` all operate on comparable data across many workbooks in one call, which is the part that is genuinely tedious to do by hand. Mutating calls carry `dry_run` and `include_changes`, so a change can be rehearsed and read back before it lands, and `audit_workbook` into `plan_workbook_repairs` into `apply_workbook_repairs` applies the same idea to the workbook's structure. With a surface this wide, `suggest_read_strategy` exists because picking the right read is itself a decision you would otherwise get wrong.

What it is

An Excel workbook server covering reads, queries, formulas, formatting, charts, native tables, named ranges and structural repair, with a group of operations that work across multiple workbook files rather than one.

What you get
  • Reads matched to the shape of the data: `read_data_from_excel` returns cells with metadata including validation rules, `read_excel_as_table` returns headers and rows or record objects and is described as more context-efficient for structured data, `quick_read` takes an explicit sheet or the workbook's first, and `suggest_read_strategy` recommends which of them to use for a stated `goal`.
  • Orientation before reading: `list_all_sheets` returns sheets with row and column counts, `describe_dataset` summarizes a worksheet or native table, `profile_workbook` returns an inventory of sheets, tables, charts and layout state, and `get_workbook_metadata` returns sheets and ranges.
  • Querying without exporting: `query_table` filters, projects, sorts and limits with operators covering eq, neq, ne, comparisons, string matching, blank checks and in/not_in, and `aggregate_table` computes grouped metrics over the same shape.
  • Cross-file operations on comparable data: `bulk_filter_workbooks` and `bulk_aggregate_workbooks` apply one filter or grouping across many workbook files in one call, `union_tables` stacks them with optional deduplication keys, and `cross_workbook_lookup` enriches one dataset from one or more lookup workbooks with left-join style matching and optional duplicate-match handling.
  • Formulas treated as objects rather than strings: `validate_formula_syntax` checks one without applying it, `inspect_formula` reports functions, references and risky signals, `apply_formula` writes it with verification, `explain_formula_cell` returns direct references plus the upstream chain and downstream dependents in depth layers, and `detect_circular_dependencies` finds cycles including self-references.
  • A repair loop at workbook scale: `audit_workbook` reports high-signal structural issues, `plan_workbook_repairs` turns those findings into prioritized steps, and `apply_workbook_repairs` executes the safe subset of them with dry-run planning and before/after diff output.
  • Writes that can be rehearsed: `dry_run` and `include_changes` sit on the mutating calls, among them `write_data_to_excel`, `format_range`, `format_ranges`, `merge_cells`, `insert_rows`, `delete_sheet_columns` and `set_worksheet_protection`.
  • Table-aware writing: `append_table_rows` matches worksheet headers, `append_excel_table_rows` expands a native table's range, `upsert_excel_table_rows` updates matching rows and appends missing keys, and `update_rows_by_key` updates through a named key column without appending the ones it does not find.
  • Layout control for a sheet someone has to read: `describe_sheet_layout` returns structure for safe dashboard-style edits, `find_free_canvas` suggests free slots for charts or blocks, `analyze_range_impact` reports what overlaps a range before you mutate it, and `freeze_panes`, `set_autofilter`, `autofit_columns`, `set_column_widths` and `set_row_heights` handle presentation.
  • Charts and native tables: `create_chart` from a contiguous range or explicit series as the preferred entry point, `create_chart_from_series` for non-contiguous ranges, `list_charts`, `create_pivot_table`, `create_table` and `list_tables`.
  • Rule inspection and cleanup: `inspect_data_validation_rules` and `inspect_conditional_format_rules` return rules with stable indexes, and `remove_data_validation_rules` and `remove_conditional_format_rules` delete them by index or clear the broken ones.
  • `diff_workbooks` compares two workbook files and reports structural changes plus sampled cell-value changes, which is the before/after check once an agent has touched workbook structure.
Requirements

No credentials are configured; every call addresses a workbook by `filepath`, so the files have to sit on a filesystem the server can read and write. The cross-file tools read many of them in one call, and `diff_workbooks` needs both workbook files already on disk.

Setup effort

One command — uvx sheetforge-mcp stdio