Google Sheets MCP Server

Range-level spreadsheet access with real formatting control.

The Sheets service works the way spreadsheet people think: in ranges. read_sheet_values and modify_sheet_values operate on A1-notation ranges, so an assistant can pull a pipeline tab, update a forecast column, or clear a staging area without touching the rest of the workbook.

It goes beyond values — format_sheet_range applies number and text formats, and manage_conditional_formatting adds, updates, or removes rules, which is the difference between dumping data and producing a sheet someone can actually read.

What you can ask

  • “Read the pipeline tab and tell me which deals slipped since last month”
  • “Append these survey results and highlight any satisfaction score below 7 in red”
  • “Create a release-checklist spreadsheet with one tab per milestone”

All 15 Google Sheets MCP tools

Expand any tool for its full parameter list. Tiers control how many tools the server registers: start lean with --tool-tier core and step up to extended or complete when a workflow needs more.

read_sheet_values Core Read values from ranges. 3
ParameterDescription
spreadsheet_id requiredThe ID of the spreadsheet.
range_name The range to read (e.g., "Sheet1!A1:D10", "A1:D10"). Defaults to "A1:Z1000".
include_hyperlinks If True, also fetch hyperlink metadata for the range.
modify_sheet_values Core Write, update, and clear range values. 5
ParameterDescription
spreadsheet_id requiredThe ID of the spreadsheet.
range_name requiredThe range to modify (e.g., "Sheet1!A1:D10", "A1:D10").
values 2D array of values to write/update. Can be a JSON string or Python list. Required unless clear_values=True.
value_input_option How to interpret input values ("RAW" or "USER_ENTERED"). Defaults to "USER_ENTERED".
clear_values If True, clears the range instead of writing values. Defaults to False.
create_spreadsheet Core Create spreadsheets. 2
ParameterDescription
title requiredThe title of the new spreadsheet.
sheet_names List of sheet names to create. If not provided, creates one sheet with default name.
list_spreadsheets Extended List available spreadsheets. 1
ParameterDescription
max_results Maximum number of spreadsheets to return. Defaults to 25.
get_spreadsheet_info Extended Read spreadsheet metadata and sheet info. 1
ParameterDescription
spreadsheet_id requiredThe ID of the spreadsheet to get info for.
format_sheet_range Extended Apply styling and number/text formats to ranges. 12
ParameterDescription
spreadsheet_id requiredThe ID of the spreadsheet.
range_name requiredA1-style range (optionally with sheet name).
background_color Hex background color (e.g., "#FFEECC").
text_color Hex text color (e.g., "#000000").
number_format_type Sheets number format type (e.g., "DATE").
number_format_pattern Custom pattern for the number format.
wrap_strategy Text wrap strategy (WRAP, OVERFLOW_CELL, CLIP).
horizontal_alignment Horizontal alignment.
vertical_alignment Vertical alignment.
bold Whether to make text bold.
italic Whether to make text italic.
font_size Font size.
list_sheet_tables Extended List structured tables with IDs, names, ranges, and columns. 1
ParameterDescription
spreadsheet_id requiredThe ID of the spreadsheet.
create_sheet Complete Add sheets to existing spreadsheets. 2
ParameterDescription
spreadsheet_id requiredThe ID of the spreadsheet.
sheet_name The name of the new sheet. Defaults to a Google-assigned name when omitted.
manage_sheet_tab Complete Manage the lifecycle of an existing tab: rename, delete, hide, unhide, or reorder it. Use create_sheet to add a tab and resize_sheet_dimensions for row and column changes. 5
ParameterDescription
spreadsheet_id requiredThe ID of the spreadsheet.
sheet_name requiredTitle of the existing tab to act on.
action requiredOne of `rename`, `delete`, `hide`, `unhide`, or `reorder`.
new_name New title. Required for `rename`.
new_index New zero-based position. Required for `reorder`.
append_table_rows Complete Append rows to a structured table, auto-extending the table range. 3
ParameterDescription
spreadsheet_id requiredThe ID of the spreadsheet.
table_id requiredThe ID of the table (from list_sheet_tables).
values required2D array of row values to append.
move_sheet_rows Complete Move rows between sheets within a spreadsheet. 5
ParameterDescription
spreadsheet_id requiredThe ID of the spreadsheet.
source_sheet requiredName of the sheet to move rows from.
start_row requiredFirst row to move (1-based).
end_row requiredLast row to move (inclusive).
destination_sheet requiredName of the sheet to move rows to.
resize_sheet_dimensions Complete Resize, hide, freeze, insert, or delete rows and columns. 13
ParameterDescription
spreadsheet_id requiredThe ID of the spreadsheet.
sheet_name Sheet to modify. Defaults to the first sheet.
column_sizes Map of column letters to pixel widths.
row_sizes Map of row numbers to pixel heights.
auto_resize_columns Columns to auto-fit to content.
frozen_row_count Number of frozen header rows.
frozen_column_count Number of frozen columns.
hide_columns Columns to hide (unhide_columns reverses).
hide_rows Rows to hide (unhide_rows reverses).
insert_rows Number of rows to insert (with insert_rows_at).
insert_columns Number of columns to insert (with insert_columns_at).
delete_rows Rows to delete.
delete_columns Columns to delete.
list_spreadsheet_comments Complete List comments on spreadsheets.
manage_spreadsheet_comment Complete Create, reply, and resolve spreadsheet comments.
manage_conditional_formatting Complete Add, update, and remove conditional formatting rules. 10
ParameterDescription
spreadsheet_id requiredThe ID of the spreadsheet.
action requiredThe operation to perform ("add", "update", "remove").
range_name Range to apply conditional formatting to.
condition_type Type of condition.
condition_values Values for the condition.
background_color Background color for formatting.
text_color Text color for formatting.
rule_index Index of rule to update/remove.
gradient_points Gradient points for gradient formatting.
sheet_name Sheet name for the range.

Every service in one reference: full API documentation →

OAuth scopes

The server requests only the scopes for the services you enable. In read-only mode it requests just the readonly variants and skips registering write tools entirely.

  • spreadsheets.readonly read values and metadata
  • spreadsheets write values, formatting, and structure

Google Sheets MCP questions

Does it understand ranges or just whole sheets?
Ranges, in standard A1 notation. read_sheet_values and modify_sheet_values both take ranges like Sheet2!B2:E50, so operations touch exactly the cells intended — important when an agent edits a spreadsheet other people are working in.
Can it format cells, or only write raw values?
format_sheet_range applies text styling and number/date/currency formats to a range, and manage_conditional_formatting manages rule-based highlighting. An assistant can deliver a readable report, not a wall of unformatted numbers.
Can it add a tab to an existing workbook instead of creating a new file?
Yes — create_sheet adds sheets to existing spreadsheets, while create_spreadsheet makes a new file. get_spreadsheet_info reports the tabs already present so the assistant knows what exists first.