
Google Sheets MCP Server by xing5: Setup for Claude, Cursor and Other Apps
Lets Claude, Cursor and other assistants read, write, chart and share your Google Sheets spreadsheets.
This community server (not made by Google) lets your assistant list and search your spreadsheets, read and change cells, add tabs, rows and charts, and share files with other people. It runs on your computer and talks to Google with a service account key or your own Google sign-in. Setting up the Google Cloud project and credentials is the longest step, so plan for it before you start. The server asks Google for full Drive and Sheets access, and it has no read-only switch, though you can turn on only the read tools.
Good for
- Anyone who wants Claude to clean up, fill in or summarise spreadsheets
- Teams that want an assistant limited to one shared Drive folder through a service account
- Developers who already use Google Cloud and want local, scriptable control
Works in
12 should work
Tap an app to see how to set it up and any known problems.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Client does not support this transport.
Client does not support this transport.
Install mcp-google-sheets
Claude Desktop
- 1
Have these values ready, then replace the placeholders in the snippet.
SERVICE_ACCOUNT_PATH Required Path to a Google service account key file. Recommended. You can use OAuth, CREDENTIALS_CONFIG or Application Default Credentials instead. DRIVE_FOLDER_ID Optional ID of the Drive folder shared with the service account. ENABLED_TOOLS Optional Comma-separated tool names to turn on (default: all 20). - 2
Open this file. Create it if it does not exist.
- 3
Add this entry. If the file already lists servers, add it next to them.
json{ "mcpServers": { "google-sheets": { "command": "uvx", "args": ["mcp-google-sheets@latest"], "env": { "SERVICE_ACCOUNT_PATH": "/full/path/to/your/service-account-key.json", "DRIVE_FOLDER_ID": "your_shared_folder_id_here" } } } } - 4
Quit and reopen Claude Desktop to load it.
Requires uv (Python), Google Cloud service account.
Read-only mode: Set ENABLED_TOOLS to the nine read tools only.
The README recommends the @latest suffix; without it uvx may reuse an older cached copy. On macOS, if you get spawn uvx ENOENT, use the full path to uvx (for example /Users/<you>/.local/bin/uvx).
From the project README. Source.
Tools
Lists the spreadsheets in your Drive folder
Returns the id and title of each spreadsheet in the shared Drive folder, or in My Drive if you set no folder.
Try: “List every spreadsheet in my AI Managed Sheets folder.”
Network ·
list_spreadsheetsFinds spreadsheets by name or content
Searches Google Drive for spreadsheets whose name or content matches your words, up to 100 results.
Try: “Find my spreadsheets that mention "Q3 budget".”
Network ·
search_spreadsheetsLists Drive folders
Shows the folders inside a parent folder, or in the root of My Drive, with their ids.
Try: “Show the folders in my Drive root.”
Network ·
list_foldersLists the tabs in a spreadsheet
Returns the names of all tabs in one spreadsheet so the assistant can pick the right one.
Try: “What tabs does the Sales Report spreadsheet have?”
Network ·
list_sheetsReads cells from a tab
Reads a range such as A1:C10, or a whole tab, as values. It can return full grid data with formatting, which is much larger.
Try: “Read A1 to E10 from Sheet1 of Quarterly Sales Report.”
Network ·
get_sheet_dataReads formulas from a tab
Returns the formulas in a range as a grid, not the calculated values.
Try: “Show me the formulas in column D of the Budget tab.”
Network ·
get_sheet_formulasReads several ranges in one call
Takes a list of spreadsheet, tab and range triples and returns each result, with an error note for any that failed.
Try: “Pull B2:B10 from Sales and C2:C10 from Inventory in one go.”
Network ·
get_multiple_sheet_dataPreviews several spreadsheets
Returns the title, tab names, headers and the first few rows of each spreadsheet you list.
Try: “Give me a quick summary of the Sales Data and Inventory Count spreadsheets.”
Network ·
get_multiple_spreadsheet_summaryFinds cells that contain a word
Searches one tab or every tab for cells containing your text and returns each match with its cell address and value.
Try: “Find every cell containing "overdue" in the Invoices spreadsheet.”
Network ·
find_in_spreadsheetMakes a new spreadsheet
Creates an empty spreadsheet with your title, in the folder you name or the configured default folder.
Try: “Create a spreadsheet called Quarterly Sales Report Q3.”
Write ·
create_spreadsheetAdds a tab
Adds a new tab with the name you give to an existing spreadsheet.
Try: “Add a tab named Summary to the Project Tasks spreadsheet.”
Write ·
create_sheetWrites values into a range
Writes a grid of values into a range. It overwrites whatever was in those cells.
Try: “Set B2 on the Tasks tab to "In Progress".”
Write ·
update_cellsWrites to several ranges at once
Updates many ranges of one tab in a single call, each range given its own grid of values.
Try: “Fill A1:B2 with the monthly totals and D5 with "Done".”
Write ·
batch_update_cellsInserts empty rows
Inserts a number of blank rows at a row position you pick. The default position is the top of the tab.
Try: “Insert 3 blank rows at row 10 of the Log tab.”
Write ·
add_rowsInserts empty columns
Inserts a number of blank columns at a column position you pick. The default is the left edge.
Try: “Add 2 empty columns after column C on Sheet1.”
Write ·
add_columnsCopies a tab into another spreadsheet
Duplicates a tab from one spreadsheet to another and gives the copy the name you choose.
Try: “Copy the Template tab from Master into the Q4 spreadsheet.”
Write ·
copy_sheetRenames a tab
Changes the name of an existing tab.
Try: “Rename Sheet1 to Transactions in the Ledger spreadsheet.”
Write ·
rename_sheetAdds a chart from a range
Builds a column, bar, line, area, pie, scatter, combo or histogram chart from a range, with optional title, axis labels, position and size.
Try: “Add a column chart of monthly revenue from A1:B13 in the Sales Report.”
Write ·
add_chartShares a spreadsheet with people
Gives the email addresses you list reader, commenter or writer access, and emails them unless you turn notifications off.
Try: “Share the Team Vacation Schedule with team@example.com as a reader, without notifications.”
Write ·
share_spreadsheetRuns raw Sheets batch requests
Sends any list of Google Sheets batchUpdate requests, which includes deleting rows, columns and conditional-format rules as well as formatting and adding tabs.
Try: “Delete rows 5 to 10 on Sheet1 of the Log spreadsheet.”
Delete ·
batch_update
Read from the source code
Permissions
high risk · 6 things to watch
High risk
The assistant can change and delete spreadsheet content, and share files with anyone by email, using credentials that cover Google Drive and Sheets. Give it a service account that can only reach one shared folder, and turn on only the read tools if you just need to look at data.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only modeHow to turn it on
Watch out for
It can delete rows and columns
batch_update accepts any Sheets request, including deleting rows, columns and rules, and is flagged destructive. Use filtering to leave it out, and keep copies of important sheets. github.com
It asks Google for full Drive access
The server requests the whole Drive and Sheets scopes. A service account only sees what you share with it, so share one folder, not your whole Drive. github.com
It can share files by email
share_spreadsheet gives people reader, commenter or writer access and emails them by default. Leave it out of your enabled tools if you do not want the assistant sharing files. github.com
update_cells overwrites existing data
Writes replace whatever is in the target cells with no undo from the server. Ask the assistant to confirm the range first. github.com
SSE mode listens on every network interface with no sign-in
With --transport sse the server binds to 0.0.0.0 on port 8000 unless you set HOST or FASTMCP_HOST, and the README's Docker example sets HOST=0.0.0.0. Anyone on your network could then call the tools with your Google credentials. Keep the default stdio mode, or bind to 127.0.0.1. github.com
Reads cost context
With all tools on, the README says they use about 13,000 tokens before you type anything. Filtering to the tools you need cuts that. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Turning on read-only | No read-only flag. Set ENABLED_TOOLS or pass --include-tools with only list_spreadsheets, list_sheets, get_sheet_data, get_sheet_formulas, get_multiple_sheet_data, get_multiple_spreadsheet_summary, list_folders, search_spreadsheets and find_in_spreadsheet. |
|---|---|
| Talks to | Google Sheets and Google Drive APIs |
| Sign-in and keys | Service account key file, OAuth client file or base64 credentials in environment variables. With OAuth, the sign-in token is saved to a file (token.json by default). |
| Scopes |
|
Questions
Is the Google Sheets MCP server by xing5 official?
No. It is a community project by Xing Wu, not made or endorsed by Google.
Which AI apps work with it?
Any app that can start a local MCP server, such as Claude Desktop, Claude Code and Cursor. The README shows a Claude Desktop config. The install box has the command for each app.
Do I need a Google Cloud project?
Yes. You enable the Google Sheets API and Google Drive API, then create a service account key (recommended) or an OAuth client. Application Default Credentials from gcloud also work.
Can it only read my sheets?
Not by default. There is no read-only flag, but you can enable only the nine read tools with the ENABLED_TOOLS variable or the --include-tools option. Our advice: also share the folder with the service account as Viewer only.
Can it delete data?
Yes, through the batch update tool, which can delete rows, columns and formatting rules. update_cells also overwrites cells. Leave both out of the enabled tools if you want it to be safe.
Why does the README say 19 tools when this page lists 20?
The README is behind the code. The v0.6.3 source registers 20 tools; the README's "19" and "about 13K tokens" figures predate one of them. This page counts from the source.
Does it run on my computer or in the cloud?
On your computer. It starts as a local process that calls the Google APIs. A Docker mode over SSE is also documented.
How do I always get the newest version?
Add @latest after the package name in the uvx command. The README says without it uvx may reuse an older cached copy.
Is it free?
Yes. The server is MIT licensed and has no fee. You need a Google account and a Google Cloud project for the credentials.
Information
updated Nov 2, 2026
- Publisher
- Community
- Package
mcp-google-sheets- Registry
- PyPI
- Transport
- stdio, SSE
- Auth
- token in env
- Version
- 0.6.3
- License
- MIT
- Last commit
- May 14, 2026
- Open issues
- 21
Other Google Sheets MCP servers
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 3Hide
- github.com · github.com
- github.com · github.com
- github.com · github.com