mcpField
J
Jet Browser Verifier

Jet Browser Verifier

Local
masaka-ai.vercel.appDeveloper Tools2Updated 2w ago

About Jet Browser Verifier

Jet Browser Verifier is a local MCP server for checking a pinned, isolated WPE WebKit runtime. It is intended for runtime verification rather than general browsing, returning evidence from native input, DOM checks, and a PNG screenshot.

Key features

  1. 01Run a bounded browser verification
  2. 02Type using native input
  3. 03Check expected DOM state
  4. 04Capture a fresh PNG screenshot
  5. 05Return startup and network evidence
  6. 06Clean up the isolated container

Use cases

  1. 01Verify a WPE WebKit runtime locally
  2. 02Check native text entry and page state
  3. 03Capture screenshot evidence in tests

MCP support

Exposes `jet_browser_capabilities` and `jet_browser_verify` to MCP clients over stdio. Verification launches an isolated Docker runtime with browser networking disabled.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"masakaai-jet-browser": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/masakaai/jet-browser-mcp:0.9.0"
]
}
}
}
Run commanddocker run -i --rm ghcr.io/masakaai/jet-browser-mcp:0.9.0

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
ocighcr.io/masakaai/jet-browser-mcp:0.9.0

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

Jet Browser MCP verifier

This local stdio server gives an MCP client one narrow way to verify Jet Browser. Its multi-platform package selects a native linux/amd64 or linux/arm64 image, disables browser networking, opens the image's local fixture, types through native input, checks the DOM, captures a fresh PNG, and cleans up.

It is a runtime verifier, not a general browsing server. It does not expose public-web navigation, CDP, personal browser profiles, credentials, a hosted service, or telemetry.

Requirements

  • Node.js 24+
  • Docker
  • An x86_64 or ARM64 Linux host

The first verification may pull the public image from GHCR. Browser execution itself uses Docker's --network=none boundary. The image is pinned by digest in server.mjs.

Install from the OCI package

The versioned MCP image starts the stdio server directly. It needs the Docker socket only when jet_browser_verify launches the separately isolated WPE WebKit runtime:

{
  "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 socket grants host-level control. Configure this local server only for a trusted MCP client. The outer MCP container has networking disabled, and the browser container it launches independently uses --network=none, resource limits, reduced capabilities, and deterministic cleanup.

The package metadata for the official MCP Registry is server.json. The OCI image carries the matching io.modelcontextprotocol.server.name ownership annotation.

Install from source

git clone https://github.com/masakaai/jet-browser.git
cd jet-browser
npm ci

Add the server to an MCP client with an absolute checkout path:

{
  "mcpServers": {
    "jet-browser": {
      "command": "node",
      "args": ["/absolute/path/to/jet-browser/integrations/mcp/server.mjs"]
    }
  }
}

The process speaks MCP on stdout and writes operational errors only to stderr. It exits when the client closes stdin.

Tools

ToolBehavior
jet_browser_capabilitiesReturns the pinned image, platform, evidence contract, and explicit non-capabilities without starting Docker.
jet_browser_verifyRuns one bounded verification and returns startup, native-input, DOM, screenshot, network, and image evidence.

Only one verification can run at a time. A client-side cancellation aborts the child process. The server caps child output and total runtime; failures are returned as MCP tool errors rather than protocol failures.

A successful call returns structured content like:

{
  "status": "passed",
  "network": "disabled",
  "title": "Jet Browser Ready",
  "input": "open-source runtime",
  "screenshotBytes": 2048,
  "image": "ghcr.io/masakaai/jet-browser@sha256:5884204e128a3e5bb17634078affdf28d1933d2745752cee3bc74235ed316cec"
}

The screenshot byte count varies. A pass requires at least 1,000 decoded PNG bytes and exact agreement among the expected page title, native text input, and DOM state.

Verify the integration

The protocol test starts the real stdio server, performs an MCP handshake, lists its tools, and calls the capability tool without requiring Docker:

node --test test/mcp-server.test.mjs

The repository's standalone CI remains the end-to-end runtime proof. To execute that same Docker acceptance locally:

JET_BROWSER_IMAGE=ghcr.io/masakaai/jet-browser@sha256:5884204e128a3e5bb17634078affdf28d1933d2745752cee3bc74235ed316cec \
npm run standalone:smoke

Security boundary

  • The MCP call accepts no command, URL, image, profile, or path argument.
  • The child process receives only the Docker connection variables it needs; application secrets are not forwarded.
  • The container has browser networking disabled, bounded CPU, memory, PIDs, shared memory, and capabilities, and is removed after the check.
  • The verifier never attaches to a running personal browser.
  • Treat Docker access as privileged host access. Only configure this server for trusted local MCP clients.

For a broader embedding boundary, use Jet Browser's versioned tool declarations in sdk/tools.mjs and supervise each isolated container from your own harness.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.