最近一直没更新,说实话,就是没腾出那份心力。原因有几个,但最主要的一个是:我在 AGNTCon + MCPCon Europe 上做了一场演讲,主题正是 WebMCP。
效果如何?相当不错!到场的人很多,提问也很踊跃——还能奢求什么呢?😅 大会本身也精彩纷呈,这一趟回来,攒下的灵感足够再写好几篇文章了。像样的照片暂时还没整理出来,也许下周就有了!
一场超过 2000 人参加的大会,听众自然五花八门,关注点千差万别。有人迫不及待想钻研复杂的多智能体架构,也有不少人只是想知道:自己那些本已相当不错的产品,怎么加上一点 AI 能力变得更好。
第二类人中,有不少最后都坐进了我的 WebMCP 演讲现场。
那么,WebMCP 到底是什么?
简单来说,WebMCP 是一套实验性的浏览器 API,让网站可以显式地暴露出一批工具,供 AI 智能体调用。这个话题我不想多费笔墨重复,因为此前已经写过一篇:
那篇文章写于三个多月前——放在 Agentic AI 的世界里,这意味着文中的语法早就过时了。xD 好在如今想快速查到最新写法并不算难,何况这套语法说不定还得再变上好几轮。😅
不过,核心思路始终没变。
没错,它还是一项很年轻的技术。但凑巧的是,我在大会上遇到了一位参与 WebMCP 开发的朋友(嗨,Dominic!),他告诉我,大概一、二月份前后,它就应该相当稳定了——至少在 Chromium 上是如此。所以,时间不等人!
WebMCP 并不完全等同于 MCP
与“经典”MCP 不同(之所以给经典打上引号,是因为我实在拿不准,这么年轻的技术是否已经有资格被称作“经典”或“传统”了 🤣),WebMCP 运行在浏览器的上下文之中。
网页必须处于打开状态;如果涉及鉴权,用户还得先登录——满足这些条件之后,智能体才能调用该页面暴露出来的工具。也就是说,我们既可以通过 Agentic 浏览器使用 WebMCP,也可以比如借助一个 Chrome 扩展来用它。有意思的是,ChatGPT 最近已在其内置浏览器中加入了对基于 WebMCP 的站点工具的支持,可见这项技术确实风头正劲!
那也是为什么,在我看来,WebMCP 最有趣的用例不一定是多智能体系统抓取网站。我认为它更像是帮助普通日常用户与他们已经使用的产品进行交互的方式。当然,给十个开发者一个新的 API,你可能会得到十一种不同的想法。😉
认识我的远见领袖:AI 首席执行官模拟器
正如你们有些人可能记得的,我的 WebMCP 演示不是另一个乏味的 addToCart() 示例。这是我心爱的远见领袖:AI 首席执行官模拟器。它展示了如果让 AI 来运营我们的公司可能会发生什么。
正如您在截图中所见,我们拥有所有典型的初创公司指标:现金、月收入、员工人数、生产事件、员工幸福感以及显然的炒作水平。
我们还有诸如 采用 AI、转向代理、用 Rust 重写、解雇员工、雇佣员工 等董事会决策。
换句话说:典型的初创公司管理。
而且,当然,还有一个活动日志。
重要的是,这仍然是一个完全正常的网站。您可以随意点击并手动使用所有功能。这是因为我喜欢 WebMCP 的一点:它为您的网站提供了额外的功能。您不需要围绕 AI 完全重构您的产品。
GitHub: https://github.com/sylwia-lask/ai-ceo-webMCP
Demo: https://sylwia-lask.github.io/ai-ceo-webMCP/
好的,但我们实际上如何调用这些工具?
一切听起来都很棒,但有一个实际问题:我们究竟如何调用这些工具?如果您想在会议演讲期间实时调用它们,这就会变得尤为有趣的问题。
当然,您可以通过 ChatGPT 或某个公开可用的扩展来实现,但基于云的解决方案需要互联网访问。它们的界面也不一定适合演示——当人们在大屏幕上观看您的演示时,一切都应该大而易于跟随。
而且,显然,我希望有一个后备方案来使用本地模型!
于是我构建了一个名为 WebMCP 本地代理 的 Chrome 扩展。
GitHub: https://github.com/sylwia-lask/webmcp-local-agent
这个插件还没上架 Chrome 网上应用店,不过说不定哪天我就会掏出那 5 美元的开发者注册费了。😅💸 眼下如果你感兴趣,直接下载源码在本地跑起来就行。
它真的算 Agent 吗?
那么,这个插件——或者说这个 Agent——到底能干什么?
原理非常简单:它接收用户的意图,查看当前页面上有哪些可用的 WebMCP 工具,然后调用自己认为合适的那些。
我们都知道,Agent 说白了就是一个循环。这一点我在这里写得更详细:AI Agent 背后的肮脏秘密(Demo 🚀)
这个 Agent 的运作方式正是如此:模型拿到用户意图和可用工具,决定要调用什么,收到结果后再决定下一步怎么办。默认情况下,这个循环最多跑 10 轮,当然你也可以在配置里修改。
所以你看,它可不是挂了个花哨名字的聊天机器人,而是一个正儿八经的小 Agent。
略带私心的动机,也能带来有用的成果
没错,我最初的动机非常简单,甚至有点自私。😉 但动机可疑未必结不出好果子——连咕噜都为《指环王》的圆满结局出过一份力呢。xDDD
由于我的扩展可以配合本地模型运行,在使用本地服务商时,提示词和模型推理都能留在用户自己的机器上。相比把每一次交互都发送到云端模型,这在隐私上是很有意思的一大优势。
它还能应对另一个问题:AI 模型的可访问性并非在所有地方都同样可靠。我亲爱的 DEV 朋友 @dannwaneri 前段时间就提到过这一点。我们在欧洲拥有不错的基础设施、能顺畅访问云端 AI 服务,但这并不意味着世界各地的条件都一样好。
本地模型给了我们另一种选择。
三个服务商,一个 Agent
如你所见,我的 WebMCP 插件目前支持三种模式。
第一种是 Google 的 Prompt API,它使用由 Chromium 托管的 Gemini Nano。模型下载完成后,推理就在本地进行,不会把提示词发送给 Google 或其他第三方,而且不需要 API 密钥。
第二个选项是 Ollama,同样在本地运行。在我这里,我使用的是 Llama 3.1,但如果你更喜欢,也可以选择其他模型。不过理想情况下,你希望选择一个在工具调用时表现良好的模型。
最后,还有一个云服务提供商。在我这里,那是一个较旧的 Gemini Flash 模型,需要 API 密钥。说实话:目前,云端模型通常仍然是获得卓越能力和速度的最简便途径。问题是它们并不总是可用。
当然,你可以随意添加其他模型或提供商。实际上,这仅仅是扩展源代码中的几行代码。☺️
而且,本地模型其实是有效的
正如你所看到的,本地提供商的表现出乎意料地好。
这是 Google 的 Prompt API:
这是 Llama 3.1:
虽然我需要提醒你,Llama 3.1 虽然罕见,但确实会发生——有时它会决定不是返回 JSON,而是我真正想要的 真的 Markdown 或一些额外的“有帮助”的注释。这就是使用大语言模型的乐趣。😅
值得再次提的是,该插件默认允许代理循环最多迭代 10 次。你可以在配置中增加或减少该数字。
不过,等等。这危险吗?
我经常听到关于 WebMCP 的一个担忧是,我们正在改变交互模型。用户不再显式点击他们想要发生的每一件事。相反,他们表达意图。
然后模型制定计划,调用工具,我们需要处理后果。如果我们就这样放任不管,那就等于制造灾难的配方。
有一些相对无害的工具,例如:
listEmployees()
但也有一些后果严重得多的工具,例如:
fireEmployees()
我宁愿也不想发现我的 AI 首席执行官在未先征求我同意的情况下,决定通过裁掉公司一半员工来提升我们的跑道。
重要操作需要确认
幸运的是,WebMCP 的团队正在倾听社区的声音,API 现在包含了一些有用的工具注释,例如 consequentialHint。我的插件也支持它。
这些较新的 WebMCP 功能的支持取决于您使用的 Chromium 版本以及实验性 WebMCP 的可用性;因此,如果您在 API 仍在演变时进行测试,请确保您运行的是已启用所需 WebMCP 支持的足够新版的 Chrome/Chromium。
现在让我们试着解雇一些员工。
正如您所看到的,我们的代理注意到该工具调用被标记为 consequential,并在允许其继续之前显示了确认提示。用户可以批准或拒绝该操作。
当您的 AI 首席执行官开始重组公司时,这大概是个好主意。 😉
而且,我当然是用 Kiro 构建的
作为一名自豪的 AWS 社区建设者,我在世界上最好的 IDE——Kiro 的帮助下完成了这一切。 😅 我得承认:我最初安装 Kiro 是因为我想在 Claude Code 上省点钱。但如今,即便 @corey_aws 明天把我踢出社区建设者计划,我也会很乐意自掏腰包继续付费使用 Kiro。 😂
Kiro 不仅提供了大量可供选择的模型,还支持规格驱动的开发——这是我逐渐开始真正欣赏的特点。它还能够出色地应对不断变化的 WebMCP API,包括我在会议演讲前仅两个小时才不得不处理的最后一次 API 更改。 😅
那么,AWS:做得好。你成功吸引了我。 👏
也许我们不需要一场革命
正如您所看到的,我们不一定需要在现有项目中进行巨大的架构变更或彻底的革命,以使其更加用户友好和代理友好。
我们的网站仍然可以是一个网站。人们仍然可以点击按钮、填写表格,并按照以前的方式使用 UI。WebMCP 仅仅为代理提供了另一种结构化的交互方式。
会议上有人说,这并不是一场可比拟于用汽车取代马匹的革命。
只是……
更快的马。
但如果更快的马正是我们此刻所需要的呢?




