Most spreadsheet servers stop at cell values, which leaves the tedious half — header styling, column widths, building the chart — still manual. Having `format_cells`, `set_column_width` and `create_chart` in the same surface is what turns "put the numbers in" into a finished sheet. The service-account model is also the access control: nothing is reachable until you share it.
An MCP server covering Google Sheets end to end: reading and writing cells, formulas, sheet management, formatting, charts, sorting and sharing. It authenticates as a Google service account, so the agent only reaches the spreadsheets you share with it.
- Spreadsheets and sheets — `get_spreadsheet_info`, `create_spreadsheet`, `list_sheets`, `create_sheet`, `delete_sheet`, `rename_sheet`, `duplicate_sheet`
- Cells — `read_cells`, `write_cells` (formulas included), `batch_read`, `batch_write`, `append_rows`, `clear_cells`, `get_last_row`
- Rows and columns — `insert_rows`, `insert_columns`, `delete_rows`, `delete_columns`
- Formatting — `format_cells` for bold, colours and alignment, `set_column_width`, `merge_cells`
- Charts — `create_chart` for bar, line, pie, column, area and scatter, plus `list_charts` and `delete_chart`
- Data and sharing — `sort_range`, `find_replace`, `share_spreadsheet`
A Google Cloud project with the Sheets API and Drive API enabled, and a service account whose JSON key you save as `credentials/service-account.json`. Every spreadsheet you want reachable must be shared with the service account's email — a 403 almost always means you skipped that step. Install with `uv sync`, run `uv run spreadsheet-mcp`, and register the same command in Claude Desktop, Claude Code, Cursor or Gemini CLI. Package version 0.1.0. MIT.
Build from source — clone the repository and build it, then point your client at the binary
