Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions plugins/claude/gsheets/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"name": "gsheets",
"description": "Google Sheets integration for reading, writing, and managing spreadsheets. Create charts, format cells, and automate data operations.",
"version": "1.0.0",
"author": {
"name": "Tomáš Grasl",
"url": "https://www.tomasgrasl.cz/"
},
"repository": "https://github.com/freema/mcp-gsheets",
"license": "MIT"
}
8 changes: 8 additions & 0 deletions plugins/claude/gsheets/.mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"mcpServers": {
"gsheets": {
"command": "npx",
"args": ["-y", "mcp-gsheets@latest"]
}
}
}
72 changes: 72 additions & 0 deletions plugins/claude/gsheets/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Google Sheets Plugin for Claude Code

Google Sheets integration for reading, writing, formatting, and managing spreadsheets.

## What's Included

- **MCP Server** - Connects Claude Code to Google Sheets API
- **Skills** - Auto-triggers for spreadsheet tasks
- **Agents** - `data-analyst` for spreadsheet operations
- **Commands** - `/sheets:read`, `/sheets:write`, `/sheets:format`

## Installation

```bash
claude plugin install gsheets
```

**Required environment variables:**
```
GOOGLE_PROJECT_ID=your-project-id
GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
```

## Commands

### /sheets:read

Read data from a spreadsheet:

```
/sheets:read <spreadsheet-id> <range>
/sheets:read 1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms Sheet1!A1:D10
```

### /sheets:write

Write data to cells:

```
/sheets:write <spreadsheet-id> <range> <values>
/sheets:write 1Bxi... Sheet1!A1 "Hello,World"
```

### /sheets:format

Format cells (colors, fonts, borders):

```
/sheets:format <spreadsheet-id> <range> <format>
/sheets:format 1Bxi... A1:B5 bold background:#ffff00
```

## Agents

Spawn the data analyst for focused work:

```
spawn data-analyst to analyze sales data in spreadsheet 1Bxi...
spawn data-analyst to create a chart from the quarterly report
```

## Usage Examples

- "Read the first 10 rows from my spreadsheet"
- "Update cell A1 with today's date"
- "Create a bar chart from columns A and B"
- "Format the header row as bold with blue background"

## Links

- [Repository](https://github.com/freema/mcp-gsheets)
- [npm](https://www.npmjs.com/package/mcp-gsheets)
36 changes: 36 additions & 0 deletions plugins/claude/gsheets/agents/data-analyst.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
name: data-analyst
description: Agent for analyzing and manipulating Google Sheets data. Reads, writes, formats, and creates charts without cluttering main context.
model: sonnet
---

You are a data analyst agent specializing in Google Sheets operations.

## Your Task

When given a spreadsheet task, execute it efficiently and return clear results with data summaries.

## Process

1. **Get metadata**: Use `sheets_get_metadata` to understand the spreadsheet structure
2. **Read data**: Use `sheets_get_values` or `sheets_batch_get_values`
3. **Analyze/Transform**: Process the data as requested
4. **Write/Format**: Update the spreadsheet if needed
5. **Report**: Return clear summary with key findings

## Available Tools

| Category | Tools |
|----------|-------|
| Read | `sheets_get_values`, `sheets_batch_get_values`, `sheets_get_metadata` |
| Write | `sheets_update_values`, `sheets_append_values`, `sheets_insert_rows` |
| Format | `sheets_format_cells`, `sheets_update_borders`, `sheets_merge_cells` |
| Charts | `sheets_create_chart`, `sheets_update_chart` |
| Manage | `sheets_insert_sheet`, `sheets_delete_sheet`, `sheets_duplicate_sheet` |

## Guidelines

- Always check metadata first for large spreadsheets
- Use batch operations for efficiency
- Return data summaries, not raw dumps
- Confirm write operations completed successfully
35 changes: 35 additions & 0 deletions plugins/claude/gsheets/commands/format.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
description: Format cells in a Google Sheets range
argument-hint: <spreadsheet-id> <range> <format>
---

# /sheets:format

Apply formatting to cells in a Google Sheets spreadsheet.

## Usage

```
/sheets:format <spreadsheet-id> <range> <format-options>
```

## Examples

```
/sheets:format 1Bxi... A1:D1 bold
/sheets:format 1Bxi... A1:A10 background:#ffff00
/sheets:format 1Bxi... B2:B20 number-format:currency
/sheets:format 1Bxi... Header!A1:Z1 bold center background:#4285f4 color:#ffffff
```

## Format Options

- `bold`, `italic`, `underline` - Text styles
- `background:#hex` - Background color
- `color:#hex` - Text color
- `center`, `left`, `right` - Alignment
- `number-format:currency|percent|date` - Number formats

## What Happens

Calls `sheets_format_cells` with the specified formatting options.
26 changes: 26 additions & 0 deletions plugins/claude/gsheets/commands/read.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
description: Read data from a Google Sheets range
argument-hint: <spreadsheet-id> <range>
---

# /sheets:read

Read data from a Google Sheets spreadsheet.

## Usage

```
/sheets:read <spreadsheet-id> <range>
```

## Examples

```
/sheets:read 1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms Sheet1!A1:D10
/sheets:read 1Bxi... Sales!A:A
/sheets:read 1Bxi... "Q1 Report"!B2:F50
```

## What Happens

Calls `sheets_get_values` and returns the cell data as a formatted table.
28 changes: 28 additions & 0 deletions plugins/claude/gsheets/commands/write.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
description: Write data to a Google Sheets range
argument-hint: <spreadsheet-id> <range> <values>
---

# /sheets:write

Write data to a Google Sheets spreadsheet.

## Usage

```
/sheets:write <spreadsheet-id> <range> <values>
```

Values can be comma-separated (single row) or JSON array (multiple rows).

## Examples

```
/sheets:write 1Bxi... Sheet1!A1 "Hello World"
/sheets:write 1Bxi... A1:C1 "Name,Email,Phone"
/sheets:write 1Bxi... A1:B2 [["Header1","Header2"],["Value1","Value2"]]
```

## What Happens

Calls `sheets_update_values` to write the data to the specified range.
64 changes: 64 additions & 0 deletions plugins/claude/gsheets/skills/spreadsheet-management/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
---
name: spreadsheet-management
description: This skill should be used when the user asks about Google Sheets, spreadsheets, cells, rows, columns, charts, or data tables. Activates for reading, writing, formatting, or analyzing spreadsheet data.
---

When the user asks about spreadsheets or data in Google Sheets, use the gsheets MCP tools.

## When to Use This Skill

Activate when the user:

- Wants to read spreadsheet data ("Get data from sheet", "Read column A")
- Needs to write data ("Update cell A1", "Add a row", "Append data")
- Formats cells ("Make header bold", "Add borders", "Change colors")
- Creates charts ("Create a bar chart", "Add a pie chart")
- Manages sheets ("Create new sheet", "Delete sheet", "Copy sheet")

## Tools Reference

| Task | Tool |
|------|------|
| Read range | `sheets_get_values` |
| Read multiple | `sheets_batch_get_values` |
| Get info | `sheets_get_metadata` |
| Write range | `sheets_update_values` |
| Append rows | `sheets_append_values` |
| Insert rows | `sheets_insert_rows` |
| Format cells | `sheets_format_cells` |
| Borders | `sheets_update_borders` |
| Merge | `sheets_merge_cells` |
| Create chart | `sheets_create_chart` |
| New sheet | `sheets_insert_sheet` |

## Spreadsheet ID

Found in the URL: `https://docs.google.com/spreadsheets/d/{SPREADSHEET_ID}/edit`

## Range Notation

```
Sheet1!A1:D10 # Specific range
Sheet1!A:A # Entire column
Sheet1!1:1 # Entire row
A1:D10 # First sheet, specific range
'Sheet Name'!A1 # Sheet name with spaces
```

## Example Workflows

**Read and summarize:**
```
sheets_get_metadata spreadsheetId="1Bxi..."
sheets_get_values spreadsheetId="1Bxi..." range="Data!A1:F100"
```

**Format header row:**
```
sheets_format_cells spreadsheetId="1Bxi..." range="A1:Z1" bold=true backgroundColor="#4285f4"
```

**Create chart:**
```
sheets_create_chart spreadsheetId="1Bxi..." sheetId=0 chartType="BAR" dataRange="A1:B10"
```