Google Sheets Advanced MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GOOGLE_CLIENT_ID | Yes | OAuth client ID from Google Cloud Console | |
| GOOGLE_TOKEN_PATH | No | Path to store OAuth tokens | ~/.config/mcp-gsheets/tokens.json |
| GOOGLE_CLIENT_SECRET | Yes | OAuth client secret |
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": true
} |
| prompts | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| sheets_list_spreadsheetsB | Lists spreadsheets accessible to the authenticated user via Google Drive |
| sheets_get_spreadsheet_infoB | Gets metadata about a spreadsheet including its sheets, properties, and named ranges |
| sheets_get_sheet_metadataB | Gets metadata for a specific sheet within a spreadsheet |
| sheets_list_named_rangesA | Lists all named ranges in a spreadsheet with their A1 notation references |
| sheets_list_chartsA | Lists all charts in a spreadsheet, optionally filtered by sheet name |
| sheets_list_filter_viewsB | Lists all filter views in a spreadsheet |
| sheets_read_rangeC | Reads cell values from a specified range in a spreadsheet |
| sheets_read_multiple_rangesA | Reads cell values from multiple ranges in a single batch request |
| sheets_get_formulasB | Gets all formulas from a specified range, returning cell references and formula text |
| sheets_write_rangeC | Writes values to a specified range in a Google Sheets spreadsheet |
| sheets_write_multiple_rangesB | Writes values to multiple ranges in a single batch operation |
| sheets_append_rowsB | Appends rows of data after the last row with content in a range |
| sheets_clear_rangeA | Clears all values from a specified range while preserving formatting |
| sheets_create_sheetC | Creates a new sheet (tab) in an existing spreadsheet |
| sheets_delete_sheetA | Deletes a sheet (tab) from a spreadsheet by name |
| sheets_create_named_rangeA | Creates a named range in a spreadsheet |
| sheets_create_chartC | Creates a chart in a Google Sheets spreadsheet |
| sheets_update_chartC | Updates an existing chart in a Google Sheets spreadsheet |
| sheets_delete_chartC | Deletes an embedded chart from a Google Sheets spreadsheet |
| sheets_create_pivot_tableC | Creates a pivot table in a Google Sheets spreadsheet |
| sheets_add_conditional_formattingC | Adds a conditional formatting rule to a range in a spreadsheet |
| sheets_set_data_validationC | Sets data validation rules on a range of cells |
| sheets_format_cellsC | Formats cells in a range with font, color, alignment, and number format options |
| sheets_summarize_rangeB | Computes summary statistics for columns in a range, with optional grouping |
| sheets_find_duplicatesB | Finds duplicate rows in a range based on specified columns |
| sheets_analyze_trendsC | Performs linear regression on a column to identify trends |
| sheets_sort_rangeC | Sorts a range of data by one or more columns |
| sheets_set_basic_filterB | Sets or clears a basic filter on a range |
| sheets_protect_rangeB | Protects a range from editing, optionally as a warning only |
| sheets_find_replaceB | Finds and replaces text across a spreadsheet or within a specific range |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| analyze_spreadsheet | Analyze a Google Sheets spreadsheet — read data, compute statistics, identify trends, and create visualizations |
| create_dashboard | Transform raw spreadsheet data into a formatted dashboard with charts, pivot tables, and formatting |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 30 tools
Each tool targets a fairly distinct action or resource, and descriptions clarify boundaries. Minor potential confusion exists between metadata getters (sheet vs spreadsheet) and between write variants (range vs multiple ranges vs append), but these are resolvable from context.
All tools use the same snake_case convention with a consistent sheets_ prefix and verb_noun structure. The pattern is predictable throughout the entire set.
30 tools exceeds the 25-tool threshold and feels heavy even for an advanced Google Sheets server. Many niche operations could be consolidated or collapsed into batch-style tools without losing core capability.
Core value read/write/append/clear and basic tab management are covered, but advanced resources have incomplete lifecycles: named ranges can be created but not updated/deleted, pivot tables only created, conditional formatting/data validation not removable, and no spreadsheet create/delete or row/column insertion/deletion.