LabscoMCP early access ↗
iHeldanMCP SERVER

SheetForge MCP

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.

by iHeldan ↗Spreadsheet & Tabular File AnalysisCommunity

LABSCO 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