该项目提供了一个用于与 Google Slides API 交互的模型上下文协议(MCP)服务器。它允许您通过编程方式创建、读取和修改 Google Slides 演示文稿。
克隆仓库(如果适用)或确保您在项目目录中。
安装依赖项:
npm install
构建服务器: 编译 TypeScript 代码到 JavaScript:
npm run build
这将创建一个包含编译后 JavaScript 代码的 build 目录。
获取 Google API 凭据:
https://www.googleapis.com/auth/presentations(查看和管理您的演示文稿)https://www.googleapis.com/auth/drive.readonly 或其他 Drive 范围,尽管这些不是基本 Slides 操作所必需的)获取 Google 刷新令牌:
https://www.googleapis.com/auth/presentations 范围(以及您添加的任何其他 Drive 范围)。或者,您可以使用提供的 get-token 脚本来获取刷新令牌。该脚本将构建项目,然后运行一个引导您完成 OAuth 流程以获取刷新令牌的实用程序。确保您的 GOOGLE_CLIENT_ID 和 GOOGLE_CLIENT_SECRET 在环境或 .env 文件中配置(如果脚本需要它们,您可能需要检查 src/getRefreshToken.ts 文件以了解其期望的凭据)。要运行脚本:
npm run get-token
在 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_ID、YOUR_CLIENT_SECRET 和 YOUR_REFRESH_TOKEN 替换为您实际获得的值。当 MCP 运行器启动时,会将这些值注入到服务器的环境中。
执行编译后的代码:
npm run start
服务器将启动并监听标准输入/输出(stdio)上的 MCP 请求。您应该会看到类似的消息:“Google Slides MCP 服务器正在运行并通过 stdio 连接。”
服务器通过模型上下文协议暴露了以下工具:
create_presentation:创建一个新的 Google Slides 演示文稿。
title(字符串,必填):新演示文稿的标题。get_presentation:检索现有演示文稿的详情。
presentationId(字符串,必填):要检索的演示文稿的 ID。fields(字符串,可选):字段掩码(例如,“slides,pageSize”)以限制返回的数据。batch_update_presentation:对演示文稿应用一系列更新。这是修改幻灯片的主要方法(添加文本、形状、图像、创建幻灯片等)。
presentationId(字符串,必填):要更新的演示文稿的 ID。requests(数组,必填):定义更新的一系列请求对象数组。参阅 Google Slides API batchUpdate 文档 以了解单个请求的结构。writeControl(对象,可选):控制写请求执行(例如,使用修订 ID)。get_page:检索演示文稿内特定页面(幻灯片)的详情。
presentationId(字符串,必填):包含页面的演示文稿的 ID。pageObjectId(字符串,必填):要检索的页面(幻灯片)的对象 ID。summarize_presentation:从演示文稿中提取并格式化所有文本内容,以便更容易总结。
presentationId(字符串,必填):要总结的演示文稿的 ID。include_notes(布尔值,可选):是否在摘要中包括演讲者笔记。默认为 false。title:演示文稿的标题slideCount:幻灯片总数lastModified:修订信息slides:包含以下内容的幻灯片对象数组:
slideNumber:在演示文稿中的位置slideId:幻灯片的对象 IDcontent:从幻灯片中提取的所有文本notes:演讲者笔记(如果请求且可用)(更多工具可以通过扩展 src/index.ts 添加)