WiseGrid MCP
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.
Install
{
"mcpServers": {
"wisegrid": {
"command": "uvx",
"args": ["wisegrid-mcp"],
"env": {
"WISEGRID_API_KEY": "wg_live_xxx"
}
}
}
}
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.
Tools
| 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 |
Things that will bite you otherwise
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.
Development
git clone https://github.com/RyanKramer/wisegrid-mcp
cd wisegrid-mcp
pip install -e .
WISEGRID_API_KEY=wg_live_xxx wisegrid-mcp
About
Built by WiseGrid. Full REST API reference at wisegrid.co/docs/api.
MIT licensed.