返回市场
谷歌幻灯片MCP

谷歌幻灯片MCP

作者:matteoantoci129 星标更新:2025-06-30

项目介绍

Google Slides MCP 服务器

该项目提供了一个用于与 Google Slides API 交互的模型上下文协议(MCP)服务器。它允许您通过编程方式创建、读取和修改 Google Slides 演示文稿。

预备条件

  • Node.js(推荐使用 v18 或更高版本)
  • npm(通常随 Node.js 一起提供)
  • 启用了 Google Slides API 的 Google Cloud 项目。
  • 您的 Google Cloud 项目的 OAuth 2.0 凭据(客户端 ID 和客户端密钥)。
  • 与 OAuth 2.0 凭据关联且具有必要 Google Slides API 范围的 Google 刷新令牌。

设置

  1. 克隆仓库(如果适用)或确保您在项目目录中。

  2. 安装依赖项:

    npm install
    
  3. 构建服务器: 编译 TypeScript 代码到 JavaScript:

    npm run build
    

    这将创建一个包含编译后 JavaScript 代码的 build 目录。

  4. 获取 Google API 凭据:

    • 前往 Google Cloud 控制台
    • 创建一个新的项目或选择一个现有的项目。
    • 导航至“API和服务”>“已启用的 API和服务”。
    • 点击“+ 启用 API和服务”,搜索“Google Slides API”,并启用它。
    • 导航至“API和服务”>“凭据”。
    • 点击“+ 创建凭据”>“OAuth 客户端 ID”。
    • 如果提示,请配置 OAuth 同意屏幕。对于“用户类型”,除非您有 Google Workspace 账户并且想要内部限制,否则请选择“外部”。提供应用名称、用户支持电子邮件和开发者联系信息。
    • 在同意屏幕设置的“范围”页面上,点击“添加或移除范围”。搜索并添加以下范围:
      • https://www.googleapis.com/auth/presentations(查看和管理您的演示文稿)
      • (可选:如果您需要执行特定操作如列出文件,可以添加 https://www.googleapis.com/auth/drive.readonly 或其他 Drive 范围,尽管这些不是基本 Slides 操作所必需的)
    • 保存同意屏幕配置。
    • 返回“凭据”,点击“+ 创建凭据”>“OAuth 客户端 ID”。
    • 选择“桌面应用”作为应用程序类型。
    • 给它命名(例如,“Slides MCP 客户端”)。
    • 点击“创建”。您将看到您的客户端 ID客户端密钥。**安全地记录这些信息。**您也可以下载包含这些凭据的 JSON 文件。
  5. 获取 Google 刷新令牌:

    • 刷新令牌允许服务器在每次无需用户交互的情况下获取新的访问令牌。生成一个通常涉及一次性的授权流程。
    • 您可以使用 Google OAuth 2.0 游戏场来完成此操作:
      • 前往 OAuth 2.0 游戏场。
      • 点击右上角的齿轮图标(设置)。
      • 勾选“使用自己的 OAuth 凭据”。
      • 输入您在上一步中获得的客户端 ID客户端密钥
      • 在左侧的“步骤 1 - 选择并授权 API”部分,找到“Slides API v1”并选择 https://www.googleapis.com/auth/presentations 范围(以及您添加的任何其他 Drive 范围)。
      • 点击“授权 API”。
      • 使用您希望服务器代表其操作的 Google 账户登录。
      • 授予请求的权限。
      • 您将被重定向回游戏场。在“步骤 2 - 交换授权码以获取令牌”中,您应该能看到刷新令牌和访问令牌。安全地记录刷新令牌。

    或者,您可以使用提供的 get-token 脚本来获取刷新令牌。该脚本将构建项目,然后运行一个引导您完成 OAuth 流程以获取刷新令牌的实用程序。确保您的 GOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRET 在环境或 .env 文件中配置(如果脚本需要它们,您可能需要检查 src/getRefreshToken.ts 文件以了解其期望的凭据)。要运行脚本:

    npm run get-token
    
  6. 在 MCP 设置中配置凭据和命令: 找到您的 MCP 设置文件(例如,.../User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json)。找到或创建 "google-slides-mcp" 条目,并使用运行服务器的命令和您的凭据进行配置:

    "google-slides-m- mcp": {
      "transportType": "stdio",
      "command": "node",
      "args": [
        "/path/to/google-slides-mcp/build/index.js"
      ],
      "env": {
        "GOOGLE_CLIENT_ID": "YOUR_CLIENT_ID",
        "GOOGLE_CLIENT_SECRET": "YOUR_CLIENT_SECRET",
        "GOOGLE_REFRESH_TOKEN": "YOUR_REFRESH_TOKEN"
      }
      // ... 其他可选设置如描述...
    }
    

    /path/to/google-slides-mcp/build/index.js 替换为您系统上编译后的服务器索引文件的实际路径。将 YOUR_CLIENT_IDYOUR_CLIENT_SECRETYOUR_REFRESH_TOKEN 替换为您实际获得的值。当 MCP 运行器启动时,会将这些值注入到服务器的环境中。

运行服务器

执行编译后的代码:

npm run start

服务器将启动并监听标准输入/输出(stdio)上的 MCP 请求。您应该会看到类似的消息:“Google Slides MCP 服务器正在运行并通过 stdio 连接。”

可用工具

服务器通过模型上下文协议暴露了以下工具:

  • create_presentation:创建一个新的 Google Slides 演示文稿。

    • 输入:
      • title(字符串,必填):新演示文稿的标题。
    • 输出: 表示创建的演示文稿详情的 JSON 对象。
  • get_presentation:检索现有演示文稿的详情。

    • 输入:
      • presentationId(字符串,必填):要检索的演示文稿的 ID。
      • fields(字符串,可选):字段掩码(例如,“slides,pageSize”)以限制返回的数据。
    • 输出: 表示演示文稿详情的 JSON 对象。
  • batch_update_presentation:对演示文稿应用一系列更新。这是修改幻灯片的主要方法(添加文本、形状、图像、创建幻灯片等)。

    • 输入:
      • presentationId(字符串,必填):要更新的演示文稿的 ID。
      • requests(数组,必填):定义更新的一系列请求对象数组。参阅 Google Slides API batchUpdate 文档 以了解单个请求的结构。
      • writeControl(对象,可选):控制写请求执行(例如,使用修订 ID)。
    • 输出: 表示批量更新结果的 JSON 对象。
  • get_page:检索演示文稿内特定页面(幻灯片)的详情。

    • 输入:
      • presentationId(字符串,必填):包含页面的演示文稿的 ID。
      • pageObjectId(字符串,必填):要检索的页面(幻灯片)的对象 ID。
    • 输出: 表示页面详情的 JSON 对象。
  • summarize_presentation:从演示文稿中提取并格式化所有文本内容,以便更容易总结。

    • 输入:
      • presentationId(字符串,必填):要总结的演示文稿的 ID。
      • include_notes(布尔值,可选):是否在摘要中包括演讲者笔记。默认为 false。
    • 输出: 包含以下内容的 JSON 对象:
      • title:演示文稿的标题
      • slideCount:幻灯片总数
      • lastModified:修订信息
      • slides:包含以下内容的幻灯片对象数组:
        • slideNumber:在演示文稿中的位置
        • slideId:幻灯片的对象 ID
        • content:从幻灯片中提取的所有文本
        • notes:演讲者笔记(如果请求且可用)

(更多工具可以通过扩展 src/index.ts 添加)