SheetDB MCP server: connect Claude, ChatGPT and Cursor to Google Sheets
Let your AI assistant read and write the Google Sheets behind your SheetDB APIs from a conversation. Paste one address into Claude, ChatGPT, Cursor or Claude Code, sign in with the Google account you use for SheetDB, and ask: "Which customers in my sheet have not paid yet?" or "Add these three leads to the CRM tab." No API key to copy, no script to write, and nothing is deleted without a human saying yes.
MCP server URL
Streamable HTTP · OAuth
https://sheetdb.io/mcp
What is an MCP server for Google Sheets?
MCP (Model Context Protocol) is the open standard AI assistants use to call tools in other products. A server publishes a list of tools with a description and a schema; the assistant decides when to call them and shows you the result. The SheetDB MCP server publishes ten tools for the spreadsheets you already connected to SheetDB: list APIs, describe a sheet, read, search, add, update and delete records, and create a new API from a spreadsheet URL.
Under the hood the server runs on the same code as the SheetDB REST API. A tool call takes the same path as an HTTP request: the same cache, the same per-API permissions, the same rate limits and the same Google quota handling. That is deliberate. The agent gets a different door into your data, not a different set of rules.
You do not need a Google Cloud project, a service account or an OAuth app of your own. SheetDB already talks to Google Sheets on your behalf (see how to use Google Sheets as a database); the MCP server adds an assistant on top.
-
10 tools, one sheet at a time
List, describe, read, search, add, update and delete records, plus a new API from a spreadsheet URL.
-
Same rules as the REST API
Same cache, per-API permissions, rate limits and Google quota handling. A different door, not different rules.
-
Nothing to set up at Google
No Google Cloud project, service account or OAuth app. Sign in with the Google account you already use.
Connect your AI assistant in 3 steps
The three steps are the same everywhere: add the server URL, sign in with Google, approve the connection. Where to click differs per client.
-
1
Add the server
Paste the MCP server URL into your assistant's connectors or MCP settings.
-
2
Sign in with Google
Use the Google account you sign in to SheetDB with. The agent gets its own session.
-
3
Approve and ask
Confirm the connection, then ask about one of your sheets in plain language.
- 1 Open Settings → Connectors → Add custom connector and paste the server URL.
- 2 Click Connect. A SheetDB page opens: sign in with the Google account you use for SheetDB.
- 3 Approve the connection. Back in Claude, enable the SheetDB connector in the chat and ask about one of your sheets.
Claude.ai and Claude Desktop share connectors: a connector added in one place is available in both.
- 1 Open Settings → Connectors → Create.
- 2 Paste the server URL as the MCP server URL, choose OAuth as authentication and save.
- 3 Sign in with Google and approve. In a new chat, add the SheetDB connector from the tools menu.
Developer mode may need to be enabled in your workspace or plan.
-
1
Open Settings → MCP → Add new MCP server, give it the name
sheetdband paste the server URL. - 2 Cursor opens your browser for the SheetDB sign-in. Sign in with Google and approve.
- 3 The SheetDB tools appear in the Agent chat.
Cursor asks before running a write tool unless you change that in its settings.
-
1
In your terminal, add the server:
claude mcp add --transport http sheetdb https://sheetdb.io/mcp -
2
In Claude Code, type
/mcp, pick sheetdb and follow the sign-in link. Sign in with Google in the browser and approve. - 3 Back in the terminal, ask the agent about one of your APIs; the SheetDB tools show up in the session.
Other clients that support remote MCP servers with OAuth (VS Code with Copilot, Windsurf and others) work the same way: paste the URL, sign in, approve.
Once connected, the assistant shows up in AI agents in your SheetDB panel as an Agent connection, with the client name, the date and the last use.
What can the agent do? The tools
Every tool works on one API, identified by the public api_id from your endpoint URL. "Request" says whether a call counts as one request of your plan, exactly like one HTTP request (see what is a request).
-
list_apisRead-onlyYour APIs and the ones shared with your team: api_id, name and what the agent may do with each; tabs and columns come from describe_api.
Request: No
-
describe_apiRead-onlyTabs, column names, number of records, 3 sample records and the agent's permissions of one API.
Request: Yes
-
read_recordsRead-onlyReads records page by page (limit up to 5000, offset), from a chosen tab, sorted.
Request: Yes
-
search_recordsRead-onlyFinds records matching all (AND) or any (OR) conditions, with the same operators and wildcards as the HTTP API.
Request: Yes
-
create_recordsWriteAppends records, with the same special values (INCREMENT, TIMESTAMP, DATETIME) as the HTTP API.
Request: Yes
-
update_recordsDestructiveChanges the matching records. Above the Approval threshold, or when you require approval in the panel, it only proposes the change as a Pending action.
Request: Yes
-
delete_recordsDestructiveCounts the matching records and returns a preview as a Pending action; it deletes at once only when you switched approval off for that API.
Request: Yes (the preview)
-
confirm_deleteDestructiveExecutes a Pending action (delete or update) within the Approval threshold after you agreed in the chat; checks the expected count first.
Request: No · Asks the user
-
get_pending_actionRead-onlyStatus of a Pending action: pending, executed, rejected or expired.
Request: No
-
create_api_from_spreadsheetWriteTurns a Google Sheets URL into a new SheetDB API, like the Create API button in the panel.
Request: No (counts as an API of your plan)
Not available through MCP, on purpose: deleting a whole tab, creating or deleting tabs, editing single cells, JSON import, cache purge and statistics. Those stay in the panel and the REST API.
What a conversation looks like
Say a tab called customers has the columns id, name, age and comment. A few things you can ask:
-
“Which sheets do I have in SheetDB?”
list_apis describe_apiThe agent names your APIs with what it may do on each.
describe_apithen shows the tabs and columns of the one you pick. -
“Show me the customers older than 18 with the comment special.”
search_recordsOne call with
age: ">18"andcomment: "special", the same operators as/searchover HTTP. -
“Add Mark, 35, new customer.”
create_recordsAppends the row. The
idcolumn can be filled withINCREMENT. -
“Delete the customers marked cancelled.”
delete_records confirm_deleteAnswers with the count and a sample of the rows. The agent shows them to you and asks. Only then it calls
confirm_delete, or sends you to the panel if the change is big.
Security model: what the agent may never do
An assistant that can write to your spreadsheet is useful exactly to the degree that you trust what it will not do. Three layers decide that.
Layer 1
Agent permissions per API
The moment your first agent connects, every API in your account gets an AI agents section in its settings. Agents may only read until you switch on create, update or delete for that API. These Agent permissions are an intersection with the API's own permissions: if the API does not allow DELETE over HTTP, no agent can delete through it either, whatever you tick. When a tool is refused, the agent gets a plain answer with a link to the right settings page, so it tells you where to enable the operation instead of trying again.
Layer 2
Approval threshold for deletes and mass updates
delete_records deletes nothing. It counts the matching rows, stores a Pending action and returns a preview written by SheetDB, not by the model: how many rows, a sample of up to 10, and an id. What happens next depends on the Approval threshold of the API:
-
Up to 10 rows and 5% of the tab (the default): the agent shows you the preview and, after you agree in the chat, calls
confirm_deletewith the exact count it expects. The server rejects the call if the count differs, re-reads the rows from Google right before deleting and stops if they changed in the meantime. - Above the threshold, or on an API set to always approve in panel: the agent gets a link to the SheetDB panel. You see the rows, with the changed cells highlighted for an update, and click Approve or Reject while signed in. That approval does not depend on the AI client and cannot be faked by the model.
- A Pending action is one-time, bound to the agent that proposed it, and expires after 5 minutes (chat) or 15 minutes (panel). Rejected or expired actions report their status clearly, so the agent does not retry in a loop.
The same mechanism covers update_records above the threshold. Owners who want no questions at all can set the threshold to no approval per API; the default is deliberately cautious.
Layer 3
Limits that always apply
- The agent sees only the APIs you see in the panel: your own and, with Shared APIs in a team, your team's. Never anyone else's.
- Every call checks, in order: your sign-in and the Agent connection, that you can access the API, the API permissions, the Agent permissions, and the threshold.
- Per-API rate limits and the cache apply as for HTTP, plus a limit of tool calls per minute per Agent connection. An agent stuck in a loop is told to slow down instead of exhausting your quota.
- Cell values are treated as data, never as instructions. Tool results tell the model so, and nothing in a result is phrased as a command.
- Revoke any Agent connection with one click in AI agents; the assistant is signed out immediately.
Pricing and plans
MCP is included in every SheetDB plan, including the free plan. A tool call that reads or writes records counts as one request, like one HTTP request; listing APIs, checking a Pending action, confirming a delete and creating an API are free. Your API statistics show how many requests came from AI agents.
No MCP client? Use the REST API
Tools that cannot speak MCP yet, like a custom GPT, an automation in n8n or Make or your own agent code, can call the SheetDB REST API directly: the same read, search, create, update and delete operations with a URL per sheet. The use cases show it in PHP, Node.js, WordPress and no-code tools.
FAQ
Can the agent see data of other SheetDB users?
No. The agent signs in with your Google account and gets exactly the APIs you see in the SheetDB panel: your own and, if your team has Shared APIs enabled, the APIs of your team members. It cannot list, guess or reach any other API, and it never sees internal identifiers, only the public api_id that is already in your endpoint URL.
How are requests made by an AI agent counted?
One tool call counts as one request of the API owner, the same as one HTTP request, regardless of how many records it returns. Listing your APIs, checking a Pending action, confirming a delete and creating an API are free. Your API statistics show how many requests came from agents, so you can see what your assistant costs you. There is no separate pool of agent requests and no higher price per request; MCP is included in every plan, including the free plan.
Can the agent delete all rows of my sheet?
Not by itself. delete_records only counts the matching rows and returns a preview. A small delete (up to 10 rows and 5% of the tab) needs the agent to call confirm_delete with the exact count after you agreed in the chat. Anything bigger, or any delete on an API you set to "always approve in panel", waits until you click Approve in the SheetDB panel while signed in. Deleting is also off for agents until you enable it for that API, and SheetDB never exposes a delete-everything operation to agents. If something still goes wrong, Google Sheets keeps a version history of your spreadsheet.
How do I revoke an agent's access?
Open AI agents in the SheetDB panel. Every assistant you signed in from is listed as an Agent connection with the client name, the date and the last use. Click Revoke and the connection stops working immediately; the assistant has to sign in again before it can touch your APIs. You can also disable individual operations per API in the "AI agents" section of the API settings without revoking anything.
Which AI assistants work with the SheetDB MCP server?
Any client that supports remote MCP servers over Streamable HTTP with OAuth: Claude.ai and Claude Desktop (custom connectors), ChatGPT (connectors and developer mode), Cursor, Claude Code, VS Code with Copilot, Windsurf and others. Sign-in uses OAuth with dynamic client registration, so there is no key to generate or paste. If your tool cannot use MCP, it can still call the SheetDB REST API directly.
Does the agent follow instructions written in my spreadsheet cells?
It should not. Every tool result tells the model that cell values are data entered by people, never instructions, and the server never puts anything in a result that reads like a command. That reduces the risk of prompt injection from a shared sheet but cannot eliminate it on the model side, which is one more reason deletes and mass updates need an explicit confirmation outside the content of the sheet.
Give your assistant a spreadsheet it can trust
Sign in with Google, create an API from your sheet and paste https://sheetdb.io/mcp into Claude, ChatGPT or Cursor. Free plan, no API keys.
Create free APIHave a question?
Ask about the API or your sheet. Developers answer, usually the same day.