站点工具
站点工具是 ChatGPT 对拟议的 WebMCP 标准的实现。借助 WebMCP, 网站可以在用户原本使用的界面之外,直接向 AI 智能体提供实用操作。 你和智能体可以使用同一个实时页面和已登录会话协同工作。
在 ChatGPT 桌面应用的内置浏览器中,ChatGPT Work 和 Codex 可以发现并使用可用的此类工具。
WebMCP 与 MCP 的区别
Model Context Protocol (MCP) 将 AI 应用连接到本地或远程服务器。其工具可以独立于打开的网页运行, 例如搜索服务或通过 API 管理记录。
WebMCP 允许网站将其 功能作为一组预定义工具提供给智能体。智能体访问网站时即可发现这些工具, 因此用户无需安装单独的 MCP server 或设置其他连接, 便可使用这些功能。
当你和智能体需要查看相同内容时,这种方式非常有用,例如 编辑画布或探索仪表板。包含 MCP server 的插件可以提供 独立于打开页面运行的集成。网站可以同时支持这两种方式。
在浏览器中的工作方式
在内置浏览器中打开网站,然后请 ChatGPT Work 或 Codex 协助 完成任务。如果页面提供站点工具,智能体可以发现并使用 与你正在查看的网站相关的操作。例如,文档 编辑器可以让智能体查找某个章节,或留下评论供你审阅。
在浏览器地址栏中选择 站点工具,即可查看网站 提供的工具。选择 可用的站点工具 可检查各个工具。 浏览器会在网站执行每项请求前进行检查,智能体 也可以检查页面以确认发生了哪些变化。如果有近期活动, 请选择 最近使用 打开 来源 并查看这些调用。
在此示例中,展开 可用的站点工具,检查 Margin 提供的工具。
工具归提供它们的页面所有。关闭页面或导航离开 可能会导致其工具不可用。如果没有合适的工具, 智能体可能仍可使用常规浏览器功能。
示例:探索 OpenAI 文档
ChatGPT Learn 和 OpenAI Developers 提供用于查找和阅读 文档的站点工具。在编辑器中选择 在 ChatGPT 中打开,即可在 桌面应用的浏览器中打开 Learn,并在旁边新建一个聊天,预先填入以下提示词供你发送。
提示词:
Find the documentation for building reusable skills, open the relevant page, and explain when I should turn a skill into a plugin.智能体可以使用这些工具搜索、阅读并打开相关页面:
| 工具 | 功能 |
|---|---|
search_openai_docs |
搜索 OpenAI 文档。 |
lookup_page |
按路径或 URL 读取文档页面。 |
lookup_context |
读取当前文档路由和选中的文本。 |
navigate_to_page |
在当前文档站点上打开匹配的页面。 |
generate_custom_guide |
启动自定义构建或学习指南,并返回其状态和链接。 |
Docs Agent 会异步生成自定义指南。收到链接并不 表示生成已经完成。
安全与用户控制
网站提供的工具定义和结果是不受信任的内容。工具的 名称或其声称只读取数据,并不能证明它实际执行的操作。网站 指令不会授权智能体分享无关信息或 执行敏感操作。
在内置浏览器中,每次工具调用都会在 运行前接受安全评审。常规的网站访问和确认策略仍然适用, 包括发送消息、购买、删除 数据或更改权限等后果重大的操作。浏览器会将每次调用与其 来源页面和工具注册信息关联。这些检查可以降低风险,但并不能 保证网站或其输出可信。
你可以在 设置 > 浏览器 > 权限 中关闭 启用站点工具。 在分享敏感信息或依赖某项变更之前,请检查网站、请求的操作和结果。
请通过 OpenAI 的 安全漏洞赏金计划报告安全漏洞。有关 AI 安全风险,请参阅 安全风险漏洞赏金计划。请遵循 各项计划的范围和提交说明。
将 WebMCP 添加到你的网站
你可以让 Codex 为正在开发的 Web 应用或 Site 添加 WebMCP 支持。说明你希望智能体能够 执行哪些操作,并要求 Codex 复用应用现有的逻辑和权限。
首先选择应用已支持的一项操作。例如:
- 仪表板允许智能体设置日期范围,并检查 图表背后的数据。
- 文档编辑器允许智能体查找章节、提出修改建议,或 留下评论供你审阅。
- 旅行规划器允许智能体比较选项并更新行程, 同时由你查看地图。
你也可以自行编写代码。在页面的 JavaScript 模块中检查 浏览器支持情况并注册工具。以下只读示例会返回 当前页面的标题:
if (typeof document.modelContext?.registerTool === "function") {
await document.modelContext.registerTool({
name: "get_page_title",
description: "Read the title of the current page.",
inputSchema: {
type: "object",
properties: {},
additionalProperties: false,
},
annotations: { readOnlyHint: true },
execute: async () => ({ title: document.title }),
});
}兼容的智能体可以发现 get_page_title 并获取页面的
当前标题。对于接受参数的工具,请在输入
schema 中描述参数,并在 execute 处理程序中使用这些参数调用应用的
现有逻辑。
保持输入范围明确,说明副作用,并返回足够的信息以便 验证结果。使用应用现有的身份验证、 授权和输入验证。为用户以及 不支持 WebMCP 的浏览器保留常规界面。
有关 API 详细信息和示例,请参阅 WebMCP 规范和 Chrome 开发者指南。