google-sheets-mcp
Enables reading data, editing cells, appending rows, inserting/deleting rows and columns, filling formulas, formatting cells, finding and replacing, managing tabs, and performing batch updates on Google Sheets spreadsheets.
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-mcpUpdate the inventory sheet: set stock of SKU-123 to 45."
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
An MCP server that lets Claude work with your Google Sheets in place — no more "here's a new spreadsheet" every time.
Read data, edit cells inline with natural language, append rows, insert/delete rows and columns, fill formulas, format cells, and find & replace — all against the sheet you already have open.
Runs two ways from one codebase:
Local — a
.mcpbdesktop extension for Claude Desktop and local Cowork sessions.Remote — a Cloudflare Worker you add as a custom connector, which also works in cloud Cowork sessions, claude.ai on the web, and mobile.
Built on the MCP TypeScript SDK v2
(2026-07-28 spec) and the Google Sheets API v4, with no Google SDK dependency — just
fetch and WebCrypto, so the same code runs on Node and in V8 isolates.
Tools
Tool | What it does |
| List/search your spreadsheets, most recent first |
| Spreadsheet title, tabs, and grid sizes |
| Read values, raw values, or formulas from a range |
| Overwrite a range in place ( |
| Append rows after the last row of data |
| Clear values (keeps formatting) |
| Fill one formula across a range with relative references adjusting |
| Insert blank rows/columns at a position |
| Delete entire rows/columns |
| Manage tabs |
| Bold, colors, alignment, wrap, number formats |
| Find & replace across a sheet or the whole file |
| Raw Sheets API batchUpdate escape hatch (charts, merges, validation, …) |
Spreadsheet IDs can be given as bare IDs or full Google Sheets URLs. Rows are 1-based numbers and columns are letters, exactly as in the Sheets UI.
Related MCP server: Claude Google Sheets MCP Server
1. Google Cloud credentials (one-time, needed either way)
In Google Cloud Console, create or pick a project.
Enable the Google Sheets API and Google Drive API.
APIs & Services → OAuth consent screen: set it up, add yourself under Test users. Then click Publish app. This does not require Google's verification review — personal-use apps (under 100 known users) are exempt; you just click through an "unverified app" warning once during authorization. Publishing matters because while the app sits in Testing, Google revokes refresh tokens every 7 days. The local extension recovers automatically by re-opening the browser, but a remote deployment needs a manual re-mint each time.
APIs & Services → Credentials → Create Credentials → OAuth client ID → Desktop app. Save the Client ID and Client Secret.
The Sheets and Drive APIs are free to use, and this project never needs a Cloud billing account attached. Leaving billing unattached is the simplest guarantee against charges.
2a. Local install (Claude Desktop / local Cowork sessions)
npm install
npm run pack # builds and produces google-sheets.mcpb (~1.7 MB)Double-click google-sheets.mcpb, or Claude Desktop → Settings → Extensions →
Install Extension…. Paste your Client ID and Secret into the extension settings.
On first use a browser opens to authorize; the refresh token is cached at
~/.config/google-sheets-mcp/token.json.
The extension asks only for OAuth credentials. Service-account auth is still
supported when running the server directly or remotely — set
GOOGLE_SERVICE_ACCOUNT_KEY_FILE or GOOGLE_SERVICE_ACCOUNT_KEY in the
environment instead.
Local MCP servers do not run in cloud Cowork sessions or on claude.ai — for those, use the remote deployment below.
2b. Remote install (cloud Cowork sessions, web, mobile)
Mint a refresh token — this runs the same browser consent flow and prints a long-lived token for the server to use:
GOOGLE_OAUTH_CLIENT_ID=…apps.googleusercontent.com \
GOOGLE_OAUTH_CLIENT_SECRET=… \
npm run mint-tokenPick a bearer token. This is the shared secret Claude must present on every request:
node -e "console.log(require('crypto').randomBytes(32).toString('base64url'))"Deploy to Cloudflare Workers (free tier is plenty; the Worker is ~174 KB gzipped):
npx wrangler login
npx wrangler secret put MCP_BEARER_TOKEN # the value you just generated
npx wrangler secret put GOOGLE_OAUTH_CLIENT_ID
npx wrangler secret put GOOGLE_OAUTH_CLIENT_SECRET
npx wrangler secret put GOOGLE_REFRESH_TOKEN # from mint-token
npm run deployWrangler prints a URL like https://google-sheets-mcp.<you>.workers.dev. Verify it with
curl https://…/health — it should return ok.
Add it to Claude: Settings → Connectors → Add custom connector.
If your Add-connector dialog has a Request headers section (beta, gradual rollout): URL
https://google-sheets-mcp.<you>.workers.dev/mcpwith headerauthorization: Bearer <your MCP_BEARER_TOKEN>.If it doesn't, put the token in the URL path instead:
https://google-sheets-mcp.<you>.workers.dev/mcp/<your MCP_BEARER_TOKEN>.
Security notes
The endpoint is public, so the bearer token is the only thing standing between the internet and your spreadsheets. Use a long random value and treat it like a password.
Auth fails closed: if
MCP_BEARER_TOKENis unset, every request to/mcpis rejected with 401 rather than running unauthenticated.Token comparison is constant-time, so the secret can't be recovered by timing.
GOOGLE_REFRESH_TOKENgrants access to every spreadsheet your account can open. To narrow that, use a service account instead (GOOGLE_SERVICE_ACCOUNT_KEY, inline JSON) and share only specific sheets with its email address.To revoke everything at once: myaccount.google.com/permissions.
Configuration reference
Env var / secret | Purpose |
| OAuth client (both modes) |
| Pre-minted refresh token (required for remote) |
| Inline service-account JSON (alternative to OAuth) |
| Path to a service-account key (local only) |
| Shared secret required by the remote endpoint |
| Override the local token cache location |
Scopes: spreadsheets (read/write) + drive.metadata.readonly (list/search files).
Development
npm install
npm run build # compile to dist/
npm run typecheck # tsc --noEmit
npm run pack # build + package the .mcpb bundle
npm run dev:worker # run the Worker locally via wrangler
npm run deploy # deploy the Workersrc/
index.ts stdio entry point (local)
worker.ts Cloudflare Worker entry (remote) + bearer auth
server.ts server factory: registers all tool groups
config.ts credentials → token provider, shared by both entries
google/
auth.ts fetch + WebCrypto token providers (refresh token, service account)
client.ts REST client for the Sheets/Drive endpoints used
types.ts minimal API types
node/
localOAuth.ts Node-only desktop OAuth loopback flow
mintToken.ts CLI to print a refresh token for remote deploys
tools/ one module per tool group (read, write, structure, format, advanced)
utils/ A1-notation parsing, tool result/error helpersThis 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.
Related MCP Servers
- AlicenseBqualityAmaintenanceMCP server for Google Sheets - Read, write and manipulate spreadsheets through Claude Desktop446,03593MIT
- AlicenseNot gradedqualityFmaintenanceA comprehensive MCP server for Google Sheets integration with Claude, enabling spreadsheet discovery, data manipulation, and formatting through natural language commands and slash commands.19MIT
- FlicenseBqualityDmaintenanceAn MCP server that enables Claude to interact with Google Sheets via the SheetsDB API, supporting CRUD operations and smart data addition.6
- AlicenseNot gradedqualityBmaintenanceA local MCP server that lets Claude read and write Google Sheets through the Google Sheets API v4, using OAuth2 authentication with your own Google account.171MIT
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/ezrazhang7/google-sheets-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server