关于 NexusBrowser
NexusBrowser 是 MCP 服务和本地桥接程序,让 Agent 在后台标签页中操作用户自己的 Chrome,并沿用现有会话和扩展。它提供标签页归属控制及受限的浏览器操作,用户仍可在自己的标签页中继续工作。
主要功能
- 01按 Agent 分组的后台标签页
- 02可信鼠标与键盘事件
- 03基于定位器的页面交互
- 04网络捕获与下载管理
- 05访问跨域 iframe
- 06秘密信息遮罩与紧急停止
适用场景
- 01让 Agent 使用已登录的 Chrome 会话
- 02将网页导出为 Markdown
- 03检查网络响应和下载
- 04操作跨域框架中的元素
MCP 相关
`nexus-browser` MCP 服务连接本地桥接程序和 Chrome 扩展,向 MCP 客户端提供标签页、页面交互、网络、下载和导出能力。桥接程序和扩展负责执行标签页归属及命令限制。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
48收录的工具列表 · 更新于 今天
此工具无需参数。
详细介绍
NexusBrowser

由后台标签页中的 AI Agent 驱动的真实 Chrome。 NexusBrowser 让 Antigravity、Claude 和 Codex 通过一个共享的本地桥接程序和一个 MCP 服务 nexus-browser,使用用户自己的 Chrome(包括其会话和扩展程序)。每个 Agent 都在自己的后台标签页中工作,标签页按其名称分组,并通过 Chrome DevTools Protocol 发送真实(可信)的鼠标和键盘事件,同时用户可以继续在自己的标签页中工作。
Windows 10/11 · Chrome 116+ · Python 3.14 · MIT 许可证
NexusBrowser 属于 Nexus 系列:NexusWindows (Claude · Codex · Antigravity), NexusBrowser (仓库), NexusAndroid (仓库). 项目页面:julienpiron.fr/nexusbrowser。
为什么
浏览器自动化通常意味着使用一个独立的无头浏览器(没有会话和扩展程序),或者进行屏幕级别的计算机操作——这会移动用户的光标并将窗口置于前台。NexusBrowser 在用户已经使用的浏览器中运行,不会激活 Agent 的标签页或窗口,并将防护措施放在扩展程序和桥接程序中,而不是交由 Agent 负责:标签页所有权、DevTools 命令允许列表、屏蔽的机密信息,以及紧急停止功能。
- Antigravity:它自己的浏览器 Agent 在独立的 Chrome 配置文件中运行,无法使用用户浏览时的 Cookie 或登录状态(Antigravity 文档)。NexusBrowser 让它使用用户的真实 Chrome。
- Claude 和 Codex 已经有自己的 Chrome 扩展程序(Claude in Chrome、Codex Chrome 扩展程序)。在 DevTools 协议桥接能发挥作用的场景中,NexusBrowser 可作为补充:JavaScript 对话框(
browser_handle_dialog)、包含响应正文的详细网络捕获、跨源 iframe 内的元素、内容以及 Google Docs/Sheets/Slides 导出,还有下载。
在 2.4.0 之前,本项目以“Antigravity Browser Bridge”的名称在此发布,仅供 Antigravity 使用。从 2.6.0 起,它成为供多个 Agent 共享的中立桥接程序。
组件
| 文件夹 | 作用 |
|---|---|
extension/ | Chrome MV3 扩展程序“NexusBrowser”:CDP 操作、定位器、网络、对话框、跨源 iframe、导出、标签页所有权 |
native-host/ | 本地桥接程序(bridge_server.py:供扩展程序使用的 WebSocket 9224,以及供 Agent 使用的 HTTP 9225)和原生主机 com.nexus.browser_auth |
client/ | MCP 服务 nexus-browser(mcp_server.py)、经过身份验证的传输(bridge_client.py)、命令行(browser_cli.py)、共享紧急停止机制 |
skills/、plugins/ | Skill 和 Antigravity 插件;install.ps1 仅将 Skill 复制到该插件中 |
benchmarks/ | 与 Chrome DevTools MCP 对比的可复现 Token 和成功率基准测试(compare.py、结果和方法见其 README) |
mcpb/ | Claude Desktop 扩展(nexus-browser.mcpb,随每个版本附带;服务来自 PyPI) |
gemini-extension.json | Gemini CLI 扩展:gemini extensions install https://github.com/pironjulien/NexusBrowser(服务和 Skill 来自 PyPI) |
工具
49 个 MCP 工具。
| 类别 | 工具 |
|---|---|
| 标签页 | browser_list_tabs、browser_active_tab(只读)、browser_new_tab、browser_select_tab、browser_adopt_tab、browser_release_tab、browser_group_tabs、browser_close_tab、browser_reload、browser_navigate(URL、后退、前进)、browser_wait_load、browser_wait_for(等待文本或元素出现或消失) |
| 输入(可信 CDP 事件) | browser_click(按定位器、标记、选择器或文本)、browser_hover、browser_fill、browser_fill_form、browser_select_option、browser_check、browser_press_key、browser_type_keys、browser_drag_and_drop、browser_scroll、browser_upload、browser_handle_dialog |
| 查找元素 | browser_find(Playwright 风格的定位器:角色、标签、文本、占位符、测试 ID,支持所有框架)、browser_interactive_map、browser_vision_inspect(Set-of-Mark 标记,可通过 browser_click(mark=N) 点击)、browser_axtree、browser_content、browser_check_handoff(2FA、CAPTCHA) |
| 网络和下载 | browser_network_record、browser_network_stop、browser_network_requests、browser_network_response、browser_wait_network_idle、browser_download_status、browser_wait_download、browser_get_cookies |
| 输出 | browser_screenshot(视图、整页或元素)、browser_pdf、browser_export(将主要内容导出为 Markdown、文本或 HTML)、browser_export_gsuite(通过 Google 的导出 URL 导出 Google Docs、Sheets、Slides)、browser_youtube_transcript、browser_logs |
| 网站提供的工具(WebMCP) | browser_webmcp_tools、browser_webmcp_call(页面通过 document.modelContext 暴露的工具) |
| 页面访问 | browser_eval、browser_cdp_send(允许列表中的命令) |
| 多项操作 | browser_batch(单次往返最多执行 30 次工具调用,遇到首个错误时停止;每个步骤均保留各自的检查) |
安装
需要 Windows 10 或 11 和 Google Chrome。无需管理员权限,也无需预先安装其他软件。
-
从最新版本下载
get.ps1,右键点击并选择 使用 PowerShell 运行。如需先检查文件,请将其 SHA-256 与随文件一同发布的get.ps1.sha256进行比较:(Get-FileHash "$HOME\Downloads\get.ps1" -Algorithm SHA256).Hash或者,打开 PowerShell(在“开始”菜单中输入
PowerShell),粘贴以下单行命令:irm https://raw.githubusercontent.com/pironjulien/NexusBrowser/main/get.ps1 | iex如果尚未安装,uv 会自动安装;随后将最新版本下载到
%LOCALAPPDATA%\NexusBrowser\app,设置本地桥接程序和原生主机,并向找到的所有 AI 客户端声明nexus-browser服务:Claude Code、Claude Desktop、Codex 和 Antigravity。 -
Chrome 会打开
chrome://extensions,并将扩展文件夹复制到剪贴板:打开 开发者模式(右上角),点击 加载已解压的扩展程序,粘贴文件夹(Ctrl+V),然后点击 选择文件夹。这是唯一需要手动完成的步骤:在 Chrome 网上应用店之外,Chrome 只能通过这种方式安装扩展程序。安装程序会等待,并在扩展程序连接后提示你。 -
重启 AI 应用并向它提出请求,例如:“在后台标签页中打开 https://example.com,并以 Markdown 格式提供页面内容。”
再次运行即可更新:文件夹位置保持不变,因此 Chrome 会保留并重新加载扩展程序。新版本会在工作版本旁准备就绪,并先检查其 Python 依赖;如果更新失败,则会恢复之前的版本、重新安装并重启桥接程序。
桥接程序也可以自行更新公开安装(这是 Nexus 产品共用的约定):它会写入 ~\.nexus\status\browser.json(包含 version、从 releases/latest 重定向读取的 latest(每天最多读取一次)、state 和 message);GET /api/update 会返回这些信息,而 POST /api/update(桥接令牌)会启动“Nexus Browser Update”任务。该任务会在桥接程序之外运行 get.ps1,并记录 done 或 failed(保留当前版本;Agent 在 Chrome 中工作时会延后更新)。克隆版本则使用 git 更新。
之后才安装了 AI 客户端?也请再次运行安装程序。你自行编写的条目,或已提供该服务的 nexus-browser 插件,均不会被更改。
从克隆仓库运行(开发者)
要求:uv、PowerShell 7、用于测试的 Node.js。
git clone https://github.com/pironjulien/NexusBrowser.git
cd NexusBrowser
pwsh -NoProfile -File install.ps1
- Python 环境、令牌、日志、屏幕截图和导出文件都存放在
~\.nexus\nexus-browser(克隆仓库之外); 每次调用的日志存放在%LOCALAPPDATA%\NexusJournal\browser\(参见隐私)。 - 计划任务
Nexus Browser Bridge没有触发器:桥接程序按需启动(首次 Agent 调用时,或通过schtasks /Run启动)。 - 向 Chrome(HKCU)声明原生主机
com.nexus.browser_auth:由它计算扩展的证明,令牌绝不会传到 Chrome。 - 仅支持 Antigravity,且只能通过其插件(服务和技能);仅当存在共享 MCP 守护进程令牌时才可使用:
插件指向共享 HTTP 守护进程(
client/mcp_server.py --http,端口 16182),并附带?agent=antigravity。 如果没有该令牌,install.ps1会发出警告并跳过守护进程及其注册;但仍会安装桥接程序、原生主机和 计划任务。install.ps1 -Register(单行安装程序运行的命令)会在找到相应客户端时,通过 stdio 向 Claude Code、Claude Desktop 和 Codex 声明服务,并将其作为nexus-browser插件声明给 Antigravity(scripts/register_clients.py);同时将NEXUS_BROWSER_AGENT设为客户端名称(即其标签页组)。 如果未找到,请自行添加服务(见下文)。NEXUS_PACK=1(Nexus pack)会直接运行,不提示、不等待,也不显示窗口。 - 桥接程序需要重新启动 Chrome 时,会使用
Default配置文件;可通过NEXUS_CHROME_EXTRA_ARGS环境变量 添加额外的 Chrome 标志(例如语言设置……)(允许列表:--lang、--accept-lang、--variations-override-country、--disable-features=Glic…、--force-dark-mode;其他设置都会被忽略)。 - 从旧版“Antigravity Browser Bridge”迁移:其计划任务(端口相同)和原生主机
com.nexusagy.bridge_auth都会被移除。
然后在 chrome://extensions 中加载一次 extension\(启用开发者模式,选择“加载已解压的扩展程序”),并移除旧版
“Antigravity Browser Bridge”(如果存在)。扩展 ID 由 manifest.json 中公开的 key 固定
(blcgddmjdkobmgakjffjpgiicjlflgjf),在每台电脑和任何文件夹中都相同;桥接程序和原生主机只接受这一个来源。
来自 PyPI 的 MCP 服务
安装桥接程序和扩展(见上文)后,任何 MCP 客户端都可以直接从 PyPI 启动服务,无需克隆仓库:
claude mcp add nexus-browser --scope user -e NEXUS_BROWSER_AGENT=Claude -- uvx nexus-browser
Gemini CLI:gemini extensions install https://github.com/pironjulien/NexusBrowser(从 PyPI 安装服务,并通过 gemini-extension.json 安装技能)。
Claude Desktop 扩展:下载
nexus-browser.mcpb,并将其拖到 Claude Desktop 窗口中,或在设置 > 扩展中添加(服务由 uv 从 PyPI 安装)。
没有桥接程序时,服务仍会启动并列出其 49 个工具;每次调用都会返回清晰的错误,提示进行一次性安装。
安全性(由扩展和桥接程序保障,而非由 Agent 保障)
- 双向认证桥接(
nexus-browser/1):对双方的随机数进行 HMAC 证明,之后每条消息都使用每连接密钥和严格的序列号签名。HTTP 请求必须包含X-Nexus-Browser-Token,且拒绝任何浏览器来源。 - 无需原生主机即可配对(无法向 Chrome 声明原生主机时,例如注册表写入被虚拟化的 Microsoft Store 应用):
scripts/pair-extension.ps1向桥接请求一个一次性 256 位密钥(有效期 5 分钟,5 次证明错误即失效;使用桥接令牌调用POST /api/pair),然后打开chrome-extension://<id>/pair.html#<secret>;页面会从地址栏清除密钥,双方相互证明,并据此以及握手过程派生扩展程序的密钥。桥接会为该扩展程序 ID 保留密钥(声明的 ID 必须与连接来源匹配),扩展程序则将其作为不可提取的 WebCrypto 密钥保存在自己的 IndexedDB 中(绝不存入内容脚本可读取的chrome.storage)。证明、会话密钥和签名消息的机制与原生主机相同;只要原生主机已安装,就始终优先使用它。撤销:POST /api/pair/revoke。 - 标签页归属:每个桥接客户端都要标识自身(Agent + 会话标头,由桥接通过签名通道转发)。通过
browser_new_tab打开的标签页归该会话所有(记录在chrome.storage.session中);任何针对其他标签页(用户的、其他 Agent 的)的页面命令都会被拒绝。只有通过browser_adopt_tab(tab_id, user_asked=True)才能使用用户的标签页。每个页面工具都必须提供tab_id。当 MCP 进程退出或静默超过 1.618 x 60 秒(服务每 37 秒发送一次心跳)时,该会话会留下孤儿标签页:同一 Agent 可以认领(browser_adopt_tab,启动时也会自动认领)、关闭或释放这些标签页;其他 Agent 永远不能操作。 - 按客户端列出标签页:
browser_list_tabs和browser_active_tab仅返回调用方自有标签页(打开或认领)的完整标题和 URL。用户和其他 Agent 的标签页只显示域名(url= 来源,title为 null,redacted: true):足以通过id和域名指定标签页以调用browser_adopt_tab,但绝不泄露其 URL 中的令牌或文档 ID。 - 保留的维护命令:只有安装程序(
install.ps1,身份为Installer)可以重新加载扩展程序,且仅当没有 Agent 正在使用 Chrome 时才可以(没有正在运行的命令,也没有被活动会话占用的标签页)。下载记录只能由启动该下载的客户端清除(通过browser_wait_download进行归属判定)。 browser_cdp_send的 CDP 允许列表;每个扩展脚本都在隔离世界中运行(只有browser_eval、YouTube 字幕以及browser_cdp_send(..., world="page")会访问页面世界)。- 机密信息:对机密标头、URL 参数以及 JSON/表单正文中的字段进行遮蔽(保留分页令牌和大模型令牌计数);仅本地开发来源可读取 Cookie 值(
include_values=True);桥接本身会拒绝上传机密文件夹中的文件(会先规范化路径)。密码、一次性验证码或支付卡字段的值(type=password、autocomplete为 current-password、new-password、one-time-code、cc-number、cc-csc、cc-exp)绝不会离开页面:browser_content(包括 html 模式)、browser_vision_inspect、browser_find、browser_axtree和browser_fill读回的值都会以[masked value]替代。 browser_eval可完全访问页面,不会遮蔽任何内容:与browser_cdp_send(Runtime.evaluate)一样(两个世界共享同一文档),它可以读取页面可读的内容(通过document.cookie读取非 HttpOnly Cookie、localStorage、sessionStorage、IndexedDB、表单字段),其fetch请求也会携带用户会话。上述遮蔽仅适用于专用工具,不适用于脚本或browser_cdp_send返回的原始 Chrome 响应(DOM.getOuterHTML、Accessibility.getFullAXTree等):这是有意保留的行为,工具、技能和服务指令中都已明确说明。拒绝带有scriptToEvaluateOnLoad的Page.reload(这会在加载时注入脚本)。- 执行对外操作前,必须取得用户对具体操作的同意(2.12.0):在点击(
browser_click)、按 Enter / Control+Enter / Space(browser_press_key、browser_fill的keys)、输入换行(browser_type_keys)或拖动之前,服务会在不执行任何操作的情况下,通过桥接已有的读取路径读取触发对象(定位器使用find;并通过扩展程序隔离世界中的cdp-send执行只读脚本client/trigger_probe.js):不需要新增扩展程序操作,因此已加载的扩展程序也能使用此功能。服务会读取被点击的控件,或焦点字段所属表单中的提交按钮。如果共享策略(client/garde-fous.json)检测到对外操作词(send、pay、buy、order、publish、post、call、transfer、subscribe、book 等),则拒绝执行该操作,并返回具体操作摘要(目标、收件人、不含敏感值的表单内容、附件、页面来源和路径)以及一个有效期为 10 分钟的一次性令牌。Agent 会先向用户展示摘要,只有用户同意后,才会使用confirm=true和accord="<token>"再次发送相同调用。用户同意后若有任何变更,该同意即失效;单独设置confirm=true永远不够;在页面中读取到的令牌无效。若表单的按钮写有 Submit、Soumettre、Transmettre、Postuler 或 Valider ma demande,且表单中有已填写的数据(自由文本、电子邮件地址、电话号码、文件)或无法读取表单内容,则提交表单也属于对外操作;登录表单(含密码字段)、搜索、筛选、空表单或向导中的 Next 则不受限制(这是本浏览器特有的规则:只有该工具会读取触发操作所涉及的表单)。普通链接和按钮不受限制。只有读取确实失败时(脚本错误、焦点位于跨源框架中、按 Enter 时目标字段所属表单不可读取),检查才会采取失败即拒绝的处理方式。页面文本输出(browser_content、browser_axtree、browser_export、Google 和 YouTube 导出、网络正文)若看起来包含面向 AI 的指令,会附带untrusted_note(这只是一个信号)。CLI 也会执行相同检查,但无法在命令之间传递令牌(每条命令都是独立进程):它会拒绝对外操作,返回摘要并提示使用 MCP 服务;其他操作仍不受限制。 - WebMCP 工具(通过
document.modelContext向 Agent 提供自有工具的网站;对于处于原点试用阶段的网站,这是 Chrome 149+ 的原生功能):browser_webmcp_tools会列出这些工具,browser_webmcp_call则通过 Chrome 自身的getTools()/executeTool()执行工具,并由扩展程序隔离世界中的cdp-send求值(页面无法替换这些方法;无需新增扩展程序操作,也无需 Chrome 标志)。调用也必须取得相同的同意:如果工具被页面标记为consequentialHint,或其名称、标题、说明或表单提交按钮中包含对外操作词,或工具表明自己会提交数据(Submit、Transmettre、Postuler 等)且会收到已填写的数据,则拒绝调用,并返回具体调用内容(工具、来源、已遮蔽敏感值但已绑定令牌的输入、页面)以及一次性令牌。readOnlyHint不会豁免任何检查:这只是页面自己的声明。只有在检查后工具定义未发生变化时才会执行该工具。说明和输出都是页面文本(untrusted_note)。 - 不经过同意检查的路径:
browser_eval和browser_cdp_send(Runtime.evaluate、Input.dispatch*)按设计保留对页面的完整访问权限,可在不经此检查的情况下点击或提交;工具说明和服务指令会告知模型,切勿用它们执行对外操作。browser_drag_and_drop的纯坐标也不会被读取。 - 紧急停止(Ctrl+Alt+Shift+Esc,
~\.nexus\stop):取消已在运行的命令(输入、拖动、等待),断开调试器,并在 120 秒内拒绝所有操作。此文件协议也由 NexusWindows Agent 共用。 - 各自控制的内容:每个 Agent 的标签页都位于一个以其名称命名的 Chrome 标签组中;
browser_release_tab会将标签页交还。工具栏图标会打开只读弹出窗口,显示桥接状态和各 Agent 的标签页。 - 持有桥接令牌的人即可控制浏览器会话:请妥善保管
~\.nexus\nexus-browser\bridge-token。
检查
pwsh -NoProfile -File test.ps1 # offline: ruff, Pyright, pytest (real bridge on ephemeral ports), Node tests
pwsh -NoProfile -File test.ps1 -Full # plus real validation in the user's Chrome: --mouse then --full-live
pwsh -NoProfile -File verify.ps1 -Browser # task, native host, bridge reached, loaded extension up to date
test.ps1 使用由 install.ps1 创建的环境。
更新现有安装时,也会检查扩展已加载的版本和功能,并在需要时重新加载扩展, 然后重新加载受监管的 Browser MCP 工作进程。 如果 Agent 正在使用浏览器标签页,更新会延后;不会驱动或激活用户的标签页。 如果 Chrome 已关闭,它会在下次启动时加载更新后的扩展文件;这不算实时验证。
隐私
NexusBrowser 完全在你的 PC 上运行:一个 Chrome 扩展、一个绑定到 127.0.0.1(通过本地令牌进行身份验证)的本地桥接程序,以及一个 MCP 服务。它没有账户、遥测或分析功能,也不连接远程服务;不会向作者或任何第三方发送任何内容。
- 读取的内容:Agent 打开的标签页中(或你明确允许其接管的标签页中)的页面文本和无障碍树、屏幕截图、控制台日志、网络请求(标头和密钥字段会被遮蔽),以及调用
browser_get_cookies时读取的 Cookie。读取内容中的密码、代码和卡片信息会被遮蔽,在屏幕截图和 PDF 中则显示为圆点(包括所有帧和跨源帧);控制台日志的遮蔽方式与网络正文相同;但通过browser_cdp_send调用的browser_eval和Runtime.evaluate可以完全访问页面。 - 网络:页面由你自己的 Chrome 使用你自己的会话加载,效果与你自行浏览相同。导出内容(Google Docs、Sheets、Slides、YouTube 字幕稿)会在你的会话中从相应网站获取。
- 数据去向:工具结果会返回给你所连接的 AI 客户端(Antigravity、Claude、Codex……),它可能会根据自身的隐私政策将结果发送给其模型提供商。
- 存储内容:存储在
~/.nexus/nexus-browser/下:Python 环境、桥接令牌、bridge.log(连接和紧急停止事件,达到 1 MB 时轮换,保留三个备份)、install.log、屏幕截图(最多 50 张,每张保留不超过 24 小时),以及你请求的导出内容。扩展会在 Chrome 的会话存储中保存标签页归属信息,并在 Chrome 关闭时清除。 - Gmail 未读计数(默认关闭):工具栏弹出窗口中的一个框,用于
MX Keypad AI Agents 控制台。勾选后,扩展会在你自己的会话中每分钟读取一次 Gmail 官方未读邮件源(类似“Gmail 检查器”扩展),桥接程序只会将数量写入
~/.nexus/nexus-browser/compteurs.json,每个 Chrome 配置文件对应一个随机标识符:不包含发件人、主题或内容。取消勾选后,会删除该配置文件对应的条目(如果没有剩余条目,则删除整个文件)。 - 日志:位于
%LOCALAPPDATA%\NexusJournal\browser\<agent>\<YYYY-MM>.jsonl(或NEXUS_JOURNAL_HOME),采用 Nexus 工具的通用格式:每次工具调用占一行,记录调用的 AI、操作、结果、耗时、技术方式、标签页的可注册域名(如google.com,绝不记录地址)以及来自固定列表的错误类别。绝不记录页面文本、输入值、标题或图像。不会向任何地方发送内容;日志按月保存,直到你将其删除:你可以随时删除browser文件夹(或单个月份的文件)。 - 移除:从 Chrome 中移除扩展,删除计划任务
Nexus Browser Bridge和注册表项HKCU\Software\Google\Chrome\NativeMessagingHosts\com.nexus.browser_auth,然后删除~/.nexus/nexus-browser/和%LOCALAPPDATA%\NexusJournal\browser\(以及单行安装后生成的%LOCALAPPDATA%\NexusBrowser\)。卸载安装程序声明的nexus-browser配置项:运行claude mcp remove nexus-browser -s user,删除~/.codex/config.toml中的[mcp_servers.nexus-browser],删除 Antigravity 的plugins/nexus-browser文件夹,并删除 Claude Desktop 的claude_desktop_config.json中mcpServers下的nexus-browser。
如有问题或顾虑,请在此代码库中提交 issue。
限制
- 仅支持 Windows 和 Chrome(Manifest V3,
chrome.debugger)。调试器连接期间,Chrome 会在 Agent 标签页上显示“正在调试”横幅。受保护的页面(chrome://、Web Store)无法执行脚本。 - 标签页所有权按 MCP 进程划分:同一对话中的子 Agent 共享标签页。
- YouTube 字幕读取页面自身的播放器(页面环境)。
- 对外操作检查会在执行手势前读取触发操作:如果页面在两者之间改写表单或按钮,就无法检测到。它可识别
<form>、对话框,以及包含字段和按钮的最近区块(最多 3 个字段,类似聊天编辑框);只有带有email属性的自定义收件人标签才会被读取。令牌证明执行前已描述过这一完全相同且未变更的操作,但不证明是谁同意的:用户与工具之间始终只有 Agent 这一沟通渠道。 - WebMCP:
readOnlyHint不会豁免任何检查(页面自称只读不能证明不会产生对外影响),consequentialHint只会增加确认步骤;只有跨源 iframe 向顶层页面公开的工具(exposedTo)才会被列出,规范要求如此。不会使用 Chrome 的 CDPWebMCP域(Chrome DevTools MCP 使用该域),因为它需要以--enable-features=DevToolsWebMCPSupport启动 Chrome。 - 代码注释为法语。
许可证
MIT,详见 LICENSE。版权所有 (c) 2026 Julien Piron。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
