# jev-browser

**Category:** 📂 Browser Automation  
**Repository:** https://github.com/Ying-Kai-Liao/jev-browser  
**GitHub Stars:** 122  
**npm Downloads (last month):** 3051  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/jev-browser

## Description
Browser automation where an LLM plans and Jev (Typesafe System One) makes every per-step decision. Library, CLI and MCP server.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "jev-browser": {
    "command": "npx",
    "args": ["-y","-p","jev-browser","jev-browser-mcp"],
    "env": {
      "TYPESAFE_API_KEY": "",
      "OPENROUTER_API_KEY": "",
      "JEV_API_URL": "",
      "JEV_MODEL": "",
      "JEV_BROWSER_HEADED": ""
    }
  }
}
```

**Requires environment variables:** `TYPESAFE_API_KEY`, `OPENROUTER_API_KEY`, `JEV_API_URL`, `JEV_MODEL`, `JEV_BROWSER_HEADED` — the values above are empty placeholders; fill in real credentials before running (see the repository for what each one is for).

## Documentation

## What jev-browser does

The jev-browser MCP server connects an MCP client to a Playwright-controlled Chromium browser and the TypeSafe System One API. An LLM can ask it to pursue an outcome such as logging in or completing a form, while Jev evaluates the current page and selects the next action. The server returns statuses and action history rather than requiring the LLM to inspect every page snapshot.

The project is intended for the Browser Automation category. It supports forms, native and custom dropdowns, checkboxes, radio controls, dynamic loading, modals, JavaScript dialogs, hover, right-click, drag and drop, key presses, file uploads, iframes, shadow DOM, new tabs, large pages, and non-English interfaces. It can also use WebMCP tools exposed by a page.

## How it works

For each round of a goal, the server waits for the page to settle, describes relevant elements and state, and sends one request to Jev. Jev returns probability distributions for decisions such as whether a step is complete, which element to use, which action to take, and whether the page is blocked or about to perform an irreversible operation. Playwright then performs the selected action and repeats until the goal is complete, stuck, or requires confirmation.

Jev does not write arbitrary text. Values for text fields and WebMCP arguments come from candidates supplied by the caller. Direct controls can be used when the LLM needs to take over, and `browser_check` or `browser_read` can answer focused questions without requiring a full snapshot.

## Setup and configuration

The npm server runs with `npx -y -p jev-browser jev-browser-mcp`. Supply either `TYPESAFE_API_KEY` or `OPENROUTER_API_KEY`; if both are present, the TypeSafe key takes precedence. `JEV_API_URL` and `JEV_MODEL` can override the endpoint and model. Add `JEV_BROWSER_HEADED=1` to display the browser window.

Chromium can be installed in advance with `npx playwright install chromium`; the server also installs it on first browser use. From source, run `npm install`, `npm run setup`, and place credentials in `.env`. Claude Code can install the project as a plugin or register the stdio command directly.

## Tools and capabilities

The jev-browser MCP server provides:

- `browser_open` for navigation, settling, and viewport changes.
- `browser_do` for pursuing one outcome with optional values and irreversible-action handling.
- `browser_check`, `browser_choose`, and `browser_read` for focused page questions.
- `browser_snapshot`, `browser_screenshot`, and `browser_act` for inspection, images, and direct actions.
- `browser_webmcp_tools` and `browser_webmcp_call` for discovering and invoking tools registered by the current page.
- `browser_close` for ending a browser session.

WebMCP calls can run without a Jev request, but they operate in the main frame and may have side effects. Tool descriptions and results originate from the page and should be treated as untrusted.

## Limitations and notes

Split ordered sequences into separate goals, such as adding items and then clearing completed items. Open-ended objectives should be made measurable or checked by the caller. Comparisons across many values, including verifying a sort or confirming an exact change, are better handled with `browser_check` or `browser_snapshot`.

Page content is sent to TypeSafe or OpenRouter. Secrets passed through `values` are not sent as page content. WebMCP results are capped at 20,000 characters, and irreversible page tools may cause the step to stop for confirmation.

_Full upstream README: https://allmcps.com/mcp/jev-browser/readme_

