Klavis Google Slides MCP Server 实战指南:基于 MCP 协议创建、编辑与管理演示文稿

发布时间:2026/9/17 21:43:34
Klavis Google Slides MCP Server 实战指南:基于 MCP 协议创建、编辑与管理演示文稿
Klavis Google Slides MCP Server 实战指南基于 MCP 协议创建、编辑与管理演示文稿【免费下载链接】klavisKlavis AI: MCP integration platforms that let AI agents use tools reliably at any scale项目地址: https://gitcode.com/GitHub_Trending/kl/klavis本篇技术指南聚焦于 Klavis 仓库中开源的 Google Slides MCP Server它通过 Model Context ProtocolMCP将 Google Slides API 封装为 AI 可调用的工具集支持创建演示文稿、增删幻灯片、批量更新内容与提取全文摘要并提供 OAuth 认证支持。读完本文你将掌握该 Server 的两种启动方式托管服务与 Docker 自托管、6 个核心 MCP 工具的完整参数与调用方式以及从 server.py 源码层面理解其认证链路与双传输层实现原理。项目概览为 AI Agent 打通 Google Slides 的 MCP 桥梁Google Slides MCP Server 是 Klavis 开源的 MCP 服务端实现核心目标是让 AI Agent 能够通过标准化 MCP 工具调用直接操作 Google Slides无需手工打开浏览器Agent 即可创建演示文稿、追加幻灯片、批量写入文本内容甚至提取整份演示的正文用于自动总结。在 Klavis 的架构中这类 MCP Server 既可以运行在 Klavis 托管平台上通过免费 API Key 一键接入也可以作为 Docker 镜像自托管两种方式在下方快速启动小节中均有完整命令。该 Server 的完整源码位于 server.py基于官方mcpPython SDK版本 1.11.0构建所有工具、认证逻辑与传输层均在该单一文件中实现。快速启动两种接入方式方式一Klavis 托管服务生产推荐托管方式无需任何自建基础设施通过 Klavis SDK 创建 Server 实例pip install klavis # 或 npm install klavisfrom klavis import Klavis klavis Klavis(api_keyyour-free-key) server klavis.mcp_server.create_server_instance(GOOGLE_SLIDES, user123)这里GOOGLE_SLIDES是 Klavis 平台内部注册的服务名user123用于标识调用者身份便于平台按用户维度管理认证数据与调用配额。OAuth 认证流程由平台托管自动完成客户端无需接触任何 Google 凭据。方式二Docker 自托管仓库提供 Dockerfile基于python:3.12-slim构建。拉取并运行# 拉取最新镜像 docker pull ghcr.io/klavis-ai/google-slides-mcp-server:latest # 方式 A通过 Klavis API Key 自动处理 OAuth 流程 docker run -p 5000:5000 -e KLAVIS_API_KEY$KLAVIS_API_KEY \ ghcr.io/klavis-ai/google-slides-mcp-server:latest # 方式 B不使用 OAuth直接注入已获取的 Google Access Token docker run -p 5000:5000 -e AUTH_DATA{access_token:your_google_access_token_here} \ ghcr.io/klavis-ai/google-slides-mcp-server:latest从 Dockerfile 可以看到构建要点默认端口通过环境变量GOOGLE_SLIDES_MCP_SERVER_PORT固定为5000容器启动命令为python server.py未显式传入 CLI 参数因此依赖环境变量与默认值运行依赖在构建期通过 requirements.txt 安装包含mcp1.11.0、google-api-python-client2.116.0、google-auth-oauthlib1.2.0、starlette0.49.1与uvicorn0.30.0等。OAuth 说明Google Slides 强制要求 OAuth 认证。使用KLAVIS_API_KEY时OAuth 流程由 Klavis 平台自动处理若想跳过平台 OAuth需手动携带AUTH_DATAJSON至少包含access_token字段。仓库根目录下的 _oauth_support/README.md 详细描述了这一 OAuth 支持层的完整机制容器启动后由entrypoint_wrapper.sh调用oauth_acquire.sh向 Klavis API 请求创建认证实例、展示认证 URL、轮询等待用户完成浏览器授权最终将结果写入AUTH_DATA环境变量后再启动原始 MCP Server。核心 MCP 工具详解Server 在 list_tools 实现中注册了 6 个工具分为演示文稿管理与幻灯片操作两大类覆盖了 README 中声明的展示、内容编辑、格式化通过批量更新、协作共享链接等能力。每个工具均带有category注解GOOGLE_SLIDES_PRESENTATION/GOOGLE_SLIDES_SLIDE其中只读工具额外标记了readOnlyHint便于客户端与平台做权限与并发优化。create_presentation创建演示文稿创建一个指定标题的新演示文稿返回可编辑链接。参数类型必填说明titlestring是新演示文稿的标题底层实现create_presentation调用 Slides API 的presentations().create()成功后返回形如https://docs.google.com/presentation/d/{presentationId}/edit的链接。若title缺失call_tool会先返回参数错误提示不会触发 API 调用。add_slide向既有演示文稿添加幻灯片在指定演示文稿中新增一页幻灯片并可同时写入标题与正文。参数类型必填说明presentation_idstring是目标演示文稿的 IDtitlestring否幻灯片标题文本contentstring否幻灯片正文文本实现细节add_slide值得注意采用两步batchUpdate第一步通过createSlide请求创建新页objectId使用str(uuid.uuid4())动态生成insertionIndex固定为1插入到第 2 页位置布局引用预定义模板TITLE_AND_BODY若提供了title或content第二步再通过insertText请求向新建页写入文本两次插入均从insertionIndex: 0开始。list_presentations列出用户 Drive 中的演示文稿无需参数返回当前用户 Google Drive 中最多 10 份 Google Slides 文件实现见 list_presentations。底层通过 Drive API v3 执行mimeTypeapplication/vnd.google-apps.presentation查询并选取files(id, name, webViewLink)字段输出为「名称: 链接」列表无结果时返回No presentations found.。这也解释了服务所需的最小权限范围为何是presentationsdrive.readonly。get_presentation读取演示文稿元信息按 ID 读取演示文稿详情实现见 get_presentation返回标题、幻灯片数量、Revision ID、页面尺寸宽高并在fields包含slides时逐页列出objectId。参数类型必填说明presentation_idstring是目标演示文稿 IDfieldsstring否字段掩码用于限制返回数据如slides,pageSize默认字段掩码为presentationId,title,revisionId,slides,pageSizefields参数会透传给 Slides API 的presentations().get()可通过指定更窄的字段集降低响应体积。batch_update_presentation批量更新核心编辑入口对演示文稿应用一组更新请求实现见 batch_update_presentation。这是修改演示文稿的主入口——插入文本、形状、图片、新建幻灯片等全部通过它完成。参数类型必填说明presentation_idstring是目标演示文稿 IDrequestsarray是更新请求对象数组结构与 Google Slides APIbatchUpdate一致工具返回应用的更新数量、演示文稿编辑链接以及本次请求中新建幻灯片的objectId列表。README 中提及的Content Editing插入文本、图片、形状与Formatting应用主题与样式能力均由该工具承接requests数组可直接参考 Google Slides API 的batchUpdate请求类型如createSlide、insertText、insertShape、updateShapeProperties等。summarize_presentation提取全文用于总结提取演示文稿全部文本内容并格式化输出实现见 summarize_presentation专为 LLM 总结场景设计。参数类型必填说明presentation_idstring是目标演示文稿 IDinclude_notesboolean否是否包含演讲者备注默认false实现逻辑遍历每页幻灯片的pageElements从shape.text.textElements[].textRun.content中拼接纯文本当include_notestrue时额外从slideProperties.notesPage.pageElements中提取备注文本输出形如Slide N (ID: xxx):的分页摘要。该工具为只读操作是 Agent 读演示、出总结流程的关键能力。认证机制从 OAuth 到多级凭据回退Google Slides 强制 OAuthserver.py 声明的最小权限范围SCOPES为SCOPES [https://www.googleapis.com/auth/presentations, https://www.googleapis.com/auth/drive.readonly]即对演示文稿的完整读写权限 Drive 只读权限后者用于list_presentations。认证解析按 get_credentials 实现如下优先级回退请求上下文 Token优先从auth_token_context读取当前请求携带的 access token服务账号若工作目录存在service-account.json使用服务账号凭据适合服务器到服务器场景本地授权凭据若存在token.json加载已授权用户凭据交互式 OAuth 流程若存在credentials.json通过InstalledAppFlow.run_local_server(port0)启动本地授权授权成功后回写token.json以上均缺失则抛出No credentials found. Please set up credentials.。AUTH_DATA 与 x-auth-data 透传容器化运行时的认证走另一条路径AUTH_DATA环境变量或请求头x-auth-dataBase64 编码的 JSON须含access_token。解析逻辑见 extract_access_token它同时兼容两类请求对象SSE 请求从request.headers读取bx-auth-dataStreamableHTTP 请求从 scope 字典的headers中读取。解析成功后token 通过auth_token_context.set()注入到该请求的上下文变量中并在请求结束finally块通过auth_token_context.reset()清理保证多请求间认证信息互不串扰。双传输层与命令行参数Server 同时暴露 SSE 与 StreamableHTTP 两种传输协议main 实现均由 Starlette ASGI 应用承载端点协议说明http://localhost:5000/sseSSE传统流式事件推送配套POST /messages/回传客户端消息http://localhost:5000/mcpStreamableHTTP新一代无状态 HTTP 传输支持 JSON 响应模式SSE 端通过SseServerTransport(/messages/)建立StreamableHTTP 端使用StreamableHTTPSessionManager默认statelessTrue无状态模式event_store置空。启动时的命令行参数如下对应 click 选项定义参数默认值说明--port5000或GOOGLE_SLIDES_MCP_SERVER_PORT环境变量HTTP 监听端口--log-levelINFO日志级别可选DEBUG/INFO/WARNING/ERROR/CRITICAL--json-responseFalse启用 JSON 响应替代 SSE 流仅对 StreamableHTTP 生效手工启动示例# 修改监听端口并开启调试日志 python server.py --port 8080 --log-level DEBUG # StreamableHTTP 端点返回 JSON 响应 python server.py --json-responseServer 注册名称为google-slides-mcp-server并在instructions中向模型声明了其能力边界Create and manage Google Slides presentations. You can create new presentations, add slides to existing presentations, and list available presentations.用于帮助接入的 Agent 理解该 Server 的用途。典型调用链与实战场景将以上工具串起来可支撑三类典型 AI 工作流1. 从零生成演示文稿create_presentation(title)→ 拿到编辑链接 →add_slide(presentation_id, title, content)逐页填充 →batch_update_presentation(presentation_id, requests)做精细排版插入图片、形状、设置格式。2. 演示文稿盘点list_presentations()列出 Drive 中全部演示 → 对每个 ID 调用get_presentation()获取页数与元信息 → 生成目录式报告。3. 内容提炼与二次创作summarize_presentation(presentation_id, include_notesTrue)提取全部文本含演讲者备注→ 交由 LLM 生成会议纪要、摘要或新的营销文案 → 再通过create_presentationadd_slide落地为新稿。总结Google Slides MCP Server 是 Klavis 生态中演示文稿自动化的标准接入点对外它以 6 个语义清晰的 MCP 工具覆盖了演示文稿的创建、读取、编辑与总结全流程对内server.py 在单一文件中优雅地完成了 OAuth 多级回退、SSE / StreamableHTTP 双传输与请求级 token 隔离。开发者既可通过 Klavis 托管服务零配置接入也可基于 Dockerfile 自托管将 Google Slides 无缝纳入 AI Agent 的工具箱。扩展阅读本 Server 与 Klavis 平台 OAuth 支持层的协同方式见 _oauth_support/README.md仓库内其他 Google 系 MCP Server如 Google Sheets、Google Drive采用相似的认证与工具设计范式可作为横向参考。许可证为 Apache 2.0详见 LICENSE贡献方式见 CONTRIBUTING.md。【免费下载链接】klavisKlavis AI: MCP integration platforms that let AI agents use tools reliably at any scale项目地址: https://gitcode.com/GitHub_Trending/kl/klavis创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考