# Google Sheets MCP server: hosted, no Google Cloud setup

> Use a hosted MCP server for Google Sheets in Claude Code, Cursor and other MCP clients. No service account, no local process.

Source: https://datatomcp.com/guides/google-sheets-mcp-server · By Killian Helf · Updated 2026-10-19

Most Google Sheets MCP servers are local processes. You create a Google Cloud project, enable the Sheets API, make a service account, share the sheet with its email address, download a JSON key and run the server next to your editor. That works on your machine and nowhere else.

datatomcp is a **hosted** MCP server for your sheets. There is nothing to install and no Google Cloud setup, and it works in every MCP client that supports remote servers: Claude Code, Cursor, Claude.ai, Claude Desktop and others.

## How it differs from a local Sheets MCP

| | Local Sheets MCP (typical) | datatomcp |
|---|---|---|
| Setup | Google Cloud project, service account, JSON key | Sign in with Google, pick the sheet |
| Access | Sheets shared with the service account | Only the files you pick (`drive.file`) |
| Runs | On your machine, per client | Hosted, one URL for every client |
| Big tabs | Tool returns raw cell ranges | Filters and totals computed server-side |
| Writes | Often read and write | Read-only, by design |

If you need an agent to **edit** cells, a local server is the right tool. If your agents need to **answer questions** from sheet data, a read-only query server is safer and more accurate.

## 1. Import the sheet

Sign in at [app.datatomcp.com](https://app.datatomcp.com/login), then **Add data → Google Sheet → Choose a Google Sheet**. The import report shows each column's type and any data problems before agents see it.

## 2. Add the server to your client

The server URL is the same for every client: `https://app.datatomcp.com/mcp` (Streamable HTTP, OAuth).

**Claude Code**

```bash
claude mcp add --transport http datatomcp https://app.datatomcp.com/mcp
```

Run `/mcp`, choose **datatomcp** and authenticate in the browser.

**Cursor**

Open **Settings → MCP → Add new server**, choose type HTTP and use the URL above. Cursor asks you to log in the first time it connects. (We test every release with Claude Code and Claude.ai; Cursor uses the same remote MCP standard.)

**Claude.ai and Claude Desktop**

**Settings → Connectors → Add custom connector**, paste the URL, connect and allow access. See [Connect Google Sheets to Claude](/guides/connect-google-sheets-to-claude) for the full walkthrough.

## 3. The tools your agent gets

| Tool | What it does |
|---|---|
| `list_datasets` | Every dataset the account can read, with row counts and freshness |
| `describe_dataset` | Columns, types, example values, data warnings and today's date |
| `query_rows` | Filter, sort, select columns, paginate (up to 1,000 rows per call) |
| `aggregate` | Group by columns; count, distinct count, sum, average, min, max |
| `distinct_values` | The real values in a column, so filters match exactly |

Filters support `eq`, `neq`, `gt`, `gte`, `lt`, `lte`, `in`, `not_in`, `contains`, `starts_with`, `between`, `is_null` and `not_null`. Agents can't run SQL: the tools are validated and capped, so a confused agent can't run something slow.

## Example

> Which product had the highest revenue in Q3, and by how much?

The agent calls `aggregate` with `group_by: ["product"]`, a `between` filter on the date and `order_by` on the revenue metric, then reports the top rows. Every result includes `meta.version`, so you can tell which sync of the sheet the answer came from.

## Sync

**Refresh now** re-reads the sheet on demand. Pro syncs every hour and skips unchanged sheets, so versions only change when your data does.
