Google Sheets and Drive MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GOOGLE_SHEETS_READ_ONLY | No | If 'true', server runs in read-only mode (default: false). | false |
| GOOGLE_SHEETS_MAX_RETRIES | No | Maximum number of retries for temporary errors (default: 2). | 2 |
| GOOGLE_SHEETS_MAX_READ_CELLS | No | Maximum number of cells to read in a single request (default: 100000). | 100000 |
| GOOGLE_SHEETS_MAX_WRITE_CELLS | No | Maximum number of cells to write in a single request (default: 10000). | 10000 |
| GOOGLE_APPLICATION_CREDENTIALS | Yes | Absolute path to the Google Cloud service account JSON key file. | |
| GOOGLE_SHEETS_ALLOWED_SPREADSHEET_IDS | No | Comma-separated list of allowed spreadsheet IDs (empty means no restriction). | |
| GOOGLE_SHEETS_REQUEST_TIMEOUT_SECONDS | No | Timeout in seconds for Google Sheets API requests (default: 30). | 30 |
| GOOGLE_SHEETS_RETRY_BASE_DELAY_SECONDS | No | Base delay in seconds for exponential backoff (default: 0.5). | 0.5 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| healthA | Report server status and whether Google credentials are configured. |
| get_spreadsheetA | Get spreadsheet metadata and its list of sheets. |
| create_sheetC | Create one empty sheet with a bounded initial grid size. |
| rename_sheetA | Rename one sheet without changing its data or position. |
| copy_sheetC | Duplicate one complete sheet within the same spreadsheet. |
| read_rangeC | Read an explicitly bounded A1 range from a spreadsheet. |
| batch_read_rangesC | Read several explicitly bounded A1 ranges in one API request. |
| read_sheetC | Read a safe page of a whole sheet; use next_start_row to continue. |
| write_rangeB | Write a rectangular values matrix to an A1 range. |
| batch_write_rangesB | Write several rectangular ranges in one idempotent API request. |
| clear_rangeB | Clear values from one bounded, sheet-qualified A1 range. |
| append_rowsC | Append rows to the table detected in an A1 range. |
| unpivot_rangeC | Convert a wide range into normalized rows and write the result. |
| create_pivot_tableC | Create a native Google Sheets pivot table from a bounded source range. |
| create_chartC | Create a native chart using the first source column as its domain. |
| set_basic_filterC | Set a native sheet filter on one named column; replaces the existing basic filter. |
| clear_basic_filterC | Remove the native basic filter from a sheet. |
| sort_rangeC | Sort a bounded range by named columns while preserving header rows. |
| add_conditional_formatC | Add a native conditional-formatting rule using #RRGGBB colors. |
| freeze_panesA | Freeze top rows and left columns; use zero counts to unfreeze. |
| write_formulasC | Write a rectangular matrix of formulas beginning with '='. |
| insert_imageC | Insert an in-cell image from an HTTP(S) URL using IMAGE(). |
| copy_rangeC | Copy values, formulas, formatting, or rules within one spreadsheet. |
| grant_read_accessC | Grant a user reader access to the entire spreadsheet through Google Drive. |
| set_sheet_visibilityC | Hide or show a sheet; hiding is not an access-control boundary. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 25 tools
Each tool has a distinct and clearly defined purpose. Even similar tools like read_range, batch_read_ranges, and read_sheet are differentiated by scope (bounded range, multiple ranges, entire sheet page). No overlapping functionality.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., get_spreadsheet, clear_range, create_sheet). The only exception is 'health', but it is a simple status check and fits the pattern if considered as a verb implied. Overall, naming is highly predictable.
25 tools is slightly above the typical 3-15 range, but each tool provides a specific, non-redundant operation. The count is justified by the breadth of Google Sheets functionality covered, though it could be trimmed (e.g., batch operations could be merged).
The tool set covers many common operations but has notable gaps: no delete_sheet, no create_spreadsheet, no delete_rows, and no cross-spreadsheet copy/move. This will cause agents to struggle with basic workflows like creating and deleting spreadsheets or deleting data.