Skip to main content
Glama
kientv

gsheetmcp

by kientv

gsheetmcp — Public Google Sheet MCP server

Generic MCP server for reading public Google Sheet data via the gviz endpoint — no API key, OAuth, or service account required.

Running

Default mode is stdio (for Claude Desktop / MCP Hub via uvx):

uvx gsheetmcp

Or run locally (from source):

cd sheet-mcp-server
uv run server.py

SSE mode

Set env MCP_TRANSPORT=sse for HTTP SSE transport:

MCP_TRANSPORT=sse uv run server.py

Server exposes SSE endpoint /sse + /messages on 0.0.0.0:8000. Configurable via:

Env

Default

Description

MCP_TRANSPORT

stdio

stdio or sse

MCP_HOST

0.0.0.0

Host (SSE mode)

MCP_PORT

8000

Port (SSE mode)

Related MCP server: mcp-gsheet

Tool: get_sheet_data

Input

Param

Type

Required

Description

sheet_url

string

yes

Full Google Sheet URL (with or without gid)

filter_column

string

no

Column name to filter on (requires filter_value)

filter_value

string

no

Filter value (in matching, case-insensitive)

Output

{
  "sheet_id": "1p67eA4NGs389n-fuqHOmULhE5sfgRtFAulCHR8xcfGE",
  "tab_gid": "1253624571",
  "total_matched": 15,
  "filtered": true,
  "columns": ["Mã căn", "Tầng", "Diện tích", "Giá"],
  "items": [
    { "Mã căn": "A-1201", "Tầng": "12", "Diện tích": "85", "Giá": "2.5 tỷ" }
  ]
}

Error responses

Case

Response

Invalid URL format

{"error": "invalid_sheet_url"}

Sheet not public

{"error": "sheet_not_public"}

filter_column not found

Returns full data + "warning": "filter_column_not_found"

Empty tab

{"items": [], "total_matched": 0}

Timeout / network error

{"error": "fetch_failed", "detail": "..."}

Examples

Sheet 1: FAQ (2 columns: Title, Description)

URL: https://docs.google.com/spreadsheets/d/1zwblTR5DWzgOiVxsDYJJkP5Gcmi4OGiCtldI0nyxZGo/edit?gid=0

Request:

{
  "sheet_url": "https://docs.google.com/spreadsheets/d/1zwblTR5DWzgOiVxsDYJJkP5Gcmi4OGiCtldI0nyxZGo/edit?gid=0",
  "filter_column": "Title",
  "filter_value": "UI"
}

Response:

{
  "sheet_id": "1zwblTR5DWzgOiVxsDYJJkP5Gcmi4OGiCtldI0nyxZGo",
  "tab_gid": "0",
  "total_matched": 3,
  "filtered": true,
  "columns": ["Title", "Description"],
  "items": [
    {
      "Title": "What's the difference between UI Kits and libraries",
      "Description": "UI Kits are copy-and-pastable components..."
    }
  ]
}

Sheet 2: Inventory (completely different structure)

With a different sheet structure, columns and items adapt automatically — no column names leak between sheets.

Test cases

  1. Public sheet + valid filter → filtered: true, correct subset

  2. Public sheet, no filter → filtered: false, all rows

  3. Bad filter_column → full data + warning: filter_column_not_found

  4. Private sheet → error: sheet_not_public

  5. Invalid URL → error: invalid_sheet_url

  6. Two sheets with different structures → columns/items adapt independently

MCP client config

{
  "mcpServers": {
    "gsheetmcp": {
      "command": "uvx",
      "args": ["git+https://github.com/kientv/gsheetmcp.git"]
    }
  }
}

Or with a local clone:

{
  "mcpServers": {
    "gsheetmcp": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/gsheetmcp", "server.py"]
    }
  }
}

SSE (remote server)

When the server runs in SSE mode, configure the client with the endpoint URL:

{
  "mcpServers": {
    "gsheetmcp": {
      "transport": "sse",
      "url": "http://host:8000/sse"
    }
  }
}

Limitations

  • gviz is an internal Google Sheets endpoint, not an official REST API — no SLA.

  • Works only with public sheets (Anyone with the link can view).

  • Each call reads 1 tab specified by gid.

  • No write, delete, or data modification support.

  • Large sheets may timeout (default 30s).

Available Tools

1 tool
get_sheet_dataD
ParametersJSON Schema
NameRequiredDescriptionDefault
sheet_urlYes
filter_valueNo
filter_columnNo

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 1 tool updatev0.1.0
    • First observedget_sheet_data

TDQS

D1.7/5.0
Disambiguation5/5

With only one tool, there is no ambiguity. The single tool is distinctly the only option.

Naming Consistency5/5

The single tool uses clear snake_case naming, consistent with itself.

Tool Count2/5

A single tool for a Google Sheets integration is far too few; typical operations require multiple tools (e.g., create, update, delete).

Completeness1/5

The server is severely incomplete, offering only a read operation (get_sheet_data) with no ability to modify or manage sheets.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

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/kientv/gsheetmcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server