SheetForge MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FASTMCP_HOST | No | Bind address for the server process (HTTP and SSE) | 127.0.0.1 |
| FASTMCP_PORT | No | Port for the server process (HTTP and SSE) | 8017 |
| EXCEL_FILES_PATH | No | Base directory for relative workbook paths (HTTP and SSE) | ./excel_files |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| apply_formulaC | Apply Excel formula to cell. Excel formula will write to cell with verification. |
| validate_formula_syntaxA | Validate Excel formula syntax without applying it. |
| inspect_formulaA | Inspect a formula string for functions, references, and risky signals. |
| format_rangeC | Apply formatting to a range of cells. Colors accept RRGGBB, #RRGGBB, AARRGGBB, or #AARRGGBB. |
| format_rangesC | Apply formatting to multiple ranges in a single workbook pass. Colors accept RRGGBB, #RRGGBB, AARRGGBB, or #AARRGGBB. |
| read_range_formattingC | Read a compact formatting summary for a worksheet range. |
| read_data_from_excelA | |
| read_excel_as_tableA | |
| quick_readA | Read a compact table from an explicit sheet or the first workbook sheet. Can return either array rows or object-shaped records, plus optional schema hints inferred from the returned rows. |
| describe_datasetC | Summarize a worksheet or native Excel table for agent-friendly orientation. |
| suggest_read_strategyA | Recommend the best SheetForge read tool for the requested workbook target. |
| query_tableB | Filter, project, sort, and limit worksheet or table data. Filters support eq/neq/ne, comparisons, string matching, blank checks, and in/not_in with value or values. |
| bulk_filter_workbooksA | Filter comparable worksheet or table data across multiple workbooks. Uses the same filter operators and aliases as query_table. |
| union_tablesC | Union comparable worksheet or table data across multiple workbook files. |
| cross_workbook_lookupC | Enrich one workbook dataset from matching rows in one or more lookup workbooks. |
| aggregate_tableB | Compute grouped metrics over worksheet-shaped data or a native Excel table. |
| bulk_aggregate_workbooksC | Aggregate comparable worksheet or table data across multiple workbooks. |
| read_excel_tableA | Read a native Excel table by its table name. Supports compact table payloads, object-shaped record output, and optional inferred schema hints. |
| write_data_to_excelC | |
| create_workbookA | Create a new Excel workbook with an optional initial worksheet name. |
| create_worksheetB | Create new worksheet in workbook. |
| create_chartA | Create chart in worksheet from a contiguous range or explicit series. |
| create_chart_from_seriesB | Create a chart from explicit series definitions for non-contiguous ranges. |
| list_chartsA | List embedded charts in a workbook or worksheet. |
| find_free_canvasC | Suggest free worksheet slots for charts or dashboard blocks. |
| create_pivot_tableC | Create pivot table in worksheet. |
| create_tableB | Creates a native Excel table from a specified range of data. |
| list_tablesA | List native Excel tables for one worksheet or the whole workbook. |
| copy_worksheetB | Copy a worksheet with tables, rules, charts, names, and layout settings. |
| delete_worksheetC | Delete worksheet from workbook. |
| rename_worksheetC | Rename worksheet in workbook. |
| get_workbook_metadataB | Get metadata about workbook including sheets, ranges, etc. |
| describe_sheet_layoutB | Return a structural worksheet layout summary for safe dashboard-style edits. |
| analyze_range_impactA | Inspect workbook structures that overlap a worksheet range before mutation. |
| explain_formula_cellA | Explain a formula cell's direct references, upstream formula chain, and downstream dependents. |
| detect_circular_dependenciesC | Detect circular workbook formula dependencies, including self-references. |
| profile_workbookB | Return a compact workbook inventory with sheets, tables, charts, and layout state. |
| audit_workbookC | Audit workbook structure for high-signal issues that affect agent workflows. |
| plan_workbook_repairsB | Turn workbook audit findings into prioritized next steps for SheetForge workflows. |
| apply_workbook_repairsC | Apply safe workbook repair actions with dry-run planning and before/after diff output. |
| apply_workbook_changesetA | Preview or commit an assertion-backed group of workbook mutations as one transaction. |
| diff_workbooksA | Diff two workbook files and report structural changes plus sampled cell-value changes. |
| create_workbook_snapshotB | Create a verified workbook snapshot without overwriting an existing file. |
| create_named_rangeB | Create a workbook-level or sheet-scoped named range. |
| inspect_named_rangeA | Inspect a named range, including scope, destinations, and broken-reference signals. |
| list_named_rangesA | List workbook defined names and their destinations. |
| delete_named_rangeB | Delete a workbook-level or sheet-scoped named range. |
| merge_cellsC | Merge a range of cells. |
| unmerge_cellsC | Unmerge a range of cells. |
| get_merged_cellsB | Get merged cells in a worksheet. |
| freeze_panesC | Set or clear worksheet freeze panes. |
| set_autofilterB | Set worksheet autofilter for an explicit or inferred range. |
| set_worksheet_visibilityA | Set worksheet visibility to visible, hidden, or veryHidden. |
| get_worksheet_protectionB | Get worksheet protection status and option flags. |
| set_worksheet_protectionB | Enable or disable worksheet protection with optional capability flags. |
| set_print_areaB | Set or clear worksheet print area. |
| set_print_titlesA | Set, preserve, or clear repeating print title rows and columns. |
| set_column_widthsC | Set explicit widths for one or more worksheet columns. |
| autofit_columnsC | Auto-fit worksheet columns based on content width. |
| set_row_heightsB | Set explicit heights for one or more worksheet rows. |
| copy_rangeC | Copy a range of cells to another location. |
| delete_rangeB | Delete a range of cells and shift remaining cells. |
| validate_excel_rangeC | Validate if a range exists and is properly formatted. |
| get_data_validation_infoB | |
| inspect_data_validation_rulesC | Inspect worksheet data validation rules with stable rule indexes. |
| remove_data_validation_rulesA | Remove worksheet data validation rules by index or remove all broken ones. |
| inspect_conditional_format_rulesA | Inspect worksheet conditional formatting rules with stable rule indexes. |
| remove_conditional_format_rulesA | Remove worksheet conditional formatting rules by index or remove all broken ones. |
| insert_rowsB | Insert one or more rows starting at the specified row. |
| insert_columnsB | Insert one or more columns starting at the specified column. |
| delete_sheet_rowsC | Delete one or more rows starting at the specified row. |
| delete_sheet_columnsA | Delete one or more columns starting at the specified column. |
| search_in_sheetD | Search for cells matching a value in a worksheet. |
| list_all_sheetsA | List all sheets in a workbook with row/column counts. Quick overview before reading data. |
| append_table_rowsB | Append dictionary-shaped rows by matching worksheet headers on a worksheet dataset. |
| append_excel_table_rowsA | Append rows to a native Excel table and expand its range safely. |
| upsert_excel_table_rowsB | Update matching rows in a native Excel table and append missing keys. |
| update_rows_by_keyC | Update existing table rows using a named key column. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 78 tools
There are multiple overlapping clusters—four read/table tools, duplicate data-validation inspectors, and similar append/upsert row tools—so an agent can easily choose the wrong one. The descriptions help somewhat, but boundaries between generic worksheet reads and native-table reads, or between worksheet-row updates and Excel-table updates, remain fuzzy.
The vast majority of tools follow a clear verb_noun snake_case pattern (create_*, list_*, set_*, delete_*, inspect_*), which helps navigation. Minor deviations such as quick_read and cross_workbook_lookup, plus a few read_* variants, prevent a perfect score.
With 78 tools, the surface is far above the 3–15 well-scoped band and qualifies as an extreme mismatch. Many tools are micro-variants or batch wrappers (format_range/format_ranges, query_table/bulk_filter_workbooks), bloating the agent's selection space.
Core workbook, worksheet, range, formula, table, and row/column workflows are well covered, including audit and repair operations. However, lifecycle coverage is uneven: charts, pivot tables, and native tables have no delete path, and data validation/conditional formatting can be inspected or removed but not created, leaving several workflows with dead ends.