google-sheets-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GOOGLE_SHEETS_TOKEN | No | Path to cached user token | <home>/token.json |
| GOOGLE_SHEETS_MCP_HOME | No | Config directory for google-sheets-mcp | ~/.config/google-sheets-mcp |
| GOOGLE_SHEETS_CREDENTIALS | No | Path to OAuth client secret JSON file | <home>/credentials.json |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_spreadsheet_infoA | Get a spreadsheet's title, URL, and the list of its sheets. Returns each sheet's title, numeric |
| create_spreadsheetA | Create a new spreadsheet and return its id and URL. Optionally provide |
| add_sheetC | Add a new sheet/tab to an existing spreadsheet. |
| rename_sheetC | Rename a sheet/tab. |
| delete_sheetB | Delete a sheet/tab by name or numeric sheetId. |
| duplicate_sheetB | Duplicate a sheet/tab, optionally setting the new title and index. |
| batch_update_advancedA | Run allowlisted raw Sheets API Each request must contain exactly one allowed request kind. Data-source lifecycle requests are blocked, and a call may contain at most 50 requests. Prefer the typed tools when one exists; use this for advanced API coverage. |
| read_rangeA | Read cell values from an A1 range (e.g.
|
| batch_readC | Read several A1 ranges at once. Returns |
| write_rangeB | Write a 2D array of values to an A1 range.
|
| append_rowsC | Append rows after the last row of data within/near the given A1 range. The
|
| clear_rangeA | Clear the values in an A1 range (formatting is preserved). |
| batch_writeA | Write values to multiple ranges in one values
|
| batch_clearC | Clear values from multiple A1 ranges in one call. |
| format_cellsA | Apply cell formatting to an A1 range. Only the arguments you pass change.
|
| set_bordersA | Set borders on an A1 range.
|
| merge_cellsC | Merge cells in an A1 range.
|
| unmerge_cellsB | Unmerge any merged cells overlapping an A1 range. |
| set_dimension_sizeB | Set a fixed pixel size for a band of columns or rows.
|
| auto_resize_dimensionsC | Auto-fit columns or rows to their contents (zero-based, half-open range). |
| freezeA | Freeze the first Pass |
| insert_rowsC | Insert rows before |
| delete_rowsB | Delete rows; indices are zero-based and half-open. |
| insert_columnsC | Insert columns before |
| delete_columnsC | Delete columns; indices are zero-based and half-open. |
| append_rows_to_sheetC | Append empty rows to the end of a sheet. |
| append_columns_to_sheetC | Append empty columns to the end of a sheet. |
| move_rows_or_columnsC | Move rows or columns to |
| insert_rangeC | Insert cells in an A1 range, shifting existing cells by ROWS or COLUMNS. |
| delete_rangeA | Delete cells in an A1 range, shifting remaining cells by ROWS or COLUMNS. |
| copy_rangeC | Copy a range to another range. |
| cut_paste_rangeA | Cut a range and paste it starting at a destination cell. |
| paste_delimited_dataC | Paste delimited text/HTML starting at a single cell. |
| sort_rangeC | Sort a range using Sheets API |
| find_replaceB | Find and replace text in one range or all sheets. |
| trim_whitespaceC | Trim leading/trailing/repeated whitespace in each cell in an A1 range. |
| delete_duplicatesB | Remove duplicate rows from a range, optionally comparing only column indexes. |
| text_to_columnsC | Split a single-column range into multiple columns. |
| auto_fillC | Autofill within an A1 range by detecting existing source data. |
| randomize_rangeC | Randomize row order inside an A1 range. |
| set_basic_filterC | Set the sheet's basic filter over an A1 range. |
| clear_basic_filterC | Clear the basic filter on a sheet. |
| add_filter_viewC | Add a filter view over an A1 range. |
| update_filter_viewC | Update a filter view using a Sheets API FilterView object. |
| delete_filter_viewC | Delete a filter view by ID. |
| set_data_validationC | Set a data validation rule on an A1 range. |
| clear_data_validationB | Clear data validation from an A1 range. |
| add_named_rangeC | Create a named range over an A1 range. |
| update_named_rangeC | Update a named range's name and/or range. |
| delete_named_rangeC | Delete a named range by ID. |
| add_protected_rangeB | Protect an A1 range; defaults to warning-only protection. |
| update_protected_rangeC | Update a protected range using a Sheets API ProtectedRange object. |
| delete_protected_rangeC | Delete a protected range by ID. |
| add_bandingC | Add alternating-color banding to an A1 range. |
| update_bandingC | Update banding using a Sheets API BandedRange object. |
| delete_bandingB | Delete banding by ID. |
| add_dimension_groupC | Group rows or columns over a zero-based, half-open range. |
| update_dimension_groupC | Collapse or expand a row/column group. |
| delete_dimension_groupC | Delete a row/column group. |
| add_tableC | Add a Sheets table over an A1 range. |
| update_tableD | Update a table using a Sheets API Table object. |
| delete_tableC | Delete a table by ID. |
| create_chartA | Create an embedded chart from existing sheet data.
|
| create_chart_from_specA | Create an embedded chart from a full Sheets API ChartSpec object. Use this for histogram, scorecard, bubble, candlestick, waterfall, treemap,
org, or other chart specs not covered by |
| update_chartB | Replace a chart's spec. Use |
| delete_chartC | Delete a chart or other embedded object by ID. |
| move_chartC | Move and/or resize a chart using overlay positioning. |
| set_chart_borderC | Set an embedded object's border color. |
| create_pivot_tableC | Create a pivot table at a destination cell.
|
| add_slicerC | Add a slicer for a data range. |
| update_slicerC | Update a slicer spec by ID. |
| delete_slicerC | Delete a slicer by embedded object ID. |
| add_conditional_formatC | Add a boolean conditional-format rule to an A1 range.
|
| update_conditional_formatC | Replace a conditional-format rule at |
| delete_conditional_formatB | Delete a conditional-format rule by sheet and index. |
| describe_spreadsheetA | Compact, model-friendly snapshot of a spreadsheet in one call. Accepts a spreadsheet ID or a full Google Sheets URL. Returns, per sheet: dimensions, frozen rows/cols, column headers with inferred types (number/date-ish/boolean/text/formula), a few sample rows, and any tables/charts. Use this first to ground natural requests like "the Revenue column" before calling other tools. |
| build_tableC | Write a titled table and format it in one shot.
|
| apply_style_presetA | Apply a named style preset to a range. Presets: |
| highlight_whereA | Conditionally highlight cells from a natural predicate.
|
| format_numbersC | Apply a number format to a range.
|
| add_totals_rowA | Append a bold totals row beneath a table. By default sums every column except the first (which gets a "Total"
label). Override per column with |
| autofitA | Auto-fit column widths to their contents.
|
| sort_byB | Sort a range by a column identified by its header name (or letter).
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| format_as_report | Turn a sheet into a clean, presentable report. |
| clean_sheet | Tidy up a messy sheet. |
| build_dashboard | Build a small dashboard from a data range. |
| analyze | Analyze a sheet and surface insights. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/richmcpharlin/google-sheets-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server