Repository navigation
Releases: rayss868/fastmcp-browser
Release list
v0.7.0
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_snapshotacceptsformat:"markdown"(structured main-content markdown, ~80% fewer tokens),format:"text",format:"aria"(hierarchical tree), anddelta: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_imagereads pictures, not names. Passurlor 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 carryhasImage/imageUrl. browser_openreuses tabs and reports the group. Re-visiting an open URL returns it withreused:trueplus a compacttabssummary, so agents stop opening duplicates.- Frozen tabs wake automatically.
callPagerestores minimized windows, pollswaitForThaw()untilfrozenclears, 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 carriespageGeometry(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:truereplaces falseTAB_NOT_ACCESSIBLEon navigation; SPA route changes expire refs (STALE_REF);browser_actreturns verifiabletarget+form.
Install
Unzip an archive and load it unpacked:
- Chromium (
fastmcp-browser-extension-chromium.zip) →chrome://extensions→ Load unpacked → thechromiumfolder - 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
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_snapshotacceptsformat:"markdown"(structured main-content markdown, ~80% fewer tokens),format:"text",format:"aria"(hierarchical tree), anddelta: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_imagereads pictures, not names. Passurlor 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 carryhasImage/imageUrl. browser_openreuses tabs and reports the group. Re-visiting an open URL returns it withreused:trueplus a compacttabssummary, so agents stop opening duplicates.- Frozen tabs wake automatically.
callPagerestores minimized windows, pollswaitForThaw()untilfrozenclears, 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 carriespageGeometry(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:truereplaces falseTAB_NOT_ACCESSIBLEon navigation; SPA route changes expire refs (STALE_REF);browser_actreturns verifiabletarget+form.
Install
Unzip an archive and load it unpacked:
- Chromium (
fastmcp-browser-extension-chromium.zip) →chrome://extensions→ Load unpacked → thechromiumfolder - 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
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_snapshotacceptsformat:"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 acceptsincludeText:true, andmaxCharscaps the length. - Read a long text block in place.
browser_snapshotacceptsmaxNameCharsto 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 incompact. - 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_forstatedigest-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
.jsonlrun file (FASTMCP_RECORD) and replayed later through the bridge with no AI client (cli replay);cli export --scriptturns 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_evaluateis a gated last resort. It now requires afallbackreason and is refused until the tab has been read through the extension.- Refs survive long-lived pages, and
browser_inspectwith apathno 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 → thechromiumfolder - 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
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_snapshotacceptsformat:"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 supportsbrowser_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_fillandbrowser_fill_formset 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 → thechromiumfolder - 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
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_snapshotnow acceptsformat:"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 supportsbrowser_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_fillandbrowser_fill_formset 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 → thechromiumfolder - 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
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, andbrowser_fill_formnow say in their tool descriptions that an input must not be clicked just to place the caret:browser_fill/browser_fill_formset 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 → thechromiumfolder - 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
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.jswas imported byengine.jsbut never inlined into the content bundle bybuild.mjs, socomputeDiff/shouldRefreshwereundefinedat runtime. TheReferenceErrorwas swallowed bycallPageand surfaced as a misleadingTAB_NOT_ACCESSIBLE("the tab may be navigating or crashed") on everybrowser_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-completenessnow asserts every bindingengine.jsimports 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 → thechromiumfolder - 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
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 beforecaptureVisibleTaband restores the tab you were on, so a background Automation tab no longer returns an image of an unrelated foreground tab. dom_stable/network_idleactually settle. The wait slice now always outlasts the requested quiet window, and an omittedstableMsno longer produces aNaNslice that hangs until the deadline.- Documented tool params now reach the extension.
goal,keywords,relevantOnly(snapshot/find/inventory),filter(inventory), andrefresh(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
removeddiff entries,position:fixedelements accepted by the actionability check,browser_openreuses 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 → thechromiumfolder - 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
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_snapshotround-trip needed. - Goal ranking.
browser_snapshot/browser_inventoryaccept agoal(andrelevantOnly) so candidates are ranked by relevance andlimitcuts from the most relevant end instead of DOM order — long pages no longer hide the target form at the bottom. browser_findtool. 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 → thechromiumfolder - 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
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 → thechromiumfolder - 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.