PuppyIP 资源中心
AI 工具动态 9 分钟 发布于 2026-09-30

ChatGPT 插件如何接入 MCP Events?Webhook 订阅、验签与测试指南

如果你开发的 ChatGPT 插件需要在项目评论或应用消息出现时启动自动化,MCP Events 提供的是“用户订阅事件、你的 MCP 服务器发送签名 webhook”的路径。先确认插件和账号能看到事件入口,再实现事件目录、订阅、callback 验证与投递;不要把拟议规范、公开文档和每个账号实际可用混为一谈。

ChatGPT 插件 MCP Events Webhook OpenAI DevDay 2026 MCP 2.0

服务对象与地域限制

PuppyIP 仅面向海外合规企业及其授权人员提供服务,不面向中国大陆地区开放或提供代理服务。本服务仅限用于中国大陆境外的合法业务活动,严禁在中国大陆境内使用本服务。

代理 IP 或服务器位于境外,不改变上述限制。不得通过中转、转接、共享或转售向中国大陆境内的最终使用者提供本服务。使用前请阅读用户服务协议。

本文要点

  • OpenAI 在美国时间 2026 年 9 月 29 日的 DevDay 公布插件扩展及对拟议 MCP Events 规范的支持;官方回顾将两项标为所有套餐,但当前账号与客户端入口仍须实测核对。
  • MCP Events 的 ChatGPT 集成要求 MCP 2.0 协议版本 2026-07-28;当前文档支持 webhook 投递和 callback 验证,不支持 polling、streaming 与草案中的 gap/terminated 通知。
  • 服务器须通过 server/discover 声明 events,在已认证 MCP endpoint 提供 events/list、events/subscribe、events/unsubscribe,并按用户权限过滤可发现及可订阅的事件。
  • 订阅激活前要验证 HTTPS callback;投递使用 Standard Webhooks 签名、稳定 eventId 和 X-MCP-Subscription-Id。重复订阅、重试及乱序投递需要幂等处理。
  • 插件扩展的侧栏、面板与文件查看器是界面能力,MCP Events 是事件触发能力;现成 Gmail/Slack/GitHub 任务也不是自行实现插件事件服务器。

先确认发布范围:插件扩展与 MCP Events 是两件事

OpenAI 的 <a href="https://openai.com/index/devday-2026-recap/">DevDay 2026 官方回顾</a>把 Plugin Extensions 和 MCP Events 分列公告,均标为面向所有套餐。插件扩展让开发者给插件增加侧栏主页、交互面板、文件查看器等界面;MCP Events 则让用户选择要监控的连接应用事件,并在事件到达时按自己的指令启动 ChatGPT 自动化。回顾使用的是“拟议 MCP Events 规范”措辞,不应写成规范已经最终定稿。

<a href="https://developers.openai.com/plugins/build/extensions">插件扩展文档</a>进一步说明:Web 上 Free 与 Go 的扩展体验仍是 coming soon,composer mentions 只在 ChatGPT 桌面应用中提供。因此“回顾标为所有套餐”不能替代逐客户端、逐账号的入口核对。本文讲开发者如何接入事件,不是 Gmail、Slack、GitHub 现成事件任务的开通教程;现成任务的套餐和管理员限制见<a href="/resources/chatgpt-event-triggered-shared-tasks-guide">ChatGPT 事件触发任务指南</a>。

准备 MCP 2.0 服务器、持久订阅与出站 HTTPS

<a href="https://developers.openai.com/plugins/build/mcp-events">OpenAI MCP Events 开发文档</a>要求插件所连服务器支持 MCP 2.0、协议版本 2026-07-28,并可持久保存订阅及向 callback URL 发起出站 HTTPS。当前 ChatGPT 集成只支持 webhook 投递与 callback 验证;polling、streaming、草案中的 gap 和 terminated 控制通知都不在支持范围。先选择一个影响小的事件,例如特定测试文档的 comment.created,而不是一开始监控全组织消息。

设计事件时明确 owner、过滤参数、数据最小集和保留时长。评论正文是应用数据,不能当成改变代理行为的系统指令;若后续动作会创建 PR 或写回应用,需要在用户授权、最小权限和人工检查范围内设计。外部代理或网络出口只影响你的服务器能否安全连接 callback,不能代替 MCP 版本、插件资格或应用权限。

第 1 步:公开事件目录与可订阅参数

在 server/discover 的 capabilities 中声明 events,并在与工具相同的已认证 MCP endpoint 实现 events/list、events/subscribe、events/unsubscribe。events/list 要返回稳定事件名、webhook delivery、订阅用的 inputSchema 与投递数据的 payloadSchema;如只想让用户关注某个文档,提供 document_id 过滤器,并在服务器端实际执行过滤。目录分页时按文档处理 nextCursor/cursor。

只返回当前连接账号有权发现的事件。订阅前再次核对该账号对事件及过滤对象的权限,不要因为用户猜到 document_id 就允许监听;事件触发后读取或改写对象仍受原应用授权约束。若事件没有出现在插件页,先确认 server/discover 和 events/list 的响应、身份验证及插件重新扫描,不要先改 DNS 或代理。

第 2 步:创建订阅并验证 callback

ChatGPT 调用 events/subscribe 时会提供事件名、过滤参数、webhook URL 和 whsec_ 签名 secret。服务器应校验事件与参数,确认 secret 的 Base64 内容解码后为 24–64 字节,并持久化订阅 owner、过滤器、callback、secret 与到期时间。以身份、callback、事件名和参数确定稳定订阅 ID;参数用规范化 JSON 比较,让同一次订阅重试只刷新原记录,不产生第二条监听。

激活投递前,向 HTTPS callback 发送带签名的一次性短期 challenge,并要求 2xx 与原 challenge 相同;失败按文档返回 -32015 CallbackEndpointError。连接时解析并验证目标地址,阻止本地或私网地址且不跟随重定向;TLS 仍按原 hostname 验证。这样可以避免把 callback 变成访问内网的入口,也能区分验证失败与普通业务事件投递失败。

第 3 步:签名投递、确认与停止订阅

匹配过滤器时,投递包含 eventId、name、带时区的 ISO 8601 timestamp、data 和 cursor 的事件对象;业务字段放在 data 内。请求按 Standard Webhooks 对准确的 body 字节签名,并带 webhook-id、webhook-timestamp、webhook-signature、X-MCP-Subscription-Id。官方上限是单次请求正文 256 KiB;大记录只传摘要和可读取原文的工具。不要把 secret 或用户私有内容写进公开日志。

callback 的 2xx 仅表示收到事件,ChatGPT 后续异步处理。短暂失败按有界退避重试,重试保留同一 eventId、重新生成签名时间与签名;410 和 413 不重试。事件可能乱序,任何会修改外部系统的工具都要用 eventId 等稳定键防止重复操作。用户停止监控时处理 events/unsubscribe、检查归属并停止投递;断开账号或撤销资源权限时也要让旧订阅失效。

第 4 步:在插件页和测试聊天里走完闭环

先按<a href="https://developers.openai.com/plugins/deploy/connect-chatgpt">官方连接与测试说明</a>把开发版 MCP 服务器接到 ChatGPT,并确认插件页能列出事件与工具。随后在新聊天中请 ChatGPT 监控一个测试对象,检查服务器实际收到 events/subscribe、challenge 验证通过、订阅被保存;在应用侧制造一个匹配事件,确认 webhook 收到 2xx,且 ChatGPT 在该聊天中收到预期数据。再制造一个不匹配过滤器的事件,确认它没有投递;最后取消监控,确认 events/unsubscribe 生效。

补测重复订阅、服务器重启后的订阅刷新、失去对象权限、无效签名、重复 eventId、批量事件和写回自身引发的反馈循环。验证失败先看 callback challenge、TLS、目标地址检查和 secret;事件收到却没有预期动作,则看订阅过滤、用户指令、权限和异步运行状态。只有 DNS、TLS 或连接超时等证据才进入网络排查;可参照<a href="/resources/proxy-connection-troubleshooting-checklist">代理连接排查清单</a>。

上线判断与未确认范围

截至北京时间 2026 年 9 月 30 日,官方已公开 MCP Events 实现文档和测试流程,DevDay 回顾也列出所有套餐;这不证明每个账号、地区、客户端和工作区现在都显示同样的插件事件入口。插件扩展文档明确标出 Free/Go Web 体验尚待推出、composer mentions 限桌面。正式开放阶段、独立的事件审核条件以及某个具体账号的可用性,须以当前插件页、提交反馈和后续官方说明核实。

发布前保留测试账号、插件版本、MCP 版本、事件 schema、订阅过滤、callback 验证、签名与重试日志的脱敏证据,以及撤权后的停投递结果。若事件目录暴露无权限对象、callback 验证不稳或同一事件重复写入,就停止扩大范围;不能因 DevDay 公告而跳过这些检查。更广的大会公告及其预览状态见<a href="/resources/openai-devday-2026-developer-announcements-guide">DevDay 2026 总览</a>。

资料来源

常见问题

MCP Events 已经是最终标准吗?

不是。OpenAI 的 DevDay 回顾称支持拟议 MCP Events 规范;当前 ChatGPT 开发文档明确支持 webhook 和 callback 验证,但不支持草案中的 polling、streaming、gap 与 terminated 通知。

只用现成的 Gmail、Slack 或 GitHub 任务,需要自己实现 events/subscribe 吗?

不需要。本文针对开发自己的 ChatGPT 插件与 MCP 服务器。现成事件任务由 ChatGPT Work 及受支持应用提供,套餐、管理员策略和应用连接另按其官方说明核对。

为什么插件页看不到我定义的事件?

先确认 MCP 2.0 版本、server/discover 的 events capability、已认证 endpoint 的 events/list、当前账号可发现的事件和插件重新扫描;随后再检查账号与客户端入口。

订阅成功了,为什么事件没有触发自动化?

逐项检查过滤参数、订阅是否到期、callback challenge、HTTPS/TLS、签名头、2xx 回执和异步运行状态。2xx 只确认 webhook 收到,不保证后续动作已经完成。

重试 webhook 会让 ChatGPT 重复处理吗?

可能有重复或乱序投递。重试保留同一 eventId,并让会写入外部系统的工具按稳定键幂等;410 或 413 不应重试。

所有套餐现在都能在 Web 上使用插件扩展和 MCP Events 吗?

DevDay 回顾把两项公告标为所有套餐,但扩展文档仍写明 Web 上 Free/Go 的扩展体验 coming soon,且 composer mentions 只在桌面应用。具体账号、入口和审核状态必须现场核对。