100+ integrations are ready to connect to your AI.Connect your first MCP

Google Sheets MCP server for your AI

Read a range, append rows, duplicate a tab, sort and de-duplicate data, apply conditional formatting, and see who a spreadsheet is shared with — all from the client you already work in.

PopMCPGoogle Sheets

Pull last week's numbers from the Q3 Pipeline tab and summarize by rep

Supported Google Sheets tools

Every tool the connection exposes — cell reads and writes, tab and formatting edits, Drive sharing — plus the change triggers you can watch.

google_sheets_add_chart

Adds a chart.

google_sheets_add_conditional_format_rule

Adds a new conditional format rule.

google_sheets_add_sheet

Adds a sheet.

google_sheets_auto_resize_rows_or_columns

Automatically resizes one or more dimensions based on the contents of the cells in that dimension.

google_sheets_delete_rows_or_columns

Deletes rows or columns in a sheet.

google_sheets_delete_sheet

Deletes a sheet.

google_sheets_duplicate_sheet

Duplicates a sheet.

google_sheets_find_and_replace

Finds and replaces occurrences of some text with other text.

google_sheets_format_cells

Repeats a single cell across a range.

google_sheets_insert_rows_or_columns

Inserts new rows or columns in a sheet.

google_sheets_merge_cells

Merges cells together.

google_sheets_move_rows_or_columns

Moves rows or columns to another location in a sheet.

google_sheets_remove_duplicate_rows

Removes rows containing duplicate values in specified columns of a cell range.

google_sheets_resize_rows_or_columns

Updates dimensions' properties.

google_sheets_set_borders

Updates the borders in a range of cells.

google_sheets_set_data_validation

Sets data validation for one or more cells.

google_sheets_set_filter

Sets the basic filter on a sheet.

google_sheets_sort_range

Sorts data in a range.

google_sheets_unmerge_cells

Unmerges merged cells.

google_sheets_update_sheet_properties

Updates a sheet's properties.

google_sheets_update_spreadsheet_properties

Updates the spreadsheet's properties.

google_sheets_copy_spreadsheet

Duplicate an entire spreadsheet, including every tab, formula and format — the safe way to work from a template, or to keep a snapshot before a large edit.

google_sheets_get_spreadsheet_file_info

Drive-side facts about a spreadsheet that the Sheets API does not hold: who owns it, who last edited it and when, which folders it sits in, whether it is shared or trashed, and the `webViewLink` to hand to a person.

google_sheets_list_drive_folders

List Drive FOLDERS, so you can put a spreadsheet somewhere or search inside one.

google_sheets_list_spreadsheet_permissions

See who a spreadsheet is shared with, and how.

google_sheets_list_spreadsheets

FIND spreadsheets — start here whenever you have a spreadsheet's name but not its id.

google_sheets_move_spreadsheet

Move a spreadsheet into a different Drive folder — the step to run after create_spreadsheet, which always creates in the top level of My Drive.

google_sheets_remove_spreadsheet_permission

Revoke one person's or one link's access to a spreadsheet, using the permissionId from list_spreadsheet_permissions.

google_sheets_share_spreadsheet

Share a spreadsheet.

google_sheets_trash_spreadsheet

Delete a spreadsheet the way a person means it: move it to the trash, where it stops appearing in searches, stays recoverable for 30 days, and can be restored with untrash_spreadsheet.

google_sheets_append_rows

Appends values to a spreadsheet.

google_sheets_clear_values

Clears values from a spreadsheet.

google_sheets_read_multiple_ranges

Returns one or more ranges of values from a spreadsheet.

google_sheets_read_values

Returns a range of values from a spreadsheet.

google_sheets_write_multiple_ranges

Sets values in one or more ranges of a spreadsheet.

google_sheets_write_values

Sets values in a range of a spreadsheet.

google_sheets_batch_update_spreadsheet

Applies one or more updates to the spreadsheet.

google_sheets_create_spreadsheet

Creates a spreadsheet, returning the newly created spreadsheet.

google_sheets_get_spreadsheet

Returns the spreadsheet at the given ID.

google_sheets_list_sheet_tabs

List the TABS in a spreadsheet with their numeric `sheetId`, title, position, size and frozen-row count — run this before almost any edit.

google_sheets_add_alternating_colors

Adds a new banded range Adds a new banded range to the spreadsheet.

google_sheets_add_data_source

Adds a data source.

google_sheets_add_dimension_group

Creates a group over the specified range.

google_sheets_add_filter_view

Adds a filter view.

google_sheets_add_named_range

Adds a named range.

google_sheets_add_slicer

Adds a slicer.

google_sheets_add_table

Adds a table.

google_sheets_append_cells

Appends cells after the last row with data in a sheet.

google_sheets_append_rows_or_columns

Appends dimensions to the end of a sheet.

google_sheets_auto_fill

Automatically fills in more data based on existing data.

google_sheets_cancel_data_source_refresh

Cancels refreshes of one or multiple data sources and associated dbobjects.

google_sheets_clear_basic_filter

Clears the basic filter on a sheet.

google_sheets_copy_paste_range

Copies data from one area and pastes it to another.

google_sheets_create_developer_metadata

Creates new developer metadata A request to create developer metadata.

google_sheets_cut_paste_range

Cuts data from one area and pastes it to another.

google_sheets_delete_banding

Removes a banded range Removes the banded range with the given ID from the spreadsheet.

google_sheets_delete_cells_and_shift

Deletes a range of cells from a sheet, shifting the remaining cells.

google_sheets_delete_chart_or_image

Deletes an embedded object (e.g, chart, image) in a sheet.

google_sheets_delete_conditional_format_rule

Deletes an existing conditional format rule.

google_sheets_delete_data_source

Deletes a data source.

google_sheets_delete_developer_metadata

Deletes developer metadata A request to delete developer metadata.

google_sheets_delete_dimension_group

Deletes a group over the specified range.

google_sheets_delete_filter_view

Deletes a filter view from a sheet.

google_sheets_delete_named_range

Deletes a named range.

google_sheets_delete_protected_range

Deletes a protected range.

google_sheets_delete_table

A request for deleting a table.

google_sheets_duplicate_filter_view

Duplicates a filter view.

google_sheets_insert_cells_and_shift

Inserts new cells in a sheet, shifting the existing cells.

google_sheets_move_chart_or_image

Updates an embedded object's (e.g.

google_sheets_paste_raw_data

Pastes data (HTML or delimited) into a sheet.

google_sheets_protect_range

Adds a protected range.

google_sheets_refresh_data_source

Refreshes one or multiple data sources and associated dbobjects.

google_sheets_set_chart_border

Updates an embedded object's border.

google_sheets_shuffle_rows

Randomizes the order of the rows in a range.

google_sheets_split_text_to_columns

Converts a column of text into many columns of text.

google_sheets_trim_whitespace

Trims cells of whitespace (such as spaces, tabs, or new lines).

google_sheets_update_banding

Updates a banded range Updates properties of the supplied banded range.

google_sheets_update_cells

Updates many cells at once.

google_sheets_update_chart_spec

Updates a chart's specifications.

google_sheets_update_conditional_format_rule

Updates an existing conditional format rule.

google_sheets_update_data_source

Updates a data source.

google_sheets_update_developer_metadata

Updates an existing developer metadata entry A request to update properties of developer metadata.

google_sheets_update_dimension_group

Updates the state of the specified group.

google_sheets_update_filter_view

Updates the properties of a filter view.

google_sheets_update_named_range

Updates a named range.

google_sheets_update_protected_range

Updates a protected range.

google_sheets_update_slicer_spec

Updates a slicer's specifications.

google_sheets_update_table

Updates a table.

google_sheets_untrash_spreadsheet

Restore a trashed spreadsheet to where it was.

google_sheets_update_spreadsheet_permission

Change an existing share's role, e.g.

google_sheets_clear_multiple_ranges

Clears one or more ranges of values from a spreadsheet.

google_sheets_clear_values_by_filter

Clears one or more ranges of values from a spreadsheet.

google_sheets_read_values_by_filter

Returns one or more ranges of values that match the specified data filters.

google_sheets_write_values_by_filter

Sets values in one or more ranges of a spreadsheet.

google_sheets_get_spreadsheet_by_filter

Returns the spreadsheet at the given ID.

google_sheets_get_developer_metadata

Returns the developer metadata with the specified ID.

google_sheets_search_developer_metadata

Returns all developer metadata matching the specified DataFilter.

google_sheets_copy_sheet_to_spreadsheet

Copies a single sheet from a spreadsheet to another spreadsheet.

Connect Google Sheets to your AI

Authorize once, then an endpoint your client signs into. Nothing to deploy, and nothing to install on the Google Sheets side.

Bring your own Google Cloud OAuth client: enable the Sheets and Drive APIs, paste the OAuth Client ID and OAuth Client Secret, and authorize once. No spreadsheet picker — it reaches what that Google account can open.

OAuth Client ID1234567890-abc.apps.googleusercontent.com
OAuth Client Secret••••••••••••3f7a
Authorize PopMCP on Google SheetsAuthorize

Then just ask for the work

  • Pull last week's numbers from the Q3 Pipeline tab and summarize by rep

    • list_spreadsheets
    • list_sheet_tabs
    • read_values
  • Swap every 'Pending' in the Orders tab to 'Shipped' and re-sort by date

    • list_spreadsheets
    • list_sheet_tabs
    • find_and_replace
    • sort_range
  • Create a 2026 budget spreadsheet with headers and file it under Finance

    • create_spreadsheet
    • write_values
    • list_drive_folders
    • move_spreadsheet
  • Who outside the company can still open the Client Rates spreadsheet?

    • list_spreadsheets
    • get_spreadsheet_file_info
    • list_spreadsheet_permissions

Use Google Sheets from the assistant you already open

One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.

Claude DesktopCustom connector

Add the PopMCP URL under Settings → Connectors and the tools appear in every chat.

Claude WebCustom connector

The same endpoint, registered in the browser. Nothing to install on the machine you are working from.

ChatGPTCustom connector

Register PopMCP as a custom connector, then let ChatGPT read and update the account.

CodexDesktop & CLI

Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.

OpenCodeCoding agent

Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.

ZCodeDesktop app

Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.

Google Sheets MCP server questions

What teams ask before putting Google Sheets behind an AI client.

Which spreadsheets can the agent actually reach?

There is no spreadsheet to pick during setup. The connection reaches exactly the spreadsheets that the Google account you authorized with can reach, so scope is decided entirely by which account you use. To hand over less, authorize with an account that only has access to the files you want an agent touching.

Do I paste an API key, or is this OAuth?

It is OAuth, using your own Google Cloud OAuth client — no keys are pasted into a prompt or config file. Enable the Google Sheets API and the Google Drive API in your project, then paste the OAuth Client ID and OAuth Client Secret into the connect form and authorize once. After that there is no per-spreadsheet setup.

Why did my connection stop working after seven days?

That is Google's behavior for an OAuth app still in testing. If your Google Cloud project's Audience is set to External, publish the app before you connect — otherwise Google expires the connection after 7 days and calls start failing. Publish the app first, then connect again.

Why does it need the Google Drive API as well as Sheets?

The Sheets API only helps once you already have a spreadsheet's id. The Drive side is what finds a file by name, lists folders, moves a spreadsheet into one, shows who it is shared with, and reports who owns it, who last edited it and the webViewLink you would hand to a person. If the Drive API is not enabled in your project, those tools have nothing to call.

How many tools does this load into my AI client?

40 of the 98 operations load by default and the rest stay searchable, so a long tool list does not eat your context window. They come from 6 API modules — batch spreadsheet edits is by far the largest, then Drive and cell values. 86 of the 98 are writes, because formatting, structure and sharing all count as edits, and there are 12 change triggers on top.

Why does the agent look things up before it edits anything?

Google addresses spreadsheets and tabs by id, not by the name a person uses. A clean run starts with list_spreadsheets to turn a name into an id, then list_sheet_tabs for the numeric sheetId, title, size and frozen-row count before almost any edit. One related quirk: create_spreadsheet always creates the file at the top level of My Drive, so filing it somewhere takes a follow-up move_spreadsheet.

Do I have to run or host the Google Sheets MCP server myself?

No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.

Which AI clients can use this MCP server?

Any client that supports a remote Streamable HTTP MCP server — Claude Desktop, Claude Web, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.

Why do only 40 of the 98 tools load by default?

Loading 98 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 40-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. You can switch a connection to the full catalog at any time.

What is the difference between a tool and a trigger?

A tool is something your AI calls — there are 98 here. A trigger is something PopMCP watches for you: 12 Google Sheets events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into Google Sheets.

Connect Google Sheets to your AI in minutes

Launch a hosted MCP endpoint for Google Sheets, keep tool access under control, and start testing real workflow prompts right away.

Connect your first MCP