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 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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