WebMCP:让网站对 AI Agent 开放能力的浏览器提案
WebMCP 是浏览器工具接口提案,使网站显式提供可调用能力。本文介绍预览 API、接入片段,以及权限和用户确认的实现责任。
直接回答:WebMCP 允许网站向兼容客户端声明结构化工具,补充依靠页面解析、点击和截图的自动化方式。它仍处于预览阶段,不代表所有浏览器或 Agent 已支持,也不自动提供业务授权与高风险操作确认。
现在的 AI 网页自动化有多脆
网页交互可采用多种方式,除已有 HTTP API 外,常见包括:
- HTML 解析:抓整个 DOM 找元素——页面改版即崩,Token 消耗巨大
- 浏览器自动化(Playwright/Selenium):模拟点击——选择器一变就废
- 视觉模型:截图识图——更贵更慢,还容易看错
共同缺陷:脆弱、低效(整个 DOM/截图都进上下文)、AI 不理解应用逻辑、网站仍可通过认证、授权和限流约束请求。
WebMCP 的思路:网站主动声明
范式反转——从"AI 猜测怎么操作页面"变成"网站告诉 AI 我能做什么":
- 网站用标准 API 声明工具清单(名称、参数、说明)
- Agent 发现工具、按契约调用,浏览器作为受信中间层
- 网站方掌控"开放什么、怎么开放"
两种 API
1. 声明式 API(零代码门槛)
给标准 HTML 表单加几个属性,表单立刻变成 AI 可调用的工具:
<form toolname="search_flights" tooldescription="搜索航班">
<input name="from" required>
<input name="to" required>
<button>查询</button>
</form>
此为提案示意,需兼容浏览器与实验开关,并检查提交语义和表单校验。
2. 命令式 API(复杂交互)
JavaScript 注册带完整逻辑的自定义工具:
navigator.modelContext.registerTool({
name: 'book_flight',
description: '预订指定航班',
inputSchema: { type: 'object', properties: { flightId: { type: 'string' } }, required: ['flightId'] },
execute: async (args) => { /* 授权、确认及后端调用:此处省略 */ }
});
多步流程、动态校验、复杂状态由 execute 与后端配合实现。
实战场景:订机票
Agent 收到"帮我订明天杭州飞北京的航班":发现网站的 search_flights 与 book_flight 工具 → 结构化调用查询 → 展示选项给用户确认 → 调用预订。全程无抓取、无点击模拟,网站改版不影响契约。
安全与未来
这是处于演进中的浏览器能力,应检测 navigator.modelContext 是否存在并核对当前试验条件。结构化接口不能保证免受提示注入、越权和批量滥用。
下单与付款需要网站自己实现身份认证、授权、用户确认、幂等和审计;不要假设声明工具后浏览器自动替你加确认。网页工具不会自动成为远程 MCP 服务。
常见问题(FAQ)
Q:WebMCP 等于远程 MCP 吗?
A:不是。网页内的浏览器接口与 MCP 客户端/服务端协议要分别集成。
Q:示例能直接用于所有浏览器吗?
A:不能,需核对支持状态;预订代码是未实现副作用的局部示意。
Q:能自动防滥用吗?
A:不能。认证、限流、确认和后端参数校验仍必需。
参考资料
资料核对日期:2026 年 9 月 29 日。本文基于公开文档整理,代码片段和评估方案未作独立运行或性能验证;厂商测试结果已注明来源。