Sheetforge MCP Server

SheetForge MCP is an Excel MCP server for `.xlsx` automation over the Model Context Protocol. It is built for AI agents, MCP clients, and automation

Local serverstdioPython

What is the Sheetforge MCP MCP server?

Connect Sheetforge MCP to Claude, Cursor or any other MCP client and it stops being a tab you switch to. SheetForge MCP is an Excel MCP server for .xlsx automation over the Model Context Protocol. It is built for AI agents, MCP clients, and automation workflows that need more than raw cell access: compact structured reads, workbook-aware. The sheetforge mcp mcp server is what makes that connection.

What the server does

  • agent-friendly reads via suggest_read_strategy, describe_dataset, query_table, and aggregate_table
  • safer workbook creation: create_workbook now refuses to overwrite an existing .xlsx
  • smarter worksheet boundaries so compact readers stop at the main contiguous data block and surface trailing-row hints instead of over-reading sparse footer noise
  • workbook and layout awareness via profile_workbook, describe_sheet_layout, list_tables, list_charts, and analyze_range_impact
  • safer local mutation through dry_run, compact write responses, guarded native-table append/upsert flows, and workbook diff/audit/repair loops
  • local-first performance and privacy with openpyxl, no desktop Excel dependency, and no cloud-auth requirement

Installation

sheetforge-mcp on PyPI is all you need. Most clients run it directly, so configuration is a few lines and a restart.

Available tools

The toolset is worth reading before you wire it up, because it tells you what the integration is really for:

  • agent — friendly reads via suggest_read_strategy, describe_dataset, query_table, and aggregate_table
  • local — first performance and privacy with openpyxl, no desktop Excel dependency, and no cloud-auth requirement
  • suggest_read_strategy — recommends the best next read tool for a workbook target, including whether SheetForge should treat it as a native Excel table, a clean worksheet
  • describe_dataset — samples a worksheet or native Excel table and returns headers, schema hints, key-candidate guesses, structural signals, and a recommended follow-up
  • query_table — filters, projects, sorts, and limits worksheet-shaped data or native Excel tables with a declarative JSON query instead of ad hoc cell loops
  • aggregate_table — computes grouped metrics such as count, sum, avg, min, and max over worksheet-shaped data or native Excel tables
  • bulk_aggregate_workbooks — computes the same grouped metrics across many workbook files in one call, with explicit schema handling via strict, intersect, or union
  • bulk_filter_workbooks — returns matching rows across many workbook files with optional source provenance columns, so recurring cross-file QA and reporting checks no longer
  • union_tables — combines comparable worksheet or native-table rows across many workbook files, with optional deduplication keys and explicit schema handling for
  • cross_workbook_lookup — enriches one workbook dataset from one or more lookup workbooks with left-join style matching, optional duplicate-match handling, and compact per-row
  • profile_workbook — one-call inventory for sheets, tables, charts, named ranges, and key layout/protection state, including chart occupied_range for grid-anchored
  • describe_sheet_layout — worksheet-level structural summary for safe dashboard edits, including freeze panes, print settings, merges, chart anchors, table metadata

Credentials and setup notes

Configuration is passed through the environment: EXCEL_FILES_PATH, FASTMCP_HOST. Treat anything key-shaped as a real credential — scope it to the minimum the server needs, and rotate it if it ever lands in a shared config.

  • Python 3.10+ - .xlsx workbooks - either uvx or a local package install

Worth knowing first

  • It runs with your machine's permissions. That is convenient and also the reason to think about what you point it at before you approve a tool call.
  • With 14 tools registered it takes up a noticeable share of the context window; turn it off in projects that never touch Sheetforge MCP.
  • Keep per-call confirmation enabled while you learn its behaviour; it is the cheapest safeguard you have.

Where it fits

Among the developer tooling options, the useful question is rarely "what can it do" but "what does it cost you to run" — permissions, credentials, and how much of your context its toolset consumes. Sheetforge MCP's toolset — agent, local, suggest_read_strategy and 11 more — is a fair guide to whether it matches your workflow. It is maintained by iheldan; worth a glance at recent repository activity before you build anything load-bearing on it.

SyncDev reviews every entry in this directory against the project's own documentation before publishing, and revisits them as servers change.

Available tools

ToolWhat it does
agentfriendly reads via suggest_read_strategy, describe_dataset, query_table, and aggregate_table
localfirst performance and privacy with openpyxl, no desktop Excel dependency, and no cloud-auth requirement
suggest_read_strategyrecommends the best next read tool for a workbook target, including whether SheetForge should treat it as a native Excel table, a clean worksheet dataset, a layout-heavy dashboard sheet, or a chart sheet
describe_datasetsamples a worksheet or native Excel table and returns headers, schema hints, key-candidate guesses, structural signals, and a recommended follow-up read path
query_tablefilters, projects, sorts, and limits worksheet-shaped data or native Excel tables with a declarative JSON query instead of ad hoc cell loops
aggregate_tablecomputes grouped metrics such as count, sum, avg, min, and max over worksheet-shaped data or native Excel tables
bulk_aggregate_workbookscomputes the same grouped metrics across many workbook files in one call, with explicit schema handling via strict, intersect, or union
bulk_filter_workbooksreturns matching rows across many workbook files with optional source provenance columns, so recurring cross-file QA and reporting checks no longer need one-tool-call-per-file loops
union_tablescombines comparable worksheet or native-table rows across many workbook files, with optional deduplication keys and explicit schema handling for workbook collections that drift over time
cross_workbook_lookupenriches one workbook dataset from one or more lookup workbooks with left-join style matching, optional duplicate-match handling, and compact per-row provenance for matched lookup rows
profile_workbookone-call inventory for sheets, tables, charts, named ranges, and key layout/protection state, including chart occupied_range for grid-anchored worksheet charts
describe_sheet_layoutworksheet-level structural summary for safe dashboard edits, including freeze panes, print settings, merges, chart anchors, table metadata, conditional-format and validation counts, custom row/column sizing, and a small
audit_workbookworkbook-level audit for high-signal problems such as broken #REF! formulas, error cells, hidden sheets, header-quality issues, layout-heavy sheets, and named ranges that reference missing sheets
plan_workbook_repairsconverts workbook audit findings into prioritized next steps, including suggested SheetForge tool calls for inspection, safe dry runs, and repair workflows

How to install the Sheetforge MCP MCP server

```json
{
  "mcpServers": {
    "excel": {
      "command": "uvx",
      "args": ["sheetforge-mcp", "stdio"]
    }
  }
}

Configuration as documented by the project. Restart the client after saving.

Configuration

  • Python 3.10+ - .xlsx workbooks - either uvx or a local package install
VariableDescriptionRequired
EXCEL_FILES_PATHFilesystem location the server is allowed to use.Optional
FASTMCP_HOSTEndpoint or connection string the server talks to.Optional

Example prompts to try

  • Use Sheetforge MCP to agent.
  • Use Sheetforge MCP to local.
  • Use Sheetforge MCP to suggest read strategy.

Frequently asked questions

It connects Sheetforge MCP to MCP-compatible AI assistants such as Claude and Cursor, exposing 14 tools (agent, local, suggest_read_strategy, and more) that the assistant can call on your behalf. Instead of copying data back and forth by hand, the assistant works with Sheetforge MCP directly.