ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Zoom MCP OAuth 配置完全指南:从 General App 创建到用户级 Token 接入

Zoom MCP OAuth 配置完全指南:从 General App 创建到用户级 Token 接入 Zoom MCP OAuth 配置完全指南从 General App 创建到用户级 Token 接入【免费下载链接】knowledge-work-pluginsOpen source repository of plugins primarily intended for knowledge workers to use in Claude Cowork项目地址: https://gitcode.com/GitHub_Trending/kn/knowledge-work-plugins导读本文围绕 knowledge-work-plugins 仓库中 Zoom 插件partner-built/zoom-plugin的 Zoom MCP 认证配置展开完整讲解如何为托管在mcp-us.zoom.us的 Zoom MCP Server 配置General App 用户级 OAuth覆盖应用创建、MCP 专属 scope 授权、授权码换取 Token、Refresh Token 轮换、AI Companion 功能前提以及环境变量注入的全流程。读完本文你将能够独立完成一次可用的 Zoom MCP 接入并具备排查-32001权限错误与 Token 过期问题的实战能力。一、为什么 Zoom MCP 需要用户级 OAuth在配置之前先理解 Zoom MCP 的认证模型。根据仓库中的 concepts/mcp-architecture.mdZoom 通过托管 MCP 表面暴露 AI 工具客户端通过 MCP 协议tools/list发现工具用户 OAuthUser OAuth是文档化的主执行路径即每个用户用自己的 Zoom 账号授权得到代表该用户身份的 Bearer Token仓库明确不推荐依赖Server-to-ServerS2SOAuth作为 MCP 认证模型——S2S 的account_credentials无用户上下文与 MCP 工具的按用户授权模型不匹配。Token 如何送达 MCP 服务器查看插件捆绑的连接器配置 .mcp.json可以看到三个 MCP 服务器均通过请求头注入 Bearer Token{ mcpServers: { zoom-mcp: { type: http, url: https://mcp-us.zoom.us/mcp/zoom/streamable, headers: { Authorization: Bearer ${ZOOM_MCP_ACCESS_TOKEN} } }, zoom-docs-mcp: { type: http, url: https://mcp.zoom.us/mcp/docs/streamable, headers: { Authorization: Bearer ${ZOOM_DOCS_MCP_ACCESS_TOKEN} } } } }也就是说连接器本身不做 OAuth 流程它只负责把ZOOM_MCP_ACCESS_TOKEN作为 Bearer Token 附加到请求头。整个授权、换 Token、刷新的工作由你或你的应用完成。这正是 concepts/oauth-setup.md 这篇指南的核心任务。二、Step 1创建启用用户级 OAuth 的 General App2.1 创建步骤登录 Zoom Marketplace进入Develop → Build App创建General app通用应用将应用配置为user-level OAuth用于按用户授权的 MCP 路径不要选择 S2S设置应用的 Redirect URL回调地址用于客户端或本地测试环境记下应用的Client ID与Client Secret后续换 Token 会用到。2.2 没有现成回调端点怎么办三种开发期方案如果本地应用还没有真正实现回调处理原文档给出了三种务实选择方案 0localhost手动复制授权码http://localhost:3000/oauth/zoom/callback本地应用尚未真正处理回调时浏览器可能显示加载失败页面但你依然可以从浏览器地址栏的 URL 中复制code和state参数手动粘贴到 Claude 或终端流程中继续完成 Token 交换。优点无需隧道、无需第三方捕获服务只需要一次性授权码时速度最快授权码始终留在本机。缺点每次都要手动复制粘贴没有自动换码和自动刷新流程频繁重复授权时不够方便。方案 1ngrok隧道 本地回调服务器本地应用: http://localhost:3000/oauth/zoom/callback 公网回调: https://your-subdomain.ngrok.app/oauth/zoom/callback优点最接近真实 OAuth 流程——你自己的应用直接收到回调可在本地随时检查请求适合需要自动换码的场景。缺点需要同时运行本地服务器与隧道配置量比纯捕获端点略多相当于把本地服务暴露到公网回调端点应保持狭窄范围并临时使用。方案 2webhook.site一次性回调捕获https://webhook.site/your-token优点只想捕获一次授权重定向时最快无需本地服务器方便查看查询字符串并复制code和state。缺点不是完整的 OAuth 后端换 Token 仍需自己完成不适合重复开发流程和团队使用授权码是敏感信息仅适合短期开发测试避免使用共享或长期存活的捕获 URL。实用建议只需要一次性授权码且能手动复制时用localhost正在构建真实集成或预计会反复执行流程时用ngrok还没有回调处理器、只想快速测试时用webhook.site。三、Step 2配置 MCP 专属细粒度 Scopes关键事实Zoom MCP 使用的 scope 集合与旧的宽泛 REST scope 不同见 SKILL.md 的 Critical Notes。必须为应用配置下表所示的 MCP 专属细粒度 scope否则对应工具调用会被拒绝。产品域ScopeZoom 标签说明对应工具AI Companionai_companion:read:search跨 Zoom Meeting、Zoom Chat、Zoom Doc 搜索按查询返回最相关内容语义 MCP 搜索Meetingmeeting:read:search搜索并查看会议search_meetingsMeetingmeeting:read:assets查看会议资产get_meeting_assetsRecordingcloud_recording:read:list_user_recordings列出某用户的全部云录制recordings_listRecordingcloud_recording:read:content读取录制内容get_recording_resourceZoom Docsdocs:write:import通过导入创建新文件create_file_with_contentZoom Docsdocs:read:export以 Markdown 格式读取文件内容get_file_content这些 scope 在代码侧的印证主 Zoom MCP 服务器的受保护资源元数据protected-resource metadata在 concepts/mcp-architecture.md 中被明确列出与上表一一对应工具与 scope 的映射关系同时记录在 references/tools.md 的 Verified scope 列中。3.1 按连接器分配 scope主 Zoom MCP 连接器推荐最小集使用 General App 用户级 OAuth并在同一个应用上包含上表全部 7 个主 MCP scope可覆盖搜索、资产、录制三大能力专用 Zoom Docs MCP 连接器只需要docs:write:import创建 Docs与docs:read:export读取 Docs产出的 Token 导出为ZOOM_DOCS_MCP_ACCESS_TOKENWhiteboard MCP使用独立的 scope 集合whiteboard:read:list_whiteboards、whiteboard:read:whiteboard等详见 whiteboard/SKILL.md不要混在主 Zoom MCP 应用中。四、Step 3用户授权并交换 Token4.1 构造授权 URLhttps://zoom.us/oauth/authorize?response_typecodeclient_idYOUR_CLIENT_IDredirect_uriYOUR_REDIRECT_URI如果需要按请求自定义 scope可在授权 URL 中追加scope必选 scope与optional_scope可选 scope参数详见 partner-built/zoom-plugin/skills/oauth/SKILL.md 中关于高级授权的说明state参数可用于 CSRF 防护官方推荐在回调时校验。4.2 用户登录并批准 scope以需授权的 Zoom 用户身份登录批准应用请求的 scope。若账号属于需要管理员预审批Pre-Approval的组织用户需先向管理员申请审批参见 oauth/SKILL.md。4.3 复制授权码并交换 Token授权成功后浏览器重定向到回调地址URL 中携带code。用curl交换 Tokencurl -X POST https://zoom.us/oauth/token \ -u CLIENT_ID:CLIENT_SECRET \ -d grant_typeauthorization_codecodeCODEredirect_uriREDIRECT_URI若使用webhook.site回调会以捕获请求的形式到达code位于查询字符串中应立即交换 Token不要长期复用同一个捕获 URL。4.4 Refresh Token 是单次使用的保存返回的access_token与refresh_token并严格遵守以下 refresh token 轮换纪律每次成功刷新都可能返回新的 refresh token必须将新返回的 refresh token 与新的 access token原子化持久化同时写入成功刷新后立即弃用旧 refresh token避免对同一份存储 token 发起并发刷新请求。这一规则在 oauth/SKILL.md 中被列为最常见的坑每次刷新都会返回新 refresh token旧 token 随即失效未保存新 token 会导致 4735 类错误。五、Step 4启用 AI Companion 功能语义检索的前提Smart Recording 与 Meeting Summary 是让语义会议搜索、会议资产、含转写内容的录制检索产生有用结果的功能前提。在 Zoom Web 门户中进入Admin → Account Management → Account Settings → AI Companion启用Smart Recording启用Meeting Summary。⚠️ 重要这两项设置不能替代上文第 3 节的 OAuth scope——scope 解决能不能调用AI Companion 功能解决检索内容有没有用见 SKILL.md。缺少这两项时search_meetings可能出现结果稀疏或低质量的情况troubleshooting/common-errors.md 中有对应描述。六、Step 5把 Token 提供给捆绑的 MCP 连接器6.1 导出环境变量插件读取的环境变量在 .mcp.json 中通过${ZOOM_MCP_ACCESS_TOKEN}占位符引用export ZOOM_MCP_ACCESS_TOKENYOUR_ACCESS_TOKEN export ZOOM_DOCS_MCP_ACCESS_TOKENYOUR_DOCS_ACCESS_TOKEN6.2 验证连接重启 Claude Code 或重新启用插件让捆绑的 MCP 服务器以新 Token 重新启动Token 是启动时注入请求头的见 .mcp.json确认客户端能看到主服务器工具recordings_list、search_meetings、get_meeting_assets、get_recording_resource对专用 Docs 服务器确认能看到create_file_with_content和get_file_content如果客户端暴露协议检查能力以tools/list作为工具清单的权威来源concepts/mcp-architecture.md 强调不要硬编码工具数量一律以实时tools/list为准跑一个简单工具如recordings_listuserId: me验证 Token 是否带有正确的 MCP scope。七、Token 生命周期与刷新7.1 生命周期速查属性详情Access token 有效期约 1 小时刷新方式用refresh_token换取新的access_token和替换用refresh_token客户端更新更新ZOOM_MCP_ACCESS_TOKEN后重启 Claude Code 或重新启用插件7.2 刷新交换命令curl -X POST https://zoom.us/oauth/token \ -u CLIENT_ID:CLIENT_SECRET \ -d grant_typerefresh_tokenrefresh_tokenYOUR_REFRESH_TOKEN7.3 刷新成功后的四项动作替换存储的 access token替换存储的 refresh token轮换将已使用的旧 refresh token 视为作废若通过环境变量注入 Token重启 Claude Code 或重新启用插件。关于 refresh token 的有效期oauth/SKILL.md 提示用户级流程的 refresh token 生命周期约 90 天较为常见但应以运行时错误为准并在刷新失败后回退到重新授权流程。八、环境变量汇总ZOOM_CLIENT_IDyour_client_id ZOOM_CLIENT_SECRETyour_client_secret ZOOM_MCP_ACCESS_TOKENyour_access_token ZOOM_DOCS_MCP_ACCESS_TOKENyour_docs_access_token ZOOM_REFRESH_TOKENyour_refresh_token其中ZOOM_MCP_ACCESS_TOKEN与ZOOM_DOCS_MCP_ACCESS_TOKEN是连接器实际消费的变量见 .mcp.json其余为 OAuth 应用自身的凭据与刷新凭据供换码与刷新流程使用。Whiteboard 连接器额外读取ZOOM_WHITEBOARD_MCP_ACCESS_TOKEN见 whiteboard/SKILL.md。九、常见错误与快速排查结合 troubleshooting/common-errors.md 与 RUNBOOK.md 的快速修复表最常见的几类问题如下症状可能原因修复-32001 Access token is requiredToken 环境变量缺失或为空导出ZOOM_MCP_ACCESS_TOKEN重启 Claude Code-32001 Invalid access token, does not contain scopes:[meeting:read:search]缺少语义搜索 scope补meeting:read:search并重新签发用户 Token-32001 Invalid access token, does not contain scopes:[meeting:read:assets,...]缺少会议资产 scope补meeting:read:assets并重新签发用户 Token-32001 Invalid access token, does not contain scopes:[cloud_recording:read:list_user_recordings,...]缺少录制列表 scope补cloud_recording:read:list_user_recordings-32001 Invalid access token, does not contain scopes:[cloud_recording:read:content]缺少录制内容 scope补cloud_recording:read:content-32602 Can not found tool: ... in this MCP Server端点表面或工具名错误重新tools/list按当前服务器的工具名调用Docs 请求走专用 Docs 服务器-32603 Call handle error缺少必填参数或服务器端处理失败对照tools/list实时 schema 补参数后重试上游 400 invalid param参数值非法如 Docs 创建的parent_id无效修正具体参数值后重试语义搜索无有效结果未启用 AI Companion 功能或数据未索引启用 Smart Recording Meeting Summary放宽日期窗口或回退到recordings_list值得注意的是-32001类错误在 RUNBOOK.md 中会直接报出缺失的 scope 名如does not contain scopes:[meeting:read:search]这是定位哪个 scope 没配的最快路径。另外如果从get_recording_resource等工具拿到直链 URL直接下载时仍需携带Authorization: Bearer YOUR_TOKEN这些 URL 默认不是公开的。十、关联资源MCP 架构与能力模型concepts/mcp-architecture.md工具清单与 scope 验证references/tools.md错误码全集references/error-codes.md5 分钟预检清单RUNBOOK.mdOAuth 全量实现模式含 PKCE、S2S、错误码 4700–4741oauth/SKILL.md语义检索与录制检索实操examples/transcript-retrieval.mdWhiteboard MCP 独立配置whiteboard/SKILL.md【免费下载链接】knowledge-work-pluginsOpen source repository of plugins primarily intended for knowledge workers to use in Claude Cowork项目地址: https://gitcode.com/GitHub_Trending/kn/knowledge-work-plugins创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表