一个用于集成 Google Sheets API 的 Model Context Protocol (MCP) 服务器。允许从您的 MCP 客户端(例如 Claude Code、Claude Desktop、Cursor 等)直接读取、写入和管理 Google Sheets 文档。
在您的 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"
}
}
}
}
[!NOTE] 使用
mcp-gsheets@latest可确保您的 MCP 客户端始终使用最新版本的 MCP Google Sheets 服务器。
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"
}
}
}
}
</details>
<details>
<summary>Claude Desktop</summary>
在您的 Claude Desktop 配置中添加:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.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"
}
}
}
}
</details>
<details>
<summary>Cursor</summary>
转到 Cursor 设置 → MCP → 新建 MCP 服务器。使用上面提供的配置。
遵循 https://docs.cline.bot/mcp/configuring-mcp-servers 并使用上面提供的配置。
</details> <details> <summary>其他 MCP 客户端</summary>对于其他 MCP 客户端,请使用上述标准配置格式。确保 command 设置为 npx 并包括 Google Cloud 认证所需的环境变量。
而不是使用凭证文件路径,您可以直接提供服务帐户凭证作为 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 时:
\\nproject_id,可以省略 GOOGLE_PROJECT_ID为了最用户友好的方法,您可以直接提供私钥和电子邮件。这是最简单的方法,只需要服务帐户 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----- 标记GOOGLE_PROJECT_ID 是可选的如果您想开发或为此项目做出贡献,可以克隆并在本地构建它:
# 克隆仓库
git clone https://github.com/freema/mcp-gsheets.git
cd mcp-gsheets
# 安装依赖
npm install
# 构建项目
npm run build
运行交互式设置脚本来配置您的本地 MCP 客户端:
npm run setup
这将:
如果您更喜欢手动配置与本地构建,可以在您的 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"
}
}
}
}
# 开发模式带热重载
npm run dev
# 生产构建
npm run build
# 类型检查
npm run typecheck
# 清理构建工件
npm run clean
# 运行 MCP 检查器进行调试
npm run inspector
# 在开发模式下运行 MCP 检查器
npm run inspector:dev
如果您已安装 Task:
# 安装依赖
task install
# 构建项目
task build
# 在开发模式下运行
task dev
# 运行 linter
task lint
# 格式化代码
task fmt
# 运行所有检查
task check
.env 文件:cp .env.example .env
# 编辑 .env 以包含您的凭证:
# GOOGLE_PROJECT_ID=your-project-id
# GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
# TEST_SPREADSHEET_ID=your-test-spreadsheet-id
npm run dev # 监控模式自动重新加载
sheets_get_values - 从范围读取sheets_batch_get_values - 从多个范围读取sheets_get_metadata - 获取电子表格信息sheets_check_access - 检查访问权限sheets_update_values - 写入范围sheets_batch_update_values - 写入多个范围sheets_append_values - 在表中追加行(注意:默认 insertDataOption 是 OVERWRITE。要插入新行,请设置 insertDataOption: 'INSERT_ROWS')sheets_clear_values - 清除单元格内容sheets_insert_rows - 在特定位置插入新行,可选数据sheets_insert_sheet - 添加新工作表sheets_delete_sheet - 删除工作表sheets_duplicate_sheet - 复制工作表sheets_copy_to - 复制到另一个电子表格sheets_update_sheet_properties - 更新工作表设置sheets_batch_delete_sheets - 一次删除多个工作表sheets_batch_format_cells - 一次格式化多个单元格范围sheets_format_cells - 格式化单元格(颜色、字体、对齐方式、数字格式)sheets_update_borders - 添加或修改单元格边框sheets_merge_cells - 合并单元格sheets_unmerge_cells - 分离先前合并的单元格sheets_add_conditional_formatting - 添加条件格式规则sheets_create_chart - 创建各种类型的图表sheets_update_chart - 修改现有图表sheets_delete_chart - 删除图表# 运行 ESLint
npm run lint
# 修复自动修复的问题
npm run lint:fix
# 使用 Prettier 检查格式
npm run format:check
# 格式化代码
npm run format
# 运行 TypeScript 类型检查
npm run typecheck
“身份验证失败”
\\n“权限被拒绝”
“电子表格未找到”
https://docs.google.com/spreadsheets/d/[SPREADSHEET_ID]/editMCP 连接问题
dist/index.js)npm run inspector 进行调试从 URL:
https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit
↑ 这是电子表格 ID
使用 sheets_get_metadata 列出所有工作表及其 ID。
sheets_check_access 在操作之前验证权限在电子表格中的特定位置插入新行,可选数据。
参数:
spreadsheetId(必需):电子表格的 IDrange(必需):插入行的 A1 标记锚点(例如,“Sheet1!A5”)rows(可选):要插入的行数(默认:1)position(可选):在锚定行的“BEFORE”或“AFTER”(默认:“BEFORE”)inheritFromBefore(可选):是否继承前一行的格式(默认:false)values(可选):填充新插入行的二维值数组valueInputOption(可选):'RAW' 或 'USER_ENTERED'(默认:'USER_ENTERED')示例:
// 在第 5 行前插入 1 个空行
{
"spreadsheetId": "your-spreadsheet-id",
"range": "Sheet1!A5"
}
// 在第 10 行后插入 3 行并带有数据
{
"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"]
]
}
查看 CHANGELOG.md 了解每个版本的更改列表。
git checkout -b feature/amazing-feature)npm run check)git commit -m '添加一些精彩的功能')git push origin feature/amazing-feature)本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。