Read, query, edit and convert xlsx and csv files safely. It opens xlsx, xlsm, xlsb, ods, csv and tsv, guesses the header row on a messy export, and queries with an expression language that has no eval.
Leave sheet_write and sheet_add_column out of the autoApprove array. Reads are safe to approve automatically; anything that writes a file next to your original is worth one click.
| You say | Tool |
|---|---|
| Open sales.xlsx and tell me what's in it. | sheet_info |
| Which rep sold the most units in the North region? Top 5 with totals. | sheet_query |
| Add a Revenue column that's Units times Unit Price, save it as a CSV next to the original. | sheet_add_column |
The group-by ranking above used to cost five tool calls and 71 seconds via a python fallback. It is one sheet_query call here.
The file is mcp.json, and the key inside it is mcpServers.
| Scope | Path |
|---|---|
| Cline CLI | ~/.cline/mcp.json |
| The editor extension | opened from the Cline panel, not by path; the documentation deliberately calls it the MCP settings JSON used by the extension |
{
"mcpServers": {
"spreadsheet": {
"command": "npx",
"args": ["-y", "@theluckystrike/mcp-spreadsheet"],
"disabled": false,
"autoApprove": []
}
}
}
No full-app restart. The MCP settings actions include restarting an unresponsive server if its tools do not appear.
The npm publish of @theluckystrike/mcp-spreadsheet is pending; until then use the .mcpb bundle or a clone and build from the latest release.
The same server runs at https://mcp.zovo.one/mcp/spreadsheet over MCP streamable HTTP, no install. Mint a free token with curl https://mcp.zovo.one/mcp/token, or use a Pro key. It has no filesystem, so a file comes back as a one-hour download link.
Write the transport in. Omitting type falls back to the legacy sse transport, which will not talk to this endpoint:
{
"mcpServers": {
"spreadsheet": {
"type": "streamableHttp",
"url": "https://mcp.zovo.one/mcp/spreadsheet",
"headers": { "Authorization": "Bearer <token>" }
}
}
}
Cline is the one client here with an unsafe transport default. `type` selects it, and omitting `type` falls back to the legacy sse transport, so a streamable HTTP endpoint needs it written in or you will debug a server that is fine. Local entries carry "disabled" and an "autoApprove" array.
Free: read, query, stats and find up to 5,000 rows; writes up to 500 rows, never partial. Pro is $19 once, verified offline.
The CLI reads ~/.cline/mcp.json. For the extension, do not hunt for a path: MCP Servers icon, Configure tab, Configure MCP Servers. cline mcp opens a wizard, and cline config mcp --json is the non-interactive form.
Set the transport explicitly. Omitting type falls back to the legacy sse transport, so streamable HTTP needs "type": "streamableHttp" written in. It is the one default here that sends you debugging a server that works.
Approve the read-only ones and leave the writing ones behind a click: each entry carries an autoApprove array and a disabled flag.
MCP Spreadsheet in detail · The same server in Windsurf and Claude Desktop · Every server in Cline · Guides · Cline docs