News Hacker|极客洞察

🤔WebMCP 提案:让网页向 LLM 暴露工具,引发安全、可访问性与采用争论
谁来处理 LLM 滥用网站权限,免得互相推责?

🎯 讨论背景

WebMCP 是一套提案,目标是在网页内以结构化工具接口向 LLM 驱动的代理公开站点功能,Chrome 也发布了早期预览并在 GitHub 有相应仓库和示例实现。讨论的核心问题是页面内暴露工具(WebMCP)与服务器端 MCP、静态技能文件(SKILL.md)或直接公开 OpenAPI 之间的权衡。评论围绕安全(提示注入、cookie/权限)、可访问性(accessibility tree、ARIA、AccessKit)、开发成本与商业激励、以及代理与模型调用接口的技术设计展开,并引用了 Playwright、演示视频与自动化生成工具作为实践参考。

📌 讨论焦点

安全与隐私风险

多位评论注意到提案里“Security and privacy considerations”与“Accessibility considerations”章节竟然留空,作为对当前 AI 炒作的讽刺。评论进一步指出,把可被代理调用的工具直接暴露在页面上会制造新的攻击面:提示注入(prompt injection)、未经说明的权限授予以及对 cookies/凭证的访问风险。有人用麦克风/摄像头权限做类比并强调需要明确的权限模型,也有评论警告该规范在设计上“太开放”,若无防护就会泄露数据或被滥用。

[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8]

可访问性与语义复用 vs 重复定义

批评者认为 WebMCP 可能要求站点为相同动作重复定义结构化 schema,从而与已有语义 HTML/ARIA 或可访问性树发生冗余工作。支持者则回答页面可以通过给表单加属性或在 JS 中暴露附加工具(例如视频转录器)来最小侵入地实现 WebMCP 功能,但也有人担心把 a11y 当作机器接口会鼓励为代理优化而牺牲人类体验。评论还提到历史上 microformats 与 schema.org 的有限成功以及 ARIA 对 LLM 的帮助有限,且在实践中用 AccessKit 等工具读取无障碍树也常碰到调试与兼容问题。

[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8] [来源9]

WebMCP 的优势:页面级、上下文化与实时状态

支持者把 WebMCP 看作一种嵌入页面的上下文化 API,能反映 SPA 路径与当前会话状态,生成随页面生命周期出现和消亡的临时工具,使代理在用户会话上下文内执行结构化操作而无需额外认证。讨论举例说明页面可在运行时通过 JS 暴露工具(如视频转录、自动把表单转换为工具),并引用 Chrome 的早期预览与 GitHub 仓库作为推动力。有人认为这种方式可以保留网站的界面与品牌控制权,同时避免代理对 DOM 截图或脆弱的爬取逻辑的依赖。

[来源1] [来源2] [来源3] [来源4] [来源5]

替代方案:SKILL.md、OpenAPI 与自动化生成

另一批评论者提出用 SKILL.md 或静态技能文件来公开站点能力,作为比在页面内实现 MCP 更低摩擦的替代方案,类似 /robots.txt 的用法并更易部署。社区里有实际示例(如 moltbook 的 skill.md)、一行 CLI/uvx 部署技能的想法,以及把 OpenAPI/Swagger 自动转为 WebMCP 接口的代理实现尝试。评论普遍认为静态技能对文档化或静态交互足够,而 WebMCP 更适合需要处理实时状态或复杂交互的场景。

[来源1] [来源2] [来源3] [来源4] [来源5] [来源6]

采纳、成本与激励问题

许多评论关注实现成本与长期维护:为站点额外实现 MCP 会增加维护工作、导致与页面交互逻辑的漂移,并扩大托管成本与攻击面,商业方可能缺乏动力去投资这类开放接口(有人以社交平台放弃 RSS 为类比)。反方指出,某些小站点能用一段轻量 JS 很低成本地加上 MCP 接口,从而让代理使用其服务,说明成本与采纳取决于站点规模与运营者意愿。整体争论聚焦于短期开发摩擦与长期价值之间的权衡。

[来源1] [来源2] [来源3] [来源4] [来源5] [来源6]

技术权衡:DOM 推断、明确定义的工具与代码沙箱

技术层面存在明显权衡:有开发者称用简单的 DOM/可见文本推断与少量 JS 就能覆盖 90% 场景,但在无限滚动、导航劫持等边缘情形会出问题。另有观点认为,与其反复做顺序工具调用,不如给代理一个代码沙箱或命令行接口,让 LLM 写/组合代码一次性完成多步操作,这能减少 token 开销与幻觉。相关问题还包括“谁实现这些函数”的责任归属、JS 接口对 cookies/凭证的访问权以及用 Playwright 等自动化工具生成/测试接口的实践利弊。

[来源1] [来源2] [来源3] [来源4] [来源5] [来源6]

📚 术语解释

WebMCP / MCP: WebMCP(网页端的 MCP 提案):一种让网页在客户端通过 JavaScript 或内嵌接口向 LLM/代理暴露“工具”(structured tools)的规范草案,目的是让代理以结构化调用替代脆弱的 DOM 抓取或截图。MCP 也有服务器端实现(MCP server),两者在部署位置、信任边界与认证模型上存在差异。

SKILL.md / skills: SKILL.md(或简称 skill/skills):一种以静态文档描述站点可被代理调用的功能的约定,类似 /robots.txt 或 API 文档,代理可离线读取并据此调用站点能力,部署和集成成本较低。

accessibility tree / AccessKit / ARIA: 可访问性树(accessibility tree):浏览器或辅助技术(屏幕阅读器)生成的页面语义表示,用于无障碍工具與自动化。AccessKit 是评论里提到的用于构建/访问可访问性树的实现示例,ARIA 是用于在 HTML 中标注语义的标准,但这些语义对 LLM 的可用性并不总是一致或充分。

OpenAPI / Swagger: OpenAPI(又称 Swagger):用于描述 REST API 的标准化规范。评论中有人提议直接公开前端调用的 OpenAPI 或用代理把 OpenAPI 转为 WebMCP,从而避免在浏览器内引入额外 JS/安全依赖。

Playwright: Playwright:一种浏览器自动化/测试框架,常用于脚本化交互、生成测试用例或自动化可访问性检测,评论中被用作将页面转换为代理可用工具的实践示例。