Bridges Claude to Google Sheets via service account authentication, giving you full CRUD operations on spreadsheets without leaving your MCP client. You get tools to create, read, update, and delete sheets and tables directly through the API. Setup involves creating a Google Cloud service account, enabling the Sheets and Drive APIs, then dropping credentials into your MCP config as environment variables. Once configured, share your target spreadsheet with the service account email and you're ready to automate. Works with Claude Desktop, Continue.dev, and other MCP compatible clients. Runs via uvx, so no manual installation required.
Public tool metadata for what this MCP can expose to an agent.
GOOGLESHEETS_ADD_SHEETAdds a new sheet (worksheet) to a spreadsheet. Use this tool to create a new tab within an existing Google Sheet, optionally specifying its title, index, size, and other properties. IMPORTANT: - Always provide the spreadsheetId. Use 'Search Spreadsheets' action if you need to...2 paramsAdds a new sheet (worksheet) to a spreadsheet. Use this tool to create a new tab within an existing Google Sheet, optionally specifying its title, index, size, and other properties. IMPORTANT: - Always provide the spreadsheetId. Use 'Search Spreadsheets' action if you need to...
propertiesvaluespreadsheetIdstringGOOGLESHEETS_AGGREGATE_COLUMN_DATASearches for rows where a specific column matches a value and performs mathematical operations on data from another column.9 paramsSearches for rows where a specific column matches a value and performs mathematical operations on data from another column.
operationstringsum · average · count · min · max · percentagesheet_namestringsearch_valuestringsearch_columnstringtarget_columnstringcase_sensitivebooleanhas_header_rowbooleanspreadsheet_idstringpercentage_totalnumberGOOGLESHEETS_APPEND_DIMENSIONTool to append new rows or columns to a sheet, increasing its size. Use when you need to add empty rows or columns to an existing sheet.4 paramsTool to append new rows or columns to a sheet, increasing its size. Use when you need to add empty rows or columns to an existing sheet.
lengthintegersheet_idintegerdimensionstringROWS · COLUMNSspreadsheet_idstringGOOGLESHEETS_BATCH_GETRetrieves data from specified cell ranges in a Google Spreadsheet.4 paramsRetrieves data from specified cell ranges in a Google Spreadsheet.
rangesarrayspreadsheet_idstringvalueRenderOptionstringFORMATTED_VALUE · UNFORMATTED_VALUE · FORMULAdefault: FORMATTED_VALUEdateTimeRenderOptionstringSERIAL_NUMBER · FORMATTED_STRINGdefault: SERIAL_NUMBERGOOGLESHEETS_BATCH_UPDATEUpdates a specified range in a Google Sheet with given values, or appends them as new rows if `first_cell_location` is omitted. Auto-expands grid for large datasets, preventing range errors. Requirements: Target sheet must exist and spreadsheet must contain at least one worksh...6 paramsUpdates a specified range in a Google Sheet with given values, or appends them as new rows if `first_cell_location` is omitted. Auto-expands grid for large datasets, preventing range errors. Requirements: Target sheet must exist and spreadsheet must contain at least one worksh...
valuesarraysheet_namestringspreadsheet_idstringvalueInputOptionstringRAW · USER_ENTEREDdefault: USER_ENTEREDfirst_cell_locationstringincludeValuesInResponsebooleanGOOGLESHEETS_BATCH_UPDATE_VALUES_BY_DATA_FILTERTool to update values in ranges matching data filters. Use when you need to update specific data in a Google Sheet based on criteria rather than fixed cell ranges.6 paramsTool to update values in ranges matching data filters. Use when you need to update specific data in a Google Sheet based on criteria rather than fixed cell ranges.
dataarrayspreadsheetIdstringvalueInputOptionstringRAW · USER_ENTEREDincludeValuesInResponsebooleanresponseValueRenderOptionvalueresponseDateTimeRenderOptionvalueGOOGLESHEETS_CLEAR_BASIC_FILTERTool to clear the basic filter from a sheet. Use when you need to remove an existing basic filter from a specific sheet within a Google Spreadsheet.2 paramsTool to clear the basic filter from a sheet. Use when you need to remove an existing basic filter from a specific sheet within a Google Spreadsheet.
sheet_idintegerspreadsheet_idstringGOOGLESHEETS_CLEAR_VALUESClears cell content (preserving formatting and notes) from a specified A1 notation range in a Google Spreadsheet; the range must correspond to an existing sheet and cells.2 paramsClears cell content (preserving formatting and notes) from a specified A1 notation range in a Google Spreadsheet; the range must correspond to an existing sheet and cells.
rangestringspreadsheet_idstringGOOGLESHEETS_CREATE_CHARTCreate a chart in a Google Sheets spreadsheet using the specified data range and chart type. Conditional requirements: - Provide either a simple chart via chart_type + data_range (basicChart), OR supply a full chart_spec supporting all chart types. Exactly one approach should...13 paramsCreate a chart in a Google Sheets spreadsheet using the specified data range and chart type. Conditional requirements: - Provide either a simple chart via chart_type + data_range (basicChart), OR supply a full chart_spec supporting all chart types. Exactly one approach should...
titlestringsheet_idintegersubtitlestringchart_specvaluechart_typestringdata_rangestringx_axis_titlestringy_axis_titlestringbackground_rednumberspreadsheet_idstringbackground_bluenumberlegend_positionstringbackground_greennumberGOOGLESHEETS_CREATE_GOOGLE_SHEET1Creates a new Google Spreadsheet in Google Drive using the provided title.1 paramsCreates a new Google Spreadsheet in Google Drive using the provided title.
titlestringGOOGLESHEETS_CREATE_SPREADSHEET_COLUMNCreates a new column in a Google Spreadsheet, requiring a valid `spreadsheet_id` and an existing `sheet_id`; an out-of-bounds `insert_index` may append/prepend the column.4 paramsCreates a new column in a Google Spreadsheet, requiring a valid `spreadsheet_id` and an existing `sheet_id`; an out-of-bounds `insert_index` may append/prepend the column.
sheet_idintegerinsert_indexintegerspreadsheet_idstringinherit_from_beforebooleanGOOGLESHEETS_CREATE_SPREADSHEET_ROWInserts a new, empty row into a specified sheet of a Google Spreadsheet at a given index, optionally inheriting formatting from the row above.4 paramsInserts a new, empty row into a specified sheet of a Google Spreadsheet at a given index, optionally inheriting formatting from the row above.
sheet_idintegerinsert_indexintegerspreadsheet_idstringinherit_from_beforebooleanGOOGLESHEETS_DELETE_DIMENSIONTool to delete specified rows or columns from a sheet in a Google Spreadsheet. Use when you need to remove a range of rows or columns.5 paramsTool to delete specified rows or columns from a sheet in a Google Spreadsheet. Use when you need to remove a range of rows or columns.
spreadsheet_idstringresponse_rangesvaluedelete_dimension_requestobjectresponse_include_grid_databooleaninclude_spreadsheet_in_responsebooleanGOOGLESHEETS_DELETE_SHEETTool to delete a sheet (worksheet) from a spreadsheet. Use when you need to remove a specific sheet from a Google Sheet document.2 paramsTool to delete a sheet (worksheet) from a spreadsheet. Use when you need to remove a specific sheet from a Google Sheet document.
sheet_idintegerspreadsheetIdstringGOOGLESHEETS_EXECUTE_SQLExecute SQL queries against Google Sheets tables. Supports SELECT, INSERT, UPDATE, and DELETE operations with familiar SQL syntax. Tables are automatically detected and mapped from the spreadsheet structure.4 paramsExecute SQL queries against Google Sheets tables. Supports SELECT, INSERT, UPDATE, and DELETE operations with familiar SQL syntax. Tables are automatically detected and mapped from the spreadsheet structure.
sqlstringdry_runbooleandelete_methodstringclear · remove_rowsdefault: clearspreadsheet_idstringGOOGLESHEETS_FIND_REPLACETool to find and replace text in a Google Spreadsheet. Use when you need to fix formula errors, update values, or perform bulk text replacements across cells. Common use cases: - Fix #ERROR! cells by replacing with empty string or correct formula - Update old values with new o...9 paramsTool to find and replace text in a Google Spreadsheet. Use when you need to fix formula errors, update values, or perform bulk text replacements across cells. Common use cases: - Fix #ERROR! cells by replacing with empty string or correct formula - Update old values with new o...
findstringrangestringsheetIdvalueallSheetsbooleanmatchCasebooleanreplacementstringsearchByRegexbooleanspreadsheetIdstringmatchEntireCellbooleanGOOGLESHEETS_FIND_WORKSHEET_BY_TITLEFinds a worksheet by its exact, case-sensitive title within a Google Spreadsheet; returns a boolean indicating if found and the complete metadata of the entire spreadsheet, regardless of whether the target worksheet is found.2 paramsFinds a worksheet by its exact, case-sensitive title within a Google Spreadsheet; returns a boolean indicating if found and the complete metadata of the entire spreadsheet, regardless of whether the target worksheet is found.
titlestringspreadsheet_idstringGOOGLESHEETS_FORMAT_CELLApplies text and background cell formatting to a specified range in a Google Sheets worksheet.15 paramsApplies text and background cell formatting to a specified range in a Google Sheets worksheet.
rednumberbluenumberboldbooleangreennumberrangestringitalicbooleanfontSizeintegerunderlinebooleanworksheet_idintegerend_row_indexvaluestrikethroughbooleanspreadsheet_idstringstart_row_indexvalueend_column_indexvaluestart_column_indexvalueGOOGLESHEETS_GET_SHEET_NAMESLists all worksheet names from a specified Google Spreadsheet (which must exist), useful for discovering sheets before further operations.1 paramsLists all worksheet names from a specified Google Spreadsheet (which must exist), useful for discovering sheets before further operations.
spreadsheet_idstringGOOGLESHEETS_GET_SPREADSHEET_BY_DATA_FILTERReturns the spreadsheet at the given ID, filtered by the specified data filters. Use this tool when you need to retrieve specific subsets of data from a Google Sheet based on criteria like A1 notation, developer metadata, or grid ranges.4 paramsReturns the spreadsheet at the given ID, filtered by the specified data filters. Use this tool when you need to retrieve specific subsets of data from a Google Sheet based on criteria like A1 notation, developer metadata, or grid ranges.
dataFiltersarrayspreadsheetIdstringincludeGridDatabooleanexcludeTablesInBandedRangesbooleanGOOGLESHEETS_GET_SPREADSHEET_INFORetrieves comprehensive metadata for a Google Spreadsheet using its ID, excluding cell data.1 paramsRetrieves comprehensive metadata for a Google Spreadsheet using its ID, excluding cell data.
spreadsheet_idstringGOOGLESHEETS_GET_TABLE_SCHEMAThis action is used to get the schema of a table in a Google Spreadsheet, call this action to get the schema of a table in a spreadsheet BEFORE YOU QUERY THE TABLE. Analyze table structure and infer column names, types, and constraints. Uses statistical analysis of sample data...4 paramsThis action is used to get the schema of a table in a Google Spreadsheet, call this action to get the schema of a table in a spreadsheet BEFORE YOU QUERY THE TABLE. Analyze table structure and infer column names, types, and constraints. Uses statistical analysis of sample data...
sheet_namestringtable_namestringsample_sizeintegerspreadsheet_idstringGOOGLESHEETS_INSERT_DIMENSIONTool to insert new rows or columns into a sheet at a specified location. Use when you need to add empty rows or columns within an existing Google Sheet.5 paramsTool to insert new rows or columns into a sheet at a specified location. Use when you need to add empty rows or columns within an existing Google Sheet.
spreadsheet_idstringresponse_rangesvalueinsert_dimensionobjectresponse_include_grid_databooleaninclude_spreadsheet_in_responsebooleanGOOGLESHEETS_LIST_TABLESThis action is used to list all tables in a Google Spreadsheet, call this action to get the list of tables in a spreadsheet. Discover all tables in a Google Spreadsheet by analyzing sheet structure and detecting data patterns. Uses heuristic analysis to find header rows, data...4 paramsThis action is used to list all tables in a Google Spreadsheet, call this action to get the list of tables in a spreadsheet. Discover all tables in a Google Spreadsheet by analyzing sheet structure and detecting data patterns. Uses heuristic analysis to find header rows, data...
min_rowsintegermin_columnsintegermin_confidencenumberspreadsheet_idstringGOOGLESHEETS_LOOKUP_SPREADSHEET_ROWFinds the first row in a Google Spreadsheet where a cell's entire content exactly matches the query string, searching within a specified A1 notation range or the first sheet by default.4 paramsFinds the first row in a Google Spreadsheet where a cell's entire content exactly matches the query string, searching within a specified A1 notation range or the first sheet by default.
querystringrangestringcase_sensitivebooleanspreadsheet_idstringGOOGLESHEETS_QUERY_TABLEThis action is used to query a table in a Google Spreadsheet, call this action to query a table in a spreadsheet. Execute SQL-like SELECT queries against spreadsheet tables. Supports WHERE conditions, ORDER BY, LIMIT clauses. Call this action after calling the GET_TABLE_SCHEMA...3 paramsThis action is used to query a table in a Google Spreadsheet, call this action to query a table in a spreadsheet. Execute SQL-like SELECT queries against spreadsheet tables. Supports WHERE conditions, ORDER BY, LIMIT clauses. Call this action after calling the GET_TABLE_SCHEMA...
sqlstringspreadsheet_idstringinclude_formulasbooleanGOOGLESHEETS_SEARCH_DEVELOPER_METADATATool to search for developer metadata in a spreadsheet. Use when you need to find specific metadata entries based on filters.2 paramsTool to search for developer metadata in a spreadsheet. Use when you need to find specific metadata entries based on filters.
dataFiltersarrayspreadsheetIdstringGOOGLESHEETS_SEARCH_SPREADSHEETSSearch for Google Spreadsheets using various filters including name, content, date ranges, and more.8 paramsSearch for Google Spreadsheets using various filters including name, content, date ranges, and more.
querystringorder_bystringmax_resultsvaluestarred_onlybooleancreated_afterstringmodified_afterstringshared_with_mebooleaninclude_trashedbooleanGOOGLESHEETS_SET_BASIC_FILTERTool to set a basic filter on a sheet in a Google Spreadsheet. Use when you need to filter or sort data within a specific range on a sheet.2 paramsTool to set a basic filter on a sheet in a Google Spreadsheet. Use when you need to filter or sort data within a specific range on a sheet.
filterobjectspreadsheetIdstringGOOGLESHEETS_SHEET_FROM_JSONCreates a new Google Spreadsheet and populates its first worksheet from `sheet_json`, which must be non-empty as its first item's keys establish the headers.3 paramsCreates a new Google Spreadsheet and populates its first worksheet from `sheet_json`, which must be non-empty as its first item's keys establish the headers.
titlestringsheet_jsonarraysheet_namestringGOOGLESHEETS_SPREADSHEETS_SHEETS_COPY_TOTool to copy a single sheet from a spreadsheet to another spreadsheet. Use when you need to duplicate a sheet into a different spreadsheet.3 paramsTool to copy a single sheet from a spreadsheet to another spreadsheet. Use when you need to duplicate a sheet into a different spreadsheet.
sheet_idintegerspreadsheet_idstringdestination_spreadsheet_idstringGOOGLESHEETS_SPREADSHEETS_VALUES_APPENDTool to append values to a spreadsheet. Use when you need to add new data to the end of an existing table in a Google Sheet.9 paramsTool to append values to a spreadsheet. Use when you need to add new data to the end of an existing table in a Google Sheet.
rangestringvaluesarrayspreadsheetIdstringmajorDimensionvalueinsertDataOptionvaluevalueInputOptionstringRAW · USER_ENTEREDincludeValuesInResponsebooleanresponseValueRenderOptionvalueresponseDateTimeRenderOptionvalueGOOGLESHEETS_SPREADSHEETS_VALUES_BATCH_CLEARTool to clear one or more ranges of values from a spreadsheet. Use when you need to remove data from specific cells or ranges while keeping formatting and other properties intact.2 paramsTool to clear one or more ranges of values from a spreadsheet. Use when you need to remove data from specific cells or ranges while keeping formatting and other properties intact.
rangesarrayspreadsheet_idstringGOOGLESHEETS_SPREADSHEETS_VALUES_BATCH_CLEAR_BY_DATA_FILTERClears one or more ranges of values from a spreadsheet using data filters. The caller must specify the spreadsheet ID and one or more DataFilters. Ranges matching any of the specified data filters will be cleared. Only values are cleared -- all other properties of the cell (su...2 paramsClears one or more ranges of values from a spreadsheet using data filters. The caller must specify the spreadsheet ID and one or more DataFilters. Ranges matching any of the specified data filters will be cleared. Only values are cleared -- all other properties of the cell (su...
dataFiltersarrayspreadsheetIdstringGOOGLESHEETS_SPREADSHEETS_VALUES_BATCH_GET_BY_DATA_FILTERTool to return one or more ranges of values from a spreadsheet that match the specified data filters. Use when you need to retrieve specific data sets based on filtering criteria rather than entire sheets or fixed ranges.5 paramsTool to return one or more ranges of values from a spreadsheet that match the specified data filters. Use when you need to retrieve specific data sets based on filtering criteria rather than entire sheets or fixed ranges.
dataFiltersarrayspreadsheetIdstringmajorDimensionvaluevalueRenderOptionvaluedateTimeRenderOptionvalueGOOGLESHEETS_UPDATE_SHEET_PROPERTIESTool to update properties of a sheet (worksheet) within a Google Spreadsheet, such as its title, index, visibility, tab color, or grid properties. Use this when you need to modify the metadata or appearance of a specific sheet.2 paramsTool to update properties of a sheet (worksheet) within a Google Spreadsheet, such as its title, index, visibility, tab color, or grid properties. Use this when you need to modify the metadata or appearance of a specific sheet.
spreadsheetIdstringupdateSheetPropertiesobjectGOOGLESHEETS_UPDATE_SPREADSHEET_PROPERTIESTool to update properties of a spreadsheet, such as its title, locale, or auto-recalculation settings. Use when you need to modify the overall configuration of a Google Sheet.3 paramsTool to update properties of a spreadsheet, such as its title, locale, or auto-recalculation settings. Use when you need to modify the overall configuration of a Google Sheet.
fieldsstringpropertiesobjectspreadsheetIdstringGOOGLESHEETS_UPSERT_ROWSUpsert rows - update existing rows by key, append new ones. Automatically handles column mapping and partial updates. Use for: CRM syncs (match Lead ID), transaction imports (match Transaction ID), inventory updates (match SKU), calendar syncs (match Event ID). Features: - Aut...6 paramsUpsert rows - update existing rows by key, append new ones. Automatically handles column mapping and partial updates. Use for: CRM syncs (match Lead ID), transaction imports (match Transaction ID), inventory updates (match SKU), calendar syncs (match Event ID). Features: - Aut...
dataarrayheadersarraykeyColumnstringsheetNamestringtableStartstringspreadsheetIdstringPowerful tools for automating Google Sheets using Model Context Protocol (MCP)
mcp-name: io.github.henilcalagiya/google-sheets-mcp
Google Sheets MCP Server provides seamless integration of Google Sheets with any MCP-compatible client. It enables full spreadsheet automation — including creating, reading, updating, and deleting sheets — through a simple and secure API layer.
uvxuv package manager (for uvx command)Install uv:
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows PowerShell
irm https://astral.sh/uv/install.ps1 | iex
Step 1: Create a Google Cloud Project
Step 2: Enable Required APIs
Step 3: Create Service Account
Step 4: Generate JSON Key
Step 5: Extract Required Values Open the downloaded JSON file and note these values:
project_id (e.g., "my-sheets-automation-123456")private_key_id (e.g., "a4ae73111b11b2c3b07cc01006e71eb8230dfa29")private_key (the long private key starting with "-----BEGIN PRIVATE KEY-----")client_email (e.g., "sheets-mcp-service@my-sheets-automation-123456.iam.gserviceaccount.com")client_id (e.g., "113227823918217958816")client_x509_cert_url (e.g., "https://www.googleapis.com/robot/v1/metadata/x509/sheets-mcp-service%40my-sheets-automation-123456.iam.gserviceaccount.com")Example Google service account JSON structure:
{
"type": "service_account",
"project_id": "your-project-id",
"private_key_id": "your-private-key-id",
"private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
"client_email": "your-service@your-project.iam.gserviceaccount.com",
"client_id": "your-client-id",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/your-service%40your-project.iam.gserviceaccount.com"
}
{
"mcpServers": {
"google-sheets-mcp": {
"command": "uvx",
"args": ["google-sheets-mcp@latest"],
"env": {
"project_id": "your-project-id",
"private_key_id": "your-private-key-id",
"private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
"client_email": "your-service@your-project.iam.gserviceaccount.com",
"client_id": "your-client-id",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/your-service%40your-project.iam.gserviceaccount.com"
}
}
}
}
💡 Pro Tip: You can copy the values directly from your Google service account JSON file. The field names in the JSON file are used exactly as they are - no changes needed!
🔄 Backward Compatibility: The server also supports the old GOOGLE_ prefixed variable names (e.g., GOOGLE_PROJECT_ID) for existing configurations.
your-service@your-project.iam.gserviceaccount.com) and assign Editor access.🎉 You're all set! Your MCP client will automatically install and run the package when needed.
This project is licensed under the MIT License - see the LICENSE file for details.
Henil C Alagiya
Support & Contributions:
com.mcparmory/google-sheets
domdomegg/google-sheets-mcp
cct15/war-dashboard-data
moooonad/mcp-google-sheets-full
io.github.br0ski777/csv-to-json
kalehdoo/warehouse-mcp