Skip to main content
Glama
README.md
# MCP Google Sheets Server

This project provides a Model Context Protocol (MCP) server that allows interaction with Google Sheets.

It exposes tools to:

- List sheets (tabs) within a spreadsheet.
- Read data from specific cell ranges.
- Write data to specific cell ranges.

It explicitly **does not** provide tools for managing Google Drive files (listing, creating, deleting folders/files). Access is restricted to spreadsheet content only.

## Prerequisites

1.  **Python 3.11+**
2.  **Google Cloud Project with the Google Sheets API enabled**
3.  **Service Account Key:**
    - Go to the Google Cloud Console and create a new Service Account.
    - Download the service account key file (JSON format).
    - Grant this service account the "Editor" role for the Google Sheets you want to access.

## How to use

1.  **Clone the repository.**

    ```bash
    git clone https://github.com/shionhonda/mcp-gsheet.git
    ```

2.  **Set up Google Credentials:**

    - Set the `GOOGLE_APPLICATION_CREDENTIALS` environment variable to the _absolute path_ of your downloaded service account JSON key file.

    ```bash
    export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-key.json"
    ```

    - Alternatively, you can place the key file in a standard location recognized by the Google Cloud client libraries (not recommended for shared environments).

3.  **Install Dependencies:**

    ```bash
    uv venv
    source .venv/bin/activate
    ```

4.  Run the Server

    To develop the server with MCP Inspector:

    ```bash
    mcp dev server.py
    ```

    To run the server:

    ```bash
    mcp run server.py
    ```

    The server will start and listen for MCP requests over standard input/output (stdio).

## Claude Desktop

Add the following to your Claude Desktop configuration:

```json
{
  "mcpServers": {
    "gsheet": {
      "command": "/path/to/uv",
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "/path/to/your/service-account-key.json"
      },
      "args": ["--directory", "/path/to/mcp-gsheet", "run", "server.py"]
    }
  }
}
```

## MCP Tools Provided

- **`list_sheets(spreadsheet_id: str) -> list[str]`**: Lists the names of all sheets in the specified spreadsheet.
- **`read_cells(spreadsheet_id: str, range_name: str) -> list[list[str]]`**: Reads data from the given range (e.g., `'Sheet1!A1:B5'`).
- **`write_cells(spreadsheet_id: str, range_name: str, values: list[list[str]]) -> str`**: Writes the provided 2D list of values to the specified starting cell/range (e.g., `'Sheet1!C1'`).

TDQS

A3.6/5.0

Scored across 3 tools

Disambiguation5/5

Each tool performs a clearly distinct function: listing tabs, reading cell data, and writing cell data. There is no overlap or ambiguity between them.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern: list_sheets, read_cells, write_cells. The naming is uniform and predictable.

Tool Count5/5

Three tools is a well-scoped set for a Google Sheets server focused on basic data operations. Each tool is necessary and there are no redundant additions.

Completeness4/5

The core workflows of listing available sheets and reading/writing cell data are covered. Minor gaps exist such as creating or deleting sheets, but the essential use cases are addressed.

Maintenance

ActivityInactive
ResponsivenessNo issues