/ 디렉터리 / 플레이그라운드 / mcp-google-sheets
● 커뮤니티 xing5 ⚡ 바로 사용

mcp-google-sheets

제작: xing5 · xing5/mcp-google-sheets

Give Claude read/write access to Google Sheets — 19 tools covering cells, rows, sheets, charts, formulas, and cross-sheet search.

mcp-google-sheets wraps Sheets + Drive APIs into ~19 MCP tools. Covers creating spreadsheets, batch cell updates, adding charts, searching across multiple files, and sharing. Auth via Google service account (recommended for headless) or OAuth 2.0.

왜 쓰나요

핵심 기능

라이브 데모

실제 사용 모습

google-sheets.replay ▶ 준비됨
0/0

설치

클라이언트 선택

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "google-sheets": {
      "command": "uvx",
      "args": [
        "mcp-google-sheets"
      ],
      "_inferred": true
    }
  }
}

Claude Desktop → Settings → Developer → Edit Config 열기. 저장 후 앱 재시작.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "google-sheets": {
      "command": "uvx",
      "args": [
        "mcp-google-sheets"
      ],
      "_inferred": true
    }
  }
}

Cursor는 Claude Desktop과 동일한 mcpServers 스키마 사용. 프로젝트 설정이 전역보다 우선.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "google-sheets": {
      "command": "uvx",
      "args": [
        "mcp-google-sheets"
      ],
      "_inferred": true
    }
  }
}

Cline 사이드바의 MCP Servers 아이콘 클릭 후 "Edit Configuration" 선택.

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "google-sheets": {
      "command": "uvx",
      "args": [
        "mcp-google-sheets"
      ],
      "_inferred": true
    }
  }
}

Claude Desktop과 같은 형식. Windsurf 재시작 후 적용.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "google-sheets",
      "command": "uvx",
      "args": [
        "mcp-google-sheets"
      ]
    }
  ]
}

Continue는 맵이 아닌 서버 오브젝트 배열 사용.

~/.config/zed/settings.json
{
  "context_servers": {
    "google-sheets": {
      "command": {
        "path": "uvx",
        "args": [
          "mcp-google-sheets"
        ]
      }
    }
  }
}

context_servers에 추가. 저장 시 Zed가 핫 리로드.

claude mcp add google-sheets -- uvx mcp-google-sheets

한 줄 명령. claude mcp list로 확인, claude mcp remove로 제거.

사용 사례

실전 활용법: mcp-google-sheets

Append daily metrics to a Google Sheet from any data source

👤 Ops / growth engineers ⏱ ~20 min intermediate

언제 쓸까: You want a lightweight dashboard in Sheets fed by whatever the agent can reach (Sentry, Stripe, a DB).

사전 조건
  • Google service account with Sheets + Drive API enabled — console.cloud.google.com → create SA → download JSON → set SERVICE_ACCOUNT_PATH
  • Sheet shared with the SA email — Sheets UI → Share → add [email protected] as Editor
흐름
  1. Identify the target sheet
    Use mcp-google-sheets to find the spreadsheet titled 'Daily KPIs'. Return its ID.✓ 복사됨
    → Spreadsheet ID
  2. Append today's row
    Append a row to sheet 'summary' with columns [date, signups, mrr, errors]. Use today's values from [your source].✓ 복사됨
    → add_rows confirms row appended at the bottom
  3. Update a chart if needed
    Verify the trailing-30d chart picked up the new row; if not, refresh it.✓ 복사됨
    → Chart shows today's data

결과: A live Sheets dashboard updated without opening the file.

함정
  • Rate limit (429) after many single-cell updates — Use batch_update_cells — one call can modify hundreds of cells
  • Service account doesn't see the sheet — You must explicitly share the sheet with its email — SAs have no implicit access
함께 쓰기: sentry · postgres

Deduplicate entries across multiple Google Sheets

👤 Data ops, CRM admins ⏱ ~25 min intermediate

언제 쓸까: Team members maintain separate Sheets and you need one clean consolidated list.

흐름
  1. Enumerate source sheets
    List all spreadsheets in my 'Leads 2026' Drive folder with list_spreadsheets.✓ 복사됨
    → List of 5-20 sheets
  2. Pull all rows into memory
    Use get_multiple_sheet_data to pull the 'Leads' tab from each. Combine by email.✓ 복사됨
    → Merged dataset with dup count
  3. Write consolidated sheet
    Create a new spreadsheet 'Leads 2026 - Consolidated' with deduped rows sorted by latest-touch.✓ 복사됨
    → Clean destination sheet

결과: One canonical sheet; originals untouched for audit.

Generate a Sheets report with formulas, not frozen values

👤 Finance analysts ⏱ ~30 min advanced

언제 쓸까: You want the sheet to recalculate when source tabs update.

흐름
  1. Create the shape
    Create a sheet 'Q1 Report' with tabs [summary, by_region, by_product].✓ 복사됨
    → Sheet + tabs created
  2. Inject formulas referencing source
    In summary!B2, write =SUMIFS('source'!C:C, 'source'!A:A, ">=2026-01-01"). Use batch_update with formula values.✓ 복사됨
    → Live-computing cells

결과: A self-updating report — change source data, numbers change.

Import a CSV and enrich each row with AI-generated columns

👤 Marketers, sales ops ⏱ ~30 min intermediate

언제 쓸까: You have a list of URLs/companies and want AI-generated descriptions or classifications per row.

흐름
  1. Import CSV
    Create a spreadsheet from this CSV: [paste]. Name it 'Leads Enriched'.✓ 복사됨
    → Sheet with N rows
  2. Add and fill derived columns
    Add columns 'industry' and 'one_line_pitch'. For each row, derive them from the url/company and write back via batch_update_cells.✓ 복사됨
    → Two new populated columns

결과: Enriched list ready for outreach.

함께 쓰기: firecrawl

조합

다른 MCP와 조합해 10배 효율

google-sheets + sentry

Daily crash-free % logged to a KPI sheet

Every day, pull crash-free session % from Sentry and append a row to my 'Daily KPIs' sheet.✓ 복사됨
google-sheets + firecrawl

Scrape competitor pages weekly, write pricing into a sheet

Run firecrawl_extract on these 5 competitor pricing pages and write each plan as a row in 'Competitor Pricing'.✓ 복사됨
google-sheets + postgres

Export a daily DB query to Sheets for non-tech teammates

SELECT * FROM signups WHERE day = CURRENT_DATE; write to tab 'Signups' in my ops sheet.✓ 복사됨

도구

이 MCP가 노출하는 것

도구입력언제 호출비용
list_spreadsheets folder_id? Discover sheets in a folder 1 Drive API call
create_spreadsheet title: str, sheets?: str[] Fresh document 1 API call
get_sheet_data spreadsheetId, sheet, range? Read a range 1 API call
update_cells spreadsheetId, range, values Small writes 1 API call
batch_update_cells spreadsheetId, updates Any write >10 cells — avoids rate limits 1 API call
add_rows spreadsheetId, sheet, rows Append-only like logging 1 API call
add_chart spreadsheetId, sheet, chart_spec Visualize a range 1 API call
share_spreadsheet spreadsheetId, email, role Grant collab access 1 Drive call
search_spreadsheets query: str Find a value across many files N API calls

비용 및 제한

운영 비용

API 쿼터
Sheets API: 300 read + 300 write req/min/project, 60/user. Drive API: 1k req/100s/user
호출당 토큰
100–5000 depending on range size
금액
Free within Google's default quotas
Batch writes aggressively — batch_update_cells is one API call no matter how many cells

보안

권한, 시크릿, 파급범위

최소 스코프: https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive.file
자격 증명 저장: Service account JSON at SERVICE_ACCOUNT_PATH, or OAuth tokens at TOKEN_PATH
데이터 외부 송신: sheets.googleapis.com, drive.googleapis.com
절대 부여 금지: https://www.googleapis.com/auth/drive (full)

문제 해결

자주 발생하는 오류와 해결

403 The caller does not have permission

Share the sheet with the service account's email (client_email in the JSON)

확인: Open sheet → Share → confirm SA is listed
429 Quota exceeded

Use batch_update instead of many single updates; Sheets API limit is per-minute

Invalid range A1 notation

Range needs the sheet name: 'Sheet1!A1:C10', not 'A1:C10'

gcloud auth works but mcp doesn't

Set SERVICE_ACCOUNT_PATH explicitly to skip ambiguity

확인: echo $SERVICE_ACCOUNT_PATH

대안

mcp-google-sheets 다른 것과 비교

대안언제 쓰나단점/장점
Zapier MCPYou already pay for Zapier and want non-code routingPer-task pricing; less direct control
Notion MCP (databases)You prefer Notion's database UX and don't need formulasNo formula engine

더 보기

리소스

📖 GitHub에서 공식 README 읽기

🐙 열린 이슈 보기

🔍 400+ MCP 서버 및 Skills 전체 보기