Skip to content

Releases: rayss868/fastmcp-browser

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 23 Oct 10:20

WebExtension builds of FastMCP Browser — the MCP bridge that drives Chrome/Firefox over a loopback WebSocket (34 MCP browser tools).

What's new in v0.6.0

  • Read a page as markdown / text / aria / delta. browser_snapshot accepts format:"markdown" (structured main-content markdown, ~80% fewer tokens), format:"text", format:"aria" (hierarchical tree), and delta:true (only what changed since the last snapshot).
  • Main-content detection, heading outline, untrusted boundaries. Text/markdown reads score candidate blocks Readability-style, include an h1–h6 outline, and wrap page text in per-call random markers so models separate data from instructions.
  • browser_image reads pictures, not names. Pass url or an <img> ref/selector; bytes come back as an MCP image block with session cookies, so picture choices, diagrams, and charts are visible to the model.
  • Digest truncation signal + content ranking. Digest reports shown/elementCount/truncated, ranks main content above nav/sidebar chrome, and image controls carry hasImage/imageUrl.
  • browser_open reuses tabs and reports the group. Re-visiting an open URL returns it with reused:true plus a compact tabs summary, so agents stop opening duplicates.
  • Frozen tabs wake automatically. callPage restores minimized windows, polls waitForThaw() until frozen clears, and retries internally — actions wake proactively, so one AI turn suffices.
  • Container-aware scroll + lazy-load signal. Scroll walks to the nearest scrollable container, supports ref/selector scrollIntoView, and every read carries pageGeometry (belowFold).
  • Single schema source of truth. Server Zod schemas derive from the JSON definitions with a drift-guard test; drag accepts ref endpoints/steps/stealth/scrollIntoView; navigated:true replaces false TAB_NOT_ACCESSIBLE on navigation; SPA route changes expire refs (STALE_REF); browser_act returns verifiable target + form.

Install

Unzip an archive and load it unpacked:

  • Chromium (fastmcp-browser-extension-chromium.zip) → chrome://extensions → Load unpacked → the chromium folder
  • Firefox (fastmcp-browser-extension-firefox.zip) → about:debugging → Load Temporary Add-on → firefox/manifest.json

The Firefox .xpi has manifest.json at the archive root. It is unsigned; standard Firefox release builds require a Mozilla-signed add-on for permanent installation. LibreWolf and Firefox Developer Edition/Nightly may allow unsigned add-ons when signature enforcement is disabled.

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 15 Oct 03:50

WebExtension builds of FastMCP Browser — the MCP bridge that drives Chrome/Firefox over a loopback WebSocket (34 MCP browser tools).

What's new in v0.6.0

  • Read a page as markdown / text / aria / delta. browser_snapshot accepts format:"markdown" (structured main-content markdown, ~80% fewer tokens), format:"text", format:"aria" (hierarchical tree), and delta:true (only what changed since the last snapshot).
  • Main-content detection, heading outline, untrusted boundaries. Text/markdown reads score candidate blocks Readability-style, include an h1–h6 outline, and wrap page text in per-call random markers so models separate data from instructions.
  • browser_image reads pictures, not names. Pass url or an <img> ref/selector; bytes come back as an MCP image block with session cookies, so picture choices, diagrams, and charts are visible to the model.
  • Digest truncation signal + content ranking. Digest reports shown/elementCount/truncated, ranks main content above nav/sidebar chrome, and image controls carry hasImage/imageUrl.
  • browser_open reuses tabs and reports the group. Re-visiting an open URL returns it with reused:true plus a compact tabs summary, so agents stop opening duplicates.
  • Frozen tabs wake automatically. callPage restores minimized windows, polls waitForThaw() until frozen clears, and retries internally — actions wake proactively, so one AI turn suffices.
  • Container-aware scroll + lazy-load signal. Scroll walks to the nearest scrollable container, supports ref/selector scrollIntoView, and every read carries pageGeometry (belowFold).
  • Single schema source of truth. Server Zod schemas derive from the JSON definitions with a drift-guard test; drag accepts ref endpoints/steps/stealth/scrollIntoView; navigated:true replaces false TAB_NOT_ACCESSIBLE on navigation; SPA route changes expire refs (STALE_REF); browser_act returns verifiable target + form.

Install

Unzip an archive and load it unpacked:

  • Chromium (fastmcp-browser-extension-chromium.zip) → chrome://extensions → Load unpacked → the chromium folder
  • Firefox (fastmcp-browser-extension-firefox.zip) → about:debugging → Load Temporary Add-on → firefox/manifest.json

The Firefox .xpi has manifest.json at the archive root. It is unsigned; standard Firefox release builds require a Mozilla-signed add-on for permanent installation. LibreWolf and Firefox Developer Edition/Nightly may allow unsigned add-ons when signature enforcement is disabled.

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 16:05

WebExtension builds of FastMCP Browser — the MCP bridge that drives Chrome/Firefox over a loopback WebSocket (33 MCP browser tools).

What's new in v0.5.0

  • Read a page as text. browser_snapshot accepts format:"text" to return the rendered text of the page main region (innerText) in one small payload, so an agent reads a text-heavy page directly instead of paying for a screenshot. format:"digest" also accepts includeText:true, and maxChars caps the length.
  • Read a long text block in place. browser_snapshot accepts maxNameChars to raise the per-element name cap for one call (default 160), so a page whose whole body sits in one block element (main, article) is no longer truncated in compact.
  • Screenshot is scoped to non-DOM content. Its description now steers the model to use it only for canvas, WebGL, image, or PDF content, and to read ordinary text pages with format:"text".
  • browser_wait_for state digest-changes. Resolves when the AI-readable control digest changes, so an agent waits on state instead of a fixed sleep or a raw DOM settle.
  • Workflow recording and replay. Any session driven through the MCP server can be recorded to a .jsonl run file (FASTMCP_RECORD) and replayed later through the bridge with no AI client (cli replay); cli export --script turns a run file into a runnable .mjs.
  • Label-wrapped controls are visible again. A <label> that wraps or points to a visually-hidden <input> (DaisyUI radio tabs, custom checkboxes) is reported with the input's role and the label's text, so it appears in a snapshot and the digest and gets a ref.
  • browser_evaluate is a gated last resort. It now requires a fallback reason and is refused until the tab has been read through the extension.
  • Refs survive long-lived pages, and browser_inspect with a path no longer floods the context with React props.
  • Content redaction for prompt-injection defense. User-configurable rules filter what the AI reads from a page, configured from the extension options page.

Install

Unzip an archive and load it unpacked:

  • Chromium (fastmcp-browser-extension-chromium.zip) → chrome://extensions → Load unpacked → the chromium folder
  • Firefox (fastmcp-browser-extension-firefox.zip) → about:debugging → Load Temporary Add-on → firefox/manifest.json

The Firefox .xpi has manifest.json at the archive root. It is unsigned; standard Firefox release builds require a Mozilla-signed add-on for permanent installation. LibreWolf and Firefox Developer Edition/Nightly may allow unsigned add-ons when signature enforcement is disabled.

v0.4.9

Choose a tag to compare

@github-actions github-actions released this 12 Oct 05:11

WebExtension builds of FastMCP Browser — the MCP bridge that drives Chrome/Firefox over a loopback WebSocket (33 MCP browser tools).

What's new in v0.4.9

  • Release notifications. The extension status popup checks the latest GitHub release and displays a text notice with a release link when a newer version is available. It never downloads or installs updates automatically.
  • Firefox connectivity. Firefox extension pages allow the GitHub Releases API connection used by the notification checker while retaining the local WebSocket connection policy.
  • Lightweight page digest. browser_snapshot accepts format:"digest" to return actionable controls with refs, values, and checked/disabled state without a full accessibility tree. The digest stays warm as the DOM settles, invalidates promptly on relevant mutations, scopes to the top visible modal, and supports browser_act.refresh:"digest" for post-action state.
  • Nested modal targeting. Dialog-scoped snapshots select the last visible dialog, including alertdialog, so nested modal actions target the active dialog rather than an underlying one.
  • Bundle parsing regression fixed. The digest role set uses a distinct identifier so the concatenated Chromium/Firefox content bundle parses and the page engine can inject successfully.
  • Retained v0.4.7 guidance. Tool descriptions continue to discourage click-then-type for form fields; browser_fill and browser_fill_form set values directly and avoid an unnecessary click round-trip.

Install

Unzip an archive and load it unpacked:

  • Chromium (fastmcp-browser-extension-chromium.zip) → chrome://extensions → Load unpacked → the chromium folder
  • Firefox (fastmcp-browser-extension-firefox.zip) → about:debugging → Load Temporary Add-on → firefox/manifest.json

The Firefox .xpi has manifest.json at the archive root. It is unsigned; standard Firefox release builds require a Mozilla-signed add-on for permanent installation. LibreWolf and Firefox Developer Edition/Nightly may allow unsigned add-ons when signature enforcement is disabled.

v0.4.8

Choose a tag to compare

@github-actions github-actions released this 12 Oct 04:38

WebExtension builds of FastMCP Browser — the MCP bridge that drives Chrome/Firefox over a loopback WebSocket (33 MCP browser tools).

What's new in v0.4.8

  • Lightweight page digest. browser_snapshot now accepts format:"digest" to return actionable controls with refs, values, and checked/disabled state without a full accessibility tree. The digest stays warm as the DOM settles, invalidates promptly on relevant mutations, scopes to the top visible modal, and supports browser_act.refresh:"digest" for post-action state.
  • Nested modal targeting. Dialog-scoped snapshots now select the last visible dialog, including alertdialog, so nested modal actions target the active dialog rather than an underlying one.
  • Bundle parsing regression fixed. The digest role set uses a distinct identifier so the concatenated Chromium/Firefox content bundle parses and the page engine can inject successfully.
  • Retained v0.4.7 guidance. Tool descriptions continue to discourage click-then-type for form fields; browser_fill and browser_fill_form set values directly and avoid an unnecessary click round-trip.

Install

Unzip an archive and load it unpacked:

  • Chromium (fastmcp-browser-extension-chromium.zip) → chrome://extensions → Load unpacked → the chromium folder
  • Firefox (fastmcp-browser-extension-firefox.zip) → about:debugging → Load Temporary Add-on → firefox/manifest.json

The Firefox .xpi has manifest.json at the archive root. It is unsigned; standard Firefox release builds require a Mozilla-signed add-on for permanent installation. LibreWolf and Firefox Developer Edition/Nightly may allow unsigned add-ons when signature enforcement is disabled.

v0.4.7

Choose a tag to compare

@github-actions github-actions released this 09 Oct 09:37

WebExtension builds of FastMCP Browser — the MCP bridge that drives Chrome/Firefox over a loopback WebSocket (33 MCP browser tools).

What's new in v0.4.7

  • Steer the model away from click-then-type. browser_click, browser_fill, and browser_fill_form now say in their tool descriptions that an input must not be clicked just to place the caret: browser_fill/browser_fill_form set the value directly, and a click-then-type pair only adds a round-trip in which a stray user click can move the caret and send the text to the wrong field. Same extension build; the change is in the MCP server tool docs.

Install

Unzip an archive and load it unpacked:

  • Chromium (fastmcp-browser-extension-chromium.zip) → chrome://extensions → Load unpacked → the chromium folder
  • Firefox (fastmcp-browser-extension-firefox.zip) → about:debugging → Load Temporary Add-on → firefox/manifest.json

The Firefox .xpi has manifest.json at the archive root. It is unsigned; standard Firefox release builds require a Mozilla-signed add-on for permanent installation. LibreWolf and Firefox Developer Edition/Nightly may allow unsigned add-ons when signature enforcement is disabled.

v0.4.6

Choose a tag to compare

@github-actions github-actions released this 09 Oct 07:56

WebExtension builds of FastMCP Browser — the MCP bridge that drives Chrome/Firefox over a loopback WebSocket (33 MCP browser tools).

What's new in v0.4.6

  • Every action tool works again. content/diff.js was imported by engine.js but never inlined into the content bundle by build.mjs, so computeDiff/shouldRefresh were undefined at runtime. The ReferenceError was swallowed by callPage and surfaced as a misleading TAB_NOT_ACCESSIBLE ("the tab may be navigating or crashed") on every browser_click/fill/type/press/select/fill_form/upload/scroll/pointer_*, while reads (browser_snapshot/browser_evaluate) still worked. The module is now bundled.
  • Regression guard. dist-completeness now asserts every binding engine.js imports is actually defined in the built bundle, so a module that is dropped from the build fails CI instead of silently shipping a broken engine.
  • Housekeeping — MCP server version bumped to 0.4.6; README test counts corrected (55 server, 153 extension).

Install

Unzip an archive and load it unpacked:

  • Chromium (fastmcp-browser-extension-chromium.zip) → chrome://extensions → Load unpacked → the chromium folder
  • Firefox (fastmcp-browser-extension-firefox.zip) → about:debugging → Load Temporary Add-on → firefox/manifest.json

The Firefox .xpi has manifest.json at the archive root. It is unsigned; standard Firefox release builds require a Mozilla-signed add-on for permanent installation. LibreWolf and Firefox Developer Edition/Nightly may allow unsigned add-ons when signature enforcement is disabled.

v0.4.5

Choose a tag to compare

@github-actions github-actions released this 09 Oct 06:36

WebExtension builds of FastMCP Browser — the MCP bridge that drives Chrome/Firefox over a loopback WebSocket (33 MCP browser tools).

What's new in v0.4.5

  • Screenshots capture the right tab. browser_screenshot (viewport, full page, and the visual-mode overlay) now brings the requested tab to the front before captureVisibleTab and restores the tab you were on, so a background Automation tab no longer returns an image of an unrelated foreground tab.
  • dom_stable / network_idle actually settle. The wait slice now always outlasts the requested quiet window, and an omitted stableMs no longer produces a NaN slice that hangs until the deadline.
  • Documented tool params now reach the extension. goal, keywords, relevantOnly (snapshot/find/inventory), filter (inventory), and refresh (act) were documented but missing from the schemas, so zod silently stripped them; they are wired end to end.
  • Tighter sandbox. The authorized tab set follows group membership, so a tab dragged out of the Automation group immediately loses authorization, and auto-resolved tabs reconcile first.
  • More fixes. Structured removed diff entries, position:fixed elements accepted by the actionability check, browser_open reuses any live grouped tab instead of opening a duplicate, the CLI honors per-tool timeouts, and non-idempotent actions are no longer auto-retried.
  • Housekeeping — MCP server version bumped to 0.4.5; README test counts corrected (55 server, 151 extension).

Install

Unzip an archive and load it unpacked:

  • Chromium (fastmcp-browser-extension-chromium.zip) → chrome://extensions → Load unpacked → the chromium folder
  • Firefox (fastmcp-browser-extension-firefox.zip) → about:debugging → Load Temporary Add-on → firefox/manifest.json

The Firefox .xpi has manifest.json at the archive root. It is unsigned; standard Firefox release builds require a Mozilla-signed add-on for permanent installation. LibreWolf and Firefox Developer Edition/Nightly may allow unsigned add-ons when signature enforcement is disabled.

v0.4.4

Choose a tag to compare

@github-actions github-actions released this 07 Oct 12:27

WebExtension builds of FastMCP Browser — the MCP bridge that drives Chrome/Firefox over a loopback WebSocket (33 MCP browser tools).

What's new in v0.4.4

  • Actionable diffs. After every action the engine returns a diff of what actually changed on the page, so agents can verify their click or typing landed instead of re-snapshotting blindly.
  • Auto post-action snapshot. Actions now ship a refreshed snapshot (with new refs) in the same call — no extra browser_snapshot round-trip needed.
  • Goal ranking. browser_snapshot / browser_inventory accept a goal (and relevantOnly) so candidates are ranked by relevance and limit cuts from the most relevant end instead of DOM order — long pages no longer hide the target form at the bottom.
  • browser_find tool. Text or regex lookup that returns only the matching elements with refs, without the full tree. 33 MCP tools now.
  • Ref recovery fixes. Radio fill on Google Forms, null unwrap in browser_evaluate, and ref recovery by duplicate index.
  • Housekeeping — MCP server version bumped to 0.4.4; README extension test count corrected (144).

Install

Unzip an archive and load it unpacked:

  • Chromium (fastmcp-browser-extension-chromium.zip) → chrome://extensions → Load unpacked → the chromium folder
  • Firefox (fastmcp-browser-extension-firefox.zip) → about:debugging → Load Temporary Add-on → firefox/manifest.json

The Firefox .xpi has manifest.json at the archive root. It is unsigned; standard Firefox release builds require a Mozilla-signed add-on for permanent installation. LibreWolf and Firefox Developer Edition/Nightly may allow unsigned add-ons when signature enforcement is disabled.

v0.4.3

Choose a tag to compare

@github-actions github-actions released this 06 Oct 14:16

WebExtension builds of FastMCP Browser — the MCP bridge that drives Chrome/Firefox over a loopback WebSocket (32 MCP browser tools).

What's new in v0.4.3

  • Stealth humanize layer. Mouse movement now follows bezier trajectories with eased velocity, typing is emitted key-by-key with human-like cadence and a per-field typo rate, and scrolling uses natural incremental steps instead of one instant jump. All of it is wired into the existing click / type / scroll tools — no new call sites needed.
  • Fingerprint patches. The content engine patches the automation-detection surfaces (navigator.webdriver, permissions, plugin/mimeTypes arrays) so pages see a consistent, non-automation environment.
  • Actionability wiring. Clicks and typing now wait for the element to actually be actionable (enabled, connected) and fail with a clear error rather than silently mis-targeting a disabled or detached control.
  • Snapshot robustness fixes. Compact snapshot no longer crashes on large or deeply nested pages, errors from snapshot walks are surfaced to the caller instead of swallowed, an iframe hint is included when elements live inside frames, and the DOM walk is capped to prevent runaway traversals.
  • Housekeeping — MCP server version bumped to 0.4.3; README extension test count corrected (120).

Install

Unzip an archive and load it unpacked:

  • Chromium (fastmcp-browser-extension-chromium.zip) → chrome://extensions → Load unpacked → the chromium folder
  • Firefox (fastmcp-browser-extension-firefox.zip) → about:debugging → Load Temporary Add-on → firefox/manifest.json

The Firefox .xpi has manifest.json at the archive root. It is unsigned; standard Firefox release builds require a Mozilla-signed add-on for permanent installation. LibreWolf and Firefox Developer Edition/Nightly may allow unsigned add-ons when signature enforcement is disabled.