什么是 WebMCP?浏览器工具、实现示例与验证

February 21, 2026
精选文章
了解 WebMCP 的声明式表单与 document.modelContext 工具,使用当前示例实现真实能力,并区分扫描证据和浏览器调用测试。
什么是 WebMCP?浏览器工具、实现示例与验证
webmcp
ai 代理
web 开发
chrome 146
w3c

更新于 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 搜索说明继续强调可抓取、可读取和有用的页面。

检查一个实现

运行免费检测,查看逐项证据。扫描器观察页面与工具注册,不执行目标工具;应另外完成浏览器调用测试。继续阅读评分方法和当前工具注解。

什么是 WebMCP?浏览器工具、实现示例与验证 | WebMCP Verify