Google Sheets MCP Server
Provides full Google Sheets functionality including reading, writing, formatting cells, creating charts, using formulas, managing sheets, sharing, and data operations.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Google Sheets MCP ServerCreate a new spreadsheet called 'Monthly Budget' with columns for income and expenses"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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. :)
Related MCP server: mcp-google-sheets
Features
Category | Capabilities |
Cell Operations | Read, write, batch operations, append rows, clear cells |
Formulas | Full support ( |
Sheet Management | Create, delete, rename, duplicate sheets |
Formatting | Bold, italic, colors, alignment, column widths, merge cells |
Charts | Bar, Line, Pie, Column, Area, Scatter charts |
Data Operations | Sort, find/replace, get last row |
Sharing | Share with users or make public |
Quick Start
1. Install
cd /path/to/spreadsheet-mcp
uv sync2. Google Cloud Setup (Free, One-Time)
Create Project: Go to Google Cloud Console → New Project
Enable APIs:
Create Service Account:
Go to APIs & Services → Credentials → Create Credentials → Service Account
Download JSON key → Save as
credentials/service-account.json
Share Spreadsheets: Share your sheets with the service account email (found in JSON)
3. Run
uv run spreadsheet-mcpMCP Client Configuration
Claude Desktop
Add to your Claude Desktop config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.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:
{
"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):
{
"mcpServers": {
"google-sheets": {
"command": "uv",
"args": [
"--directory",
"/path/to/spreadsheet-mcp",
"run",
"spreadsheet-mcp"
]
}
}
}Or add to ~/.cursor/mcp.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:
{
"mcpServers": {
"google-sheets": {
"command": "uv",
"args": [
"--directory",
"/path/to/spreadsheet-mcp",
"run",
"spreadsheet-mcp"
]
}
}
}Using with npx (Alternative)
If you prefer npx over uv:
{
"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
Tool | Description | Example |
| Get metadata and sheet list | "Show me info about spreadsheet abc123" |
| Create new spreadsheet | "Create a spreadsheet called 'Budget 2024'" |
| List all sheets/tabs | "What sheets are in this spreadsheet?" |
| Add a new sheet | "Add a sheet called 'Summary'" |
| Remove a sheet | "Delete the sheet with ID 12345" |
| Rename a sheet | "Rename sheet 0 to 'Data'" |
| Copy a sheet | "Duplicate the main sheet" |
Cell Operations
Tool | Description | Example |
| Read values from range | "Read cells A1 to D10 from Sheet1" |
| Write values (supports formulas) | "Write headers Name, Age, Score to A1" |
| Read multiple ranges at once | "Read A1:A10 and C1:C10" |
| Write to multiple ranges | "Write data to multiple locations" |
| Add rows at end of data | "Append these new records" |
| Clear a range | "Clear cells B2:D10" |
| Find last row with data | "What's the last row in column A?" |
Row/Column Operations
Tool | Description | Example |
| Insert empty rows | "Insert 5 rows at row 10" |
| Insert empty columns | "Insert 2 columns at column C" |
| Delete rows | "Delete rows 5-10" |
| Delete columns | "Delete column B" |
Formatting
Tool | Description | Example |
| Apply formatting | "Make header row bold with blue background" |
| Adjust column width | "Set column A width to 200 pixels" |
| Merge cell range | "Merge cells A1:C1 for title" |
Charts
Tool | Description | Example |
| Create embedded chart | "Create a bar chart from sales data" |
| List all charts | "What charts exist in this spreadsheet?" |
| Remove a chart | "Delete chart 123456" |
Data Operations
Tool | Description | Example |
| Sort data by column | "Sort data by column B ascending" |
| Find and replace text | "Replace 'N/A' with '0' everywhere" |
Sharing
Tool | Description | Example |
| Share or make public | "Make this spreadsheet public" |
Usage Examples
Example 1: Create a Sales Report
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 chartExample 2: Analyze Existing Data
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 insightsExample 3: Format a Table
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 dataA1 Notation Reference
Notation | Description |
| Cells A1 to D10 in Sheet1 |
| Entire column A in Sheet1 |
| Rows 1-5 in Sheet1 |
| Range in first visible sheet |
| 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_sheetsorget_spreadsheet_info
Common Formulas
=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/timeTroubleshooting
Error | Solution |
"Service account credentials not found" | Check |
"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
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
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/dudegladiator/spreadsheet-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server