Skip to main content
Glama

Why

GridCraft is an open-source, Excel-class spreadsheet app with a headless CLI (gridcraft-cli), 339 commands, 513 worksheet functions (dynamic arrays included), XLSX as its native format and an MCP mode. This Model Context Protocol server turns that engine into file-in / file-out tools for Claude, so you can ask things like:

"Build a monthly budget workbook with formulas, a summary sheet and a chart, as XLSX and PDF." "Read sales.xlsx and tell me the total by region and the best month." "Add a PivotTable of revenue by region and product to this workbook." "In every workbook in D:\Reports, replace '2025' with '2026' and save copies." "Convert this CSV to Excel with a formatted table, and every workbook in this folder to CSV."

Sibling of designcraft-mcp-server, effectcraft-mcp-server, lightcraft-mcp-server, photocraft-mcp-server, vectorcraft-mcp-server, filmcraft-mcp-server, pdfcraft-mcp-server, wordcraft-mcp-server, soundcraft-mcp-server, deckcraft-mcp-server and audacity-mcp-server.

Related MCP server: BachStudio Excel MCP Server

Platforms

OS

GridCraft package to install

Where the server finds it (no setup needed)

Status

Windows 10/11 (x64, x86, arm64)

MSI or portable zip

C:\Program Files\GridCraft, %LOCALAPPDATA%\Programs\GridCraft, PATH

โœ… Verified (Windows 11)

Linux (x86_64, aarch64, riscv64)

.deb, .rpm or .tar.gz

/usr/bin, /usr/local/bin, /opt/gridcraft/bin, ~/.local/bin, PATH

โœ… Verified (Debian 12, headless)

macOS 11+ (Apple silicon and Intel)

.dmg (the app) plus gridcraft-cli-<version>-macos-universal.zip

/Applications/GridCraft.app, /usr/local/bin, /opt/homebrew/bin, ~/.local/bin, ~/bin, PATH

๐ŸŸก Supported, not yet tested on a Mac

All downloads: GridCraft releases (there is also a FreeBSD tar.gz; set GRIDCRAFT_DIR to it). Anywhere else: set GRIDCRAFT_DIR (folder, .tar.gz root or GridCraft.app) or GRIDCRAFT_CLI.

  • macOS: the DMG contains only the app. Unzip the separate gridcraft-cli zip and move gridcraft-cli to /usr/local/bin (or point GRIDCRAFT_CLI at it). The first run checks Apple's notarization online.

  • Linux: the AppImage and Flatpak contain only the app, not gridcraft-cli; use the deb, rpm or tar.gz. For an AppImage app, set GRIDCRAFT_APP so open_in_gridcraft can start it. On a server without a GPU, the verified setup used libxkbcommon0 libvulkan1 libegl1 mesa-vulkan-drivers libasound2 fontconfig.

How it works

Part

What it is

GridCraft engine (gridcraft-cli mcp)

GridCraft's own engine: cells, the calculation engine with 513 functions, styles, number formats, tables, conditional formats, validation, charts, PivotTables and the XLSX / CSV / JSON / HTML / PDF writers. Started fresh and headless for each job, so it never touches the GridCraft app or an open workbook.

MCP server (Node.js)

9 high-level tools. Builds workbooks from a simple description of sheets (data and formulas, header, table, totals row, formats, rules, charts), names PivotTable sheets, checks every output first and returns the computed values of the first rows of every sheet plus any formula errors, so the assistant sees what the formulas give.

Live app (optional)

open_in_gridcraft control=true starts the app with its loopback-only control channel (port 7979) and run_gridcraft_commands live=true drives it. Close the app when you are done.

Tools

Tool

What it does

create_workbook

A new workbook (or a sample: budget, sales, grades) from sheets: values and formulas, header styling, Excel tables, totals rows, number formats, fonts, colours, borders, merges, conditional formatting (highlights, data bars, colour scales, icon sets), drop-down lists, notes, charts (17 types), frozen panes, print setup; PivotTables; theme and properties

edit_workbook

One workbook, a list or a folder: write values and formulas, find and replace, insert or delete rows and columns, sort, remove duplicates, add, rename or delete sheets, formats, conditional formats, tables, charts, PivotTables; written as a new copy

read_workbook

Computed values, formulas or display text of a range or sheet, and formulas evaluated against the workbook without changing it

convert_workbook

One workbook, a list or a folder โ†’ xlsx, csv, tsv, json, html, pdf (one sheet or every sheet)

get_workbook_info

Sheets with used ranges, tables, charts, merges, filters, frozen panes, rules, validations, notes; defined names; first rows as computed values; formula errors

list_gridcraft_catalog

339 commands with parameters, 513 worksheet functions with signatures, chart types, samples, formats

run_gridcraft_commands

Any engine commands plus write_range, read_range, set_cell, evaluate_formula, format_range, insert_chart... in one session ($steps[N].field references), headless or live, then save

open_in_gridcraft

Open workbooks (or a sample) in the GridCraft app, optionally with the control channel

get_gridcraft_status

Platform, installation, version, commands, functions, app / control port

Opens

xlsx, xlsm, xls (values, formulas, number formats), xlsb and ods (data), csv, tsv, txt, json

Saves

xlsx (every sheet, formulas, styles, tables, charts, PivotTables), csv, tsv, json, html, pdf

Cells use A1 notation (B2, A1:D10); quote sheet names with spaces in formulas ('My sheet'!A1). Strings starting with = are formulas; text like 12% or 2026-03-01 is read as typed.

Example

{
  "name": "Sales 2026",
  "sheets": [
    {
      "name": "Data",
      "data": [
        ["Region", "Product", "Units", "Price", "Total"],
        ["North", "A", 10, 12.5, "=C2*D2"],
        ["South", "A", 8, 12.5, "=C3*D3"],
        ["North", "B", 12, 20, "=C4*D4"],
        ["South", "B", 9, 20, "=C5*D5"]
      ],
      "table": true,
      "totals_row": ["none", "none", "sum", "average", "sum"],
      "formats": [{ "range": "D2:E6", "number_format": "Currency" }],
      "conditional_formats": [{ "range": "E2:E5", "type": "data_bar" }],
      "validations": [{ "range": "A2:A5", "list": ["North", "South", "East", "West"] }],
      "charts": [{ "range": "A1:A5", "type": "column", "title": "Units", "at": "G2" }]
    },
    {
      "name": "By region",
      "data": [["Region", "Total"], ["North", "=SUMIFS(Data!E:E,Data!A:A,A2)"], ["South", "=SUMIFS(Data!E:E,Data!A:A,A3)"]],
      "formats": [{ "range": "B2:B3", "number_format": "Currency" }],
      "charts": [{ "range": "A1:B3", "type": "pie", "title": "Sales by region", "at": "D2" }]
    }
  ],
  "pivots": [{ "source": "Data!A1:E5", "rows": ["Region"], "columns": ["Product"], "values": [{ "field": "Total", "func": "sum" }] }],
  "formats": ["xlsx", "pdf"],
  "output_dir": "C:\\Sheets"
}

Requirements

  • GridCraft with gridcraft-cli (tested with 0.6.1); see Platforms

  • Node.js โ‰ฅ 20 (bundled with Claude Desktop for .mcpb installs)

Installation

  1. Download gridcraft-mcp-server.mcpb from the latest release.

  2. Double-click it (or drag it into Claude Desktop โ†’ Settings โ†’ Extensions) and click Install.

  3. Optional: if GridCraft is not in a standard location, fill in its folder or the gridcraft-cli path in the extension settings.

Sunsam Code

Install GridCraft Bridge from the Sunsam Code marketplace, or drop the .mcpb into MCP โ†’ Install extension.

Codex (OpenAI)

Recommended โ€” the marketplace (gets updates): Plugins โ†’ Add โ†’ Add marketplace, source jhonsu01/craft-marketplace, reference main, then install GridCraft Bridge from Craft Bridges (craft-marketplace). New versions arrive by refreshing the marketplace. Or upload the zip (Codex then keeps it in your account and refuses a newer zip with the same name):

  1. Download gridcraft-mcp-server-<version>-codex.zip from the latest release.

  2. In Codex: Plugins โ†’ Add โ†’ New plugin, choose the zip and click Add plugin.

  3. Codex starts the server with node, so Node.js โ‰ฅ 20 must be on PATH. If GridCraft is not in a standard location, set GRIDCRAFT_DIR or GRIDCRAFT_CLI as system environment variables (Codex has no settings form for local plugins).

DeepSeek Harness

  1. Plugins โ†’ Add plugin, enter github:jhonsu01/craft-marketplace#path:/plugins/gridcraft-mcp-server and click Install, then Enable now.

  2. Harness runs the server with its own MCP client and node (Node.js โ‰ฅ 20 on PATH); the tools appear as mcp__gridcraft__<tool> and the output files as cards that open in Harness.

  3. Harness does not update plugins by itself yet: to upgrade, uninstall the plugin and install it again with the same address.

Claude Code / other MCP clients

git clone https://github.com/jhonsu01/gridcraft-mcp-server.git
cd gridcraft-mcp-server
npm install
npm run build

Windows:

claude mcp add gridcraft -- node "%CD%\dist\bundle.cjs"

macOS / Linux:

claude mcp add gridcraft -- node "$PWD/dist/bundle.cjs"

Configuration

Variable

Meaning

GRIDCRAFT_DIR

GridCraft folder, one of its executables, a .tar.gz root (with bin/) or GridCraft.app. Default: auto-detect

GRIDCRAFT_CLI

Path of gridcraft-cli / gridcraft-cli.exe (wins over GRIDCRAFT_DIR)

GRIDCRAFT_APP

Path of the desktop app when it lives elsewhere (e.g. a Linux AppImage)

GRIDCRAFT_CONTROL_PORT

Control port of the desktop app (default 7979)

GRIDCRAFT_MCP_TIMEOUT

Maximum seconds per engine call (default 3600)

Safety

  • Files are never overwritten unless overwrite: true: a free name (_2) is used in folders and an existing output_path is an error. Inputs are only read; an edited file is saved only as a new copy (_edited).

  • All paths must be absolute. The engine runs headless and never touches the GridCraft app unless live: true.

  • Everything runs locally with no network access. Each job uses a private engine in a temporary folder that is deleted at the end.

Development

npm run build       # TypeScript + single-file bundle (dist/bundle.cjs)
npm test            # unit tests (Windows, macOS and Linux path logic)
npm run test:e2e    # 25 end-to-end checks (27 with `E2E_LIVE=1`) over real MCP stdio (synthetic CSV)
npm run pack:mcpb   # gridcraft-mcp-server.mcpb
npm run pack:codex  # Codex / DeepSeek Harness plugin zip

Linux test in Docker (unpack gridcraft-<version>-linux-x86_64.tar.gz first):

docker run --rm -v "$PWD:/work:ro" -v "/path/to/gridcraft-0.6.1-linux-x86_64:/opt/gridcraft:ro" -e GRIDCRAFT_DIR=/opt/gridcraft -w /work node:22-bookworm bash -c "apt-get update && apt-get install -y libxkbcommon0 libvulkan1 libegl1 mesa-vulkan-drivers libasound2 fontconfig && node scripts/e2e.mjs"

License

Apache-2.0. GridCraft is ยฉ its authors (Storytold), MIT or Apache-2.0. This project is not affiliated with or endorsed by GridCraft or Storytold. Excel is a trademark of Microsoft.

Available Tools

9 tools
convert_workbookConvert spreadsheetsA

Convert workbooks (xlsx, xlsm, xls, xlsb, ods, csv, tsv, json; one, a list or a folder) to xlsx, csv, tsv, json, html or pdf (csv / tsv / pdf: the first sheet, or every sheet as its own file with all_sheets).

ParametersJSON Schema
NameRequiredDescriptionDefault
suffixNo
formatsNoOutputs: xlsx (Excel, every sheet, formulas, styles, tables, charts), csv / tsv (values of one sheet), json, html and pdf (one sheet, print layout).
input_dirNo
overwriteNoReplace existing outputs.
all_sheetsNocsv / tsv / pdf: write every sheet as its own file (<name>_<sheet>.csv) instead of only the first sheet.
input_pathNo
output_dirNoAbsolute output folder (default: next to the input; required for new files).
input_pathsNo
output_pathNoAbsolute output file for the first format (its extension must match).

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, so the agent already knows this writes files without being flagged destructive. The description adds that inputs may be one file, a list, or a folder, but says nothing about overwrite semantics, whether output files are preserved by default, or side effects on the source workbook.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that goes inputs โ†’ outputs โ†’ option semantics, with nothing wasted. The nested parentheticals make it dense but every clause carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter, mostly-optional conversion tool with no output schema, the description covers the essentials an agent needs to invoke it: accepted inputs, target formats, and the one non-obvious output-shaping flag. Remaining gaps (suffix, output pathing, overwrite) are defaults the schema surfaces.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

At 56% schema coverage, several parameters (suffix, output_path, output_dir, overwrite) are undocumented in both places. The description does add real meaning for the plurality of the input ('one, a list or a folder' maps to input_path/input_paths/input_dir) and for the all_sheets output naming, but only partially compensates for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (convert) and resource (workbooks) and enumerates both the accepted input formats and the producible output formats, which no sibling (create/edit/read_workbook) does. An agent can pick this tool over its siblings without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The format matrix effectively delimits when this tool applies and the parenthetical explains the all_sheets decision point for csv/tsv/pdf. It stops short of explicit alternatives or when-not-to-use guidance (e.g. use read_workbook to merely inspect), so it is clear context rather than full routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_workbookCreate a spreadsheetA

Build an Excel workbook with GridCraft (an Excel-class spreadsheet app): sheets of data and live formulas (500+ Excel functions, dynamic arrays), header styling, tables with filter buttons, totals rows, number formats, fonts, colours, borders, merged cells, conditional formatting (highlights, data bars, colour scales, icon sets), drop-down lists, notes, charts (17 types), PivotTables, frozen panes and print setup. Saves xlsx, csv, tsv, json, html or pdf and returns the computed values of the first rows of every sheet (and any formula errors) to check the result. Or start from a sample: budget, sales, grades.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFile name without extension.workbook
themeNo
titleNoDocument title (properties).
authorNo
pivotsNoPivotTables, made after the sheets.
sampleNoStart from a built-in sample workbook instead of a blank one.
sheetsNo
formatsNoOutputs: xlsx (Excel, every sheet, formulas, styles, tables, charts), csv / tsv (values of one sheet), json, html and pdf (one sheet, print layout).
overwriteNoReplace existing outputs.
all_sheetsNocsv / tsv / pdf: write every sheet as its own file (<name>_<sheet>.csv) instead of only the first sheet.
output_dirNoAbsolute output folder (default: next to the input; required for new files).
output_pathNoAbsolute output file for the first format (its extension must match).

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, and the description is consistent with them by describing a write operation that produces files. It adds behavioral value beyond the annotations by disclosing that the tool returns the computed values of the first rows of every sheet and any formula errors as a verification mechanism, though it says nothing about overwrite semantics or size limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and capped at three sentences, and the feature catalogue genuinely signals what can be accomplished in a single call rather than via follow-up edits. The middle sentence is a long comma-spliced list of capabilities, which is dense but still earns its place for a 12-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and 12 parameters at 75% schema coverage, the description covers output formats, sample starting points and return values (computed first rows plus formula errors), which is enough to call the tool correctly. It omits guidance on how this differs from the edit/convert siblings, which is the main remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75%, so the schema already documents most parameters including formats, sample enums, output_dir and overwrite. The description paraphrases the format options and sample names but adds no syntax or format details beyond what the schema provides (e.g. how output_path must match the first format is only in the schema), so a baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Build an Excel workbook with GridCraft") and clarifies it is a creation tool that can also start from a sample. Sibling differentiation from edit_workbook/read_workbook is only implied by the word "build"; the description never names those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance relative to edit_workbook, convert_workbook or open_in_gridcraft, which are all plausible alternatives for an agent holding an existing file. The only contextual hint is optional ("Or start from a sample"), leaving routing entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edit_workbookEdit spreadsheetsA

Open workbooks (xlsx, xlsm, xls, xlsb, ods, csv, tsv; one, a list or a folder) and change them: write values and formulas, find and replace, insert or delete rows and columns, sort, remove duplicates, add, rename or delete sheets, apply formats, conditional formatting, tables, charts and PivotTables. Saved as new copies; the originals are only read.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNo
writeNo
chartsNo
pivotsNo
suffixNo_edited
tablesNo
formatsNoCell formats (on `sheet`, default the first sheet).
replaceNo
input_dirNo
overwriteNoReplace existing outputs.
add_sheetsNo
all_sheetsNocsv / tsv / pdf: write every sheet as its own file (<name>_<sheet>.csv) instead of only the first sheet.
input_pathNo
output_dirNoAbsolute output folder (default: next to the input; required for new files).
input_pathsNo
output_pathNoAbsolute output file for the first format (its extension must match).
rows_columnsNo
delete_sheetsNo
rename_sheetsNo
output_formatsNoOutputs (default xlsx).
remove_duplicatesNo
conditional_formatsNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=false and readOnlyHint=false, so the safety profile is covered. The description adds genuinely non-derivable behavior: inputs may be one file, a list, or a folder, and results are written as new copies while originals are only read. It omits the default output suffix/overwrite semantics and any limit or failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the verb and resource, and the long capability enumeration earns its length by covering a very broad feature surface. The chained list is dense but not padded or repetitive.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 22-parameter tool with no output schema and only modest annotations, the description covers formats, input multiplicity and the copy-not-mutate behavior, which are the essentials. It still leaves the agent guessing about output paths/naming defaults, how conflicting operations in one call are ordered, and coverage of the several parameters the schema leaves undocumented.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 27%, so the schema cannot carry the burden for 22 parameters. The description partially compensates by naming operation categories that map onto the parameter set (write/replace/rows_columns/sort/remove_duplicates/add_sheets/tables/charts/pivots/formats/conditional_formats), but it gives no syntax or per-parameter semantics, and key parameters such as input_path vs input_paths vs input_dir vs output_dir are never disambiguated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb pair (open and change) plus the resource (workbooks) and enumerates the exact mutation families supported (write, replace, rows/columns, sort, dedupe, sheets, formats, tables, charts, pivots). That enumeration makes it unmistakably distinct from its siblings create_workbook, read_workbook and convert_workbook without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the operation list tells an agent this is the tool for modifying spreadsheets, and 'saved as new copies' hints that in-place edits are not a concern. Nothing states when to prefer this over convert_workbook or run_gridcraft_commands, and no preconditions or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_gridcraft_statusGridCraft statusA
Read-onlyIdempotent

Check the GridCraft installation: platform, executables, version, engine commands, worksheet functions, formats, whether the app is running / listening for control.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and closed-world scope, so the safety profile is fully covered without the description. The description adds modest context by revealing that it probes live state ('whether the app is running / listening for control'), but says nothing about cost, latency, or failure modes when no installation exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence, front-loaded with the verb and resource, followed by a colon-separated inventory of what is checked. The list is dense but every item earns its place given the absence of an output schema; nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully compensates by enumerating the categories of information returned (platform, version, executables, commands, functions, formats, running state). Zero parameters and full annotation coverage mean little else is required; only the shape/format of the returned data is left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies. No parameter text is needed or missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb ('Check') and resource ('the GridCraft installation') and enumerates the exact facets inspected: platform, executables, version, engine commands, worksheet functions, formats, running/listening state. This clearly separates it from siblings like get_workbook_info or list_gridcraft_catalog, though it never names those alternatives explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Use is only implied: the enumerated diagnostic output suggests 'run this to see whether GridCraft is installed and running before invoking open_in_gridcraft or run_gridcraft_commands,' but the description never states when to use it, when not to, or what alternative to pick instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_workbook_infoWorkbook infoC
Read-onlyIdempotent

Sheets of a workbook with used ranges, tables, charts, merges, filters, frozen panes, defined names, the first rows of each sheet as computed values, and every formula that returns an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
input_pathYes
preview_rowsNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive behavior, so the safety profile is covered. The description adds useful output-content context (used ranges, tables, charts, error formulas), but says nothing about cost, permissions, or failure modes on a bad path.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence with no filler; the most concrete inventory items are front-loaded. It is slightly list-heavy and would benefit from a leading verb, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-value burden and does a reasonable job enumerating what comes back. However, it omits how the workbook is identified (input_path semantics), the preview row cap, and any error behavior, leaving gaps for a 2-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry both parameters. It partially compensates by implying preview rows ('the first rows of each sheet'), but never ties this to the preview_rows parameter, its default of 10, or its max of 100, and input_path is entirely unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is a noun-phrase inventory of returned contents rather than a verb+resource statement, so it never states plainly that this tool retrieves workbook metadata/contents. It conveys the resource scope well enough, but nothing distinguishes it from the sibling read_workbook, which an agent must guess between.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisite (e.g., the workbook must be open or on disk), and no mention of read_workbook or any other sibling as an alternative. The agent is left to infer the choice entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_gridcraft_catalogList commands, functions, charts, samples, formatsA
Read-onlyIdempotent

What GridCraft can do: commands (the engine commands with parameters and ribbon place, for run_gridcraft_commands), functions (the worksheet functions with signature and description), charts (chart types), samples (built-in sample workbooks) and formats.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
filterNoCase-insensitive text to match (id, label, name, category or description).

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so a 3 is the appropriate ceiling. The description usefully reveals what each entry carries (commands include parameters and ribbon place; functions include signature and description), which helps an agent know what it gets back, but says nothing about result size, filtering behavior, or empty-match handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that packs all five catalog categories without filler. The nested parentheticals make it dense, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, two-parameter catalog tool with no output schema, the description covers every kind an agent can request and what each contains, and the annotations carry the safety profile. Nothing essential for invoking it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%: 'kind' has no description (only an enum) and 'filter' is documented in the schema. The description compensates partially by explaining what each 'kind' value yields, but it never clarifies the 'kind' selector itself or how 'filter' interacts with it, so it adds only modest meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description enumerates exactly what the catalog covers (commands, functions, charts, samples, formats) and ties 'commands' to the sibling run_gridcraft_commands, which cleanly separates it from the execution tool. It is a bit indirect โ€” 'What GridCraft can do' never says 'list' or 'retrieve' โ€” but the resource and scope are unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: pointing at run_gridcraft_commands for commands suggests this is the discovery step before execution, but there is no explicit when-to-use or when-not-to-use statement, and no guidance that 'kind' selects the subset returned. The relationship to the sibling is the only routing signal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_in_gridcraftOpen in GridCraftA

Open workbooks in the GridCraft desktop app to keep working by hand. With control=true the app also starts its loopback-only control channel so run_gridcraft_commands live=true can drive it.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathsNoAbsolute workbooks to open.
sampleNoOpen a built-in sample instead.
controlNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the mutation/safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false). The description adds genuinely non-obvious behavior: with control=true the app opens a loopback-only control channel, which is both a network-surface disclosure and a prerequisite for another tool. That is real context beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste, front-loaded with the core action before the control-channel detail. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-required-param launch tool with no output schema and no nested objects, the description covers the action, the interactive purpose, and the one undocumented flag's side effect. The sample parameter's behavior is left to the schema, which is acceptable but keeps this from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%; paths and sample are documented in the schema, but the control boolean has no schema description. The description compensates by explaining exactly what control=true does and why it matters (enabling live command driving), which is the highest-value gap to fill.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (open workbooks in the GridCraft desktop app) and clarifies the intent ('to keep working by hand'), which distinguishes it from the read/edit/convert siblings that operate without launching the app. It stops short of naming a sibling alternative for headless use, but the resource and mode are unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear use context (interactive work in the desktop app) and a concrete condition for the control flag that gates a downstream tool (run_gridcraft_commands live=true). It does not state when NOT to use this versus e.g. read_workbook, but the interactive-vs-programmatic split is implied well enough to route correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_workbookRead and calculateA
Read-onlyIdempotent

Read a workbook (xlsx, xlsm, xls, xlsb, ods, csv, tsv, json): computed values, formulas or display text of a range or sheet, and evaluate formulas against it without changing anything (e.g. "=SUMIFS(D:D,A:A,"North")", "=AVERAGE(Sales!C2:C99)").

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNovalues (computed), formulas (formula text where there is one) or formatted (as displayed, number formats applied).values
rangeNoA1 range (default: the used range).
sheetNoDefault: the first sheet.
evaluateNoFormulas to evaluate on the sheet.
max_rowsNo
input_pathYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description reinforces this with 'without changing anything' and adds that formula evaluation happens against the workbook without persisting, plus the supported format set and evaluation examples, which is useful context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence with the read action front-loaded and examples parenthesized at the end. The format list is long but earns its place by scoping the tool; no filler text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should say something about the return shape (e.g. how a range or evaluated formula result comes back), and it does not. For a 6-parameter tool it also omits max_rows truncation semantics, so it is adequate but leaves real gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% and the description restates the three mode meanings, range/sheet targeting, and the evaluate expressions, matching the schema's own wording without adding format or syntax detail. max_rows and the truncation/limit behavior are not mentioned anywhere in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (read) and resource (workbook), enumerates the supported file formats, and lists the three output modes and the formula-evaluation capability. Combined with the closing 'without changing anything', an agent can distinguish it from create_workbook, edit_workbook, and convert_workbook without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage ('read', 'evaluate formulas ... without changing anything') and shows example evaluation expressions, but never states when to prefer this tool over get_workbook_info or open_in_gridcraft, nor any prerequisite or exclusion. Usage is inferable rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_gridcraft_commandsRun GridCraft engine commandsA
Destructive

Advanced: run any GridCraft engine commands in order (cell., home., insert., formulas., data., review., view., pageLayout., chart., table., pivot., sheet....) plus the engine tools write_range / read_range / set_cell / get_cell / evaluate_formula / format_range / insert_chart / create_table / sort_range / filter / select / inspect_workbook (step id = the tool name), on a new, sample or opened workbook, then save. Parameters can use "$steps[N].field" for a value returned by step N (0-based). With live=true the steps drive the open GridCraft app instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
liveNoDrive the open GridCraft app (control port 7979) instead of a headless engine.
nameNogridcraft
stepsNo
sampleNoStart from a sample when there is no open_path.
formatsNoSave the result (needs output_dir or output_path).
open_pathNoAbsolute workbook to open first (never saved over; save a copy with formats).
overwriteNo
all_sheetsNo
output_dirNo
output_pathNo
stop_on_errorNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false, and non-idempotency, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the $steps[N].field cross-step reference syntax, that live=true drives the open app, and that commands run sequentially with a save at the end. It does not, however, explain failure handling or exactly what is destroyed/overwritten.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The action is front-loaded and nearly every clause carries information (command families, delegated tools, step-id convention, $steps reference, live mode). It is dense and runs long as essentially one sentence, which hurts scanability slightly, but there is little filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter composite runner with no output schema, the description conveys the core execution model (ordered steps, engine tool steps, source workbook options, save step, live mode) so an agent can call it correctly. Gaps remain around error handling, overwrite behavior, and the output_dir/output_path pairing, keeping it short of a full 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 36%, so the description must compensate. It does clarify live, sample, the steps/id model, and the $steps[N] reference syntax (which is not in the schema), but leaves name, overwrite, all_sheets, output_dir, output_path, and stop_on_error unaddressed. Partial compensation warrants the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('run any GridCraft engine commands in order') and makes the batch/composite nature explicit by enumerating the command families (cell.*, home.*, etc.) and the engine tools it can delegate to. An agent can immediately distinguish this general-purpose executor from single-operation siblings like create_workbook or edit_workbook.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Advanced:' prefix and the description of operating on a new/sample/opened workbook imply context, and mentioning that it saves afterward gives a hint of when to reach for it. However, it never explicitly says when to prefer this batch tool over the plain sibling tools (create_workbook, edit_workbook, read_workbook), leaving the choice to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv1.0.0
    • First observedconvert_workbook
    • First observedcreate_workbook
    • First observededit_workbook
    • First observedget_gridcraft_status
    • First observedget_workbook_info
    • First observedlist_gridcraft_catalog
    • First observedopen_in_gridcraft
    • First observedread_workbook
    • First observedrun_gridcraft_commands

TDQS

A3.7/5.0

Scored across 9 tools

Disambiguation4/5

Most tools have clearly distinct purposes (create/edit/read/convert a workbook). However, run_gridcraft_commands is a low-level catch-all that functionally overlaps with create_workbook and edit_workbook, and list_gridcraft_catalog partially overlaps with get_gridcraft_status for listing commands/functions/formats. Descriptions help but boundaries are not entirely crisp.

Naming Consistency4/5

All names use snake_case and start with a verb, with a predictable verb_noun pattern for core operations. open_in_gridcraft breaks the pattern by inserting a preposition, and the info/status tools use a longer verb_domain_noun form, but consistency is still high.

Tool Count5/5

9 tools is well within the ideal range for a spreadsheet server; each tool maps to a distinct lifecycle stage (create, read, edit, convert, inspect, open, advanced control, discovery, health). No tool feels redundant or missing from a count perspective.

Completeness5/5

The surface covers the full create-read-edit-convert-inspect cycle plus live app control and advanced command execution. No obvious operational gap for an Excel-class workbook toolset; file deletion is out of scope and likely intentional.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides Excel file manipulation capabilities without requiring Microsoft Excel installation, enabling workbook creation, data manipulation, formatting, and advanced Excel features.
    10
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to create, read, write, and manipulate Excel files (.xlsx, .xlsm) without requiring Microsoft Excel, including support for charts, pivot tables, data import/export, and professional formatting across Windows, macOS, and Linux.
    27 npm
    34
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables reading and writing of values, formulas, and formatting in Microsoft Excel files including .xlsx and .xlsm formats. It supports sheet management, table creation, and provides Windows-exclusive features like live editing and screen capture.
    8,031 npm
    MIT