使用说明
Google表格MCP服务器
提供完整Google表格功能的模型上下文协议(MCP)服务器。直接从Claude、Cursor或任何兼容MCP的客户端读取、写入、格式化单元格、创建图表、使用公式和管理电子表格。
我为什么建造这个
我为我的大学作业创建了这个MCP服务器,在那里我经常使用谷歌表格中的数据——主要是财务表格。创建图表、编写公式、格式化表格和组织数据等任务重复且耗时。有了这个工具,我可以自动化所有这些,并专注于真正重要的事情——逻辑思维和分析——而不是一遍又一遍地做同样的手工工作。 :)
特性
| 类别 | 功能 |
|---|---|
| 细胞操作 | 读、写、批处理操作、追加行、清除单元格 |
| 公式 | 全力支持(=SUM(), =VLOOKUP(), =IF()等等) |
| 表单管理 | 创建、删除、重命名、复制工作表 |
| 格式化 | 粗体、斜体、颜色、对齐方式、列宽、合并单元格 |
| 图表 | 条形图、折线图、饼图、柱状图、面积图、散点图 |
| 数据操作 | 排序、查找/替换、获取最后一行 |
| 共享 | 与用户分享或公开 |
快速开始
1.安装
cd /path/to/spreadsheet-mcp
uv sync
2.谷歌云设置(免费,一次性)
- 创建项目首选 谷歌云控制台 → 新项目
- 启用API:
- 创建服务帐户:
- 转到API和服务→ 凭证→ 创建凭据→ 服务账户
- 下载JSON密钥→ 另存为
credentials/service-account.json
- 共享电子表格:使用服务帐户电子邮件(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)
贡献
欢迎投稿!请随时提交拉取请求。
作者
许可证
麻省理工学院
