# Google Sheets MCP connector

The Google Sheets connector lets Claude, ChatGPT, Cursor, or the Elaichi Agent find, read, update, create, and share your spreadsheets as you, with every change recorded in an append-only audit log.

Source: https://elaichi.ai/connectors/googlesheets/

## Facts

| | |
| --- | --- |
| Application | Google Sheets |
| Category | Knowledge Management |
| AI tools | 34 |
| Authentication | Connects over OAuth |
| Bring your own OAuth app | Yes |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. Connected tools are never listed one by one, however few there are. The endpoint advertises `search_tools` and `execute_tool` instead |

## What you can ask once Google Sheets is connected

- Add a row to the Q3 pipeline sheet for Acme Corp
- What's the total spend in the marketing budget tracker this month?
- Give Priya editor access to the hiring tracker spreadsheet

## Connect Google Sheets in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Google Sheets.
2. Optionally set Share with, then press Connect.
3. Supply your own Google Sheets app, then approve. Google Sheets needs an OAuth app you register yourself, so bring its client ID and secret. One person does this once for the organization.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Google Sheets tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Google Sheets MCP connector for Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Google Sheets MCP connector for ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Google Sheets MCP connector for Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Google Sheets to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Every scope the client asks for starts ticked except "Delete data and remove access", which you tick yourself. Calling a Google Sheets tool needs "Run your connected tools". Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Google Sheets through Elaichi

### Update the pipeline sheet after a call

Sales. Tell the agent what changed and it writes the new stage, amount, and next step into the right row of the pipeline spreadsheet.

### Pull this month's numbers from the budget tracker

Finance. Ask for spend against budget and the agent reads the cells, totals the columns, and answers without anyone opening the file.

### Start a fresh tracker from last quarter's

Operations. Copy an existing spreadsheet, give it a new name, and share it with the right people, all from one request.

### Log escalations to the shared sheet

Support. Append a new row with the customer, the issue, and who owns it the moment a ticket escalates.

### Find the onboarding sheet and check status

HR. Search Drive for the right file, read the new hire's row, and report which steps are still open.

### Check who can see the campaign calendar

Marketing. List the people with access to a spreadsheet and add a colleague as a viewer or editor without hunting through sharing settings.

## Elaichi vs Zapier MCP vs Composio for Google Sheets

All three can connect Google Sheets to an AI assistant, and all three have admin controls. They differ in where access lives and how you pay.

| What to check | Elaichi | Zapier MCP | Composio |
| --- | --- | --- | --- |
| Where the AI connects | One address for the whole organization. Endpoint: https://api.elaichi.ai/mcp | A server per member, created at sign-in. | An MCP endpoint per team, or an SDK. |
| Control over Google Sheets tools | Allow or restrict single Google Sheets tools, per role or user. | App and action restrictions on the account. | Role permissions, down to the action. |
| Record of calls | One audit entry per Google Sheets call. | A History tab of tool calls. | A log of every tool call. |
| Single sign-on | SAML or OIDC, plus SCIM, on Gold. | SAML on Enterprise. | SAML and OIDC on Enterprise. |
| Price | $15 per user per month. | 2 tasks per successful call. | Billed per tool call. |

Sources: Zapier MCP [docs](https://docs.zapier.com/mcp/get-started/quickstart), [security](https://docs.zapier.com/mcp/manage/security), [usage](https://docs.zapier.com/mcp/features/usage); Composio [docs](https://docs.composio.dev/docs/composio-connect), [gateway](https://composio.dev/mcp-gateway), [enterprise](https://composio.dev/enterprise), [pricing](https://composio.dev/pricing). Checked September 2026.

Longer take: [Zapier MCP alternative](/blog/zapier-mcp-alternative/) and [when you don't need an MCP gateway](/blog/when-you-dont-need-an-mcp-gateway/).

## Frequently asked questions

### How do I connect Google Sheets to Claude?

Connect Google Sheets in Elaichi first. Google Sheets needs an OAuth application that you register on the Google side yourself, so one person brings a client ID and secret once, and after that everyone signs in through the normal Google consent screen. Then open Claude, go to Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp. The whole setup takes about twenty minutes.

### Does Google Sheets work with ChatGPT and Cursor as well as Claude?

Yes. Once Google Sheets is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client, and the Elaichi Agent. You connect Google Sheets once and sign in to each client as yourself.

### What can an AI agent actually do with my Google Sheets data?

It can find a spreadsheet by name, read the rows and cells, add a new row, update a value, create a new spreadsheet, copy an existing one, export a file, and see or grant who has access. It can also browse folders and shared drives in Google Drive to locate the right file. Short concrete asks work best, like asking it to add a row to the pipeline sheet for Acme rather than describing the task in a long paragraph.

### Does connecting Google Sheets give the AI access to every spreadsheet in my Drive?

No. The AI works as the person who signed in to Google Sheets, so it only sees the spreadsheets, folders, and shared drives that person can already open, and the same viewer or editor rules apply. Elaichi can narrow that further with restrictions, but it can never widen access beyond what Google Sheets already grants you.

### Can my team share one Google Sheets connection?

Yes. One person connects Google Sheets in Elaichi and shares the connection with a team, and nobody else has to handle the client ID or secret. Each person still signs in to Elaichi as themselves, so the audit log names who read or changed which spreadsheet.

### Can I stop an agent from changing things in Google Sheets?

Yes. Restrictions in Elaichi work per action, so you can allow reading a spreadsheet while blocking updates, new rows, copies, or sharing changes in Google Sheets. A restricted action is left out of the tool list the AI client sees, so it cannot be called no matter what the prompt says.

### What happens to a Google Sheets connection when someone leaves?

Offboarding that person in Elaichi ends their access to Google Sheets through every AI client at once. If they had shared a Google Sheets connection with a team, it keeps working for everyone else. Disconnecting Google Sheets once in Elaichi removes it from Claude, ChatGPT, Cursor, and every other client at the same time.

### Does the Google Sheets MCP connector work with Gemini, Codex, Claude Code or other MCP clients?

Yes. Google Sheets is reached over the same MCP endpoint every client uses, so anything that speaks MCP can call it — Gemini, Codex, Claude Code, Windsurf, Cline, Zed and OpenCode among them — alongside Claude, ChatGPT, Cursor, and the Elaichi Agent. The tools on offer and the access behind them are identical whichever client asks. Only the setup screen differs.

### Is Elaichi an alternative to Zapier MCP for Google Sheets?

Yes. Both let Claude, ChatGPT or Cursor use Google Sheets. Zapier MCP fits a team that already automates in Zapier, since each person signs in and acts as themselves in that account. Elaichi fits when IT wants one address for the whole company, per-tool rules by role, and a record of every Google Sheets call.

### How is Elaichi different from Composio for Google Sheets?

Composio gives AI agents tools and sign-in handling across 1,000+ apps, for developers building agents or people using an assistant, billed per tool call. Elaichi gives a company's own people governed access to Google Sheets: one address, restrictions per role or user, and $15 per user per month. Both have role permissions and a log of every call.

## All 34 Google Sheets tools

Every tool below is callable through https://api.elaichi.ai/mcp once Google Sheets is connected, subject to the toolbox it is in and the restrictions on the caller.

- **List all Google Sheets files** (List). List Google Drive files accessible to the connected account in googlesheets, excluding folders by default; filter further with the optional q parameter. Returns: id, mimeType.
- **Get single Google Sheets file by ID** (Get). Get a single Google Drive file's metadata by id in googlesheets, with access to files stored in shared drives. Returns: id, mimeType. Required: id (string file id).
- **Google Sheets files copy** (Copy). Create a copy of an existing Google Drive file in googlesheets. Returns the newly created file including its id and mimeType. Required: file_id (source file id).
- **List all Google Sheets folders** (List). List Google Drive folders for googlesheets, filtered by default to mimeType `application/vnd.google-apps.folder`. Returns: id, name, mimeType. Defaults: q to the folder MIME filter, fields to * (all fields).
- **Get single Google Sheets folder by ID** (Get). Get a single Google Drive folder by id. Returns: id, name, mimeType. Required: id. Defaults: fields to * (all fields).
- **List all Google Sheets drive** (List). List drives from the Google Drive account connected to googlesheets. Returns drive records, each with its id.
- **Get single Google Sheets drive by ID** (Get). Get a single drive by id from the Google Drive account connected to googlesheets. Returns the drive record with its id. Required: id.
- **List all Google Sheets search** (List). List Google Drive files in googlesheets, typically to discover available spreadsheets. Returns each file's id, name, created_at, and updated_at. A fields selector narrows which file properties are returned; it defaults to * (all fields).
- **Get single Google Sheets file export by ID** (Get). Export the contents of a Google Sheets spreadsheet by file id. Returns the raw exported file contents; the response body is content-type-specific rather than a structured JSON object. Required: id.
- **List all Google Sheets userinfo** (List). Get the OpenID Connect profile of the Google account authenticated for this googlesheets connection. Returns: sub, name, given_name, family_name, picture, email, email_verified, locale, hd. Requires no parameters.
- **List all Google Sheets drive items** (List). List files in the connected Google Drive via googlesheets, including items from all drives. Returns each file's id, name, mimeType, size, createdTime, modifiedTime, and parents.
- **Get single Google Sheets drive item by ID** (Get). Get a single file from Google Drive via googlesheets by its id, including items in shared drives. Returns the file resource with id, name, mimeType, size, createdTime, modifiedTime, and webViewLink. Required: id.
- **Create a Google Sheets watch** (Create). Create a watch on a Google Sheets file to start receiving notifications for changes to that file. Returns the created watch record including postId, content, author, and createTime. Required: file_id.
- **List all Google Sheets permissions** (List). List the sharing permissions granted on a spreadsheet file in googlesheets. Returns each permission with its id, role, type, emailAddress, domain, allowFileDiscovery, and permissionDetails. Required: file_id.
- **Create a Google Sheets permission** (Create). Create a new sharing permission on a spreadsheet file in googlesheets. Returns the created permission object including its id, type, role, emailAddress, and displayName. Required: file_id, role, type.
- **List all Google Sheets drive labels** (List). List the Google Drive labels the connected account can access. Returns a collection of label objects, each including its id and the Label attributes defined by the Google Drive Labels API.
- **List all Google Sheets spreadsheets** (List). List spreadsheets in the connected googlesheets account by querying Google Drive for files matching the spreadsheet MIME type. Returns Drive file records including id and mimeType; pagination is handled automatically.
- **Get single Google Sheets spreadsheet by ID** (Get). Get a single Google Sheets spreadsheet by id. Returns the full Spreadsheet resource including spreadsheetId, properties, sheets, namedRanges, and spreadsheetUrl. Required: id.
- **Create a Google Sheets spreadsheet** (Create). Create a new Google Sheets spreadsheet. Returns the newly created Spreadsheet including spreadsheetId, properties, sheets, namedRanges, and spreadsheetUrl.
- **Google Sheets spreadsheets batch update** (Update). Apply one or more updates to a Google Sheets spreadsheet in a single call; each request is validated before being applied. Returns spreadsheetId, replies (one per request), and the updatedSpreadsheet when requested. Required: spreadsheet_id, requests.
- **Google Sheets spreadsheets get by data filter** (Get). Get a googlesheets spreadsheet matching the supplied data filters via a read-only POST. Returns: spreadsheetId, properties, sheets, namedRanges, spreadsheetUrl, developerMetadata, dataSources, dataSourceSchedules, comments, commentsViewMode. Required: spreadsheet_id.
- **Create a Google Sheets spreadsheets value** (Create). Append values to a googlesheets spreadsheet, detecting the table where the values should be appended. Returns a ValueRange with the resulting range, majorDimension, and values. Required: spreadsheet_id, range, values.
- **List all Google Sheets spreadsheets values** (List). List one or more ranges of values from a googlesheets spreadsheet. Returns each range as a ValueRange with its A1 range, majorDimension, and cell values. Required: spreadsheet_id.
- **Update a Google Sheets spreadsheets value by ID** (Update). Set values in a range of a googlesheets spreadsheet, overwriting the existing cell data. Returns a ValueRange with the updated range, majorDimension, and values. Required: spreadsheet_id, range, values.
- **Google Sheets spreadsheets values clear** (Clear). Clear values from a range in a googlesheets spreadsheet. Returns the confirmed A1 range that was cleared. Required: spreadsheet_id, range.
- **Create a Google Sheets spreadsheets sheets copy to** (Create). Copy a single sheet from one Google Sheets spreadsheet to another spreadsheet. Returns the properties of the newly created sheet, including its sheetId and title. Required: spreadsheet_id, sheet_id, and the destination spreadsheet's id in the request body.
- **Get single Google Sheets spreadsheets developer metadatum by ID** (Get). Get a single developer metadata entry in a googlesheets spreadsheet by id. Returns the metadata object including its metadataId, metadataKey, metadataValue, location, and visibility. Required: spreadsheet_id and id.
- **List all Google Sheets spreadsheets developer metadata search** (List). Search all developer metadata in a Google Sheets spreadsheet matching the specified DataFilters. Returns: metadataId, metadataKey, metadataValue, location, visibility. If none match, an empty response is returned. Required: spreadsheet_id.
- **Update a Google Sheets spreadsheets values batch by ID** (Update). Update values in one or more ranges of a Google Sheets spreadsheet in a single batch call. Returns one result per requested range with spreadsheetId, updatedRange, updatedCells, and updatedData. Required: spreadsheet_id, valueInputOption, and data (each entry pairing an A1 range with the values to write).
- **Google Sheets spreadsheets values batch clear** (Clear). Batch-clear values from one or more ranges of a googlesheets spreadsheet in a single call. Returns the cleared ranges as a list of A1 notation strings. Required: spreadsheet_id and ranges.
- **List all Google Sheets spreadsheets values batch data filter** (List). Read one or more ranges of values from a googlesheets spreadsheet that match the specified data filters. Returns each matching range with its A1 range, majorDimension, and cell values. Required: spreadsheet_id.
- **Update spreadsheets values batch data filter by ID** (Update). Set values in one or more ranges of a googlesheets spreadsheet matching the specified data filters. Returns the written ranges with their A1 range, majorDimension, and values. Required: id (spreadsheet_id).
- **Google Sheets spreadsheets values batch data filter clear** (Clear). Clear one or more ranges of values in a googlesheets spreadsheet by specifying DataFilters. Returns: spreadsheetId, clearedRanges. Required: spreadsheet_id, dataFilters.
- **Get single Google Sheets value by ID** (Get). Get a range of cell values from a Google Sheets spreadsheet. Returns the values read from the requested range as an array of rows, each row an array of cell values, with empty trailing rows and columns omitted. Required: spreadsheet_id, range.
