Token导航 LogoToken导航TokenDH.com
MCP Gsheets logo
运维云端未说明官方级别未说明来源级核验

MCP Gsheets

MCP Server

一个用于Google Sheets API集成的MCP服务器,支持读取、写入和管理Google Sheets文档,适用于需要与Google Sheets进行交互的开发场景。

工具数

27

提示词数

0

GitHub Stars

65

资源数

0
TypeScriptClaude数据操作Claude DesktopClaudeCursorCline

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

freema

提供方

freema

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

MCP谷歌表格服务器

](https://www.npmjs.com/package/mcp-gsheets) CI Coverage License: MIT TypeScript

code style: prettier

用于Google Sheets API集成的模型上下文协议(MCP)服务器。允许直接从MCP客户端(例如,Claude Code、Claude Desktop、Cursor等)读取、写入和管理Google表格文档。

主要特点

  • 完成Google表格集成:读取、编写和管理电子表格
  • 高级操作:批处理操作、格式化、图表和条件格式化
  • 灵活的身份验证:支持基于文件和JSON字符串凭据
  • 生产就绪:使用TypeScript构建,全面的错误处理和完整的测试覆盖率

需求

  • v20或更高
  • 谷歌云项目 启用了图纸API
  • 带有JSON密钥文件的服务帐户

入门指南

快速安装(推荐)

将以下配置添加到MCP客户端:

{
  "mcpServers": {
    "mcp-gsheets": {
      "command": "npx",
      "args": ["-y", "mcp-gsheets@latest"],
      "env": {
        "GOOGLE_PROJECT_ID": "your-project-id",
        "GOOGLE_APPLICATION_CREDENTIALS": "/absolute/path/to/service-account-key.json"
      }
    }
  }
}
\[!注意\] 使用 mcp-gsheets@latest 确保您的MCP客户端始终使用最新版本的MCP Google Sheets服务器。

MCP客户端配置

Claude Code Use the Claude Code CLI to add the MCP Google Sheets server (guide):

claude mcp add mcp-gsheets npx mcp-gsheets@latest

添加后,编辑您的Claude Code配置以添加所需的环境变量:

{
  "mcpServers": {
    "mcp-gsheets": {
      "command": "npx",
      "args": ["mcp-gsheets@latest"],
      "env": {
        "GOOGLE_PROJECT_ID": "your-project-id",
        "GOOGLE_APPLICATION_CREDENTIALS": "/absolute/path/to/service-account-key.json"
      }
    }
  }
}

Claude Desktop

添加到您的Claude Desktop配置中:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 窗户: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/claude/claude_desktop_config.json
{
  "mcpServers": {
    "mcp-gsheets": {
      "command": "npx",
      "args": ["-y", "mcp-gsheets@latest"],
      "env": {
        "GOOGLE_PROJECT_ID": "your-project-id",
        "GOOGLE_APPLICATION_CREDENTIALS": "/absolute/path/to/service-account-key.json"
      }
    }
  }
}

Cursor

首选 Cursor SettingsMCPNew MCP Server.使用上面提供的配置。

Cline

跟随https://docs.cline.bot/mcp/configuring-mcp-servers并使用上面提供的配置。

Other MCP Clients

对于其他MCP客户端,请使用上面显示的标准配置格式。确保 command 设置为 npx 并包括用于Google Cloud身份验证的环境变量。

谷歌云设置

  1. 首选 谷歌云控制台
  2. 创建新项目或选择现有项目
  3. 启用Google Sheets API:

- 导航到“API和服务”→ “图书馆” - 搜索“Google Sheets API”并单击“启用”

  1. 创建服务帐户:

- 转到“API和服务”→ “凭据” - 点击“创建凭据”→ “服务帐户” - 在服务帐户列表中,单击 Actions 列→ Manage keysAdd keyCreate new key → 选择JSON格式 - 下载JSON密钥文件

  1. 分享您的电子表格:

- 打开你的谷歌表格 - 单击共享并添加服务帐户电子邮件(来自JSON文件) - 授予“编辑”权限

替代身份验证方法

选项1:JSON字符串身份验证

您可以直接以JSON字符串的形式提供服务帐户凭据,而不是使用凭据的文件路径。这对于容器化环境、CI/CD管道或希望避免管理凭据文件时非常有用。

{
  "mcpServers": {
    "mcp-gsheets": {
      "command": "npx",
      "args": ["-y", "mcp-gsheets@latest"],
      "env": {
        "GOOGLE_PROJECT_ID": "your-project-id",
        "GOOGLE_SERVICE_ACCOUNT_KEY": "{\"type\":\"service_account\",\"project_id\":\"your-project\",\"private_key_id\":\"...\",\"private_key\":\"-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----\\n\",\"client_email\":\"...@....iam.gserviceaccount.com\",\"client_id\":\"...\",\"auth_uri\":\"https://accounts.google.com/o/oauth2/auth\",\"token_uri\":\"https://oauth2.googleapis.com/token\",\"auth_provider_x509_cert_url\":\"https://www.googleapis.com/oauth2/v1/certs\",\"client_x509_cert_url\":\"...\"}"
      }
    }
  }
}

备注:使用时 GOOGLE_SERVICE_ACCOUNT_KEY:

  • 整个JSON必须在一行上
  • 所有引号必须用反斜杠转义
  • 私钥中的新行必须表示为 \\n
  • 如果JSON包含 project_id,您可以省略 GOOGLE_PROJECT_ID

选项2:私钥身份验证(简化)

对于最用户友好的方法,您可以直接提供私钥和电子邮件。这是最简单的方法,只需要您的服务帐户JSON中的两个字段:

{
  "mcpServers": {
    "mcp-gsheets": {
      "command": "npx",
      "args": ["-y", "mcp-gsheets@latest"],
      "env": {
        "GOOGLE_PRIVATE_KEY": "-----BEGIN PRIVATE KEY-----\\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCgR6bvMNOUHZ29\\n+YgbVHAXsT/s+L/jnXTCB193zikCzspSBSfxLu8VRDjkNq9WUoDxizTATzMFNvNf\\n...\\n-----END PRIVATE KEY-----\\n",
        "GOOGLE_CLIENT_EMAIL": "spreadsheet@your-project.iam.gserviceaccount.com"
      }
    }
  }
}

备注:使用时 GOOGLE_PRIVATE_KEY:

  • 私钥中的新行应表示为 \\n
  • 私钥必须包含 -----BEGIN PRIVATE KEY----------END PRIVATE KEY----- 标记物
  • 客户端电子邮件应该是JSON文件中的服务帐户电子邮件
  • GOOGLE_PROJECT_ID 使用此方法时是可选的

地方发展设置

如果你想开发或参与这个项目,你可以克隆并在本地构建它:

# Clone the repository
git clone https://github.com/freema/mcp-gsheets.git
cd mcp-gsheets

# Install dependencies
npm install

# Build the project
npm run build

交互式设置脚本

运行交互式安装脚本以配置本地MCP客户端:

npm run setup

这将:

  • 指导您完成配置
  • 自动检测您的Node.js安装(包括nvm)
  • 查找您的Claude桌面配置
  • 创建正确的JSON配置
  • 可选择创建.env文件进行开发

手动本地配置

如果您更喜欢使用本地构建进行手动配置,请在MCP客户端配置中添加:

{
  "mcpServers": {
    "mcp-gsheets": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-gsheets/dist/index.js"],
      "env": {
        "GOOGLE_PROJECT_ID": "your-project-id",
        "GOOGLE_APPLICATION_CREDENTIALS": "/absolute/path/to/service-account-key.json"
      }
    }
  }
}

📦 构建与开发

开发命令

# Development mode with hot reload
npm run dev

# Build for production
npm run build

# Type checking
npm run typecheck

# Clean build artifacts
npm run clean

# Run MCP inspector for debugging
npm run inspector

# Run MCP inspector in development mode
npm run inspector:dev

任务运行器(备选)

如果你有 任务 安装:

# Install dependencies
task install

# Build the project
task build

# Run in development mode
task dev

# Run linter
task lint

# Format code
task fmt

# Run all checks
task check

开发设置

  1. 创建 .env 测试文件:
cp .env.example .env
# Edit .env with your credentials:
# GOOGLE_PROJECT_ID=your-project-id
# GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
# TEST_SPREADSHEET_ID=your-test-spreadsheet-id
  1. 在开发模式下运行:
npm run dev  # Watch mode with auto-reload

📋 可用工具

读取数据

工具说明关键参数
sheets_get_values从单个范围读取单元格值spreadsheetId, range (A1符号), valueRenderOption
sheets_batch_get_values在一个请求中从多个范围读取单元格值spreadsheetId, ranges (A1范围数组)
sheets_get_metadata获取电子表格元数据:标题、区域设置、带ID的工作表列表、行/列计数spreadsheetId
sheets_check_access验证服务帐户是否可以访问电子表格spreadsheetId

写入数据

工具说明关键参数
sheets_update_values将值写入单个范围(覆盖现有内容)spreadsheetId, range, values (2D阵列), valueInputOption
sheets_batch_update_values在一个请求中将值写入多个范围spreadsheetId, data (数组 {range, values}), valueInputOption
sheets_append_values在现有表的最后一行之后追加行。 默认 insertDataOptionOVERWRITE --set INSERT_ROWS 将现有行向下推spreadsheetId, range, values, valueInputOption, insertDataOption
sheets_clear_values清除范围内的所有值(保留格式)spreadsheetId, range
sheets_insert_rows在特定位置插入空白或预填行spreadsheetId, range (锚), rows, position (之前/之后), values
sheets_delete_columns使用完整的A1列范围删除一个或多个列spreadsheetId, range (例如。 Sheet1!B:D)
sheets_delete_rows使用完整的A1行范围删除一行或多行spreadsheetId, range (例如。 Sheet1!2:4)
sheets_insert_link在单元格中插入超链接公式spreadsheetId, range, url, label
sheets_insert_date将格式正确的日期/日期时间值插入单元格spreadsheetId, range, date, format

表单管理

工具说明关键参数
sheets_create_spreadsheet创建新的Google表格文件title, sheets (可选初始表单配置)
sheets_insert_sheet将新的工作表选项卡添加到现有电子表格中spreadsheetId, title, index
sheets_delete_sheet按数字工作表ID删除工作表选项卡spreadsheetId, sheetId
sheets_duplicate_sheet复制同一电子表格中的工作表spreadsheetId, sheetId, newSheetName, insertSheetIndex
sheets_copy_to将工作表复制到其他电子表格spreadsheetId, sheetId, destinationSpreadsheetId
sheets_update_sheet_properties重命名图纸、更改选项卡颜色、切换网格线等。spreadsheetId, sheetId, properties
sheets_batch_delete_sheets在一个请求中删除多个工作表选项卡spreadsheetId, sheetIds (数组)

单元格格式

工具说明关键参数
sheets_format_cells将背景颜色、字体样式、对齐方式和数字格式应用于某个范围spreadsheetId, range, format
sheets_batch_format_cells在一个请求中将不同格式应用于多个范围spreadsheetId, requests (数组 {range, format})
sheets_update_borders设置或删除范围上的边框(样式、宽度、每边颜色)spreadsheetId, range, borders
sheets_merge_cells合并一系列单元格spreadsheetId, range, mergeType (合并所有/合并列/合并行)
sheets_unmerge_cells取消合并某个区域中以前合并的单元格spreadsheetId, range
sheets_add_conditional_formatting向范围添加条件格式规则(渐变或布尔值)spreadsheetId, range, rule

图表

工具说明关键参数
sheets_create_chart在工作表上创建条形图、折线图、饼图、柱状图或其他图表spreadsheetId, sheetId, chartSpec, position
sheets_update_chart修改现有图表的规格或位置spreadsheetId, chartId, chartSpec, position
sheets_delete_chart从电子表格中删除图表spreadsheetId, chartId

读取/快照工具

工具说明关键参数
sheets_get_merged_cells返回工作表的所有合并单元格区域,使用A1表示法和原始GridRange坐标spreadsheetId, sheetName
sheets_get_sheet_dimensions返回每列和每行的列宽、行高、冻结列/行计数和隐藏标志spreadsheetId, sheetName
sheets_get_sheet_formatting读取范围的原始单元格格式(背景颜色、字体、边框、对齐方式、数字格式),而不返回单元格值spreadsheetId, range
sheets_get_conditional_formatting阅读工作表上定义的所有条件格式规则和带状(交替颜色)范围spreadsheetId, sheetName
sheets_get_sheet_structure仅轻量级结构元数据——没有每个单元格的数据。返回A1表示法中的维度、冻结行/列、选项卡颜色、列宽、行高、隐藏列/行以及所有合并。单个快速API调用spreadsheetId, sheetName
sheets_get_formatting_compact读取范围的单元格格式,并将其作为紧凑的A1Range返回→格式对(行程编码)。相同的相邻单元格被折叠成矩形范围,与每个单元格的数据相比,输出减少了90%+spreadsheetId, sheetName, range, useEffectiveFormat, fields
sheets_get_full_sheet_snapshot主一次性工具-在单个API调用中返回所有结构和格式元数据(合并、维度、条件格式,以及可选的单元格格式)。支持 fields 过滤和 compactMode 限制响应大小spreadsheetId, sheetName, includeFormattingRange, fields, compactMode
sheets_get_basic_filter阅读工作表的基本过滤器(自动过滤器)配置,包括过滤范围、排序规范和每列过滤条件(隐藏值、条件、滤色器)spreadsheetId, sheetName
sheets_get_data_validation从工作表或范围中读取数据验证规则(复选框、下拉菜单、自定义公式)。返回按单元格范围分组的唯一规则的紧凑游程编码列表spreadsheetId, sheetName, range

🔧 代码质量

代码检查

# Run ESLint
npm run lint

# Fix auto-fixable issues
npm run lint:fix

格式化

# Check formatting with Prettier
npm run format:check

# Format code
npm run format

类型检查

# Run TypeScript type checking
npm run typecheck

❗ 故障排除

常见问题

“身份验证失败”

  • 如果使用基于文件的身份验证:验证JSON密钥路径是否绝对正确
  • 如果使用JSON字符串认证:确保JSON正确转义且有效
  • 如果使用私钥auth:检查私钥是否包含BEGIN/END标记,换行符是否转义为 \\n
  • 验证GOOGLE_CLIENT_EMAIL是有效的服务帐户电子邮件
  • 检查GOOGLE_PROJECT_ID是否与您的项目匹配(或是否包含在JSON中以进行完整的JSON身份验证)
  • 确保启用图纸API

“权限被拒绝”

  • 与服务帐户电子邮件共享电子表格
  • 服务帐户需要“编辑”角色
  • 在JSON文件中检查电子邮件(client_email字段)

“找不到电子表格”

  • 从URL验证电子表格ID
  • 格式: https://docs.google.com/spreadsheets/d/[SPREADSHEET_ID]/edit

MCP连接问题

  • 确保您使用的是内置版本(dist/index.js)
  • 检查Claude Desktop配置中的Node.js路径是否正确
  • 在Claude Desktop日志中查找错误
  • 使用 npm run inspector 调试

🔍 查找ID

电子表格ID

从URL:

https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit
                                        ↑ This is the spreadsheet ID

工作表ID

使用 sheets_get_metadata 列出所有工作表及其ID。

📝 提示

  1. 始终使用数据副本进行测试
  2. 使用批处理操作以获得更好的性能
  3. 设置适当的权限(只读与编辑)
  4. 检查大型操作的速率限制
  5. 使用 sheets_check_access 在操作之前验证权限

📘 工具详情

sheets _ sheet \_结构

返回不含任何单元格数据的图纸的轻量级结构/维度元数据。比前者更快、更便宜 sheets_get_full_sheet_snapshot 当您只需要布局信息时。

参数:

  • spreadsheetId (必填):电子表格的ID
  • sheetName (必填):工作表名称(选项卡)

退货: sheetName, sheetId, sheetIndex, tabColor, tabColorStyle, dimensions (rowCount, columnCount), frozen (rowCount, columnCount), columnWidths (像素大小阵列), rowHeights (像素大小阵列), hiddenColumns (基于0的索引), hiddenRows (基于0的索引), mergeCount, merges (A1符号数组)

______________________________________________________________________

工作表_格式化_协议

读取范围的单元格格式,并将其作为紧凑的A1Range返回→ 格式对。具有相同格式的相邻单元格被折叠成矩形范围(行程编码),与每个单元格的数据相比,输出减少了90%+。

参数:

  • spreadsheetId (必填):电子表格的ID
  • sheetName (必填):工作表名称(选项卡)
  • range (必填):不带工作表前缀的范围,例如。 "A1:Z85"
  • useEffectiveFormat (可选): false (默认)=userEnteredFormat(仅显式覆盖,输出较小); true =有效格式(所有继承的默认值)
  • fields (可选):要包含的格式字段名数组,例如。 ["backgroundColor", "textFormat", "borders"]

退货: { range, formatType, rangeCount, data: { "A1:C3": { backgroundColor: {...} }, ... } }

支持的字段: backgroundColor, backgroundColorStyle, textFormat, horizontalAlignment, verticalAlignment, wrapStrategy, textRotation, numberFormat, padding, borders

______________________________________________________________________

图纸_get_full_sheet_snapshot

在一个API调用中返回所有结构和格式元数据的主一次工具。

参数:

  • spreadsheetId (必填):电子表格的ID
  • sheetName (必填):工作表名称(选项卡)
  • includeFormattingRange (可选):如果提供(例如。 "A1:Z100"),响应中包含每个单元格的格式
  • useEffectiveFormat (可选):在包含单元格格式时,使用effectiveFormat而不是userEnteredFormat(默认值: false)
  • fields (可选):要返回的格式字段名数组,例如。 ["backgroundColor", "textFormat"] -减少API传输大小和响应大小
  • compactMode (可选):当 true,相同的相邻单元格被折叠成矩形范围(RLE)。将典型的85×28纸张从约60000行减少到约500行(默认值: false)

______________________________________________________________________

sheets_insert_rows

在带有可选数据的电子表格中的特定位置插入新行。

参数:

  • spreadsheetId (必填):电子表格的ID
  • range (必填):插入行的A1符号锚点(例如“Sheet1!A5”)
  • rows (可选):要插入的行数(默认值:1)
  • position (可选):锚行的“BEFORE”或“AFTER”(默认值:“BEFORCE”)
  • inheritFromBefore (可选):是否继承前一行的格式(默认值:false)
  • values (可选):填充新插入行的二维值数组
  • valueInputOption (可选):“RAW”或“USER_ENTERED”(默认值:“USER_ENTER”)

示例:

// Insert 1 empty row before row 5
{
  "spreadsheetId": "your-spreadsheet-id",
  "range": "Sheet1!A5"
}

// Insert 3 rows after row 10 with data
{
  "spreadsheetId": "your-spreadsheet-id",
  "range": "Sheet1!A10",
  "rows": 3,
  "position": "AFTER",
  "values": [
    ["John", "Doe", "john@example.com"],
    ["Jane", "Smith", "jane@example.com"],
    ["Bob", "Johnson", "bob@example.com"]
  ]
}

sheets_delete_columns

使用完整的A1列范围从工作表中删除一列或多列。

参数:

  • spreadsheetId (必填):电子表格的ID
  • range (必填):要删除的整个A1列范围(例如,“Sheet1!B:D”或“Sheet1?C:C”)

示例:

// Delete columns B through D from Sheet1
{
  "spreadsheetId": "your-spreadsheet-id",
  "range": "Sheet1!B:D"
}

// Delete a single column from the first sheet
{
  "spreadsheetId": "your-spreadsheet-id",
  "range": "C:C"
}

sheets_delete_rows

使用完整的A1行范围从工作表中删除一行或多行。

参数:

  • spreadsheetId (必填):电子表格的ID
  • range (必填):要删除的完整A1行范围(例如,“Sheet1!2:4”或“Sheet1?3:3”)

示例:

// Delete rows 2 through 4 from Sheet1
{
  "spreadsheetId": "your-spreadsheet-id",
  "range": "Sheet1!2:4"
}

// Delete a single row from the first sheet
{
  "spreadsheetId": "your-spreadsheet-id",
  "range": "3:3"
}

📋 更新日志

更改日志.md 查看每个版本的更改列表。

🤝 贡献

  1. 分叉存储库
  2. 创建功能分支(git checkout -b feature/amazing-feature)
  3. 运行测试和梳理(npm run check)
  4. 提交您的更改(git commit -m 'Add some amazing feature')
  5. 推到分支(git push origin feature/amazing-feature)
  6. 打开拉取请求

👤 作者

托马斯 格拉斯尔 - 托马斯格拉斯

📄 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

目录标签

目录标签

TypeScriptClaude数据操作GoogleSheets集成本地部署表格管理MCP服务器自动化工具

支持客户端

Claude DesktopClaudeCursorCline

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

token

部署方式(deploymentType,部署类型)

remote-capable

工具数量(toolCount,工具数)

27

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明tokenremote-capable

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP