更新于 2026-10-11。WebMCP 是向浏览器代理公开网站操作的 API 提案。支持它的代理可以读取工具用途、输入和执行方式,减少对页面布局的猜测。它与可用的 HTML 界面互补;没有 WebMCP 的网站仍可能被代理通过常规界面操作。
WebMCP 提供什么
当前编辑草案描述的是浏览器接口,尚不是正式的 W3C Recommendation。浏览器实现与代理集成可能不同。它也不同于连接应用、工具与数据服务的 MCP。
一个工具应对应真实能力,例如搜索文章、查询库存或修改偏好。描述它改变什么、返回什么,并在应用和服务端继续执行输入校验、账户权限与必要的确认。
声明式还是命令式?
| 方式 | 适用起点 | 需要提供的内容 |
|---|---|---|
| 声明式表单 | 已有搜索或提交表单 | 工具属性、有标签和名称的输入、可用的提交处理 |
| 命令式 JavaScript | 依赖应用逻辑的动态操作 | 名称、描述、输入 schema 和 execute 回调 |
两者是公开操作的不同途径。只使用其中一种,不等于不合规;不需要为分数额外添加没有用途的第二条路径。
声明式搜索表单
下面假设应用已有 /search 搜索处理。普通访客及不支持 WebMCP 的浏览器继续使用原表单。
<form action="/search" method="get"
toolname="searchSite"
tooldescription="Search the public articles on this website by keyword">
<label for="site-query">Search articles</label>
<input id="site-query" name="q" type="search" required>
<button type="submit">Search</button>
</form>
toolname 标识操作,tooldescription 解释用途。toolautosubmit 是可选属性,应结合操作效果和所测浏览器决定是否使用;它不能替代授权,也不保证代理跳过用户确认。
命令式只读示例
在有标题的页面加载一次此脚本。能力检测让不支持 API 的浏览器保持原有功能。回调只读取本页文字,不需要外部接口。
async function registerPageTools() {
const context = document.modelContext;
if (!context) return; // Keep the normal page available.
const registration = new AbortController();
await context.registerTool({
name: "getPageHeading",
description: "Read the first h1 or h2 heading on this page. No data is changed.",
inputSchema: {
type: "object",
properties: {
level: { type: "string", enum: ["h1", "h2"], description: "Heading level to read" }
},
additionalProperties: false
},
annotations: { readOnlyHint: true, untrustedContentHint: false, consequentialHint: false },
execute: async ({ level = "h1" }) => {
if (!["h1", "h2"].includes(level)) throw new Error("Invalid heading level");
return { heading: document.querySelector(level)?.textContent?.trim() || "" };
}
}, { signal: registration.signal });
window.addEventListener("pagehide", () => registration.abort(), { once: true });
}
void registerPageTools();
当前草案使用 document.modelContext 与 execute。旧教程可能使用 navigator.modelContext、handler 或 callback,应先核对它们描述的浏览器版本。单页应用还需把注册清理接到页面或组件生命周期。
浏览器支持与测试
Google 在 2026-02-10 宣布早期预览。仅凭版本号不能断定支持。先检测实际浏览器中的 API,再用兼容客户端分别验证发现和调用,参见浏览器支持指南。
测试有效输入、无效输入、不支持 API 的环境以及原有人类操作流程。工具被注册,不代表执行成功。会改变状态的操作还要验证权限与失败处理。
会话、安全与搜索
浏览器执行可以使用现有站内会话,但不能因此授予无限权限。应用和服务端仍须校验授权。工具返回的数据可能被代理在浏览器外处理;WebMCP 本身不提供隐私保证。
使用安全上下文,保留 CSP 防护,通过合适的 nonce、hash 或外部脚本授权自己的代码。无需为了 WebMCP 开放所有内联脚本或取消防止页面被嵌入的保护。
WebMCP 支持和高分不保证 Google 排名。Google 的 AI 搜索说明继续强调可抓取、可读取和有用的页面。
检查一个实现
运行免费检测,查看逐项证据。扫描器观察页面与工具注册,不执行目标工具;应另外完成浏览器调用测试。继续阅读评分方法和当前工具注解。
