mcpField
M
Mcp Google Sheets

Mcp Google Sheets

本地服务
github.com/xing5文件与存储1.0k24 周前更新

关于 Mcp Google Sheets

mcp-google-sheets 是一个基于 Python 的 MCP 服务,用于连接 Google Drive 与 Google Sheets API,使 AI 助手能够创建和修改电子表格。它适合需要用自然语言操作表格数据的用户。该服务支持服务账户、OAuth 2.0 和环境变量凭据,并可通过参数筛选启用的工具。

主要功能

  1. 01读取、写入与批量更新单元格
  2. 02创建和管理电子表格与工作表
  3. 03查找表格、共享表格与查看公式
  4. 04支持服务账户与 OAuth 2.0 认证
  5. 05通过 ENABLED_TOOLS 筛选工具以减少上下文占用

适用场景

  1. 01让 AI 助手读取表格数据并生成分析结果
  2. 02批量写入或更新多个工作表的数据
  3. 03在指定 Drive 文件夹中查找并共享表格

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"google-sheets": {
"command": "uvx",
"args": [
"mcp-google-sheets@latest"
]
}
}
}
启动命令uvx mcp-google-sheets@latest

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypimcp-google-sheets@latest

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

mcp-google-sheets

为 AI 助手接入 Google Sheets!📊

PyPI - Version PyPI Downloads GitHub License GitHub Actions Workflow Status


🤔 这是什么?

mcp-google-sheets 是一个基于 Python 的 MCP 服务,可作为任意兼容 MCP 的客户端(如 Claude Desktop)与 Google Sheets API 之间的桥梁。它提供一组定义好的工具,让你能够与 Google Spreadsheets 交互,借助 AI 驱动强大的自动化和数据处理工作流。


🚀 快速开始(使用 uvx)

基本上,只需一行命令即可运行服务:uvx mcp-google-sheets@latest。

此命令会自动下载最新代码并运行。我们建议始终使用 @latest,以确保获取包含最新功能和错误修复的最新版本。

有关下文所用 ID 的更多信息,请参阅 ID 参考指南。

  1. ☁️ 前置条件:设置 Google Cloud

    • 你必须先配置 Google Cloud Platform 凭据并启用必要的 API。我们强烈建议使用服务账号。
    • ➡️ 请跳转至下方的Google Cloud Platform 设置详解指南。
  2. 🐍 安装 uv

    • uvx 是快速 Python 包安装器和解析器 uv 的一部分。如果尚未安装,请先安装:
      # macOS / Linux
      curl -LsSf https://astral.sh/uv/install.sh | sh
      # Windows
      powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
      # 或使用 pip:
      # pip install uv
      
      如有需要,请按照安装程序输出中的说明将 uv 添加到 PATH。
  3. 🔑 设置必要的环境变量(建议使用服务账号)

    • 你需要告知服务如何进行身份验证。在终端中设置以下变量:
    • (Linux/macOS)
      # 替换为实际路径,以及 Google 设置步骤中获取的文件夹 ID
      export SERVICE_ACCOUNT_PATH="/path/to/your/service-account-key.json"
      export DRIVE_FOLDER_ID="YOUR_DRIVE_FOLDER_ID"
      
    • (Windows CMD)
      set SERVICE_ACCOUNT_PATH="C:\path\to\your\service-account-key.json"
      set DRIVE_FOLDER_ID="YOUR_DRIVE_FOLDER_ID"
      
    • (Windows PowerShell)
      $env:SERVICE_ACCOUNT_PATH = "C:\path\to\your\service-account-key.json"
      $env:DRIVE_FOLDER_ID = "YOUR_DRIVE_FOLDER_ID"
      
    • ➡️ 其他选项(OAuth、CREDENTIALS_CONFIG)请参阅身份验证与环境变量详解。
  4. 🏃 运行服务!

    • uvx 会自动下载并运行 mcp-google-sheets 的最新版本:
      uvx mcp-google-sheets@latest
      
    • 服务将启动,并输出日志表明已就绪。
    • **💡 专业提示:**始终使用 @latest,以确保获取包含错误修复和新功能的最新版本。如果不使用 @latest,uvx 可能会使用缓存中的旧版本。

  5. 🔌 连接 MCP 客户端

    • 配置客户端(例如 Claude Desktop)以连接到正在运行的服务。
    • 根据所用客户端的不同,你可能无需执行步骤 4,因为客户端可以为你启动服务。不过,最好还是测试运行步骤 4,以确保配置正确。
    • ➡️ 示例请参阅在 Claude Desktop 中使用。
  6. ⚡ 可选:启用工具筛选(减少上下文用量)

    • 默认情况下,所有 19 个工具均已启用(约 13K 个 token)。若要减少上下文用量,请仅启用所需工具。
    • ➡️ 详情请参阅工具筛选(减少上下文用量)。

准备就绪!通过 MCP 客户端开始发送命令吧。


✨ 主要功能

  • 无缝集成: 直接连接 Google Drive 和 Google Sheets API。
  • 丰富的工具: 提供广泛的操作(CRUD、列表、批处理、共享、格式设置等)。
  • 灵活的身份验证: 支持 服务账号(推荐)、OAuth 2.0,以及通过环境变量直接注入凭据。
  • 轻松部署: 使用 uvx 即刻运行(无需安装的体验),或使用 uv 克隆项目进行开发。
  • 适配 AI: 专为与兼容 MCP 的客户端配合使用而设计,支持通过自然语言操作电子表格。
  • 工具筛选: 通过 --include-tools 或 ENABLED_TOOLS 环境变量仅启用所需工具,减少上下文窗口占用。

🎯 工具筛选(减少上下文占用)

问题: 默认情况下,此 MCP 服务会公开全部 19 个工具,在任何对话开始前就会占用约 13,000 个 token。如果你只需要几个工具,这会浪费宝贵的上下文窗口空间。

解决方案: 使用工具筛选,仅启用实际需要的工具。

如何启用工具筛选

你可以通过以下任一方式筛选工具:

  1. 命令行参数 --include-tools:

    {
      "mcpServers": {
        "google-sheets": {
          "command": "uvx",
          "args": [
            "mcp-google-sheets@latest",
            "--include-tools",
            "get_sheet_data,update_cells,list_spreadsheets,list_sheets"
          ],
          "env": {
            "SERVICE_ACCOUNT_PATH": "/path/to/credentials.json"
          }
        }
      }
    }
    
  2. 环境变量 ENABLED_TOOLS:

    {
      "mcpServers": {
        "google-sheets": {
          "command": "uvx",
          "args": ["mcp-google-sheets@latest"],
          "env": {
            "SERVICE_ACCOUNT_PATH": "/path/to/credentials.json",
            "ENABLED_TOOLS": "get_sheet_data,update_cells,list_spreadsheets,list_sheets"
          }
        }
      }
    }
    
可用工具名称

筛选时,请使用以下准确的工具名称(以逗号分隔,不含空格):

最常用的工具(推荐子集):

  • get_sheet_data - 从电子表格读取数据
  • update_cells - 写入电子表格
  • list_spreadsheets - 查找电子表格
  • list_sheets - 浏览工作表标签

所有可用工具:

  • add_columns
  • add_rows
  • batch_update
  • batch_update_cells
  • copy_sheet
  • create_sheet
  • create_spreadsheet
  • find_in_spreadsheet
  • get_multiple_sheet_data
  • get_multiple_spreadsheet_summary
  • get_sheet_data
  • get_sheet_formulas
  • list_folders
  • list_sheets
  • list_spreadsheets
  • rename_sheet
  • search_spreadsheets
  • share_spreadsheet
  • update_cells

注意: 如果未指定 --include-tools 或 ENABLED_TOOLS,则默认启用所有工具。


🛠️ 可用工具和资源

此服务公开以下用于操作 Google Sheets 的工具:

有关下文所用 ID 的更多信息,请参阅 ID 参考指南。

(除非另有说明,输入参数通常为字符串)

  • list_spreadsheets:列出已配置的 Drive 文件夹(Service Account)中的电子表格,或用户可访问的电子表格(OAuth)。

    • folder_id(可选字符串):要搜索的 Google Drive 文件夹 ID。可从其 URL 中获取。如果省略,则使用已配置的默认文件夹,或搜索“My Drive”。
    • 返回: 对象列表 [{id: string, title: string}]
  • create_spreadsheet:创建新的电子表格。

    • title(字符串):电子表格的目标标题。例如:“Quarterly Report Q4”。
    • folder_id(可选字符串):要在其中创建电子表格的 Google Drive 文件夹 ID。可从其 URL 中获取。如果省略,则使用已配置的默认文件夹或根目录。
    • 返回: 包含电子表格信息的对象,包括 spreadsheetId、title 和 folder。
  • get_sheet_data:读取工作表/标签页中某个范围的数据。

    • spreadsheet_id(字符串):电子表格 ID(可从其 URL 中获取)。
    • sheet(字符串):工作表/标签页名称(例如,“Sheet1”)。
    • range(可选字符串):A1 表示法(例如,'A1:C10'、'Sheet1!B2:D')。如果省略,则读取 sheet 指定的整个工作表/标签页。
    • include_grid_data(可选布尔值,默认值为 False):如果为 True,则返回完整的网格数据,包括格式和元数据(数据量会大得多)。如果为 False,则仅返回值(效率更高)。
    • 返回: 如果 include_grid_data=True,则返回包含元数据的完整网格数据(get 响应)。如果为 False,则返回 Values API 的值结果对象(values.get 响应)。
  • get_sheet_formulas:读取工作表/标签页中某个范围的公式。

    • spreadsheet_id(字符串):电子表格 ID(可从其 URL 中获取)。
    • sheet(字符串):工作表/标签页名称(例如,“Sheet1”)。
    • range(可选字符串):A1 表示法(例如,'A1:C10'、'Sheet1!B2:D')。如果省略,则读取 sheet 指定的工作表/标签页中的所有公式。
    • 返回: 单元格公式的二维数组(数组的数组)(values.get 响应)。
  • update_cells:将数据写入指定范围,并覆盖现有数据。

    • spreadsheet_id(字符串):电子表格 ID(可从其 URL 中获取)。
    • sheet(字符串):工作表/标签页名称(例如,“Sheet1”)。
    • range(字符串):要写入的 A1 表示法范围(例如,'A1:C3')。
    • data(数组的数组):要写入的二维值数组。例如:[[1, 2, 3], ["a", "b", "c"]]。
    • 返回: 更新结果对象(values.update 响应)。
  • batch_update_cells:通过一次 API 调用更新多个范围。

    • spreadsheet_id(字符串):电子表格 ID(可从其 URL 中获取)。
    • sheet(字符串):工作表/标签页名称(例如,“Sheet1”)。
    • ranges(对象):将范围字符串(A1 表示法)映射到二维值数组的字典。例如:{ "A1:B2": [[1, 2], [3, 4]], "D5": [["Hello"]] }。
    • 返回: 操作结果(values.batchUpdate 响应)。
  • add_rows:在指定索引处向工作表/标签页添加(插入)空行。

    • spreadsheet_id(字符串):电子表格 ID(可从其 URL 中获取)。
    • sheet(字符串):工作表/标签页名称(例如,“Sheet1”)。
    • count(整数):要插入的空行数。
    • start_row(可选整数,默认值为 0):开始插入行的从 0 开始计数的行索引。如果省略,默认为 0(在开头插入)。
    • 返回: 操作结果(batchUpdate 响应)。
  • list_sheets:列出电子表格中的所有工作表/标签页名称。

    • spreadsheet_id(字符串):电子表格 ID(可从其 URL 中获取)。
    • 返回: 工作表/标签页名称字符串列表。例如:["Sheet1", "Sheet2"]。
  • create_sheet:向电子表格添加新的工作表/标签页。

    • spreadsheet_id(字符串):电子表格 ID(可从其 URL 中获取)。
    • title(字符串):新工作表/标签页的名称。
    • 返回: 新工作表属性对象。
  • get_multiple_sheet_data:一次调用即可从多个电子表格中可能跨表的多个范围获取数据。

    • queries(对象数组):每个对象都需要 spreadsheet_id、sheet 和 range。例如:[{"spreadsheet_id": "abc", "sheet": "Sheet1", "range": "A1:B2"}, ...]。
    • 返回: 对象列表,每个对象都包含查询参数,以及获取到的 data 或 error。每个 data 都是 values.get 响应。
  • get_multiple_spreadsheet_summary:获取多个电子表格的标题、工作表/标签页名称、表头和前几行。

    • spreadsheet_ids(字符串数组):电子表格的 ID(可从其 URL 中获取)。
    • rows_to_fetch(可选整数,默认值为 5):预览的行数(包括表头)。例如:5。
    • 返回: 每个电子表格对应的摘要对象列表。
  • share_spreadsheet:与指定用户/电子邮件地址及其角色共享电子表格。

    • spreadsheet_id(字符串):电子表格 ID(可从其 URL 中获取)。
    • recipients(对象数组):[{"email_address": "[email protected]", "role": "writer"}, ...]。角色:reader、commenter、writer。
    • send_notification(可选布尔值,默认值为 True):向接收者发送电子邮件通知。
    • 返回: 包含 successes 和 failures 列表的字典。
  • add_columns:在指定索引处向工作表/标签页添加(插入)空列。

    • spreadsheet_id(字符串):电子表格 ID(可从其 URL 中获取)。
    • sheet(字符串):工作表/标签页名称(例如,“Sheet1”)。
    • count(整数):要插入的空列数。
    • start_column(可选整数,默认值为 0):开始插入列的从 0 开始计数的列索引。如果省略,默认为 0(在开头插入)。
    • 返回: 操作结果(batchUpdate 响应)。
  • copy_sheet:将工作表/标签页从一个电子表格复制到另一个电子表格,并可选择重命名。

    • src_spreadsheet(字符串):源电子表格 ID(可从其 URL 中获取)。
    • src_sheet(字符串):源工作表/标签页名称(例如,“Sheet1”)。
    • dst_spreadsheet(字符串):目标电子表格 ID(可从其 URL 中获取)。
    • dst_sheet(字符串):工作表/标签页在目标电子表格中的名称。
    • 返回: 复制和可选重命名操作的结果。
  • rename_sheet:重命名现有工作表/标签页。

    • spreadsheet(字符串):电子表格 ID(可从其 URL 中获取)。
    • sheet(字符串):当前工作表/标签页名称(例如,“Sheet1”)。
    • new_name(字符串):新的工作表/标签页名称(例如,“Transactions”)。
    • 返回: 操作结果(batchUpdate 响应)。
  • add_chart:根据指定数据在 Google Spreadsheet 中创建图表。

    • spreadsheet_id(字符串):电子表格 ID(可从其 URL 中获取)。
    • sheet(字符串):包含数据的工作表/标签页名称(例如,“Sheet1”)。
    • chart_type(字符串):要创建的图表类型。选项:COLUMN(竖向柱形图)、BAR(横向条形图)、LINE、AREA、PIE、SCATTER、COMBO、HISTOGRAM。
    • data_range(字符串):图表数据的 A1 表示法范围(例如,“A1:C10”)。第一行将作为表头。
    • title(可选字符串):图表标题。
    • x_axis_label(可选字符串):X 轴(底部轴)的标签。不适用于饼图。
    • y_axis_label(可选字符串):Y 轴(左侧轴)的标签。不适用于饼图。
    • position_x(可选整数,默认值为 0):相对于左上角的水平位置偏移量,单位为像素。
    • position_y(可选整数,默认值为 0):相对于左上角的垂直位置偏移量,单位为像素。
    • width(可选整数,默认值为 600):图表宽度,单位为像素。
    • height(可选整数,默认值为 400):图表高度,单位为像素。
    • 返回: 包含成功状态、图表 ID 和操作详情的结果对象。 MCP 资源:
  • spreadsheet://{spreadsheet_id}/info:获取 Google Spreadsheet 的基本元数据。

    • 返回: 包含电子表格信息的 JSON 字符串。

☁️ Google Cloud Platform 设置(详细说明)

运行服务前,必须完成此设置。

  1. **创建/选择 GCP 项目:**前往 Google Cloud Console。
  2. **启用 API:**导航至“APIs & Services” -> “Library”。搜索并启用:
    • Google Sheets API
    • Google Drive API
  3. **配置凭据:**选择以下一种身份验证方式(推荐使用 Service Account)。

🔑 身份验证与环境变量(详细说明)

服务需要凭据才能访问 Google API。请选择一种方式:

有关下文所用 ID 的更多信息,请参阅 ID 参考指南。

方法 A:Service Account(推荐用于服务端/自动化)✅
  • **为什么?**无需浏览器,安全,非常适合服务端环境。不容易过期。
  • 步骤:
    1. **创建 Service Account:**在 GCP Console -> “IAM & Admin” -> “Service Accounts” 中操作。
      • 点击“+ CREATE SERVICE ACCOUNT”。为其命名(例如,mcp-sheets-service)。
      • 授予角色:添加 Editor 角色以获得广泛访问权限,或添加更精细的角色(例如 roles/drive.file 和特定的 Sheets 角色)以严格限制权限。
      • 点击“Done”。找到该账号,点击“Actions”(⋮)-> “Manage keys”。
      • 点击“ADD KEY” -> “Create new key” -> JSON -> “CREATE”。
      • 下载并安全保存 JSON 密钥文件。
    2. 创建并共享 Google Drive 文件夹:
      • 在 Google Drive 中创建一个文件夹(例如,“AI Managed Sheets”)。
      • 从 URL 中找到 Folder ID:https://drive.google.com/drive/folders/THIS_IS_THE_FOLDER_ID。
      • 右键点击该文件夹 -> “Share” -> “Share”。
      • 输入 Service Account 的电子邮件地址(来自 JSON 文件中的 client_email)。
      • 授予 Editor 权限。取消勾选“Notify people”。点击“Share”。
    3. 设置环境变量:
      • SERVICE_ACCOUNT_PATH:下载的 JSON 密钥文件的完整路径。
      • DRIVE_FOLDER_ID:共享的 Google Drive 文件夹 ID。
      • (请参阅 超快速入门,了解针对不同操作系统的示例。)
方法 B:OAuth 2.0(交互式/个人使用)🧑‍💻
  • **为什么?**适用于个人使用或本地开发,允许通过浏览器交互式登录。
  • 步骤:
    1. **配置 OAuth 同意屏幕:**在 GCP Console -> “APIs & Services” -> “OAuth consent screen” 中操作。选择“External”,填写必填信息,添加作用域(.../auth/spreadsheets、.../auth/drive),并根据需要添加测试用户。
    2. **创建 OAuth 客户端 ID:**在 GCP Console -> “APIs & Services” -> “Credentials” 中操作。点击“+ CREATE CREDENTIALS” -> “OAuth client ID” -> 类型:Desktop app。为其命名。点击“CREATE”。下载 JSON。
    3. 设置环境变量:
      • CREDENTIALS_PATH:下载的 OAuth 凭据 JSON 文件的路径(默认值:credentials.json)。
      • TOKEN_PATH:首次登录后用于存储用户刷新令牌的路径(默认值:token.json)。该路径必须可写。
方法 C:直接注入凭据(高级)🔒
  • 为什么? 适用于 Docker、Kubernetes 或 CI/CD 等环境。在这些环境中,管理文件很困难,但环境变量易于管理且安全。这种方式无需访问文件系统。
  • 如何操作? 不提供凭据文件的路径,而是将文件内容编码为 Base64,直接放入环境变量中。
  • 步骤:
    1. 获取凭据 JSON 文件(服务账号密钥文件或 OAuth 客户端 ID 文件均可)。我们将其命名为 your_credentials.json。
    2. 生成 Base64 字符串:
      • (Linux/macOS): base64 -w 0 your_credentials.json
      • (Windows PowerShell):
        $filePath = "C:\path\to\your_credentials.json"; # Use actual path
        $bytes = [System.IO.File]::ReadAllBytes($filePath);
        $base64 = [System.Convert]::ToBase64String($bytes);
        $base64 # Copy this output
        
      • (注意): 避免将敏感凭据粘贴到不可信的在线编码器中。
    3. 设置环境变量:
      • CREDENTIALS_CONFIG:将此变量设置为刚生成的完整 Base64 字符串。
        # Example (Linux/macOS) - Use the actual string generated
        export CREDENTIALS_CONFIG="ewogICJ0eXBlIjogInNlcnZpY2VfYWNjb..."
        
方法 D:应用默认凭据(ADC)🌐
  • 为什么? 适用于 Google Cloud 环境(GKE、Compute Engine、Cloud Run)以及使用 gcloud auth application-default login 的本地开发。无需显式提供凭据文件。
  • 如何操作? 使用 Google 的应用默认凭据链,自动从多个来源发现凭据。
  • ADC 搜索顺序:
    1. GOOGLE_APPLICATION_CREDENTIALS 环境变量(服务账号密钥的路径)——Google 的标准变量
    2. gcloud auth application-default login 凭据(本地开发)
    3. 元数据服务器提供的附加服务账号(GKE、Compute Engine 等)
  • 设置:
    • 本地开发:
      1. 运行一次 gcloud auth application-default login --scopes=https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/spreadsheets,https://www.googleapis.com/auth/drive
      2. 设置配额项目:gcloud auth application-default set-quota-project <project_id>(将 <project_id> 替换为你的 Google Cloud 项目 ID)
    • Google Cloud: 将服务账号关联到计算资源
    • 环境变量: 设置 GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json(Google 标准)
  • 无需其他环境变量——当其他方法失败时,ADC 会自动作为回退方式使用。

注意: GOOGLE_APPLICATION_CREDENTIALS 是 Google 的官方标准环境变量,而 SERVICE_ACCOUNT_PATH 是此 MCP 服务专用的变量。如果设置了 GOOGLE_APPLICATION_CREDENTIALS,ADC 会自动找到它。

身份验证优先级和摘要

服务器按以下顺序检查凭据:

  1. CREDENTIALS_CONFIG(Base64 内容)
  2. SERVICE_ACCOUNT_PATH(服务账号 JSON 的路径)
  3. CREDENTIALS_PATH(OAuth JSON 的路径)——令牌缺失或过期时会触发交互式流程
  4. 应用默认凭据(ADC)——自动回退

环境变量摘要:

变量方法描述默认值
SERVICE_ACCOUNT_PATH服务账号服务账号 JSON 密钥文件的路径(特定于 MCP 服务)。-
GOOGLE_APPLICATION_CREDENTIALSADC服务账号密钥的路径(Google 的标准变量)。-
DRIVE_FOLDER_ID服务账号与服务账号共享的 Google Drive 文件夹 ID。-
CREDENTIALS_PATHOAuth 2.0OAuth 2.0 客户端 ID JSON 文件的路径。credentials.json
TOKEN_PATHOAuth 2.0用于存储生成的 OAuth 令牌的路径。token.json
CREDENTIALS_CONFIG服务账号 / OAuth 2.0凭据内容的 Base64 编码 JSON 字符串。-

⚙️ 运行服务(详细说明)

有关下文所用 ID 的更多信息,请参阅 ID 参考指南。

方法 1:使用 uvx(推荐用户使用)

如 超快速入门 所示,这是最简单的方法。设置环境变量,然后运行:

uvx mcp-google-sheets@latest

uvx 会临时获取并运行此软件包。

方法 2:用于开发(克隆仓库)

如果要修改代码:

  1. 克隆: git clone https://github.com/yourusername/mcp-google-sheets.git && cd mcp-google-sheets(使用实际 URL)
  2. 设置环境变量: 如上所述。
  3. 使用 uv 运行:(使用本地代码)
    uv run mcp-google-sheets
    # 或使用 pyproject.toml 中定义的脚本名称,例如:
    # uv run start
    
方法 3:Docker(SSE 传输)

使用随附的 Dockerfile 在容器中运行服务:

# Build the image
docker build -t mcp-google-sheets .

# Run (SSE on port 8000)
# NOTE: Prefer CREDENTIALS_CONFIG (Base64 credentials content) in containers.
docker run --rm -p 8000:8000 ^
  -e HOST=0.0.0.0 ^
  -e PORT=8000 ^
  -e CREDENTIALS_CONFIG=YOUR_BASE64_CREDENTIALS ^
  -e DRIVE_FOLDER_ID=YOUR_DRIVE_FOLDER_ID ^
  mcp-google-sheets
  • 在 Docker 中使用 CREDENTIALS_CONFIG 代替 SERVICE_ACCOUNT_PATH,以避免将密钥作为文件挂载。
  • 容器以 --transport sse 启动,并监听 HOST/PORT。使用 SSE 传输,将 MCP 客户端指向 http://localhost:8000。

🔌 与 Claude Desktop 搭配使用

将服务配置添加到 claude_desktop_config.json 的 mcpServers 下。选择与你的设置相匹配的代码块:

有关下文所用 ID 的更多信息,请参阅 ID 参考指南。

⚠️ 重要提示:

  • 🍎 macOS 用户: 使用完整路径:"/Users/yourusername/.local/bin/uvx",而不是仅使用 "uvx"
🔵 配置:uvx + 服务账号(推荐)
{
  "mcpServers": {
    "google-sheets": {
      "command": "uvx",
      "args": ["mcp-google-sheets@latest"],
      "env": {
        "SERVICE_ACCOUNT_PATH": "/full/path/to/your/service-account-key.json",
        "DRIVE_FOLDER_ID": "your_shared_folder_id_here"
      }
    }
  }
}

🍎 macOS 提示: 如果出现 spawn uvx ENOENT 错误,请使用 uvx 的完整路径:

{
  "mcpServers": {
    "google-sheets": {
      "command": "/Users/yourusername/.local/bin/uvx",
      "args": ["mcp-google-sheets@latest"],
      "env": {
        "SERVICE_ACCOUNT_PATH": "/full/path/to/your/service-account-key.json",
        "DRIVE_FOLDER_ID": "your_shared_folder_id_here"
      }
    }
  }
}

将 yourusername 替换为你的实际用户名。

🔵 配置:uvx + OAuth 2.0
{
  "mcpServers": {
    "google-sheets": {
      "command": "uvx",
      "args": ["mcp-google-sheets@latest"],
      "env": {
        "CREDENTIALS_PATH": "/full/path/to/your/credentials.json",
        "TOKEN_PATH": "/full/path/to/your/token.json"
      }
    }
  }
}

注意:首次使用时,可能会打开浏览器以登录 Google。请确保 TOKEN_PATH 可写。

🍎 macOS 提示: 如果出现 spawn uvx ENOENT 错误,请将 "command": "uvx" 替换为 "command": "/Users/yourusername/.local/bin/uvx"(将 yourusername 替换为你的实际用户名)。

🔵 配置:uvx + CREDENTIALS_CONFIG(服务账号示例)
{
  "mcpServers": {
    "google-sheets": {
      "command": "uvx",
      "args": ["mcp-google-sheets@latest"],
      "env": {
        "CREDENTIALS_CONFIG": "ewogICJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIsCiAgInByb2plY3RfaWQiOiAi...",
        "DRIVE_FOLDER_ID": "your_shared_folder_id_here"
      }
    }
  }
}

注意:粘贴完整的 Base64 字符串作为 CREDENTIALS_CONFIG。服务账号仍需要 DRIVE_FOLDER_ID 来指定文件夹上下文。

🍎 macOS 提示: 如果出现 spawn uvx ENOENT 错误,请将 "command": "uvx" 替换为 "command": "/Users/yourusername/.local/bin/uvx"(将 yourusername 替换为你的实际用户名)。

🔵 配置:uvx + 应用默认凭据(ADC)

选项 1:使用 GOOGLE_APPLICATION_CREDENTIALS

{
  "mcpServers": {
    "google-sheets": {
      "command": "uvx",
      "args": ["mcp-google-sheets@latest"],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "/path/to/service-account.json"
      }
    }
  }
}

选项 2:使用 gcloud auth(无需环境变量)

{
  "mcpServers": {
    "google-sheets": {
      "command": "uvx",
      "args": ["mcp-google-sheets@latest"],
      "env": {}
    }
  }
}

前提条件:

  1. 请先运行 gcloud auth application-default login --scopes=https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/spreadsheets,https://www.googleapis.com/auth/drive。
  2. 设置配额项目:gcloud auth application-default set-quota-project <project_id>

🍎 macOS 提示: 如果出现 spawn uvx ENOENT 错误,请将 "command": "uvx" 替换为 "command": "/Users/yourusername/.local/bin/uvx"(将 yourusername 替换为你的实际用户名)。

🟡 配置:开发(从克隆的仓库运行)
{
  "mcpServers": {
    "mcp-google-sheets-local": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/path/to/your/mcp-google-sheets",
        "mcp-google-sheets"
      ],
      "env": {
        "SERVICE_ACCOUNT_PATH": "/path/to/your/mcp-google-sheets/service_account.json",
        "DRIVE_FOLDER_ID": "your_drive_folder_id_here"
      }
    }
  }
}

注意:使用 --directory 标志指定项目路径,并调整路径以匹配你的实际工作区位置。


💬 Claude 示例提示词

连接后,可以尝试如下提示词:

  • "列出我有权访问的所有电子表格。"(或“列出我的 AI Managed Sheets 文件夹中的电子表格”)
  • "创建一个名为 'Quarterly Sales Report Q3 2024' 的新电子表格。"
  • "在 'Quarterly Sales Report' 电子表格中,获取 Sheet1 工作表 A1 到 E10 区域的数据。"
  • "在 ID 为 1aBcDeFgHiJkLmNoPqRsTuVwXyZ 的电子表格中添加一个名为 'Summary' 的新工作表。"
  • "在我的 'Project Tasks' 电子表格的 'Tasks' 工作表中,将单元格 B2 更新为 'In Progress'。"
  • "将以下行追加到电子表格 XYZ 的 'Log' 工作表中:[['2024-07-31', 'Task A Completed'], ['2024-08-01', 'Task B Started']]"
  • "总结一下 'Sales Data' 和 'Inventory Count' 这两个电子表格。"
  • "将 'Team Vacation Schedule' 电子表格分享给 [email protected](读者权限)和 [email protected](写入者权限)。不要发送通知。"
  • "在我的 'Sales Report' 电子表格中,根据 A1:B13 区域的数据创建一个展示月收入的柱状图。"
  • "在 'Market Analysis' 工作表中,根据 A1:B5 区域的数据添加一个标题为 'Market Share by Product' 的饼图。"
  • "在电子表格 abc123 的 Sheet1 工作表中,根据 A1:C10 区域创建一个折线图,标题为 'Growth Trends',标签为 'Month' 和 'Revenue'。"

🆔 ID 参考指南

使用以下参考指南查找文档中提及的各种 ID:

Google Cloud Project ID:
  https://console.cloud.google.com/apis/dashboard?project=sheets-mcp-server-123456
                                                          └───── Project ID ─────┘

Google Drive Folder ID:
  https://drive.google.com/drive/u/0/folders/1xcRQCU9xrNVBPTeNzHqx4hrG7yR91WIa
                                             └────────── Folder ID ──────────┘

Google Sheets Spreadsheet ID:
  https://docs.google.com/spreadsheets/d/25_-_raTaKjaVxu9nJzA7-FCrNhnkd3cXC54BPAOXemI/edit
                                         └───────────── Spreadsheet ID ─────────────┘

🤝 参与贡献

欢迎参与贡献!请提交 issue 以讨论 bug 或功能请求。也欢迎提交拉取请求。


📄 许可证

本项目采用 MIT License 授权,详情请参阅 LICENSE 文件。


🙏 致谢

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。