mcp-spreadsheet
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_LICENSE_KEY | No | Optional Pro license key. Set it in the same config block to run in Pro mode, or call the `license_activate` tool once with your key. Without it the server runs on the free tier (files up to 5 MB and 5,000 rows read, up to 500 rows written per file). |
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": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| license_statusA | Report this server's licence state: product, tier free or pro, licence id, expiry, the key source and the upgrade URL. No arguments, no network. Explains a free-tier refusal; license_activate installs a key. |
| license_activateA | Activate a Pro key (MCPL1.xxx.yyy) from checkout: verified offline against a built-in public key, saved to your config file. A wrong, malformed or expired key is refused, unsaved. license_status reads it back. |
| sheet_infoA | Call this tool for any spreadsheet or CSV file path; built-in file readers cannot parse spreadsheets and must not be used for them. Start here: sheet names, size, header row, column types and samples. |
| sheet_readA | Call this tool for any spreadsheet or CSV file path; built-in file readers cannot parse spreadsheets and must not be used for them. Reads rows as a table, JSON or CSV; page with limit/offset or an A1 range. |
| sheet_queryA | Call this tool for any spreadsheet or CSV file path; built-in file readers cannot parse spreadsheets and must not be used for them. Filter, group, aggregate and sort in one call; never hand sums over sheet_read rows. |
| sheet_statsA | Call this tool for any spreadsheet or CSV file path; built-in file readers cannot parse spreadsheets and must not be used for them. Whole-column statistics: count, empty, distinct, min, max, sum, mean, median. |
| sheet_findA | Call this tool to search every cell of a spreadsheet or CSV for text; built-in file readers cannot parse spreadsheets. Matching is case insensitive. Returns cell addresses with a preview of the row each hit is on. |
| sheet_writeA | Call this tool to write rows to an xlsx, csv, tsv or json file; the extension of out_path picks the format. mode is new_file, append or overwrite. Other sheets are kept. Free: 500 rows per file. |
| sheet_add_columnA | Call this tool to add a computed column and save the result to a NEW file; the source is never modified unless out_path points at it. Returns the new file path, the row count and a preview of the first rows. |
| sheet_convertA | Call this tool to convert a sheet between excel (xlsx), csv and json. Writes a new file next to the source unless out_path is given; the source is never modified. Returns the new file path with its row and column counts. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| explore_sheet | Look at an unfamiliar spreadsheet: run sheet_info first, then propose concrete sheet_query calls over the columns it actually has. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| recent-sheets | The spreadsheet files this server has opened since it started, most recent first. Held in memory only; nothing is written to disk. |
TDQS
Scored across 10 tools
Tools are split cleanly into a licensing pair and a spreadsheet group, and each sheet tool has a distinguishable purpose (metadata, paging rows, filtering/aggregation, column stats, cell search, writing, computed columns, conversion). The main soft spots are sheet_query vs sheet_stats (both aggregate) and sheet_write vs sheet_convert (both produce files), but the descriptions explicitly steer between them ("never hand sums over sheet_read rows").
Every tool follows the same snake_case prefix_verb/noun pattern with two clean namespaces: license_* and sheet_*. Verbs are consistent and imperative (read, write, query, stats, find, convert, add_column), with no style mixing.
Ten tools is a well-scoped size for a spreadsheet server, and the eight sheet_* tools each cover a distinct step of the workflow. Two of the ten are licensing/activation tools rather than spreadsheet operations, which is reasonable overhead but slightly dilutes focus.
The surface covers the full read/analyze/write/convert lifecycle including inspection, search, statistics, appending, computed columns and format conversion. Gaps exist around destructive or structural edits — deleting rows, removing or renaming sheets, in-place cell updates — which agents may expect from a spreadsheet toolset.