Skip to main content
Glama
Google Sheets Advanced MCP Server

Google Sheets Advanced MCP Server

by vic08

Google Sheets Advanced MCP Server

An MCP server that gives AI assistants full control over Google Sheets — not just read/write, but charts, pivot tables, formulas, formatting, and analytics.

What Makes This Different

Existing Google Sheets MCP servers only support basic CRUD (read cells, write cells). This server exposes the full Google Sheets API:

  • 15 chart types — bar, line, pie, scatter, histogram, waterfall, and more

  • Pivot tables — group, aggregate, cross-tabulate

  • Conditional formatting — color scales, value-based rules, custom formulas

  • Data validation — dropdowns, number constraints, checkboxes

  • Server-side analytics — summary stats, trend analysis, duplicate detection

  • 30 tools total — 9 free, 21 pro

Related MCP server: Google Sheets MCP Server

Installation

npx mcp-google-sheets-advanced

Or install globally:

pnpm add -g mcp-google-sheets-advanced

Quick Start

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "google-sheets-advanced": {
      "command": "npx",
      "args": ["-y", "mcp-google-sheets-advanced"],
      "env": {
        "GOOGLE_CLIENT_ID": "your-client-id",
        "GOOGLE_CLIENT_SECRET": "your-secret"
      }
    }
  }
}

On first run, a browser window opens for Google OAuth authentication.

Available Tools

Free Tier (Read Operations)

Tool

Description

sheets_list_spreadsheets

List accessible spreadsheets

sheets_get_spreadsheet_info

Get spreadsheet metadata

sheets_read_range

Read cell values from a range

sheets_read_multiple_ranges

Batch read multiple ranges

sheets_get_formulas

Get formulas from a range

sheets_get_sheet_metadata

Get sheet properties

sheets_list_named_ranges

List named ranges

sheets_list_charts

List charts

sheets_list_filter_views

List filter views

Pro Tier ($16/mo)

Tool

Description

sheets_write_range

Write values to a range

sheets_write_multiple_ranges

Batch write to multiple ranges

sheets_append_rows

Append rows to a table

sheets_clear_range

Clear values from a range

sheets_create_sheet

Add a new sheet

sheets_delete_sheet

Delete a sheet

sheets_create_chart

Create charts (15 types)

sheets_update_chart

Modify existing charts

sheets_delete_chart

Remove charts

sheets_create_pivot_table

Create pivot tables

sheets_add_conditional_formatting

Add conditional formatting

sheets_set_data_validation

Set data validation rules

sheets_format_cells

Format cells (fonts, colors, borders)

sheets_summarize_range

Compute summary statistics

sheets_find_duplicates

Find duplicate values

sheets_analyze_trends

Analyze trends with linear regression

sheets_create_named_range

Create named ranges

sheets_sort_range

Sort data

sheets_set_basic_filter

Apply/clear filters

sheets_protect_range

Protect ranges

sheets_find_replace

Find and replace

Configuration

Required Environment Variables

Variable

Description

GOOGLE_CLIENT_ID

OAuth client ID from Google Cloud Console

GOOGLE_CLIENT_SECRET

OAuth client secret

Optional

Variable

Description

Default

GOOGLE_TOKEN_PATH

Path to store OAuth tokens

~/.config/mcp-gsheets/tokens.json

Development

# Install dependencies
pnpm install

# Run in development mode
pnpm dev

# Build
pnpm build

# Run tests
pnpm test

# Type check
pnpm typecheck

# Test with MCP Inspector
pnpm inspect

License

MIT

Available Tools

30 tools
sheets_add_conditional_formattingC
Idempotent

Adds a conditional formatting rule to a range in a spreadsheet

Inputs: range (required), rule_type (required), spreadsheet_id (required), format, +2 more.

sheets_append_rowsB
Idempotent

Appends rows of data after the last row with content in a range

Inputs: range (required), values (required), spreadsheet_id (required).

sheets_clear_rangeA
Destructive

Clears all values from a specified range while preserving formatting

Inputs: range (required), spreadsheet_id (required).

sheets_create_chartC
Idempotent

Creates a chart in a Google Sheets spreadsheet

Inputs: chart_type (required), data_range (required), sheet_name (required), spreadsheet_id (required), +3 more.

sheets_create_named_rangeA
Idempotent

Creates a named range in a spreadsheet

Inputs: name (required), range (required), spreadsheet_id (required).

sheets_create_pivot_tableC
Idempotent

Creates a pivot table in a Google Sheets spreadsheet

Inputs: rows (required), values (required), destination (required), source_range (required), +2 more.

sheets_create_sheetC
Idempotent

Creates a new sheet (tab) in an existing spreadsheet

Inputs: title (required), spreadsheet_id (required), row_count, column_count.

sheets_delete_chartC
Destructive

Deletes an embedded chart from a Google Sheets spreadsheet

Inputs: chart_id (required), spreadsheet_id (required).

sheets_delete_sheetA
Destructive

Deletes a sheet (tab) from a spreadsheet by name

Inputs: sheet_name (required), spreadsheet_id (required).

sheets_find_duplicatesB
Read-onlyIdempotent

Finds duplicate rows in a range based on specified columns

Inputs: range (required), spreadsheet_id (required), columns.

sheets_find_replaceB
Idempotent

Finds and replaces text across a spreadsheet or within a specific range

Inputs: find (required), replacement (required), spreadsheet_id (required), range, +4 more.

sheets_format_cellsC
Idempotent

Formats cells in a range with font, color, alignment, and number format options

Inputs: range (required), format (required), spreadsheet_id (required).

sheets_get_formulasB
Read-onlyIdempotent

Gets all formulas from a specified range, returning cell references and formula text

Inputs: range (required), spreadsheet_id (required).

sheets_get_sheet_metadataB
Read-onlyIdempotent

Gets metadata for a specific sheet within a spreadsheet

Inputs: sheet_name (required), spreadsheet_id (required).

sheets_get_spreadsheet_infoB
Read-onlyIdempotent

Gets metadata about a spreadsheet including its sheets, properties, and named ranges

Inputs: spreadsheet_id (required).

sheets_list_chartsA
Read-onlyIdempotent

Lists all charts in a spreadsheet, optionally filtered by sheet name

Inputs: spreadsheet_id (required), sheet_name.

sheets_list_filter_viewsB
Read-onlyIdempotent

Lists all filter views in a spreadsheet

Inputs: spreadsheet_id (required).

sheets_list_named_rangesA
Read-onlyIdempotent

Lists all named ranges in a spreadsheet with their A1 notation references

Inputs: spreadsheet_id (required).

sheets_list_spreadsheetsB
Read-onlyIdempotent

Lists spreadsheets accessible to the authenticated user via Google Drive

Inputs: query, max_results.

sheets_protect_rangeB
Idempotent

Protects a range from editing, optionally as a warning only

Inputs: range (required), spreadsheet_id (required), description, warning_only.

sheets_read_multiple_rangesA
Read-onlyIdempotent

Reads cell values from multiple ranges in a single batch request

Inputs: ranges (required), spreadsheet_id (required), value_render.

sheets_read_rangeC
Read-onlyIdempotent

Reads cell values from a specified range in a spreadsheet

Inputs: range (required), spreadsheet_id (required), value_render.

sheets_set_basic_filterB
Idempotent

Sets or clears a basic filter on a range

Inputs: range (required), spreadsheet_id (required), clear, criteria.

sheets_set_data_validationC
Idempotent

Sets data validation rules on a range of cells

Inputs: range (required), spreadsheet_id (required), validation_type (required), strict, +1 more.

sheets_sort_rangeC
Idempotent

Sorts a range of data by one or more columns

Inputs: range (required), sort_specs (required), spreadsheet_id (required).

sheets_summarize_rangeB
Read-onlyIdempotent

Computes summary statistics for columns in a range, with optional grouping

Inputs: range (required), spreadsheet_id (required), group_by_column.

sheets_update_chartC
Idempotent

Updates an existing chart in a Google Sheets spreadsheet

Inputs: chart_id (required), spreadsheet_id (required), title, chart_type, +1 more.

sheets_write_multiple_rangesB
Idempotent

Writes values to multiple ranges in a single batch operation

Inputs: data (required), spreadsheet_id (required).

sheets_write_rangeC
Idempotent

Writes values to a specified range in a Google Sheets spreadsheet

Inputs: range (required), values (required), spreadsheet_id (required), input_mode.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.1/5.0

    Scored across 30 tools

    Disambiguation4/5

    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.

    Naming Consistency5/5

    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.

    Tool Count2/5

    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.

    Completeness3/5

    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.

    Related MCP Connectors

    Related MCP Servers