关于 Jet Browser Verifier
Jet Browser Verifier 是用于检查固定版本隔离式 WPE WebKit 运行时的本地 MCP 服务。它面向运行时验证而非通用浏览,返回原生输入、DOM 检查和 PNG 截图等证据。
主要功能
- 01执行有时限的浏览器验证
- 02通过原生输入键入内容
- 03检查预期 DOM 状态
- 04捕获最新 PNG 截图
- 05返回启动与网络证据
- 06清理隔离容器
适用场景
- 01在本地验证 WPE WebKit 运行时
- 02检查原生文本输入和页面状态
- 03在测试中获取截图证据
MCP 相关
通过 stdio 向 MCP 客户端提供 `jet_browser_capabilities` 和 `jet_browser_verify`。验证会启动禁用浏览器网络的隔离 Docker 运行时。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm ghcr.io/masakaai/jet-browser-mcp:0.9.0本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/masakaai/jet-browser-mcp:0.9.0stdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Jet Browser MCP 验证器
这个本地 stdio 服务为 MCP 客户端提供了一种范围有限的方式来验证 Jet Browser。其多平台软件包会选择原生的 linux/amd64 或 linux/arm64 镜像,禁用浏览器网络连接,打开镜像中的本地测试夹具,通过原生输入方式输入内容,检查 DOM,捕获新的 PNG,并进行清理。
它是运行时验证器,而非通用浏览服务。它不提供公共网络导航、CDP、个人浏览器配置文件、凭据、托管服务或遥测功能。
要求
- Node.js 24+
- Docker
- x86_64 或 ARM64 Linux 主机
首次验证时可能会从 GHCR 拉取公共镜像。浏览器执行本身使用 Docker 的 --network=none 边界。镜像已在 server.mjs 中通过摘要固定。
从 OCI 软件包安装
有版本号的 MCP 镜像会直接启动 stdio 服务。只有在 jet_browser_verify 启动单独隔离的 WPE WebKit 运行时时,才需要 Docker 套接字:
{
"mcpServers": {
"jet-browser": {
"command": "docker",
"args": [
"run", "--rm", "-i", "--network=none",
"--mount", "type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock",
"ghcr.io/masakaai/jet-browser-mcp:0.9.0"
]
}
}
}
Docker 套接字可授予对主机的完全控制权。仅为可信的 MCP 客户端配置此本地服务。外层 MCP 容器已禁用网络,而它启动的浏览器容器则独立使用 --network=none、资源限制、降低的权限和确定性清理。
官方 MCP Registry 的软件包元数据位于 server.json。OCI 镜像包含匹配的 io.modelcontextprotocol.server.name 所有权注释。
从源代码安装
git clone https://github.com/masakaai/jet-browser.git
cd jet-browser
npm ci
使用绝对检出路径,将服务添加到 MCP 客户端:
{
"mcpServers": {
"jet-browser": {
"command": "node",
"args": ["/absolute/path/to/jet-browser/integrations/mcp/server.mjs"]
}
}
}
该进程通过 stdout 使用 MCP 通信,且仅将运行错误写入 stderr。客户端关闭 stdin 后,进程会退出。
工具
| 工具 | 行为 |
|---|---|
jet_browser_capabilities | 返回固定的镜像、平台、证据约定和明确不支持的功能,不会启动 Docker。 |
jet_browser_verify | 执行一次受限验证,并返回启动、原生输入、DOM、截图、网络和镜像证据。 |
一次只能运行一项验证。客户端取消操作会终止子进程。服务会限制子进程输出和总运行时间;失败会作为 MCP 工具错误返回,而非协议错误。
成功调用会返回如下结构化内容:
{
"status": "passed",
"network": "disabled",
"title": "Jet Browser Ready",
"input": "open-source runtime",
"screenshotBytes": 2048,
"image": "ghcr.io/masakaai/jet-browser@sha256:5884204e128a3e5bb17634078affdf28d1933d2745752cee3bc74235ed316cec"
}
截图字节数会有所不同。通过验证要求解码后的 PNG 至少有 1,000 字节,并且预期页面标题、原生文本输入和 DOM 状态完全一致。
验证集成
协议测试会启动真实的 stdio 服务,执行 MCP 握手,列出其工具,并调用能力工具,整个过程不需要 Docker:
node --test test/mcp-server.test.mjs
仓库中的独立 CI 仍是端到端运行时验证。若要在本地执行相同的 Docker 验收测试:
JET_BROWSER_IMAGE=ghcr.io/masakaai/jet-browser@sha256:5884204e128a3e5bb17634078affdf28d1933d2745752cee3bc74235ed316cec \
npm run standalone:smoke
安全边界
- MCP 调用不接受任何命令、URL、镜像、配置文件或路径参数。
- 子进程只会接收所需的 Docker 连接变量;不会转发应用密钥。
- 容器已禁用浏览器网络连接,并限制 CPU、内存、PID 数、共享内存和权限;检查完成后会移除容器。
- 验证器绝不会连接正在运行的个人浏览器。
- 请将 Docker 访问视为对主机的特权访问。仅为可信的本地 MCP 客户端配置此服务。
若需要更广泛的嵌入边界,请使用 Jet Browser 带版本号的工具声明 sdk/tools.mjs,并通过你自己的运行框架监督每个隔离容器。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。