trackmcp
Back to directory
dudegladiator

spreadsheet-mcp

View on GitHub

MCP Server for Google Sheets - read, write, format cells, create charts, and more

18 stars PythonOthers Updated Aug 21, 2026

Documentation

Google Sheets MCP Server

A Model Context Protocol (MCP) server providing full Google Sheets functionality. Read, write, format cells, create charts, use formulas, and manage spreadsheets directly from Claude, Cursor, or any MCP-compatible client.

Why I Built This

I created this MCP server for my college assignments, where I frequently work with data in Google Sheets — mostly financial sheets. Tasks like creating charts, writing formulas, formatting tables, and organizing data were repetitive and time-consuming. With this tool, I can automate all of that and focus on what actually matters — logical thinking and analysis — instead of doing the same manual work over and over again. :)

Features

CategoryCapabilities
Cell OperationsRead, write, batch operations, append rows, clear cells
FormulasFull support (`=SUM()`, `=VLOOKUP()`, `=IF()`, etc.)
Sheet ManagementCreate, delete, rename, duplicate sheets
FormattingBold, italic, colors, alignment, column widths, merge cells
ChartsBar, Line, Pie, Column, Area, Scatter charts
Data OperationsSort, find/replace, get last row
SharingShare with users or make public

Quick Start

1. Install

bash
cd /path/to/spreadsheet-mcp
uv sync

2. Google Cloud Setup (Free, One-Time)

1. Create Project: Go to Google Cloud Console → New Project

2. Enable APIs:

    3. Create Service Account:

      4. Share Spreadsheets: Share your sheets with the service account email (found in JSON)

      3. Run

      bash
      uv run spreadsheet-mcp

      MCP Client Configuration

      Claude Desktop

      Add to your Claude Desktop config file:

      • macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
      • Windows: `%APPDATA%\Claude\claude_desktop_config.json`
      json
      {
        "mcpServers": {
          "google-sheets": {
            "command": "uv",
            "args": [
              "--directory",
              "/path/to/spreadsheet-mcp",
              "run",
              "spreadsheet-mcp"
            ]
          }
        }
      }

      Claude Code (CLI)

      Add to your project's `.mcp.json` file:

      json
      {
        "mcpServers": {
          "google-sheets": {
            "command": "uv",
            "args": [
              "--directory",
              "/path/to/spreadsheet-mcp",
              "run",
              "spreadsheet-mcp"
            ]
          }
        }
      }

      Cursor

      Add to Cursor's MCP settings (Settings → MCP → Add Server):

      json
      {
        "mcpServers": {
          "google-sheets": {
            "command": "uv",
            "args": [
              "--directory",
              "/path/to/spreadsheet-mcp",
              "run",
              "spreadsheet-mcp"
            ]
          }
        }
      }

      Or add to `~/.cursor/mcp.json`:

      json
      {
        "mcpServers": {
          "google-sheets": {
            "command": "uv",
            "args": [
              "--directory",
              "/path/to/spreadsheet-mcp",
              "run",
              "spreadsheet-mcp"
            ]
          }
        }
      }

      Gemini CLI

      For Gemini CLI with MCP support, add to your MCP configuration:

      json
      {
        "mcpServers": {
          "google-sheets": {
            "command": "uv",
            "args": [
              "--directory",
              "/path/to/spreadsheet-mcp",
              "run",
              "spreadsheet-mcp"
            ]
          }
        }
      }

      Using with npx (Alternative)

      If you prefer npx over uv:

      json
      {
        "mcpServers": {
          "google-sheets": {
            "command": "npx",
            "args": [
              "-y",
              "uv",
              "--directory",
              "/path/to/spreadsheet-mcp",
              "run",
              "spreadsheet-mcp"
            ]
          }
        }
      }

      Note: Replace `/path/to/spreadsheet-mcp` with the actual path where you cloned this repository.

      Available Tools (27 Total)

      Spreadsheet & Sheet Management

      ToolDescriptionExample
      `get_spreadsheet_info`Get metadata and sheet list"Show me info about spreadsheet abc123"
      `create_spreadsheet`Create new spreadsheet"Create a spreadsheet called 'Budget 2024'"
      `list_sheets`List all sheets/tabs"What sheets are in this spreadsheet?"
      `create_sheet`Add a new sheet"Add a sheet called 'Summary'"
      `delete_sheet`Remove a sheet"Delete the sheet with ID 12345"
      `rename_sheet`Rename a sheet"Rename sheet 0 to 'Data'"
      `duplicate_sheet`Copy a sheet"Duplicate the main sheet"

      Cell Operations

      ToolDescriptionExample
      `read_cells`Read values from range"Read cells A1 to D10 from Sheet1"
      `write_cells`Write values (supports formulas)"Write headers Name, Age, Score to A1"
      `batch_read`Read multiple ranges at once"Read A1:A10 and C1:C10"
      `batch_write`Write to multiple ranges"Write data to multiple locations"
      `append_rows`Add rows at end of data"Append these new records"
      `clear_cells`Clear a range"Clear cells B2:D10"
      `get_last_row`Find last row with data"What's the last row in column A?"

      Row/Column Operations

      ToolDescriptionExample
      `insert_rows`Insert empty rows"Insert 5 rows at row 10"
      `insert_columns`Insert empty columns"Insert 2 columns at column C"
      `delete_rows`Delete rows"Delete rows 5-10"
      `delete_columns`Delete columns"Delete column B"

      Formatting

      ToolDescriptionExample
      `format_cells`Apply formatting"Make header row bold with blue background"
      `set_column_width`Adjust column width"Set column A width to 200 pixels"
      `merge_cells`Merge cell range"Merge cells A1:C1 for title"

      Charts

      ToolDescriptionExample
      `create_chart`Create embedded chart"Create a bar chart from sales data"
      `list_charts`List all charts"What charts exist in this spreadsheet?"
      `delete_chart`Remove a chart"Delete chart 123456"

      Data Operations

      ToolDescriptionExample
      `sort_range`Sort data by column"Sort data by column B ascending"
      `find_replace`Find and replace text"Replace 'N/A' with '0' everywhere"

      Sharing

      ToolDescriptionExample
      `share_spreadsheet`Share or make public"Make this spreadsheet public"

      Usage Examples

      Example 1: Create a Sales Report

      code
      User: Create a sales report in spreadsheet abc123
      
      Claude will:
      1. get_spreadsheet_info("abc123") - Check existing sheets
      2. create_sheet("abc123", "Sales Report") - Create new sheet
      3. write_cells("abc123", "Sales Report!A1", '[["Product", "Q1", "Q2", "Q3", "Q4", "Total"]]')
      4. write_cells("abc123", "Sales Report!A2", '[["Widget", 100, 150, 200, 180, "=SUM(B2:E2)"]]')
      5. format_cells(..., bold=True, background_color="#4285F4") - Format header
      6. create_chart(..., "COLUMN", "Quarterly Sales") - Add chart

      Example 2: Analyze Existing Data

      code
      User: Summarize the data in Sheet1
      
      Claude will:
      1. read_cells("abc123", "Sheet1!A1:Z1") - Read headers
      2. get_last_row("abc123", "Sheet1", "A") - Find data extent
      3. read_cells("abc123", "Sheet1!A1:D100") - Read all data
      4. Provide summary and insights

      Example 3: Format a Table

      code
      User: Make the spreadsheet look professional
      
      Claude will:
      1. format_cells(..., bold=True, background_color="#1a73e8", font_color="#FFFFFF") - Header
      2. set_column_width(..., 150) - Adjust widths
      3. format_cells(..., alignment="CENTER") - Center data

      A1 Notation Reference

      NotationDescription
      `Sheet1!A1:D10`Cells A1 to D10 in Sheet1
      `Sheet1!A:A`Entire column A in Sheet1
      `Sheet1!1:5`Rows 1-5 in Sheet1
      `A1:B10`Range in first visible sheet
      `'My Sheet'!A1`Sheet name with spaces (use quotes)

      Index Reference

      • Rows: 0-based in formatting (Row 1 = index 0)
      • Columns: 0-based (A=0, B=1, C=2, D=3...)
      • sheet_id: Numeric ID from `list_sheets` or `get_spreadsheet_info`

      Common Formulas

      code
      =SUM(A1:A10)           Sum values
      =AVERAGE(B:B)          Average entire column
      =COUNT(A:A)            Count numbers
      =COUNTA(A:A)           Count non-empty cells
      =MAX(A1:A100)          Maximum value
      =MIN(A1:A100)          Minimum value
      =VLOOKUP(A1,B:C,2,0)   Lookup value
      =IF(A1>100,"High","Low") Conditional
      =CONCATENATE(A1," ",B1)  Join text
      =TODAY()               Current date
      =NOW()                 Current date/time

      Troubleshooting

      ErrorSolution
      "Service account credentials not found"Check `credentials/service-account.json` exists
      "403 Forbidden"Share spreadsheet with service account email
      "API not enabled"Enable Sheets & Drive APIs in Google Cloud Console
      "Quota exceeded"Wait a minute, you're hitting rate limits

      File Structure

      code
      spreadsheet-mcp/
      ├── pyproject.toml
      ├── README.md
      ├── credentials/
      │   └── service-account.json  (your key, gitignored)
      └── src/spreadsheet_mcp/
          ├── __init__.py
          ├── auth.py              # Google authentication
          ├── sheets_client.py     # API wrapper (1000+ lines)
          └── server.py            # MCP server (27 tools)

      Contributing

      Contributions are welcome! Please feel free to submit a Pull Request.

      Author

      License

      MIT

      Frequently asked questions

      What is spreadsheet-mcp?

      spreadsheet-mcp is MCP Server for Google Sheets - read, write, format cells, create charts, and more

      How do I install spreadsheet-mcp?

      Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.

      Is spreadsheet-mcp open source?

      Yes — it is hosted on GitHub at https://github.com/dudegladiator/spreadsheet-mcp and has 18 stars.

      Related MCP tools

      Run your own MCP server? See who uses it and what to fix.

      Measure it with TrackMCP