Connect ChatGPT to Google Sheets (MCP plugin) - SheetDB

How to connect ChatGPT to Google Sheets

A lot of the data people want to ask ChatGPT about lives in a Google Sheet: the customer list, the inventory, the sign-ups from a form, the budget. Pasting rows into the chat works once, goes stale immediately and never writes anything back. Until recently the standard answer was a Custom GPT with an action pointing at an API. That door is closing: OpenAI retires Custom GPTs on December 11, 2026, new GPTs can no longer be created in most workspaces, and custom actions do not migrate to the plugins that replace them.

The replacement is simpler. ChatGPT now connects to outside services through MCP, the Model Context Protocol, and SheetDB runs an MCP server for every spreadsheet you turn into an API. You add the server to ChatGPT once, as a plugin, sign in with your Google account, and then ask in plain language: "which customers have not paid?", "add these three leads", "how many orders came in last week?". ChatGPT calls the SheetDB tools, SheetDB reads or writes the sheet, and nothing is deleted without you saying yes. No API key to copy, no OpenAPI schema to paste, no code.

This guide uses the SheetDB demo spreadsheet, this one, which is also served as a public REST API at https://sheetdb.io/api/v1/58f61be4dda40. Its first tab has the columns id, name, age and comment. ChatGPT only sees the APIs of the account you sign in with, so to follow along with the same data, make a copy of the demo spreadsheet in your Drive (File → Make a copy) and create an API from the copy in step 1.

Step 1: create the API for your sheet

  1. Sign in to SheetDB with the Google account that can edit the spreadsheet.
  2. Click Create new API, paste the spreadsheet URL and save. You get an API URL in the form https://sheetdb.io/api/v1/<your id>; the 13-character id at the end is how ChatGPT will refer to the sheet.
  3. Check that row 1 holds clean column names (email, not E-mail address). ChatGPT reads the header row to learn what the sheet contains, so good names make better answers.

You can skip this step later: once the plugin is connected, ChatGPT can create an API itself from a spreadsheet URL you paste into the chat (the create_api_from_spreadsheet tool).

Step 2: add SheetDB as a plugin in ChatGPT

The SheetDB MCP server address is https://sheetdb.io/mcp. In ChatGPT on the web:

  1. Open Plugins (chatgpt.com/plugins), click the + button and choose Add custom MCP server.
  2. Enter a name such as SheetDB and, if you like, a description. Under Connection paste the server URL as the Server URL.
  3. Choose OAuth as the authentication. There is nothing else to fill in: ChatGPT registers itself with SheetDB automatically when it connects.
  4. Read the warning about third-party servers and select I understand and want to continue, then Create as a plugin.
  5. Install the plugin from your plugins list. In a Business or Enterprise workspace, only admins and owners can create and publish plugins, so ask yours if the button is missing.

No Developer Mode is needed for this. The flow for Claude, Cursor and Claude Code is described in their own guides and on the MCP server page; the server is the same.

Step 3: sign in with Google and approve

When ChatGPT connects to the server for the first time, a SheetDB page opens. Sign in with the Google account you use for SheetDB and approve the connection. That is OAuth: ChatGPT receives a token that only works for the SheetDB MCP server, never your Google password, and SheetDB keeps talking to Google with your account, exactly as it does for the REST API.

The connection then appears in the SheetDB panel under AI agents, with the client name, the date and the last use. Revoke signs ChatGPT out immediately. The same section is where you decide what ChatGPT may do with each API (step 5).

Step 4: ask ChatGPT about your sheet

In the prompt box type @, pick the SheetDB plugin and ask. ChatGPT chooses the tools; you never name them. A first conversation on the demo data looks like this:

"Which sheets do I have in SheetDB?"

Tools: list_apis, describe_api

ChatGPT names your APIs with what it may do on each one, then describes the one you pick: the tabs, the column names and three sample records.

"Show me the customers older than 18 with the comment "special"."

Tools: search_records

One call with the conditions age: ">18" and comment: "special", the same operators as /search over HTTP, returns the matching rows and ChatGPT lists them.

"Add Mark, 35, new customer."

Tools: create_records

ChatGPT asks you to approve the write, then appends one row; the id column can be filled with INCREMENT. The reply quotes the API response: {"created": 1}.

"Delete the rows where the comment is "test"."

Tools: delete_records, confirm_pending_action

Nothing is deleted yet. SheetDB counts the matching rows and returns a preview; ChatGPT shows it and, only after you agree, confirms the pending action with the expected count. Larger deletes wait for your Approve in the SheetDB panel.

Reading is served from the same cache as the REST API (15 seconds by default), so a question asked twice costs Google nothing. Reads are paginated, so for a large tab ask for a filter or a count instead of "show me everything". Searching uses the same operators as /search over HTTP: comparisons such as >18, wildcards such as J* and negation with !.

Step 5: decide what ChatGPT may change

The moment your first agent connects, every API in your account gets an AI agents section in its settings. By default agents may only read. Creating, updating and deleting rows each need a switch for that specific API, and an agent never gets more than the API allows over HTTP: if DELETE is disabled in the API permissions, no agent setting turns it on. When ChatGPT asks for something it may not do, it 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.

Deletes and large updates go through an extra step. delete_records only works with a condition and never deletes by itself: it counts the matching rows and returns a preview written by SheetDB. Up to 10 rows and 5% of the tab, ChatGPT shows you the preview and confirms the pending action after you agree in the chat. Anything bigger, or every delete on an API set to always approve in panel, waits for your Approve in the SheetDB panel while you are signed in. A pending action works once and expires after 5 minutes in the chat and 15 in the panel. The details are in the MCP server documentation.

ChatGPT adds its own layer: write tools require confirmation by default, so you see the tool input before it runs, and you can let a tool you trust run without asking for the rest of that conversation. Keep that for reads and inserts; the delete preview is worth looking at every time.

Which ChatGPT plans support it?

At the time of writing, OpenAI's help centre lists full MCP support, reading and writing, for ChatGPT Business and Enterprise/Edu; on ChatGPT Pro a custom MCP server is limited to read and fetch tools, and other plans are not listed. Custom MCP servers are added in ChatGPT on the web. Check OpenAI's current article on custom MCP servers before you plan on a specific plan, because this has changed several times in 2026. On the SheetDB side the MCP server is included in every plan, including the free plan: a tool call that reads or writes records counts as one request, like one HTTP request, and listing APIs, checking a pending action, confirming it and creating an API are free.

What about Custom GPTs and GPT Actions?

If you built a Custom GPT with an action against your SheetDB API, it keeps working until the retirement date, December 11, 2026 (February 11, 2027 for some Enterprise workspaces with an approved deferral). The migration tool turns the GPT's instructions into a skill inside a plugin and copies its knowledge files, but custom actions do not transfer. Add the SheetDB plugin as described above and put the instructions you had in the GPT, such as which API id to use and how to format answers, into the chat or into a skill of the plugin.

The OpenAPI 3.1 specification of the REST API that GPT Actions used is still published and maintained. It is the right input for agent frameworks that read OpenAPI, for API clients such as Postman and for client generators; for ChatGPT itself, MCP is now the way in. The OpenAPI chapter of the documentation lists what it covers.

Limitations: when this is not the right setup

  • Read-only plans. On ChatGPT Pro the plugin can read and search but not write; to add rows from ChatGPT you need a Business or Enterprise/Edu workspace, or another client such as Claude or Cursor with the same server.
  • Cells, tabs and bulk operations. MCP exposes rows keyed by the header row. Deleting a whole tab, creating or deleting tabs, editing single cells, JSON import and cache purge stay in the panel and the REST API, on purpose.
  • Very large tabs. A spreadsheet is not a database for thousands of writes an hour, and a read returns at most a few thousand rows per call. Ask for filters and counts, keep tabs small, and read when a sheet is the wrong tool. If you are building an agent of your own on top of a sheet, Google Sheets for AI agents covers the architecture and how to structure the sheet.
  • Shared sheets with private data. ChatGPT sees every column of the tabs the API exposes, and it sees the APIs that teammates share with you in SheetDB. Keep personal data and secrets in tabs that no API serves, and give agents the read permission only where they need it.
  • Text in cells is data, not instructions. A cell saying "ignore previous instructions" is returned to ChatGPT as a value like any other. Models are getting better at ignoring that, and the permission and approval model above is what you rely on, not the model's judgement.

For everything else, one spreadsheet with one API now serves ChatGPT, Claude, Cursor, a workflow in n8n or Make, a table on your website and your own code, with the same permissions and the same rows.

FAQ

Do I need a Custom GPT to connect ChatGPT to Google Sheets?

No, and soon you will not be able to build one: OpenAI retires Custom GPTs on December 11, 2026, new GPTs can no longer be created in most workspaces, and GPT custom actions do not carry over to the plugins that replace them. The SheetDB MCP server takes that role. You add it once under Plugins → Add custom MCP server and use it in any chat by typing @ and picking the plugin.

Which ChatGPT plans can add the SheetDB plugin?

At the time of writing OpenAI's help centre lists full MCP support, reading and writing, for ChatGPT Business and Enterprise/Edu, where admins and owners create plugins; on ChatGPT Pro a custom MCP server is limited to read and fetch tools. Other plans are not listed. Custom MCP servers are added in ChatGPT on the web. On the SheetDB side MCP is included in every plan, including the free plan.

Does ChatGPT get my Google password or an API key?

Neither. The plugin signs in with OAuth: a SheetDB page opens, you sign in with the Google account you use for SheetDB and approve the connection, and ChatGPT receives a token that only works for the SheetDB MCP server. SheetDB keeps talking to Google with your account, as it does for the REST API. The connection is listed under AI agents in the panel, where Revoke signs ChatGPT out immediately.

Can ChatGPT delete my whole sheet?

No. Deleting needs the delete agent permission on that API, the tool only deletes rows matching a condition, and it never deletes by itself: it counts the matching rows and returns a preview. Up to 10 rows and 5% of the tab you confirm in the chat; anything larger waits for your Approve in the SheetDB panel. Deleting a whole tab, creating or removing tabs and editing single cells are not available through MCP at all, and ChatGPT itself asks you before running a write tool.

How are ChatGPT's requests counted?

A tool call that reads or writes records counts as one request of your plan, exactly like one HTTP request (what is a request). Listing your APIs, checking or confirming a pending action and creating an API are free. Your API statistics show how many requests came from AI agents, and the same cache and rate limits apply as for HTTP.

Can I use the same sheet in Claude, Cursor or my own app?

Yes. The same MCP server works in Claude.ai, Claude Desktop and Claude Code and in Cursor, and the API behind it is the plain SheetDB REST API: a workflow in n8n or Make, a website or your own code reads and writes the same rows. Tools that read OpenAPI instead of MCP, such as agent frameworks and client generators, get the OpenAPI specification.

Give ChatGPT a spreadsheet it can trust

Sign in with Google, create an API from your sheet and add https://sheetdb.io/mcp as a plugin in ChatGPT. Free plan, no API keys, nothing deleted without your approval.

Create free API

Have a question?

Ask about the API or your sheet. Developers answer, usually the same day.

Necessary cookies keep SheetDB working. With your permission we also use chat, analytics and marketing cookies. You can change your choice anytime in Cookie settings. Cookies Policy