public-browser
MCP server and libraries that drive Chrome over CDP and hand a decision model like Jev a bounded menu of page actions.
Overview
Public Browser is an MCP server that lets Claude Code, Cursor and other MCP clients drive Chrome directly over the DevTools Protocol, with accessibility-tree refs and a run_plan tool that executes several steps per call. It also ships a Node library and a Python client that run the same tool handlers without an LLM.
The Jev connection is in a dedicated README section: because a decision model needs a bounded menu rather than free text, Public Browser's element refs give Jev a set of options to choose from, and a Python Script API with parallel access is described as suited to Jev loops. The README reports a blind benchmark in which version 3.0 used a median 3.0M session tokens versus 4.5M for agent-browser (about a third fewer) and finished in 261 s versus 386 s, while also listing what agent-browser does better.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Which element ref or action from the current page menu should be taken next?(inferred) | — |
How it works
- Connect to Chrome via CDP and read the accessibility tree into refs
- Present the available elements and actions as a bounded option set
- Let the LLM client or a Jev loop pick the next action
- Execute one or more steps (run_plan) and return a diff of what changed
Strengths
- README reports about a third fewer tokens and lower cost than agent-browser on its benchmark
- Loud failures for ambiguous selectors and stale refs
- Usable without an LLM through Node and Python clients
Caveats
- Benchmark uses the authors' own test page
- Jev integration is a usage pattern via the Script API rather than built-in
- Profile mode does not carry site logins on macOS
Getting started
claude mcp add --scope user public-browser -- npx -y public-browser@latest (add --script for the Python Script API).At a glance
- Type
- Project
- Status
- production
- Language
- TypeScript
- Runtime
- MCP server, Node library, Python client
- Has code
- yes
- Has tests
- yes
Use cases and integrations
How curated lists describe it
Browser control: lets Claude Code and Cursor drive a real Chrome profile, with a Jev loop deciding the actions, reporting roughly 30% fewer tokens and 25% lower cost.
yibie/awesome-jev
Frequently asked questions
Where does Jev fit in Public Browser?
Public Browser exposes the page as a bounded set of refs, which a Jev loop can choose from instead of an LLM inventing selectors.
How much cheaper is it?
The README reports a median 3.0M versus 4.5M session tokens against agent-browser on its 30-test benchmark page.
Do I need Jev to use it?
No; it works with any MCP client, and Jev is one optional decision layer.
Related projects
Jev browser agent that pierces shadow DOM and iframes, adds canvas fallback and full actions, with one Jev request per cycle.
MCP serverbetaPythonMCP server that takes a whole browser task (URL, goal, checks) in one call and drives Chrome server-side with a decision model.
MCP serverbetaPythonAgent skill porting jev-ultrafast's loop into ego lite: one ~0.4 s Jev call per DOM step picks operation and target.
Agent skillbetaTypeScriptAgent-plugin browser tool where Jev picks one operation and one row from a numbered page table; a small LLM only writes typed text.
ProjectbetaTypeScriptChrome extension plus MCP server so Claude or Codex can drive your real Chrome, with Jev picking each click in about half a second.
MCP serverbetaTypeScriptMCP server that lets Claude Code or Codex drive real Chrome with Jev picking elements and checking steps, plus safety gates and traces.
MCP serverbetaTypeScript