Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
SHEETS_MCP_READ_ONLYNoWhen true, only the read tools are registered.false
GOOGLE_OAUTH_TOKEN_FILENoWhere the cached OAuth token lives.~/.sheets-mcp/token.json
GOOGLE_OAUTH_CLIENT_FILENoOAuth client secrets, for the user-account flow.
GOOGLE_SERVICE_ACCOUNT_FILENoPath to the service account JSON key.
GOOGLE_SERVICE_ACCOUNT_JSONNoThe same service account key inlined, for hosts without a filesystem.

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_spreadsheetsA

List Google Sheets the credentials can access, most recently modified first.

Args: name_contains: Optional case-insensitive substring to filter titles by. limit: Maximum number of spreadsheets to return (1-100).

get_spreadsheetA

Get a spreadsheet's title, URL and the name and size of every tab in it.

Call this before reading when you do not already know the tab names.

Args: spreadsheet_id: The long token from the spreadsheet URL.

read_rangeB

Read a raw grid of cells from a spreadsheet.

Args: spreadsheet_id: The long token from the spreadsheet URL. a1_range: A1 notation, e.g. "Sheet1", "Sheet1!A1:D50" or "Sheet1!A:A".

read_recordsA

Read a tab as labelled records, using one row as the column headers.

Each record includes a _row field with its 1-based sheet row number, which you can use to build an A1 range for a later update.

Args: spreadsheet_id: The long token from the spreadsheet URL. sheet_name: The tab name, e.g. "Sales". header_row: 1-based row number holding the column headers. limit: Maximum number of data records to return.

find_rowsB

Find records in a tab whose column matches a value.

Args: spreadsheet_id: The long token from the spreadsheet URL. sheet_name: The tab name to search. column: Header name of the column to match against. value: Value to look for; matching is case-insensitive. header_row: 1-based row number holding the column headers. exact: True for an exact match, False for a substring match. limit: Maximum number of matches to return.

write_rangeA

Overwrite a range of cells with the given rows. Existing values are replaced.

Args: spreadsheet_id: The long token from the spreadsheet URL. a1_range: Top-left anchored range, e.g. "Sheet1!A2:C10". values: Rows of cell values, outer list is rows, inner list is columns. value_input_option: USER_ENTERED parses formulas and dates; RAW stores literally.

append_rowsA

Append rows below the last used row of a tab. Nothing is overwritten.

Args: spreadsheet_id: The long token from the spreadsheet URL. sheet_name: The tab to append to, e.g. "Sales". values: Rows of cell values, in the same column order as the sheet. value_input_option: USER_ENTERED parses formulas and dates; RAW stores literally.

clear_rangeA

Clear the values in a range, leaving formatting and the rows in place.

Args: spreadsheet_id: The long token from the spreadsheet URL. a1_range: The range to clear, e.g. "Sheet1!A2:D100".

create_spreadsheetA

Create a new spreadsheet and return its ID and URL.

A spreadsheet created by a service account is owned by that account, so pass share_with to give a human account access to it.

Args: title: Title of the new spreadsheet. sheet_names: Optional tab names to create instead of the default single tab. share_with: Optional email address to grant edit access to.

add_sheetA

Add a new tab to an existing spreadsheet.

Args: spreadsheet_id: The long token from the spreadsheet URL. title: Name of the new tab; must not already exist.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 10 tools

Disambiguation5/5

Each tool maps to a clearly distinct operation: list vs. get metadata, raw range vs. labelled record reads, overwrite vs. append vs. clear, search, and create spreadsheet vs. add tab. The boundaries are unambiguous and descriptions reinforce the differences.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (e.g., list_spreadsheets, read_range, append_rows, create_spreadsheet). The convention is predictable throughout with no mixing of styles.

Tool Count5/5

Ten tools provide a well-scoped set for Google Sheets operations. Each tool earns its place without redundancy, and the count is comfortably within the ideal 3–15 range.

Completeness4/5

The surface covers core operations: list, read (raw and records), search, write, append, clear, create spreadsheet, and add tab. However, there is no delete or rename for spreadsheets or tabs, and no formatting or batch operations, which are minor gaps for a complete lifecycle.

Maintenance

ActivityMaintained
ResponsivenessNo issues