Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.chrischall/gogcli-mcp-sheets

NPM · GOGCLI-MCP-SHEETS

Extended Google Sheets for Claude via gogcli — auth + full Sheets support

Available components

0 this week 94 Trust /100

Last scanned (5 hours ago)

Scores higher than 97% of npm servers

Category Data and Analytics

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 0 of 4 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to chrischall/gogcli-mcp). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 0 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability71
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 14865 tokens (~190/item across 78 items; 78 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 10 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 78 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 4 Nov 26 0
    • Stability: pass → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Package version: 4.8.1 → 4.9.1 functional
  • 17 Oct 26 0
    • Stability: 0.97 → pass security
  • 16 Oct 26 +1
    • Stability: 0.93 → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Package version: 4.8.0 → 4.8.1 functional
  • 15 Oct 26 −1
    • Stability: pass → 0.93 functional
  • 14 Oct 26 +45
    • Injection markers: unverified → pass ▲ security
    • Stability: unverified → pass ▲ security
    • Tool coverage: unverified → 100 ▲ functional
    • MCP protocol: unverified → pass ▲ functional
    • Package version: 4.6.1 → 4.8.0 functional
  • 13 Oct 26 0
    • Package version: 4.6.1 → 4.8.0 functional
  • 12 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
    • Security disclosure: unverified → fail ▼ functional
    • Package version: 4.7.1 → 4.8.0 functional
    • Package version: 4.6.1 → 4.7.1 functional
  • 11 Oct 26 −60
    • Stability: pass → unverified ▼ security
    • Malware scan: pass → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Capabilities: pass → unverified ▼ functional
    • Security disclosure: fail → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Schema quality: Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. functional
    • Package version: 4.6.1 → 4.7.1 functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 4 Nov 2026 · Analysed npm/gogcli-mcp-sheets@4.9.1

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo chrischall/gogcli-mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/chrischall/gogcli-mcp/.github/workflows/release-please.yml@refs/heads/main
Rekor log index 3691861311
Predicate type SLSA build provenance https://slsa.dev/provenance/v1
Subject digest sha512:9e0361ab2704c0a8e121c2eabf49d46bb052b255001ea5c6bc31a245d4aebab7acb1feff9d918f85eef25cd468ee8fcdac78a85bbe1e1fcb8534d0b02

Background: How many MCP packages publish verified provenance →

Dependencies 4 packages
Packages resolved 4
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 78 exposed · ~14,865 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
gog_auth_add ~252

Authorize a Google account via browser-based OAuth. Opens a browser window where the user must sign in and grant access. Blocks for up to 5 minutes waiting for the user to complete authorization. If the browser does not open automatically, a fallback URL is included in the response. Use gog_auth_list to check which accounts are already configured.

NameTypeReqDescription
emailstringyesGoogle account email to authorize
extraScopesstring–Additional raw OAuth scope URIs to request, comma-separated, on top of the ones `services` implies. Use for scopes no service covers — e.g. https://www.googleapis.com/auth/bigquery.readonly, required…
servicesstring–Services to authorize: "all" or comma-separated list (e.g. "sheets,gmail,calendar"). Default: "sheets". Prefer the narrowest set you need — requesting a service whose Google API is not enabled on the…

No output schema declared.

No examples provided.

gog_auth_add_complete ~212

Complete REMOTE/headless Google authorization (step 2 of 2). Takes the full redirected localhost URL the user copied after finishing gog_auth_add_url, exchanges it for a refresh token, and stores it. Use the SAME `services` value you passed to gog_auth_add_url. Must run within 10 minutes of step 1 and against the same gogcli host.

NameTypeReqDescription
emailstringyesGoogle account email being authorized (same as step 1)
extraScopesstring–Extra OAuth scope URIs — MUST match the value passed to gog_auth_add_url, for the same reason `services` must: the two steps have to describe the same grant.
redirectUrlstringyesThe full localhost redirect URL the user copied from the browser address bar after signing in (contains code and state; the page itself fails to load, which is expected).
servicesstring–Services authorized — MUST match the value passed to gog_auth_add_url. Default: "sheets".

No output schema declared.

No examples provided.

gog_auth_add_url ~338

Begin REMOTE/headless Google authorization (step 1 of 2). Returns a sign-in URL to open in any browser — no local server or terminal on the gogcli host is needed, so this works on a hosted deployment where the interactive gog_auth_add cannot. Hand the URL to the user; after they sign in, the browser is redirected to a localhost URL that fails to load — that is expected. They copy that full redirected URL (from the address bar) and you pass it to gog_auth_add_complete. The link is valid for 10 minutes. If you pass a custom `services` here, pass the SAME value to gog_auth_add_complete or the second step will not match this one.

NameTypeReqDescription
emailstringyesGoogle account email to authorize
extraScopesstring–Additional raw OAuth scope URIs to request, comma-separated, on top of the ones `services` implies. Use for scopes no service covers — e.g. https://www.googleapis.com/auth/bigquery.readonly, required…
servicesstring–Services to authorize: "all" or comma-separated list (e.g. "sheets,gmail,calendar"). Default: "sheets". Prefer the narrowest set you need — requesting a service whose Google API is not enabled on the…

No output schema declared.

No examples provided.

gog_auth_health ~198

Check the LIVE health of each stored Google account. Unlike gog_auth_status (which only reports keyring/config setup), this performs a real token refresh against Google, so it detects expired or revoked (invalid_grant) refresh tokens — the account-wide sign-out that blocks every service. Reports per account: whether the token is currently valid, the mapped cause when it is not, how long ago it was authorized, and a warning as it approaches the 7-day refresh-token limit that applies to OAuth apps whose consent screen is still in "Testing" mode. Run it proactively to re-authorize on your own schedule instead of mid-task. On a hosted deployment this is the ONLY check that measures Google: a connector showing "connected" or "refreshed" has verified the client's connection to the MCP host, and nothing else — the Google credential lives in gog's keyring on that host and can be dead while the connection looks perfectly healthy.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

gog_auth_list ~81

List the Google accounts stored in gogcli, with their scopes. This reads local configuration only — it does not contact Google and does NOT tell you whether an account still works: a signed-out account whose refresh token expired or was revoked is listed here exactly like a healthy one, scopes and all. Use gog_auth_health to check whether an account can actually authenticate.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

gog_auth_run ~230

Run any gog auth subcommand not covered by the other tools. Run `gog auth --help` for the full list of subcommands, or `gog auth <subcommand> --help` for flags on a specific subcommand. Only these subcommands are available: list, status, services, alias. Flags that override server safety controls (--readonly, --enable-commands, --disable-commands, --account, --access-token, --home, --client, --gmail-no-send, --no-input) and a bare "--" are refused. Local file paths (--out, --out-dir, --attach, --file, --*-file, @file JSON) must be inside GOG_FILE_ROOTS; subcommands that take a local path positionally (e.g. drive upload) are refused in favour of their dedicated tools. For browser-based authorization, use gog_auth_add instead.

NameTypeReqDescription
argsarrayyesAdditional positional args and flags
subcommandstringyesThe gog auth subcommand to run, e.g. "alias", "list", "status"

No output schema declared.

No examples provided.

gog_auth_services ~24

List all Google services supported by gogcli and the OAuth scopes each requires.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

gog_auth_status ~66

Show gogcli auth CONFIGURATION: keyring backend, credential files, and auth setup. Despite the name this is not a health check — it reads local setup and does not contact Google, so it says nothing about whether an account can still authenticate. Use gog_auth_health for that.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

gog_sheets_add_tab ~94

Add a new sheet tab to a spreadsheet.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
spreadsheetIdstringyesSpreadsheet ID (from the URL)
tabNamestringyesName for the new tab

No output schema declared.

No examples provided.

gog_sheets_append ~198

Append rows to a Google Sheet after the last row with data in the given range. Values may be strings, numbers, booleans, or null. Strings starting with "=" are interpreted as formulas.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
dry_runboolean–Preview the operation without modifying the sheet (gog --dry-run): reports the intended actions and exits without writing.
rangestringyesRange indicating which sheet/columns to append to, e.g. Sheet1!A:C
spreadsheetIdstringyesSpreadsheet ID (from the URL)
valuesarrayyes2D array of rows to append. Cells may be string/number/boolean/null; strings starting with "=" are formulas.

No output schema declared.

No examples provided.

gog_sheets_banding_clear ~143

Remove alternating-color banding. Pass id to remove a single banded range, or all:true with sheet to remove every banding on that sheet.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
allboolean–Remove all banding from the sheet (requires sheet)
idnumber–Banded range ID to remove
sheetstring–Sheet name (used with all:true)
spreadsheetIdstringyesSpreadsheet ID

No output schema declared.

No examples provided.

gog_sheets_banding_list ~98

List alternating-color banded ranges. Optionally scope to a single sheet.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
sheetstring–Only list banding from this sheet
spreadsheetIdstringyesSpreadsheet ID

No output schema declared.

No examples provided.

gog_sheets_banding_set ~169

Apply alternating colors to a range. Provide rowPropertiesJson and/or columnPropertiesJson — each a Sheets API BandingProperties JSON object ({headerColor, firstBandColor, secondBandColor, footerColor}). At least one is required.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
columnPropertiesJsonstring–BandingProperties JSON for column colors
rangestringyesRange to band (e.g. Sheet1!A1:D20)
rowPropertiesJsonstring–BandingProperties JSON for row colors
spreadsheetIdstringyesSpreadsheet ID

No output schema declared.

No examples provided.

gog_sheets_batch_begin ~122

Open a persisted, revision-locked Sheets request batch. Pass its returned batchId to gog_sheets_batch_request using batch=<id>; no spreadsheet changes are submitted until gog_sheets_batch_end.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
namestring–Optional batch label
spreadsheetIdstringyesSpreadsheet ID the batch is locked to

No output schema declared.

No examples provided.

gog_sheets_batch_end ~187

Submit a persisted Sheets request batch atomically against its locked revision. The queued requests are shown for review and require confirmation before they are applied.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
batchIdstringyesBatch ID returned by gog_sheets_batch_begin
confirmTokenstring–ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has se…

No output schema declared.

No examples provided.

gog_sheets_batch_request ~269

Submit a Google Sheets API structural request array atomically (for example addDimension, repeatCell, mergeCells, or updateSheetProperties). requestsJson must be a JSON array of Sheets API Request objects. Requests are previewed and require confirmation before submission. Use batch=<id> to append these requests to a persisted Sheets batch instead of submitting immediately.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
batchstring–Persisted Sheets batch ID; append requests without submitting yet
confirmTokenstring–ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has se…
requestsJsonstringyesJSON array of Google Sheets API Request objects, e.g. [{"addSheet":{"properties":{"title":"Archive"}}}]
spreadsheetIdstringyesSpreadsheet ID

No output schema declared.

No examples provided.

gog_sheets_batch_update ~271

Update values in multiple ranges with one Sheets API request. dataJson is a JSON array of {range, values} objects — pass it inline as a literal JSON string. Atomic — either all ranges update or none do. (The CLI also accepts "@/path/to/file.json", but that file is read on the gog server's filesystem, not the caller's, so inline JSON is the right form for remote MCP callers.)

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
dataJsonstringyesValue ranges as an inline JSON array, e.g. [{"range":"Sheet1!A1:B2","values":[["a","b"]]}]. (An "@/path" form is read on the gog server filesystem, not yours — inline the JSON instead.)
includeValuesInResponseboolean–Include updated values in the response
inputstring–Value input option (default: USER_ENTERED)
responseDateTimeRenderstring–Response date/time render option
responseRenderstring–Response value render option
spreadsheetIdstringyesSpreadsheet ID

No output schema declared.

No examples provided.

gog_sheets_chart_create ~213

Create an embedded chart from a JSON spec. specJson is a Sheets API ChartSpec (or full EmbeddedChart) — inline or @/path/to/file.json. Anchor the chart with sheet + anchor (A1 cell), and optionally size it with width/height pixels.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
anchorstring–Anchor cell in A1 notation (e.g. A1, E10)
heightnumber–Chart height in pixels (default: 371)
sheetstring–Sheet name for the anchor (resolved to sheetId)
specJsonstringyesChartSpec or EmbeddedChart JSON (inline or @file)
spreadsheetIdstringyesSpreadsheet ID
widthnumber–Chart width in pixels (default: 600)

No output schema declared.

No examples provided.

gog_sheets_chart_delete ~90

Delete a chart by its numeric chart ID.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
chartIdstringyesNumeric chart ID to delete
spreadsheetIdstringyesSpreadsheet ID

No output schema declared.

No examples provided.

gog_sheets_chart_get ~105

Get the full definition (spec + position) of a single chart by its numeric chart ID.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
chartIdstringyesNumeric chart ID (from gog_sheets_chart_list)
spreadsheetIdstringyesSpreadsheet ID

No output schema declared.

No examples provided.

gog_sheets_chart_list ~82

List embedded charts in a spreadsheet (chartId, type, position).

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
spreadsheetIdstringyesSpreadsheet ID

No output schema declared.

No examples provided.

gog_sheets_chart_update ~132

Replace a chart spec by chart ID. specJson is a Sheets API ChartSpec (or full EmbeddedChart) — inline or @/path/to/file.json.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
chartIdstringyesNumeric chart ID to update
specJsonstringyesChartSpec or EmbeddedChart JSON (inline or @file)
spreadsheetIdstringyesSpreadsheet ID

No output schema declared.

No examples provided.

gog_sheets_clear ~125

Clear all values in a Google Sheets range (formatting is preserved).

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
dry_runboolean–Preview the operation without modifying the sheet (gog --dry-run): reports the intended actions and exits without writing.
rangestringyesRange in A1 notation to clear
spreadsheetIdstringyesSpreadsheet ID

No output schema declared.

No examples provided.

gog_sheets_conditional_format_add ~342

Add a conditional formatting rule to a range. Boolean rules: type picks the condition, expr is its value/formula (omit for blank/not-blank), formatJson is the CellFormat to apply when the condition matches (inline or @file); use formatFields to force-send zero/false fields (e.g. backgroundColor,textFormat.bold). Gradient rules (color scales): pass gradientRuleJson instead — a GradientRule JSON with minpoint/maxpoint (and optional midpoint), each {"color":{...},"type":"MIN|MAX|NUMBER|PERCENT|PERCENTILE","value":"..."}. The two modes are mutually exclusive.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
exprstring–Expression value or custom formula (omit for blank/not-blank)
formatFieldsstring–Format field mask for force-sending zero/false fields (e.g. backgroundColor,textFormat.bold)
formatJsonstring–CellFormat JSON to apply when a boolean rule matches (inline or @file; required with type)
gradientRuleJsonstring–GradientRule JSON for gradient conditional formats (inline or @file; must include minpoint and maxpoint)
rangestringyesRange the rule applies to (e.g. Sheet1!A1:A100)
spreadsheetIdstringyesSpreadsheet ID
typestring–Boolean rule type (required unless gradientRuleJson is used)

No output schema declared.

No examples provided.

gog_sheets_conditional_format_clear ~145

Remove conditional formatting rules from a sheet. Pass index to remove a single rule by its 0-based index, or all:true to remove every rule on the sheet.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
allboolean–Remove all conditional formatting rules from the sheet
indexnumber–0-based rule index to remove
sheetstringyesSheet name to clear rules from
spreadsheetIdstringyesSpreadsheet ID

No output schema declared.

No examples provided.

gog_sheets_conditional_format_list ~96

List conditional formatting rules. Optionally scope to a single sheet.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
sheetstring–Only list rules from this sheet
spreadsheetIdstringyesSpreadsheet ID

No output schema declared.

No examples provided.

gog_sheets_copy ~108

Copy a spreadsheet to a new spreadsheet with the given title.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
parentstring–Parent folder ID to place the copy in
spreadsheetIdstringyesSpreadsheet ID to copy
titlestringyesTitle for the new copy

No output schema declared.

No examples provided.

gog_sheets_copy_paste ~235

Copy a source range's values/formulas/format to a destination range via the Sheets CopyPasteRequest. A destination larger than the source tiles the source to fill it — the canonical way to fill formulas down or across with relative references adjusted (aliases: fill, copy-range). Use type to control what is pasted (NORMAL pastes everything; FORMULA fills formulas with adjusted references; VALUES/FORMAT/etc. paste only that aspect).

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
deststringyesDestination range (e.g. Sheet1!A2:H120). Larger than the source tiles/fills it.
sourcestringyesSource range (e.g. Sheet1!A2:H71)
spreadsheetIdstringyesSpreadsheet ID
transposeboolean–Paste transposed (swap rows and columns)
typestring–Paste type (default: NORMAL pastes everything)

No output schema declared.

No examples provided.

gog_sheets_create ~85

Create a new Google Spreadsheet. Returns JSON with the new spreadsheetId and URL.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
titlestringyesTitle for the new spreadsheet

No output schema declared.

No examples provided.

gog_sheets_datasource_add ~721

Add a BigQuery Connected Sheets data source to a spreadsheet, creating its linked DATA_SOURCE sheet. Point it at EITHER a custom SQL query (query) OR an existing native table (dataset + table) — never both. billingProject is the BigQuery project charged for the query; tableProject only names which project OWNS the table, and defaults to the billing project. Returns the new dataSourceId, which every other datasource tool takes. COSTS MONEY AND RUNS ASYNCHRONOUSLY: this starts a BigQuery execution billed to the billing project, and returns once the execution has been REQUESTED — not once it has finished. Poll gog_sheets_datasource_describe until its dataExecutionStatus state is SUCCEEDED or FAILED before treating the data as current. Because it bills, it first asks the MCP host to show the user a confirmation prompt naming the spreadsheet, the query or table and the billing project; nothing runs unless they accept. If the client cannot show that prompt (no MCP elicitation, e.g. claude.ai), a two-step flow applies instead: call WITHOUT confirmToken and nothing is sent or changed — the result has status "confirmation-required", the full preview and a confirmToken. Follow its instruction (by default: show the preview to the user verbatim and only after they explicitly approve it in chat, call again with the SAME arguments plus confirmToken). The tool re-reads what it would act on and refuses (DRAFT_CHANGED, with a fresh preview and token) if it changed; TOKEN_EXPIRED / TOKEN_REUSED / TOKEN_INVALID also do nothing. A server set to MCP_CONFIRM_MODE=refuse refuses instead. BIGQUERY-BACKED SOURCES NEED AN EXTRA SCOPE: ordinary sheets authorization does not request https://www.googleapis.com/auth/bigquery.readonly, and Google refuses the whole response without it. A permission error here means the token is missing that scope, NOT that the spreadsheet has no data sources — re-authorize with gog_auth_add_url/gog_auth_add_complete (or gog_auth_add), keeping the account's EXISTI…

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
billingProjectstringyesBilling-enabled BigQuery project charged for this source's queries
confirmTokenstring–ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has se…
datasetstring–BigQuery dataset ID of an existing table. Requires table; mutually exclusive with query.
querystring–BigQuery SQL to run. Mutually exclusive with dataset/table/tableProject.
spreadsheetIdstringyesSpreadsheet ID
tablestring–BigQuery table ID. Requires dataset; mutually exclusive with query.
tableProjectstring–BigQuery project that owns the table (default: the billing project). Only valid with dataset/table.

No output schema declared.

No examples provided.

gog_sheets_datasource_delete ~298

Delete a Connected Sheets data source. This is WIDER than it sounds: it also deletes the source's linked DATA_SOURCE sheet, and unlinks every extract, chart and pivot table built on it elsewhere in the spreadsheet — objects on other tabs that the caller never named. Take gog_sheets_snapshot first if any of that matters. The BigQuery data itself is untouched; only the spreadsheet's connection to it goes away. BIGQUERY-BACKED SOURCES NEED AN EXTRA SCOPE: ordinary sheets authorization does not request https://www.googleapis.com/auth/bigquery.readonly, and Google refuses the whole response without it. A permission error here means the token is missing that scope, NOT that the spreadsheet has no data sources — re-authorize with gog_auth_add_url/gog_auth_add_complete (or gog_auth_add), keeping the account's EXISTING services selection and passing extraScopes=https://www.googleapis.com/auth/bigquery.readonly with forceConsent. Looker sources reuse the account's existing Looker link and need nothing extra.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
dataSourceIdstringyesData source ID, as reported by gog_sheets_datasource_list
spreadsheetIdstringyesSpreadsheet ID

No output schema declared.

No examples provided.

gog_sheets_datasource_describe ~293

Describe one Connected Sheets data source in full: the complete API DataSource spec (including the BigQuery raw query, which gog_sheets_datasource_list withholds), its sheet properties, its DataExecutionStatus and any refresh schedules. Refreshes are asynchronous and this tool cannot start one — poll it until state is SUCCEEDED or FAILED, and read the status error text when it is FAILED. BIGQUERY-BACKED SOURCES NEED AN EXTRA SCOPE: ordinary sheets authorization does not request https://www.googleapis.com/auth/bigquery.readonly, and Google refuses the whole response without it. A permission error here means the token is missing that scope, NOT that the spreadsheet has no data sources — re-authorize with gog_auth_add_url/gog_auth_add_complete (or gog_auth_add), keeping the account's EXISTING services selection and passing extraScopes=https://www.googleapis.com/auth/bigquery.readonly with forceConsent. Looker sources reuse the account's existing Looker link and need nothing extra.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
dataSourceIdstringyesData source ID, as reported by gog_sheets_datasource_list
spreadsheetIdstringyesSpreadsheet ID

No output schema declared.

No examples provided.

gog_sheets_datasource_list ~259

List the Connected Sheets data sources in a spreadsheet (BigQuery or Looker), each joined with its DATA_SOURCE sheet and current execution status. This is the discovery call — start here to get the dataSourceId the describe tool wants. Deliberately does not print custom SQL; use gog_sheets_datasource_describe for that. BIGQUERY-BACKED SOURCES NEED AN EXTRA SCOPE: ordinary sheets authorization does not request https://www.googleapis.com/auth/bigquery.readonly, and Google refuses the whole response without it. A permission error here means the token is missing that scope, NOT that the spreadsheet has no data sources — re-authorize with gog_auth_add_url/gog_auth_add_complete (or gog_auth_add), keeping the account's EXISTING services selection and passing extraScopes=https://www.googleapis.com/auth/bigquery.readonly with forceConsent. Looker sources reuse the account's existing Looker link and need nothing extra.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
spreadsheetIdstringyesSpreadsheet ID

No output schema declared.

No examples provided.

gog_sheets_datasource_refresh ~608

Re-run a Connected Sheets data source so its sheet and extracts pick up current BigQuery data. Google refuses to refresh a source whose previous execution FAILED; forceRefresh overrides that, which is what you want after fixing the underlying query or permissions. COSTS MONEY AND RUNS ASYNCHRONOUSLY: this starts a BigQuery execution billed to the billing project, and returns once the execution has been REQUESTED — not once it has finished. Poll gog_sheets_datasource_describe until its dataExecutionStatus state is SUCCEEDED or FAILED before treating the data as current. Because it bills, it first asks the MCP host to show the user a confirmation prompt naming the spreadsheet, the query or table and the billing project; nothing runs unless they accept. If the client cannot show that prompt (no MCP elicitation, e.g. claude.ai), a two-step flow applies instead: call WITHOUT confirmToken and nothing is sent or changed — the result has status "confirmation-required", the full preview and a confirmToken. Follow its instruction (by default: show the preview to the user verbatim and only after they explicitly approve it in chat, call again with the SAME arguments plus confirmToken). The tool re-reads what it would act on and refuses (DRAFT_CHANGED, with a fresh preview and token) if it changed; TOKEN_EXPIRED / TOKEN_REUSED / TOKEN_INVALID also do nothing. A server set to MCP_CONFIRM_MODE=refuse refuses instead. BIGQUERY-BACKED SOURCES NEED AN EXTRA SCOPE: ordinary sheets authorization does not request https://www.googleapis.com/auth/bigquery.readonly, and Google refuses the whole response without it. A permission error here means the token is missing that scope, NOT that the spreadsheet has no data sources — re-authorize with gog_auth_add_url/gog_auth_add_complete (or gog_auth_add), keeping the account's EXISTING services selection and passing extraScopes=https://www.googleapis.com/auth/bigquery.readonly with forceConsent. Looker sources reuse the account's existing Looker…

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
confirmTokenstring–ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has se…
dataSourceIdstringyesData source ID, as reported by gog_sheets_datasource_list
forceRefreshboolean–Refresh even when the previous execution failed
spreadsheetIdstringyesSpreadsheet ID

No output schema declared.

No examples provided.

gog_sheets_datasource_table_describe ~301

Describe the data-source table (extract) anchored at an A1 cell: its source, configured columns, sort/filter spec and row limit. Read this before gog_sheets_datasource_table_read when you need to know what the columns MEAN — the read returns values, not the extract's definition. BIGQUERY-BACKED SOURCES NEED AN EXTRA SCOPE: ordinary sheets authorization does not request https://www.googleapis.com/auth/bigquery.readonly, and Google refuses the whole response without it. A permission error here means the token is missing that scope, NOT that the spreadsheet has no data sources — re-authorize with gog_auth_add_url/gog_auth_add_complete (or gog_auth_add), keeping the account's EXISTING services selection and passing extraScopes=https://www.googleapis.com/auth/bigquery.readonly with forceConsent. Looker sources reuse the account's existing Looker link and need nothing extra.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
anchorstringyesSheet-qualified A1 anchor of the extract's top-left cell, e.g. "Extracts!B3". Get it from gog_sheets_datasource_table_list — an extract has no other identifier.
spreadsheetIdstringyesSpreadsheet ID

No output schema declared.

No examples provided.

gog_sheets_datasource_table_list ~302

List the data-source tables — "extracts" in the Sheets editor — anchored in a spreadsheet. A data-source table has NO id of its own in the Sheets API: its definition lives on its top-left cell, so every extract is identified by a sheet-qualified A1 anchor (e.g. "Extracts!B3"). That anchor is what the describe and read tools take. Filter with dataSourceId to see only one source's extracts. BIGQUERY-BACKED SOURCES NEED AN EXTRA SCOPE: ordinary sheets authorization does not request https://www.googleapis.com/auth/bigquery.readonly, and Google refuses the whole response without it. A permission error here means the token is missing that scope, NOT that the spreadsheet has no data sources — re-authorize with gog_auth_add_url/gog_auth_add_complete (or gog_auth_add), keeping the account's EXISTING services selection and passing extraScopes=https://www.googleapis.com/auth/bigquery.readonly with forceConsent. Looker sources reuse the account's existing Looker link and need nothing extra.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
dataSourceIdstring–Only list tables belonging to this data source ID
spreadsheetIdstringyesSpreadsheet ID

No output schema declared.

No examples provided.

gog_sheets_datasource_table_read ~415

Read the values out of the data-source table (extract) anchored at an A1 cell. Bounded on purpose: at most maxRows data rows (gog default 1000) plus the header row, which is returned separately. The JSON reports "truncated": true when the configured extract can hold more rows than were returned — treat that exactly like a truncated search, i.e. do not conclude a value is absent from it; raise maxRows or narrow the extract instead. Use render=UNFORMATTED_VALUE for arithmetic (FORMATTED_VALUE returns display strings) or render=FORMULA to see the cell formulas. BIGQUERY-BACKED SOURCES NEED AN EXTRA SCOPE: ordinary sheets authorization does not request https://www.googleapis.com/auth/bigquery.readonly, and Google refuses the whole response without it. A permission error here means the token is missing that scope, NOT that the spreadsheet has no data sources — re-authorize with gog_auth_add_url/gog_auth_add_complete (or gog_auth_add), keeping the account's EXISTING services selection and passing extraScopes=https://www.googleapis.com/auth/bigquery.readonly with forceConsent. Looker sources reuse the account's existing Looker link and need nothing extra.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
anchorstringyesSheet-qualified A1 anchor of the extract's top-left cell, e.g. "Extracts!B3" (from gog_sheets_datasource_table_list)
maxRowsinteger–Maximum data rows to read (gog default: 1000). The header row is returned separately and does not count against this.
renderstring–How cell values are rendered (gog default: FORMATTED_VALUE)
spreadsheetIdstringyesSpreadsheet ID

No output schema declared.

No examples provided.

gog_sheets_datasource_update ~746

Repoint an existing BigQuery Connected Sheets data source: new SQL for a query-backed source, a new dataset/table for a table-backed one, or a new billing project for either. Only the fields you pass are changed. You cannot convert a source between the two kinds — gog refuses SQL on a table source and table fields on a query source — so read gog_sheets_datasource_describe first if you are unsure which kind it is. Replacing the SQL DISCARDS the source's current results. COSTS MONEY AND RUNS ASYNCHRONOUSLY: this starts a BigQuery execution billed to the billing project, and returns once the execution has been REQUESTED — not once it has finished. Poll gog_sheets_datasource_describe until its dataExecutionStatus state is SUCCEEDED or FAILED before treating the data as current. Because it bills, it first asks the MCP host to show the user a confirmation prompt naming the spreadsheet, the query or table and the billing project; nothing runs unless they accept. If the client cannot show that prompt (no MCP elicitation, e.g. claude.ai), a two-step flow applies instead: call WITHOUT confirmToken and nothing is sent or changed — the result has status "confirmation-required", the full preview and a confirmToken. Follow its instruction (by default: show the preview to the user verbatim and only after they explicitly approve it in chat, call again with the SAME arguments plus confirmToken). The tool re-reads what it would act on and refuses (DRAFT_CHANGED, with a fresh preview and token) if it changed; TOKEN_EXPIRED / TOKEN_REUSED / TOKEN_INVALID also do nothing. A server set to MCP_CONFIRM_MODE=refuse refuses instead. BIGQUERY-BACKED SOURCES NEED AN EXTRA SCOPE: ordinary sheets authorization does not request https://www.googleapis.com/auth/bigquery.readonly, and Google refuses the whole response without it. A permission error here means the token is missing that scope, NOT that the spreadsheet has no data sources — re-authorize with gog_auth_add_url/gog_auth_add_complete (or…

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
billingProjectstring–New billing-enabled BigQuery project to charge executions to
confirmTokenstring–ONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has se…
dataSourceIdstringyesData source ID, as reported by gog_sheets_datasource_list
datasetstring–Replacement dataset ID. Only valid on a table-backed source.
querystring–Replacement SQL. Only valid on a query-backed source; mutually exclusive with the table fields.
spreadsheetIdstringyesSpreadsheet ID
tablestring–Replacement table ID. Only valid on a table-backed source.
tableProjectstring–Replacement project owning the table. Only valid on a table-backed source.

No output schema declared.

No examples provided.

gog_sheets_delete_dimension ~228

Delete a span of rows or columns, table-aware: intersecting table objects are preserved (shrunk) along with their remaining data, instead of being corrupted as with a raw DeleteDimension batch update. Target by A1 range (e.g. Sheet1!5:7 or Sheet1!C:D) or by sheet name plus start/end.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
dimensionstringyesDimension to delete
endinteger–Last row/column to delete (1-based, inclusive; required with a sheet-name target)
rangeOrSheetstringyesA1 range covering the rows/columns to delete, or a sheet name (then start/end are required)
spreadsheetIdstringyesSpreadsheet ID
startinteger–First row/column to delete (1-based, inclusive; required with a sheet-name target)

No output schema declared.

No examples provided.

gog_sheets_delete_tab ~90

Delete a sheet tab from a spreadsheet.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
spreadsheetIdstringyesSpreadsheet ID
tabNamestringyesName of the tab to delete

No output schema declared.

No examples provided.

gog_sheets_export ~129

Export a spreadsheet as CSV, TSV, or PDF.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
formatstring–Export format: csv, tsv, pdf (default: csv)
outstring–Output file path
overwriteboolean–Overwrite the output file if it already exists (gog refuses otherwise)
spreadsheetIdstringyesSpreadsheet ID

No output schema declared.

No examples provided.

gog_sheets_filter_set ~172

Set a basic filter on a range (the filter/sort header Sheets shows on a data range). A sheet can hold one basic filter; replacing an existing one requires replace=true — without it, gog refuses rather than silently overwriting.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
rangestringyesRange to filter (A1 notation with sheet name, e.g. Sheet1!A1:C100, or a named range name)
replaceboolean–Replace the sheet's existing basic filter if one is set (appends --force)
spreadsheetIdstringyesSpreadsheet ID

No output schema declared.

No examples provided.

gog_sheets_find_replace ~97

Find and replace text across an entire Google Spreadsheet.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
findstringyesText to find
replacestringyesReplacement text
spreadsheetIdstringyesSpreadsheet ID

No output schema declared.

No examples provided.

gog_sheets_format ~353

Apply cell formatting to a range. The named flags (bold, italic, backgroundColor, etc.) compose into a Sheets API CellFormat — use them for the 90% case. For full API control, pass formatJson + formatFields (Sheets CellFormat + field mask) directly.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
backgroundColorstring–Cell background color as #RRGGBB or #RGB
boldboolean–Set bold
fontFamilystring–Font family (e.g. Arial)
fontSizenumber–Font size in points
formatFieldsstring–Comma-separated field mask (e.g. textFormat.bold,backgroundColor). Required when using formatJson; auto-computed when using named flags.
formatJsonstring–Escape hatch: raw CellFormat JSON. When provided, named flags above are ignored and formatJson is sent as-is.
horizontalAlignmentstring–Horizontal alignment
italicboolean–Set italic
rangestringyesRange to format (e.g. Sheet1!A1:C3)
spreadsheetIdstringyesSpreadsheet ID
strikethroughboolean–Set strikethrough
textColorstring–Text color as #RRGGBB or #RGB
underlineboolean–Set underline
verticalAlignmentstring–Vertical alignment
wrapStrategystring–Text wrap strategy

No output schema declared.

No examples provided.

gog_sheets_freeze ~116

Freeze rows and/or columns in a sheet.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
colsnumber–Number of columns to freeze
rowsnumber–Number of rows to freeze
sheetstring–Sheet tab name (default: first sheet)
spreadsheetIdstringyesSpreadsheet ID

No output schema declared.

No examples provided.

gog_sheets_get ~119

Read values from a Google Sheets range. Returns a JSON object with a "values" array of rows.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
rangestringyesRange in A1 notation, e.g. Sheet1!A1:B10 or a named range
spreadsheetIdstringyesSpreadsheet ID (from the URL)

No output schema declared.

No examples provided.

gog_sheets_insert ~261

Insert rows or columns into a sheet. With after:false (default), the new dimension lands at start. With after:true, the new dimension lands at start+1 (the existing dimension at start is preserved).

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
afterboolean–Insert after the start index instead of before. With after:true the new dimension lands at start+1, leaving the existing dimension at start untouched.
countnumber–Number of rows/columns to insert (default: 1)
dimensionstringyesDimension to insert: ROWS or COLUMNS
inheritFromBeforeboolean–Inherit number format / styling from the row/column before the insertion. Defaults to true with after:true, false otherwise; pass false to inherit from the row/column after the insertion instead. Can…
sheetstringyesSheet tab name
spreadsheetIdstringyesSpreadsheet ID
startnumberyesStart index (0-based)

No output schema declared.

No examples provided.

gog_sheets_links ~97

List hyperlinks in a range.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
rangestringyesRange to scan for hyperlinks (e.g. Sheet1!A1:Z100)
spreadsheetIdstringyesSpreadsheet ID

No output schema declared.

No examples provided.

gog_sheets_links_set ~371

Set cell hyperlinks in a Google Sheet. Three modes: (1) single link — pass cell + url (+ optional text); (2) multi-link cell — pass cell + runsJson, a JSON array of rich-text runs (a run with an empty uri is plain text); (3) batch — pass cellsJson, a JSON array of {cell,url,text} or {cell,runs:[...]} objects written in one request.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
cellstring–Target cell in A1 notation (e.g. Sheet1!B2). Used by single-link and runsJson modes; omit for batch (cellsJson).
cellsJsonstring–Batch: JSON array of {cell,url,text} or {cell,runs:[{text,uri}]} objects, written in one request. Inline JSON or @file (a path gog reads itself — cheaper than inlining a large batch). gog also accept…
runsJsonstring–Multi-link cell: JSON array of runs, e.g. [{"text":"Act A","uri":"https://a"},{"text":" / "},{"text":"Act B","uri":"https://b"}]. A run with an empty uri is plain text.
spreadsheetIdstringyesSpreadsheet ID
textstring–Display text for single-link mode (defaults to the URL when omitted)
urlstring–Hyperlink URL for single-link mode

No output schema declared.

No examples provided.

gog_sheets_list_tabs ~124

List tabs (sheets) in a spreadsheet with their titles, sheetIds, and indices. A friendlier view than gog_sheets_metadata when you only need the tab list — useful for restructuring a workbook over a long agent session without losing track of names.

NameTypeReqDescription
accountstring–Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account.
spreadsheetIdstringyesSpreadsheet ID (from the URL)

No output schema declared.

No examples provided.

Install

How do I install the io.github.chrischall/gogcli-mcp-sheets server?

io.github.chrischall/gogcli-mcp-sheets runs locally as an npm package, launched with npx -y gogcli-mcp-sheets. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · gogcli-mcp-sheets

# add to Claude Code
claude mcp add chrischall-gogcli-mcp-sheets -- npx -y gogcli-mcp-sheets
Common questions

What is the io.github.chrischall/gogcli-mcp-sheets server?

io.github.chrischall/gogcli-mcp-sheets is listed in the public MCP registry as io.github.chrischall/gogcli-mcp-sheets. Extended Google Sheets for Claude via gogcli, auth + full Sheets support. This page covers its npm package (gogcli-mcp-sheets).

Is the io.github.chrischall/gogcli-mcp-sheets server safe to use?

io.github.chrischall/gogcli-mcp-sheets scores 94 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 4 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.chrischall/gogcli-mcp-sheets server expose?

io.github.chrischall/gogcli-mcp-sheets exposes 78 tools: gog_auth_list, gog_auth_status, gog_auth_health, gog_auth_services, gog_auth_add, and 73 more. Their descriptions and schemas cost roughly 14,865 tokens of context every time the server is loaded.

Is the io.github.chrischall/gogcli-mcp-sheets server still maintained?

io.github.chrischall/gogcli-mcp-sheets is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the io.github.chrischall/gogcli-mcp-sheets server under?

io.github.chrischall/gogcli-mcp-sheets declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.