MCP Server Spreadsheet
MCP server for spreadsheet files (.xlsx,.csv,.ods) - cell-level ops + DuckDB SQL engine.
Connector by marekrost · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/marekrost-mcp-server-spreadsheet
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 8 read · 9 write · 4 delete · 4 not yet classified
- Secrets
- None asked for
- Install scripts
- Not scanned yet
- Runs as
- Python package
Tools by what they do 25
Read from the source code; the running server may list different tools.
Read 8 · Look things up without changing anything.
describe_tableget_sheet_dimensionslist_sheetslist_workbooksread_cellread_rangeread_sheetsearch_sheet
Write 9 · Create, change, send or run things.
add_sheetappend_rowscreate_workbook_fileinsert_columnsinsert_rowsrename_sheetsql_executewrite_cellwrite_range
Delete 4 · Delete, drop, revoke or wipe things.
clear_rangedelete_columnsdelete_rowsdelete_sheet
Not yet classified 4 · We could not tell from the name and description.
copy_rangecopy_sheetcopy_workbooksql_query
Secrets and settings it asks for
Other settings (environment variables or headers).
MCP_SPREADSHEET_ROOT
Files it touches
- Any path the agent passes to its tools
Tools (25)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
add_sheetAdd a new sheet to the workbook. Returns the name of the newly created sheet. Not supported for CSV files.
append_rowsAppend one or more rows after the last used row in the sheet. Values are type-coerced (numeric strings to numbers). This is the most efficient way to add data to the end of a sheet.
clear_rangeClear all cell values in a range without removing rows or columns. Sets every cell in the range to null. Row/column structure is preserved.
copy_rangeCopy a rectangular block of cells to another location. Copies raw values only. The destination can be on the same sheet or a different sheet in the same workbook. Existing values at the destination are overwritten.
copy_sheetDuplicate a sheet within the same workbook. Copies all cell values. Returns the name of the new sheet. Not supported for CSV files.
copy_workbookCopy an existing spreadsheet file to a new location. Performs a full file copy preserving all data. The destination must not already exist. Returns the absolute path of the new file.
create_workbook_fileCreate a new empty spreadsheet file at the given path. The file format is determined by the extension (.xlsx, .csv, or .ods). The file must not already exist. Returns the absolute path of the created file.
delete_columnsDelete one or more columns, shifting remaining columns left.
delete_rowsDelete one or more rows, shifting remaining rows up. All data in the deleted rows is permanently removed.
delete_sheetDelete a sheet by name from the workbook. All data in the sheet is permanently removed. Not supported for CSV files.
describe_tableInspect the structure of a sheet treated as a database table. Returns column names, inferred data types (text, integer, number, boolean, date), total row count, and sample values from the first 3 data rows. Use this before writing SQL queries to understand the available columns and their types. When sheet is omitted, returns a list of descriptions for all sheets.
get_sheet_dimensionsGet the dimensions of the used range in a sheet. Returns {"rows": N, "columns": M} where N is the number of the last used row and M is the number of the last used column. Both are 0 for an empty sheet.
insert_columnsInsert one or more blank columns, shifting existing columns right.
insert_rowsInsert rows at a given position, shifting existing rows down. If data is provided, the inserted rows are filled with those values (type-coerced). Otherwise the rows are left blank.
list_sheetsList all sheet names in a workbook, in workbook order. Returns a list of sheet name strings. CSV files always return a single sheet named 'default'.
Show 10 more tools
list_workbooksList all spreadsheet files (.xlsx, .csv, .ods) in a directory (non-recursive). Returns the full path of each file found, sorted alphabetically.
read_cellRead the value of a single cell. Returns the cell's value: numbers as int/float, text as string, and empty cells as null.
read_rangeRead a rectangular range of cells as a list of rows. Returns a 2D array where each inner list is one row of values. Empty cells return null.
read_sheetRead an entire sheet (or a bounded sub-region) as a list of rows. Each row is a list of cell values. Empty cells appear as null. Use the optional row/column bounds to limit output for large sheets.
rename_sheetRename an existing sheet in the workbook. Returns the new sheet name on success.
search_sheetSearch all cells in a sheet for values matching a regex pattern. Returns a list of matches, each with the cell reference and value, e.g. [{"cell": "B3", "value": "hello"}, ...]. Returns an empty list if no matches are found.
sql_executeExecute a mutating SQL statement and write changes back to the file. Supports INSERT INTO (adds rows), UPDATE (modifies cell values), and DELETE FROM (removes rows). The target sheet is determined from the SQL statement. After execution, the modified table is written back to the file atomically. Returns {"affected_rows": N}.
sql_queryExecute a read-only SQL SELECT query against the spreadsheet data. Every sheet in the workbook is loaded as a database table, with the header row defining column names and data rows below it. Returns results as a list of {column: value} objects. Only SELECT (and WITH ... SELECT) statements are accepted. Use sql_execute for INSERT, UPDATE, or DELETE.
write_cellWrite a single value to a cell. Overwrites any existing value. The value is type-coerced: numeric strings become numbers, all else is text.
write_rangeWrite a 2D array of values into a rectangular region. Writing starts at start_cell and expands right and down to fit the data. Prefer this over multiple write_cell calls for efficiency.
Signals
- Stars
- 2
- Forks
- 1
- Open issues
- 0
- Weekly downloads
- 53
- Last commit
- Aug 11, 2026 (2 months ago)
- Last release
- Aug 11, 2026 (2 months ago)
- Last package publish
- Aug 11, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.marekrost/mcp-server-spreadsheet- Version
- 0.3.3
- Auth
- No auth
- Packages
- pypi mcp-server-spreadsheet
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
MCP Server Spreadsheet. Agent Mart. https://agentmart.dev/connectors/marekrost-mcp-server-spreadsheet (last updated 2026-10-24)