A side-by-side look at the Bilig and Sheets MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Bilig for workplace & productivity work over a hosted endpoint; choose Sheets MCP for workplace & productivity as a local process. You can also run both side by side in one mcpServers block.
list_sheets, read_range, read_cell.google_accounts, find_spreadsheet, create_spreadsheet.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Workplace & Productivity | Workplace & Productivity |
| Quality signal | 63/100 · Good | 65/100 · Great |
| Install command | Confirmed | Confirmed |
| Transport | Remote HTTP/SSE | Local subprocess (stdio) |
| Auth | No auth required | Not declared |
| Pricing | Free | Not declared |
| Required env vars | None listed | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 35 | 34 |
| Directory activity | 3 views 0 installs 0 upvotes | 2 views 0 installs 0 upvotes |
| Tools | 8 | 29 |
| Full listing | View Bilig | View Sheets MCP |
list_sheetsDiscover sheet names and used dimensions before reading or editing a WorkPaper. Returns metadata only; use read_range or read_cell for values.read_rangeRead calculated values plus serialized formulas/inputs for an A1 range. Use for audit readback after edits; use read_cell for one address.read_cellRead one cell with calculated value, display text, formula text, formula diagnostics, and serialized content. Use after set_cell_contents to verify readback.set_cell_contentsWrite raw content to one cell and recalculate dependents in memory only. Start with --writable when the edit should persist to JSON.set_cell_contents_and_readbackWrite raw content to one cell, recalculate dependents, read a dependent range in the same tool call, and return persistence proof. Use this for stateless MCP clients such as hosted Open WebUI integrations.get_cell_display_valueReturn the formatted display string for one cell. Use when an agent needs what a user would see, not the raw numeric value.export_workpaper_documentExport the current WorkPaper JSON document for persistence, review, or handoff to another agent. Does not write files by itself.validate_formulaValidate formula syntax with the WorkPaper parser before writing it to a cell. This checks syntax only; use set_cell_contents plus readback to evaluate.google_accountsManage the Google accounts Sheets MCP can use. list: show signed-in accounts and the default. add: sign in to a Google account (opens a browser sign-in; also use this when a sign-in has expired). remove: sign an account out and revoke access. set_default: choose the account used for new spreadsheets.find_spreadsheetFind a spreadsheet by name among the ones the user has opened or created with Sheets MCP before (the list is kept on their computer). Use it when the user names a sheet instead of pasting a link, e.g. "my budget sheet". It can't search the rest of their Google Drive: if nothing matches, ask for the link. Leave query empty to list the most recent.create_spreadsheetCreate a new Google Sheets spreadsheet.get_spreadsheet_infoGet a spreadsheet's title, tabs (sizes, frozen rows/cols), charts (ids, types, data ranges), named ranges, and the first few rows of each tab. Call this first to understand a sheet's layout.read_rangeRead cell contents from a range, or its formatting with mode "formats". Large ranges are truncated; use next_range to continue.read_rangesRead several ranges in one call, across any tabs. Faster than calling read_range repeatedly. Each range is truncated to its share of max_cells; use its next_range with read_range to continue.write_rangeWrite values and/or formulas starting at the top-left cell of the range. Input is parsed like typing into the UI (formulas, dates, percentages work). Previous contents are saved for undo_last. Returns any formula errors found after writing.fill_rangeFill cells from a source block, like dragging the fill handle or pasting onto a bigger selection: the source's formulas (relative references shift), values and formatting repeat across the destination. Use it after writing one row or column of formulas to extend them across a table, instead of sending every column. With continue_series, patterns continue instead (1, 2, 3 → 4, 5, 6; Jan → Feb; dates). The destination's previous contents are saved for undo_last. Returns any formula errors found after filling.append_rowsAppend rows after the last row of data in a table (detected from the given range or tab).clear_rangeClear values and formulas in a range (formatting is kept). Previous contents are saved for undo_last.find_replaceFind and replace text across a tab or the whole spreadsheet. Not undoable - consider read_range first.undo_lastUndo the most recent write_range, append_rows, or clear_range made through this server (restores values/formulas only, not formatting or structure). History is kept in memory until the server restarts.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"proompteng-bilig": {
"url": "https://bilig.proompteng.ai/mcp"
}
}
}
{
"mcpServers": {
"sheets-mcp": {
"command": "npx",
"args": [
"-y",
"@sheetsmcp/server"
]
}
}
}