Skip to content

v0.2.2: every browser flag on the MCP server, throttling that holds, readable tool errors

Latest

Choose a tag to compare

@dtduc-git dtduc-git released this 26 Sep 19:37

0.2.2: every browser flag on the MCP server, throttling that actually holds, and errors an agent can read

  • jevnav mcp takes the same browser flags as every other command: --browser (chromium, firefox, webkit), --locale, --timezone, --user-agent, --dialog-policy. The server already supported them internally; the parser never exposed them.
  • A persistent profile (--user-data-dir) now gets --locale, --timezone and --user-agent. They were silently dropped on all three engines (measured).
  • --cdp refuses what it cannot honour (another engine, a profile, locale/timezone/user agent) at startup with exit 2, instead of ignoring it. Behaviour change: --cdp together with --user-data-dir used to ignore the profile silently and now stops with an error; drop one of the two.
  • Throttling: emulate(cpu_throttle=…, network_conditions=…) set the rate over CDP and detached right away, and detaching resets it, so throttling never took effect (measured: 22 ms → 140 ms → back to 22 ms). One CDP session per tab now stays attached; cpu_throttle=1 and network_conditions="No throttling" switch it off; latency_ms/download_kbps/upload_kbps work on their own; offline keeps working on a throttled tab. The MCP emulate tool now exposes all of it (it never did).
  • CDP-only tools (perf_metrics, heap_snapshot, throttling) say they need --browser chromium on a Firefox/WebKit server, before applying anything.
  • MCP SDK 2.x sends only "Error executing tool X" for an ordinary exception. Tool errors now reach the client with their type and reason (a path outside --file-root, --no-eval, a non-http URL, …); unexpected failures keep their traceback in the server log.
  • new_page, select_page and close_page launch the browser when they are the session's first call, instead of claiming "not an injected page".
  • close_page on the tab being driven, when it was the last one, left the session on the closed tab (page_state then failed). It now moves to the last remaining tab; closing the only tab and out-of-range indexes are clear errors.
  • An unknown network_conditions name is always refused (it used to be dropped silently when explicit values came with it).
  • Chromium launch flags are no longer passed to Firefox/WebKit (WebKit's Linux MiniBrowser exits on an unknown option).
  • Docs: the README is restructured for first-time readers (full MCP reference in docs/mcp.md, evidence in docs/evidence.md, game mode in docs/games.md), and stale claims were fixed.
  • Tests: 267 (was 240), covering real Firefox/WebKit profiles, an MCP server over stdio on Firefox, measured CPU/network throttling, offline on a throttled tab and error text over MCP. The MCP tests also pass on the SDK floor (mcp 1.28.1).

Reviewed by an independent reviewer over two passes.