Google Sheets MCP 服务器

一个提供完整Google Sheets功能的模型上下文协议(MCP)服务器,支持通过Claude、Cursor或任何MCP兼容客户端直接读取、写入、格式化单元格、创建图表、使用公式和管理电子表格。

  • by dudegladiator
  • Python
  • 本地部署
  • 19 星标
  • 更新于
在 GitHub 查看 dudegladiator/spreadsheet-mcp

使用说明

Google表格MCP服务器

提供完整Google表格功能的模型上下文协议(MCP)服务器。直接从Claude、Cursor或任何兼容MCP的客户端读取、写入、格式化单元格、创建图表、使用公式和管理电子表格。

我为什么建造这个

我为我的大学作业创建了这个MCP服务器,在那里我经常使用谷歌表格中的数据——主要是财务表格。创建图表、编写公式、格式化表格和组织数据等任务重复且耗时。有了这个工具,我可以自动化所有这些,并专注于真正重要的事情——逻辑思维和分析——而不是一遍又一遍地做同样的手工工作。 :)

特性

类别 功能
细胞操作 读、写、批处理操作、追加行、清除单元格
公式 全力支持(=SUM(), =VLOOKUP(), =IF()等等)
表单管理 创建、删除、重命名、复制工作表
格式化 粗体、斜体、颜色、对齐方式、列宽、合并单元格
图表 条形图、折线图、饼图、柱状图、面积图、散点图
数据操作 排序、查找/替换、获取最后一行
共享 与用户分享或公开

快速开始

1.安装

cd /path/to/spreadsheet-mcp
uv sync

2.谷歌云设置(免费,一次性)

  1. 创建项目首选 谷歌云控制台 → 新项目
  2. 启用API:
  3. 创建服务帐户:
    • 转到API和服务→ 凭证→ 创建凭据→ 服务账户
    • 下载JSON密钥→ 另存为 credentials/service-account.json
  4. 共享电子表格:使用服务帐户电子邮件(JSON格式)共享您的工作表

3.跑步

uv run spreadsheet-mcp

MCP客户端配置

克劳德桌面版

添加到您的Claude Desktop配置文件中:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "google-sheets": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/spreadsheet-mcp",
        "run",
        "spreadsheet-mcp"
      ]
    }
  }
}

克劳德代码(CLI)

添加到您的项目 .mcp.json 文件:

{
  "mcpServers": {
    "google-sheets": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/spreadsheet-mcp",
        "run",
        "spreadsheet-mcp"
      ]
    }
  }
}

光标

添加到Cursor的MCP设置(设置→ MCP → 添加服务器):

{
  "mcpServers": {
    "google-sheets": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/spreadsheet-mcp",
        "run",
        "spreadsheet-mcp"
      ]
    }
  }
}

或添加到 ~/.cursor/mcp.json:

{
  "mcpServers": {
    "google-sheets": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/spreadsheet-mcp",
        "run",
        "spreadsheet-mcp"
      ]
    }
  }
}

Gemini CLI

对于支持MCP的Gemini CLI,请在MCP配置中添加:

{
  "mcpServers": {
    "google-sheets": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/spreadsheet-mcp",
        "run",
        "spreadsheet-mcp"
      ]
    }
  }
}

与npx一起使用(替代)

如果你更喜欢npx而不是uv:

{
  "mcpServers": {
    "google-sheets": {
      "command": "npx",
      "args": [
        "-y",
        "uv",
        "--directory",
        "/path/to/spreadsheet-mcp",
        "run",
        "spreadsheet-mcp"
      ]
    }
  }
}

注: 替换 /path/to/spreadsheet-mcp 使用克隆此存储库的实际路径。

可用工具(共27个)

电子表格和表格管理

工具 说明 示例
get_spreadsheet_info 获取元数据和工作表列表 “显示电子表格abc123的信息”
create_spreadsheet 创建新的电子表格 “创建一个名为‘2024年预算’的电子表格”
list_sheets 列出所有工作表/选项卡 “此电子表格中有哪些工作表?”
create_sheet 添加新工作表 “添加名为“摘要”的工作表”
delete_sheet 删除工作表 “删除ID为12345的工作表”
rename_sheet 重命名工作表 “将工作表0重命名为‘数据’”
duplicate_sheet 复制工作表 “复制主工作表”

细胞操作

工具 说明 示例
read_cells 从范围中读取值 “从表1中读取单元格A1至D10”
write_cells 写入值(支持公式) “将标题名称、年龄、分数写入A1”
batch_read 一次读取多个范围 “读取A1:A10和C1:C10”
batch_write 写入多个范围 “将数据写入多个位置”
append_rows 在数据末尾添加行 “附加这些新记录”
clear_cells 清除范围 “清除单元格B2:D10”
get_last_row 查找最后一行数据 “A列的最后一行是什么?”

行/列操作

工具 说明 示例
insert_rows 插入空行 “在第10行插入5行”
insert_columns 插入空列 “在C列插入2列”
delete_rows 删除行 “删除第5-10行”
delete_columns 删除列 “删除列B”

格式化

工具 说明 示例
format_cells 应用格式 “将标题行用蓝色背景加粗”
set_column_width 调整列宽 “将A列宽度设置为200像素”
merge_cells 合并单元格范围 “合并单元格A1:C1作为标题”

图表

工具 说明 示例
create_chart 创建嵌入式图表 “根据销售数据创建条形图”
list_charts 列出所有图表 “此电子表格中存在哪些图表?”
delete_chart 删除图表 “删除图表123456”

数据操作

工具 说明 示例
sort_range 按列排序 “按B列升序排序”
find_replace 查找并替换文本 “将所有位置的'N/A'替换为'0'”

共享

工具 说明 示例
share_spreadsheet 共享或公开 “公开此电子表格”

用法示例

示例1:创建销售报告

User: Create a sales report in spreadsheet abc123

Claude will:
1. get_spreadsheet_info("abc123") - Check existing sheets
2. create_sheet("abc123", "Sales Report") - Create new sheet
3. write_cells("abc123", "Sales Report!A1", '[["Product", "Q1", "Q2", "Q3", "Q4", "Total"]]')
4. write_cells("abc123", "Sales Report!A2", '[["Widget", 100, 150, 200, 180, "=SUM(B2:E2)"]]')
5. format_cells(..., bold=True, background_color="#4285F4") - Format header
6. create_chart(..., "COLUMN", "Quarterly Sales") - Add chart

示例2:分析现有数据

User: Summarize the data in Sheet1

Claude will:
1. read_cells("abc123", "Sheet1!A1:Z1") - Read headers
2. get_last_row("abc123", "Sheet1", "A") - Find data extent
3. read_cells("abc123", "Sheet1!A1:D100") - Read all data
4. Provide summary and insights

示例3:设置表格格式

User: Make the spreadsheet look professional

Claude will:
1. format_cells(..., bold=True, background_color="#1a73e8", font_color="#FFFFFF") - Header
2. set_column_width(..., 150) - Adjust widths
3. format_cells(..., alignment="CENTER") - Center data

A1符号参考

符号 描述
Sheet1!A1:D10 表1中的单元格A1至D10
Sheet1!A:A 表1中的整个A列
Sheet1!1:5 第1页第1-5行
A1:B10 第一张可见表中的范围
'My Sheet'!A1 带空格的图纸名称(使用引号)

索引参考

  • 行:格式从0开始(第1行=索引0)
  • 列:从0开始(A=0,B=1,C=2,D=3…)
  • sheet_id:来自的数字ID list_sheets 或 get_spreadsheet_info

常用公式

=SUM(A1:A10)           Sum values
=AVERAGE(B:B)          Average entire column
=COUNT(A:A)            Count numbers
=COUNTA(A:A)           Count non-empty cells
=MAX(A1:A100)          Maximum value
=MIN(A1:A100)          Minimum value
=VLOOKUP(A1,B:C,2,0)   Lookup value
=IF(A1>100,"High","Low") Conditional
=CONCATENATE(A1," ",B1)  Join text
=TODAY()               Current date
=NOW()                 Current date/time

故障排除

错误 解决方案
“找不到服务帐户凭据” 检查 credentials/service-account.json 存在
“403禁止” 与服务帐户电子邮件共享电子表格
“API未启用” 在Google云控制台中启用工作表和驱动器API
“超出配额” 请稍等,您已达到速率限制

文件结构

spreadsheet-mcp/
├── pyproject.toml
├── README.md
├── credentials/
│   └── service-account.json  (your key, gitignored)
└── src/spreadsheet_mcp/
    ├── __init__.py
    ├── auth.py              # Google authentication
    ├── sheets_client.py     # API wrapper (1000+ lines)
    └── server.py            # MCP server (27 tools)

贡献

欢迎投稿!请随时提交拉取请求。

作者

许可证

麻省理工学院