The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Wisegrid MCP listing page.
Read and write WiseGrid sheets from Claude, Cursor, or any MCP client. List sheets, page through rows, add and update records, and run reports — from inside a conversation.
Unlike the other servers in this family, these tools operate on your real data, so an API key is required.
Or pip install wisegrid-mcp.
| Variable | Required | Purpose |
|---|---|---|
WISEGRID_API_KEY | yes | Create one in WiseGrid under Settings |
WISEGRID_BASE_URL | no | Override for self-hosted instances |
The key's scopes decide what these tools can reach. Grant read-only scopes if you only want the agent to look.
| Tool | What it does |
|---|---|
whoami | The key's identity, scopes and rate limit — call this first when debugging |
list_sheets | Sheets the key can see, cursor-paginated |
get_sheet | Sheet + columns + first page of rows, in one call |
list_columns | Column IDs, which cell dictionaries are keyed by |
list_rows | Rows, cursor-paginated; each carries the version you need to update it |
add_rows | Bulk insert, partial success, max 2000 |
update_row | Update one row's changed cells, version-checked |
update_rows | Bulk update, version-checked per row, max 2000 |
delete_row | Delete a row and its subtree — requires confirm=True |
list_reports / get_report / run_report | Reports and their rows |
Cells are keyed by column ID, not column name. {"101": "Acme Corp"}, not
{"Client": "Acme Corp"}. Call get_sheet or list_columns first.
Updates are version-checked. Every row carries a version; you pass the one
you read, and if the row changed in the meantime you get version_conflict
instead of a silent overwrite. That is a normal outcome to handle — re-read the
row, decide whether your change still applies, then retry. Blindly bumping the
version to force the write is how concurrent edits disappear.
update_row merges, update_rows overwrites. The single-row tool takes
only the cells you changed. The bulk tool replaces the row's cell set, so send
the full set you want the row to end up with.
delete_row takes the children too. It removes the row and its entire
subtree, it is not undoable through the API, and it requires confirm=True
for exactly that reason. Read the rows first.
Writes are idempotent. Each carries an Idempotency-Key, so a retry after a
timeout cannot double-apply. Rate limits are honoured via Retry-After.
Built by WiseGrid. Full REST API reference at wisegrid.co/docs/api.
MIT licensed.