WebMCP — 浏览器代理交互
什么是 WebMCP?
WebMCP 是 W3C Community Group 草案提案,允许 AI 代理通过用户的浏览器而不是通过单独的 API 与网站交互。网站使用属性注释现有 HTML 表单,将它们声明为可调用的工具;浏览器通过新的 navigator.modelContext API 将这些工具公开给代理。该提案由 Google 和 Microsoft 支持,目前在 Chrome Canary 的实验性标志后可用。
这个名字是对 MCP(Anthropic 的 Model Context Protocol)的有意呼应,但两者是解决不同问题的不同规范。MCP 定义了代理调用服务器上工具的 JSON-RPC 协议。WebMCP 定义了浏览器 API,让代理调用页面上已经作为表单存在的工具。
为什么 WebMCP 重要
代理-网站集成的传统路径是:网站发布 API(OpenAPI)或 MCP 服务器,代理单独认证,调用在后通道上运行。这对第一方代理集成有效,但对具有有价值功能但没有 API 团队构建并行表面的网站长尾来说失效。
WebMCP 采取相反的方法:网站已经有做这件事的表单,用户已经登录,浏览器已经有会话。为什么要构建并行 API?用一些属性注释现有的表单,浏览器中的代理就可以直接调用它——免费继承用户的认证、网站的 CSRF 保护和浏览器的权限模型。
WebMCP 与 MCP 的区别
| MCP | WebMCP | |
|---|---|---|
| 谁调用谁 | 代理 → 服务器 | 代理 → 浏览器 → 服务器 |
| 代理运行位置 | 浏览器外 | 浏览器内或旁边 |
| 认证 | OAuth 2.1 / API 密钥 | 用户现有的浏览器会话 |
| 传输 | HTTP/SSE 上的 JSON-RPC | 浏览器内部 API(navigator.modelContext) |
| 在网站上构建什么 | 专用 MCP 端点 | 现有 HTML 表单上的属性注释 |
| 连接生命周期 | 跨会话持久 | 标签关闭时结束 |
| 发现 | MCP 注册表 / well-known | DOM 扫描 + /.well-known/webmcp.json 清单 |
架构几乎相反。MCP 为外部代理提供稳定的后端接口;WebMCP 为浏览器内代理提供对现有前端的访问。
WebMCP 如何工作
有两个协作部分:DOM 注释(每页)和可选的清单(每站点)。
1. 注释表单。 网站使用三个自定义属性将任何 HTML 表单标记为代理可调用:
<form tool-name="search-products" tool-description="Search the catalog by keyword">
<input type="text" name="q" tool-param-description="Search query, e.g. 'red shoes'">
<button type="submit">Search</button>
</form>
浏览器端 WebMCP 运行时扫描 DOM 中的 tool-name 元素,构建工具列表并公开给代理。
2. 清单。 网站可以发布 /.well-known/webmcp.json 声明可能不在每页可见的工具:
{
"spec": "webmcp/0.1",
"tools": [
{
"name": "search-products",
"description": "Search the product catalog",
"url": "/search",
"method": "GET",
"parameters": [
{
"name": "q",
"type": "string",
"description": "Search query"
}
]
}
]
}
WebMCP 与其他代理互操作层
| 规范 | 代理在哪里 | 公开什么 | 认证 |
|---|---|---|---|
| WebMCP | 浏览器内 | 注释的 HTML 表单 | 用户的会话 |
| MCP | 浏览器外 | 服务器上的 JSON-RPC 工具 | OAuth / API 密钥 |
| A2A | 任何地方 | 具有命名技能的整个代理 | 代理级认证 |
| OpenAPI | 任何地方 | 带 schema 的 REST 端点 | 每端点方案 |
| SKILL.md | 任何地方 | 散文操作手册 | 不适用 |
WebMCP 是唯一在用户浏览器内运行的。
当前状态
WebMCP 是 W3C Web Machine Learning Community Group 下的草案 Community Group 报告。截至 2026 年中:
- 规范在 webmachinelearning.github.io/webmcp 发布。
- 参考实现在 Chrome Canary 的实验性标志后。
- 没有在任何生产浏览器中发布。
- 规范预计在达到 W3C Working Draft 状态之前会改变。
今天发布 WebMCP 的网站是早期的——他们押注规范稳定和浏览器发布。
谁支持 WebMCP
- Google——Chrome 团队发布提案并发布原型。
- Microsoft——规范的共同编辑。
- W3C Web Machine Learning Community Group——治理机构。
如何将 WebMCP 添加到你的网站
- 选择重要的表单。
- 添加属性。
tool-name、tool-description、tool-param-description。 - 使用小写连字符名称。
search-products,不是searchProducts。 - 为代理而不是人类编写描述。
- 发布清单。
/.well-known/webmcp.json。 - 在 Chrome Canary 中测试 启用实验性标志。
扫描器标记的常见错误
- 没有清单——
/.well-known/webmcp.json返回 404。 - 清单返回 HTML——SPA 通配路由。
- 没有描述的表单注释。
- 无效的工具名称。
- 非表单元素上的注释。
FAQ
WebMCP 是 MCP 的分支吗?
不是。它们是来自不同工作组的独立规范,具有独立的架构。
Chrome 的 WebMCP 会在 Firefox 或 Safari 中工作吗?
目前不会。
如果我已经有 MCP,我应该添加 WebMCP 吗?
如果你的服务有用户今天填写表单的网站,是的。
AgentGrade 会惩罚没有 WebMCP 的网站吗?
不会。
WebMCP 安全吗?
安全模型继承自浏览器:same-origin 强制、用户的现有会话、CSRF 保护。
如果我在 iframe 中托管我的表单,什么取代了 /.well-known/webmcp.json?
Same-origin 规则适用。
WebMCP 适用于 SPAs 吗?
是的,但在代理扫描时表单必须存在于 DOM 中。
WebMCP 何时发布到稳定 Chrome?
没有公开时间表。
规范成熟度
草案,未发布。 WebMCP 是 W3C Community Group 草案,仅在 Chrome Canary 的实验性标志后可用。
了解更多
- WebMCP 规范 — W3C 草案
- WebMCP GitHub 仓库
- Chrome: 何时使用 WebMCP 和 MCP
- MCP — 服务器端对应物
- A2A — 代理对代理协议