Google Sheets MCP Server
Pricing
Pay per event + usage
Google Sheets MCP Server
Let Claude, Cursor or any MCP client read and write your Google Sheets: list tabs, read ranges, append or update rows, export an Apify dataset. Signs in with your own Google service account; failed calls are free.
Pricing
Pay per event + usage
Rating
0.0
(0)
Developer
Joshua White
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 hours ago
Last modified
Categories
Share
Let Claude, Cursor or any other MCP client read and write your Google Sheets. Your agent can list a spreadsheet's tabs, read ranges, append or update rows, and export a whole Apify dataset to a tab.
It signs in with your own Google service account, so there's no shared quota, no OAuth app to approve, and nothing that expires. The service account can only open sheets you share with it. Apify starts the server when your agent calls it and stops it when it goes quiet.
Tools
| Tool | What it does |
|---|---|
list_sheets | Lists a spreadsheet's tabs, with their size and link |
read_range | Reads cells (Leads!A1:D50, A1:D50, or a whole tab). Long tabs come back in pages, with the next range to read |
append_rows | Adds rows under the last one. Objects are matched to the header by name (new fields become columns). Arrays are written as they are. Can skip rows already in the tab |
update_range | Overwrites cells from a top-left cell, and grows the tab if needed |
export_dataset | Writes an Apify dataset to a tab: append, replace, or only new rows |
Values are written as plain values, never as formulas. One call reads or writes at most 5,000 rows.
Setup (about 5 minutes, once)
You need a Google service account: a robot Google user that only gets access to the sheets you share with it. It's free, and Google asks for no billing details to use the Sheets API.
- Open console.cloud.google.com and sign in. In the project picker at the top,
choose New project, name it (for example
apify-sheets), and click Create. Make sure the new project is selected. - Open the Google Sheets API page and click Enable.
- Go to IAM & Admin > Service Accounts > Create service account. Give it a name, click Create and continue, skip the optional role step, and click Done.
- Click the new service account, open the Keys tab, then Add key > Create new key > JSON > Create. A
.jsonfile downloads. - In the file, find
"client_email"(something likeapify-sheets@your-project.iam.gserviceaccount.com). Open each Google Sheet your agent should use, click Share, paste that email, choose Editor, untick Notify people, and click Share.
Google Workspace (company) accounts: some organizations block service-account keys. If step 4 says key creation is disabled by policy, use a personal Google account for the project. Your sheet can still live anywhere, as long as it is shared with the service account's email.
Connect your agent
-
Turn your key file into one line of base64:
base64 -w0 key.json(on macOS:base64 -i key.json). -
Add the server to your client, using the MCP URL from this Actor's Endpoints tab (it ends in
/mcp) and two headers. For Claude Code:claude mcp add --transport http google-sheets https://<username>--google-sheets-mcp.apify.actor/mcp \--header "Authorization: Bearer <your Apify API token>" \--header "X-Google-Service-Account-Key: <the base64 line>"Other clients take the same URL and the same
headersin their JSON config. -
Ask your agent something like "List the tabs of https://docs.google.com/spreadsheets/d/... and add these leads to the Leads tab."
Optional input: a default sheet (used when the agent names none) and the key itself, if your client can't send custom headers. Both are set in the Actor's input; the key field is stored encrypted.
If a tool can't do something (sheet not shared, a wrong tab name, a missing key), it returns a plain-English fix, for example the exact email to share the sheet with, and that call is free.
To export a dataset to a sheet after every scraper run, without an agent, use the Dataset to Google Sheets Export Actor instead. It shares this server's Google code.
Pricing
Pay per event: you pay per successful tool call, plus a per-row price for rows export_dataset writes (header
rows and rows skipped as duplicates are free). Failed calls are free. As with any Actor that runs in Standby mode,
Apify also bills the run's platform usage while your agent is connected, and for a short idle period after its last
call. Starting it by hand (not through the MCP URL) does nothing and charges nothing.
Limits worth knowing
- Google allows 10 million cells per spreadsheet and 50,000 characters per cell.
- Your service account gets Google's standard quota of 60 write requests per minute. Rate limits and Google hiccups are retried with backoff.
FAQ
Is my key safe? It travels in a header over HTTPS to your own Actor run (runs are never shared between users). It is held in memory only while the run is up, and never logged or stored. The service account can only open sheets you share with it, and you can delete the key in Google Cloud at any time.
Can it write formulas? No. Everything is written as plain values, on purpose.
Does it read my other files? No. It asks Google only for spreadsheet access, and it can see only sheets shared with it.
Testing status
Tested end to end against a fake Google API that checks the signed sign-in and reproduces Google's documented errors and limits: every tool, through a real MCP client, against the real Actor process. A test against real Google is still to come.