mcpField
J
Jet Browser Verifier

Jet Browser Verifier

本地服务
masaka-ai.vercel.app开发工具22 周前更新

关于 Jet Browser Verifier

Jet Browser Verifier 是用于检查固定版本隔离式 WPE WebKit 运行时的本地 MCP 服务。它面向运行时验证而非通用浏览,返回原生输入、DOM 检查和 PNG 截图等证据。

主要功能

  1. 01执行有时限的浏览器验证
  2. 02通过原生输入键入内容
  3. 03检查预期 DOM 状态
  4. 04捕获最新 PNG 截图
  5. 05返回启动与网络证据
  6. 06清理隔离容器

适用场景

  1. 01在本地验证 WPE WebKit 运行时
  2. 02检查原生文本输入和页面状态
  3. 03在测试中获取截图证据

MCP 相关

通过 stdio 向 MCP 客户端提供 `jet_browser_capabilities` 和 `jet_browser_verify`。验证会启动禁用浏览器网络的隔离 Docker 运行时。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"masakaai-jet-browser": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/masakaai/jet-browser-mcp:0.9.0"
]
}
}
}
启动命令docker run -i --rm ghcr.io/masakaai/jet-browser-mcp:0.9.0

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/masakaai/jet-browser-mcp:0.9.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

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,并通过你自己的运行框架监督每个隔离容器。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。