用途:在 Cloudflare Workers 上搭建 MCP(Model Context Protocol)服务器,为 ChatGPT 扩展自定义工具与交互式小组件(HTML/JS UI,在 iframe 中渲染)。架构为 ChatGPT → MCP 端点(JSON-RPC 2.0)→ 工具处理器 → Widget 资源(HTML)。
主要能力:注册工具(ListToolsRequestSchema)与执行工具(CallToolRequestSchema);通过 annotations.openai.outputTemplate 绑定 ui://widget/ 小组件;用 _meta.initialData 向小组件传初始数据;由 Hono 提供路由与 CORS,Cloudflare ASSETS 绑定托管 Widget 静态资源。
使用方式:用 npm create cloudflare@latest 初始化项目,安装 @modelcontextprotocol/sdk、hono、zod;wrangler.jsonc 需开启 nodejs_compat 并配置 assets.binding;/mcp/* 路由必须允许来源 https://chatgpt.com;部署用 npx wrangler deploy,可用 npx @modelcontextprotocol/inspector 调试。
关键限制与已知问题:Widget URI 必须用 ui://widget/ 前缀,MIME 必须为 text/html+skybridge;ASSETS 绑定名要与 TypeScript 一致;Workers 有 100 秒无活动超时,SSE 需每 30 秒心跳;边缘平台避免 elicitInput()(字符串代码生成被禁),可用工具参数替代;无服务器部署应使用 Streamable HTTP 而非有状态 SSE;OAuth 本地与生产需两套应用;小组件状态建议低于 4k tokens,且仅存 UI 状态;window.openai.uploadFile() 仅支持 image/png、image/jpeg、image/webp;小组件发起的工具调用需在服务端标记 widgetCallable: true;CSP 阻止第三方 CDN 脚本;Hono 1.25.0–1.25.2 会覆盖全局 Response 影响 Next.js,建议升级到 1.25.3+ 或改用 webStandardStreamableHTTPServerTransport。工具调用延迟目标建议低于 200ms。版本与依赖细节以资料所述为准,更多内容暂未提供。