Hosted MCP server · #7 most used on Smithery · ✓ verified

Google Sheets

googlesheets

Search and inspect Google Sheets, create and edit spreadsheets, scan for data issues, review edit history, and manage comments.

Uses
56k
Tools
13
Runs
Hosted
Listed
12mo ago

Get started

Add it to your agent

npx -y @smithery/cli@latest install googlesheets --client claude

Swap --client claude for cursor, vscode, windsurf or another client. The CLI asks for any required settings.

What it can do

13 tools

Arcade_ListAppsSee the apps the current caller can act on and whether they are connected. Returns each app's id, name, connected state, and (when connec…

See the apps the current caller can act on and whether they are connected. Returns each app's id, name, connected state, and (when connected) the account it is connected as. Call this to answer "what apps do I have?" or when the caller's connection state may have changed since the session started.

GoogleSheets_CheckSpreadsheetAccess1 paramCheck whether this app can already read each of several spreadsheets, in one batched pre-flight call, before attempting to read them. Use…

Check whether this app can already read each of several spreadsheets, in one batched pre-flight call, before attempting to read them. Use this when the user references multiple spreadsheets so any that are not yet accessible can be granted together in a single picker step, instead of hitting a separate access error and grant prompt for each one. Each input may be a bare file id or a full Google Sheets/Drive URL. Returns ``spreadsheets`` (a per-id list with ``accessible``, the ``title`` and ``mim

ParameterTypeDescription
spreadsheetsarrayThe spreadsheets to check access for, each given as a bare spreadsheet id or a full Google Sheets/Drive URL (the id is extracted from the URL). Provide at most 50 per call; split larger lists across m
GoogleSheets_CommentOnSpreadsheet4 paramsCreate a comment on a spreadsheet, edit a comment's body, or resolve/reopen it. Comments are created at the file level: the Drive API can…

Create a comment on a spreadsheet, edit a comment's body, or resolve/reopen it. Comments are created at the file level: the Drive API cannot anchor a NEW Sheets comment to a specific cell or range. Cell/range-anchored comments made in the Sheets UI are still readable via list_spreadsheet_comments (which returns their anchor). Editing a comment's body is allowed only for the comment's author.

ParameterTypeDescription
statusstringResolve or reopen an existing comment (requires comment_id). Implemented as a reply with an action. Omit to create or edit instead.
contentstringThe comment text. Required when creating. When editing an existing comment (comment_id set, no status) this replaces the body (author-only). When a status is set, this is the optional text of the reso
comment_idstringOmit to CREATE a new comment. Provide an existing comment id to edit it (pass content) or to resolve/reopen it (pass status).
spreadsheet_idstringThe id of the spreadsheet to comment on.
GoogleSheets_CreateOrEditSpreadsheet3 paramsCreate a new spreadsheet or batch-edit an existing one. Omit `spreadsheet_id` to create; provide it to edit. All writes flow through `req…

Create a new spreadsheet or batch-edit an existing one. Omit `spreadsheet_id` to create; provide it to edit. All writes flow through `requests[]` — typed operations like updateCells, addSheet, sortRange, addConditionalFormatRule, autoResizeDimensions, and more. For updateCells use ExtendedValue with an explicit type field (stringValue, numberValue, boolValue, formulaValue). By default, build clean, professional-looking tables with restrained, consistent formatting and plain-text tab names/header

ParameterTypeDescription
titlestringTitle for a newly created spreadsheet. Ignored when spreadsheet_id is provided. Defaults to 'Untitled spreadsheet'.
requestsarrayA list of Google Sheets `spreadsheets.batchUpdate` request objects. Each object must have exactly one key naming the operation. FIELDS MASK: updateCells, repeatCell, updateSheetProperties, and updateD
spreadsheet_idstringID of an existing spreadsheet to edit. Omit to create a new spreadsheet.
GoogleSheets_DeleteComment2 paramsDelete a comment from a spreadsheet. Only the comment's author can delete it (enforced by Google Drive); deleting marks the whole thread …

Delete a comment from a spreadsheet. Only the comment's author can delete it (enforced by Google Drive); deleting marks the whole thread (the comment and its replies) as deleted.

ParameterTypeDescription
comment_idstringThe id of the comment to delete.
spreadsheet_idstringThe id of the spreadsheet the comment belongs to.
GoogleSheets_GenerateGoogleFilePickerUrlGenerate a URL where the user can grant this app access to spreadsheets. Opens Google's first-party Drive picker, filtered to Google Shee…

Generate a URL where the user can grant this app access to spreadsheets. Opens Google's first-party Drive picker, filtered to Google Sheets, where the user browses and selects which spreadsheets to share with this application — it is not a sign-in or credential prompt. Use this when a prior tool reported that a file was not found or access was denied, and the user expects the file to exist. After the user completes the picker flow, retry the prior operation.

GoogleSheets_GetSpreadsheetEditHistory4 paramsReport who edited a spreadsheet and when, from Google Drive revisions. Reports the "who" and "when" only — not which cells changed, and i…

Report who edited a spreadsheet and when, from Google Drive revisions. Reports the "who" and "when" only — not which cells changed, and it can't revert. 'summary' (default) answers "who last edited this and when" (read from the file's head, so always accurate), plus per-window aggregates (revisions read, contributors, first edit) and a preview of recent edits — computed over a bounded window of history per call. These aggregates describe the whole history only when `is_incomplete` is false; it i

ParameterTypeDescription
modestring'summary' (default): the latest edit, plus per-window aggregates (revisions read, contributors, first edit) that cover the whole history only when is_incomplete is false, and a preview of recent edits
limitintegerMax revisions per page in 'list' mode. Between 1 and 50. Defaults to 20. Ignored in 'summary' mode.
spreadsheet_idstringThe id of the spreadsheet to get the edit history for.
pagination_tokenstringToken from a previous response's pagination_token, to continue reading more history. Works in both modes.
GoogleSheets_InspectSpreadsheet12 paramsInspect a Google Sheets spreadsheet's structure or read a range of cells. Use the default 'structure' mode to understand a workbook cheap…

Inspect a Google Sheets spreadsheet's structure or read a range of cells. Use the default 'structure' mode to understand a workbook cheaply before reading. Switch to 'read' mode to pull a range as a grid of rows, optionally with per-cell annotations and a rendered markdown/csv/tsv export. In 'read' mode the response's per-tab 'sheets' block reports only tab identity and the allocated grid; its scan-derived fields (used_range, populated_cell_count, formula_cell_count, first_row, table_regions) ar

ParameterTypeDescription
modestringWhat to return. 'structure' (default) gives a cheap workbook overview: every tab's ids, allocated grid, frozen panes, merges, charts, protected ranges, conditional-format counts, real used range, firs
a1_rangestringRead mode only: the range of cells to pull, in A1 notation (e.g. 'A1:F100'), WITHIN the selected tab — the tab is chosen by sheet_id/sheet_title, and any sheet prefix here (e.g. 'Other!A1:B2') is igno
max_rowsintegerRead mode only: maximum rows to return. Sets truncated=True when the range has more rows; pass the returned next_range as a1_range to page. When filtering, this bounds the rows SCANNED per page (match
sheet_idintegerRead mode only: select the tab by its numeric sheetId. Mutually exclusive with sheet_title. Defaults to the first tab when both are omitted.
export_asstringRead mode only: also render the returned values as text. Omit to return structured values only. csv/tsv are lossless; markdown is display-oriented (in-cell newlines become <br>, pipes are escaped).
max_lengthintegerRead mode only: cap each returned cell string at this many characters. A longer cell becomes '<first chars>…(+N chars)' (the suffix is not counted; N = hidden chars). Pass 0 for full, untruncated stri
annotationsarrayRead mode only: per-cell extras to include — pass only the kinds you need (e.g. ['formulas','notes']); each extra kind adds payload. Omit or leave empty to return values only (cheaper). Returned spars
sheet_titlestringRead mode only: select the tab by name. Mutually exclusive with sheet_id. Defaults to the first tab when both are omitted.
value_renderstringRead mode only: 'formatted' (default) returns display strings like '$1,234.50'; 'unformatted' returns raw values suitable for math.
filter_combinestringRead mode only: how to combine multiple filter_conditions — a single top-level 'and'/'or' applied to all conditions (no nested grouping or mixed and/or). Defaults to 'and'.
select_columnsarrayRead mode only: return only these columns, by spreadsheet column LETTER (not header name), in this order. Defaults to all columns in a1_range.
spreadsheet_idstringThe id of the spreadsheet to inspect.
GoogleSheets_ListSpreadsheetComments12 paramsList a spreadsheet's comment threads, or the full replies of a single comment. In 'comments' mode each comment includes up to a few trimm…

List a spreadsheet's comment threads, or the full replies of a single comment. In 'comments' mode each comment includes up to a few trimmed reply previews plus the total reply_count; use 'thread' mode for a comment's complete reply list. Without filters/ordering, pagination walks every comment. Client-side filters (has_replies, resolved) and order_by are applied only within a bounded scan of the first 500 comments, so on larger sheets drop them and page through everything with the native (unboun

ParameterTypeDescription
modestring'comments' (default) lists top-level comments, each with a capped reply preview and a reply_count. 'thread' lists the FULL replies of one comment (set comment_id).
limitintegerMax comments (or replies, in thread mode) to return. Clamped to [1, 50].
order_bystringClient-side ordering (comments mode) by created/modified time, ascending or descending. Defaults to Drive's native order.
resolvedbooleanClient-side filter (comments mode): keep only resolved (True) or unresolved (False) comments.
comment_idstringRequired when mode='thread': the comment whose replies to list.
max_lengthintegerCap each returned comment/reply body (and quoted text) at this many characters. A longer body becomes '<prefix>…(+N chars)' (suffix not counted; N = hidden chars). Pass 0 for full, untruncated text; a
page_tokenstringOpaque token from a previous call's page_token to fetch the next page.
comment_idsarrayFetch exactly these comments by id (comments mode), instead of paging. Replaces a dedicated get tool. At most 50 ids per call, and not combined with page_token.
has_repliesbooleanClient-side filter (comments mode): keep only comments that have (True) or lack (False) replies.
modified_afterstringServer-side filter: only comments modified at/after this RFC3339 time (e.g. '2025-01-01T00:00:00Z'). Comments mode only.
spreadsheet_idstringThe id of the spreadsheet whose comments to list.
include_deletedbooleanInclude deleted comments/replies (their bodies are blank). Defaults to False.
GoogleSheets_ReplyToComment3 paramsAdd a reply to an existing comment on a spreadsheet. To resolve or reopen the comment instead, use comment_on_spreadsheet with a status.
ParameterTypeDescription
comment_idstringThe id of the comment to reply to.
reply_textstringThe text of the reply.
spreadsheet_idstringThe id of the spreadsheet the comment belongs to.
GoogleSheets_ScanForDataIssues11 paramsDeterministically flag 'weird'/bad cells in spreadsheet data. No LLM judgement: the same input always returns the same flags. Each cell-l…

Deterministically flag 'weird'/bad cells in spreadsheet data. No LLM judgement: the same input always returns the same flags. Each cell-level finding carries a coord, a 0-based row_index/column_index (ready for a Sheets GridRange), the rule, a severity (high -> red, medium/low -> yellow), and a note-ready reason — so the output drops straight into an annotate/format recipe. In the default `mode='grouped'` these are aggregated per rule+column within each table into `groups` (with A1 `coords`); us

ParameterTypeDescription
modestring'grouped' (default) aggregates findings per rule+column within each table with counts; 'list' enumerates every flagged cell.
rulesarrayWhich deterministic checks to run. Omit to run every check. Each is fully reproducible (no LLM judgement).
a1_rangestringSingle-sheet only: limit the analysis window (e.g. 'A1:F100'). Table detection still runs inside it; scope it to a single table's range for a precise scan. Defaults to the tab's used range.
max_rowsintegerMax rows scanned per tab (applies to every scanned tab). Defaults to 200, floored to 1.
sheet_idintegerScan only this tab (by numeric sheetId). Mutually exclusive with sheet_title. Omit both to scan every tab, grouped by sheet.
has_headerbooleanTreat each detected table's first row as labels (never flagged as a type outlier). Defaults to True.
orientationstring'columns' (default): records are rows, fields are columns. 'rows': the table is transposed — records are columns and fields are rows (row labels down column A). Applies to the whole scan, not per-tabl
sheet_titlestringScan only this tab (by name). Mutually exclusive with sheet_id. Omit both to scan every tab.
spreadsheet_idstringThe id of the spreadsheet to scan. Scan one tab via sheet_id/sheet_title, or every tab when both are omitted.
max_items_per_groupintegerGrouped mode: max cell coords listed per rule+column (within a table) before an 'omitted' count. Defaults to 10, hard-capped at 50.
treat_range_as_single_tablebooleanSingle-sheet only: treat the whole a1_range as ONE table, skipping auto-detection. Use when detection would over-split a table that has an interior blank row. Defaults to False.
GoogleSheets_SearchSpreadsheets8 paramsSearches for spreadsheets in the user's Google Drive based on the titles and content and returns the title, ID, and URL for each matching…

Searches for spreadsheets in the user's Google Drive based on the titles and content and returns the title, ID, and URL for each matching spreadsheet. Does not return the content/data of the sheets in the spreadsheets - only the metadata. Excludes spreadsheets that are in the trash.

ParameterTypeDescription
limitintegerThe maximum number of spreadsheets to list. Defaults to 10. Max is 50
order_byarraySort order. Defaults to listing the most recently modified spreadsheets first. If spreadsheet_contains or spreadsheet_not_contains is provided, then the order_by will be ignored.
pagination_tokenstringThe pagination token to continue a previous request
spreadsheet_containsarrayKeywords or phrases that must be in the spreadsheet title. Provide a list of keywords or phrases if needed.
include_shared_drivesbooleanWhether to include spreadsheets from shared drives. Defaults to False (searches only in the user's 'My Drive').
spreadsheet_not_containsarrayKeywords or phrases that must NOT be in the spreadsheet title. Provide a list of keywords or phrases if needed.
search_only_in_shared_drive_idstringThe ID of the shared drive to restrict the search to. If provided, the search will only return spreadsheets from this drive. Defaults to None, which searches across all drives.
include_organization_domain_spreadsheetsbooleanWhether to include spreadsheets from the organization's domain. This is applicable to admin users who have permissions to view organization-wide spreadsheets in a Google Workspace account. Defaults to
GoogleSheets_WhoAmIGet comprehensive user profile and Google Sheets environment information. This tool provides detailed information about the authenticated…

Get comprehensive user profile and Google Sheets environment information. This tool provides detailed information about the authenticated user including their name, email, profile picture, Google Sheets access permissions, and other important profile details from Google services.