Skip to main content
Glama

FileForge

Your agent watches your signed-in Chrome across tabs, sweeps your routes, and hands you the bug report.

FileForge is a local MCP server plus a Chrome extension. It works with Claude Code, Claude Desktop, Codex and Cursor. Your client talks to the server over stdio, the server talks to the extension over a WebSocket on 127.0.0.1, and the extension uses Chrome APIs and the DevTools Protocol.

What your agent can do

  • Watch several tabs at once. Follow network traffic, console errors, JS exceptions and DOM changes across tabs, and set tripwires such as status >= 500 to check later.

  • Sweep your routes. One call visits a list of routes and returns console errors, failed API calls, and accessibility and layout issues for each.

  • Get coding context for a page. One call returns the framework, selectors, forms, console, network and performance.

  • Hand you the evidence. Generate bug reports, PR evidence bundles and debug bundles, or export captured API calls as curl, Postman or MSW mocks.

  • Come back to earlier results. Audits, route sweeps and scrapes are saved in SQLite under ~/.fileforge/, where the agent can read them with SQL later. It can also compare two audit runs. Scraped links and tables get their own tables.

  • Repeat the work. Record a browser workflow and replay it, or schedule a routine.

All of this runs in the Chrome you already use, signed in to your own apps and staging sites.

Related MCP server: Kaboom Browser AI Devtools MCP

Try these prompts

Open a page you're working on, then ask your agent:

Use FileForge to show the console errors and failed network requests on my active tab, then find the likely cause in this repo.
Use FileForge to sweep /, /pricing and /settings on http://localhost:3000 and list the console errors and failed API calls for each route.
Use FileForge to watch my open tabs and set a tripwire for status >= 500. I'll click around. When I say done, tell me what fired and which request caused it, then write a bug report.

How it compares

Reaching your signed-in browser is no longer unique to FileForge. These are the differences as of November 2026, from each project's own docs:

FileForge

Chrome DevTools MCP

Playwright MCP

Use your signed-in browser

Extension, connected whenever the server runs

--autoConnect, after enabling remote debugging in Chrome

--extension, choosing a tab to connect

Install

npm, plus an unpacked extension

npx, no extension

npx, plus a Chrome Web Store extension for your signed-in browser

Cross-tab watching and tripwires

Yes

Not in its tool reference

Not in its docs

Route sweep in one call

Yes

Not in its tool reference

Not in its docs

Bug report and PR evidence bundles

Yes

Not in its tool reference

Not in its docs

SQL over saved results

Yes

Not in its tool reference

Not in its docs

Heap snapshots and Lighthouse

No

Yes

Not in its docs

Browsers

Chrome

Chrome

Chrome, Edge, Firefox, WebKit

Maintained by

One independent developer

Google's Chrome DevTools team

Microsoft

Pick Chrome DevTools MCP for memory leaks, Lighthouse audits or an install with no extension. Pick Playwright MCP to automate other browsers or generate tests. Pick FileForge when an agent should keep an eye on several tabs, check many routes, and produce evidence you can keep. It complements Playwright, Cypress and Vitest; keep those for your test suite.

Context cost: the tool list is about 23,000 tokens (26 tools, roughly 93 KB of schemas), which your client may load at the start of a session. If that matters, compare it with your other servers before leaving it on all the time.

Quickstart

You need Node.js 20 or newer and Google Chrome.

npm install -g fileforge-mcp-server
fileforge-setup

fileforge-setup prints the extension folder and the exact command or config for each client, using your real paths. It changes nothing unless you pass --write. Then:

  1. Load the extension. Open chrome://extensions, turn on Developer mode, click Load unpacked and pick the folder it printed. FileForge isn't on the Chrome Web Store.

  2. Connect your client. For Claude Code or Codex, run the command it printed. For Cursor or Claude Desktop, run fileforge-setup --client cursor --write or fileforge-setup --client claude-desktop --write, which keeps your other servers and saves the old file as .bak.

  3. Check it. With your client open and Chrome running, run fileforge-verify, then ask your agent to call fileforge_runtime_action with action: "status".

Prefer a clone? Full instructions for every client and OS are in docs/setup.md.

Tool groups

Every tool takes an action parameter. The full reference, with every action and parameter, is in docs/tools.md.

For a tool specification page, use docs/tools-spec.json. It includes every registered tool and action, features, input schemas, request templates, response conventions, and available capability metadata. Undeclared output schemas are explicitly marked. Regenerate both references with cd mcp-server && npm run docs:tools.

Tool

What it does

fileforge_runtime_action

Server health, extension status and version check, request log

fileforge_browser_action

Open, switch, reload and close tabs; read tab and window state

fileforge_page_interaction

Read and act on the DOM: text, snapshots, forms, click, fill, assert, debug selectors

fileforge_scrape_action

Scrape pages, tables, metadata, assets and design tokens; crawl a site

fileforge_devtools_action

Console, JS errors, network, API responses, WebSockets, evaluate, HAR export

fileforge_eye_action

Watch several tabs at once for network, console and DOM activity; set tripwires

fileforge_coding_action

One-call coding context for a page, a route sweep, or a bug

fileforge_qa_testing

Smoke tests, route checks, clean-console and clean-network checks

fileforge_audit_action

SEO, accessibility, content, security and policy audits with presets

fileforge_a11y_action

Accessibility tree, keyboard and contrast checks

fileforge_responsive_action

Layout scans across widths; overflow and overlap finder

fileforge_perf_action

Performance audit and metrics

fileforge_visual_action

Screenshots, baselines, visual diffs, CSS, colors and fonts

fileforge_api_action

Discover REST and GraphQL calls; export curl, Postman or MSW mocks

fileforge_app_action

Detect the framework; read routes, client storage, feature flags, Next.js data

fileforge_extension_action

Inspect a Chrome extension's manifest, storage, service worker and errors

fileforge_workflow_action

Record and replay browser workflows

fileforge_task_action

Create, schedule and run multi-step routines

fileforge_result_action

Fetch, list, search and slice stored results

fileforge_sql_action

List, describe and query saved results and scraped data with SQL

fileforge_search_action

Search saved pages, notes, history and bookmarks

fileforge_memory_action

Save pages, diff them against earlier visits, search memory

fileforge_note_action

Local notes

fileforge_file_action

Fetch, parse, convert and decode files and data URIs

fileforge_report_action

Bug reports, PR evidence and debug bundles

fileforge_export_action

Export stored results and SQL output to files

Security and privacy

  • The bridge listens on 127.0.0.1:47821 only. It rejects connections from web pages and from any extension other than FileForge's pinned ID.

  • Other local processes need the token in ~/.fileforge/bridge-token, which only your user can read. Set FILEFORGE_REQUIRE_PAIRING=1 to require it from the extension too (pairing).

  • Everything is stored locally in ~/.fileforge/. There is no telemetry, and FileForge makes no outbound requests on its own: everything it fetches is a page or URL a tool was asked to load.

  • Tools that would return raw secret values are off unless you set FILEFORGE_ALLOW_SECRET_REVEAL=1.

  • fileforge_file_action reads local files only from FileForge's output folders and folders you list in FILEFORGE_ALLOWED_READ_PATHS, and fetches local or private addresses only for hosts you list in FILEFORGE_ALLOWED_FETCH_HOSTS. Browser tools can still open those addresses.

  • The debugger attaches only to the tabs a tool call names (Eye watches every tab only when called with all: true), and Chrome shows its "started debugging this browser" bar while it does. Every permission is explained in docs/permissions.md.

The threat model and how to report a vulnerability are in SECURITY.md.

More

License

MIT. See LICENSE.

Available Tools

26 tools
fileforge_a11y_actionA

Check one page's accessibility: run an audit, read the accessibility tree, and check keyboard navigation and color contrast. Use this for focused accessibility work, and fileforge_audit_action for a wider audit. Doesn't change the page; results can be stored locally. Needs the extension.

Inputs: action (required), store, tabId, standard. Returns: query_* actions return their modules as extra top-level fields.

fileforge_api_actionA

Work with the API calls a page makes: discover REST and GraphQL requests, find OpenAPI specs, and export them as curl, Postman or MSW mocks. Reads a running DevTools session, so call start_session on fileforge_devtools_action first or results are empty. Exports replace a file of the same name and can include captured auth headers, so review them before sharing. Needs the extension.

Inputs: action (required), store, tabId, groupBy, +2 more. Returns: query_* actions return their modules as extra top-level fields.

fileforge_app_actionA
Read-only

Inspect a web app in an open tab: detect its framework, and read routes, Next.js data, client storage, feature flags and React tree hints. Use this to understand how an app is built. Use fileforge_coding_action for a full bundle. Read-only, but get_client_storage returns raw localStorage and sessionStorage values, which can include tokens. Needs the extension.

Inputs: action (required), tabId, includeStateHints. Returns: query_* actions return their modules as extra top-level fields.

fileforge_audit_actionA

Audit a page or site for SEO, content, policy and client-side security issues. Prefer query_audit with a preset; compare_runs shows what changed between stored audits. Use fileforge_a11y_action, fileforge_perf_action or fileforge_responsive_action for one focused check. reveal_client_security_value needs FILEFORGE_ALLOW_SECRET_REVEAL=1. Results can be stored. Needs the extension.

Inputs: action (required), key, ref, url, +24 more. Returns: query_* actions return their modules as extra top-level fields.

fileforge_browser_actionA
Destructive

Manage tabs and read browser state: go to a URL, switch, reload and close tabs, move through history, wait for a page, and list open tabs. Use query_context to see what's open, and fileforge_page_interaction to act inside a page. Closing tabs can lose unsaved work, and close_tabs_matching can close many at once, so try dryRun first. Sensitive tab URLs are redacted. Needs the extension.

Inputs: action (required), url, query, store, +22 more. Returns: query_* actions return their modules as extra top-level fields.

fileforge_coding_actionA

Get context for fixing code in one call. inspect_page returns a page's framework, selectors, forms, console, network and performance; audit_routes sweeps many routes for errors; bug_context and article_context gather focused context. Use fileforge_qa_testing for pass/fail checks. Opens pages in your session; results can be stored. Needs the extension.

Inputs: action (required), url, store, tabId, +15 more. Returns: query_* actions return their modules as extra top-level fields.

fileforge_devtools_actionA
Destructive

Read DevTools data for a tab, from the moment a session starts: console, JS errors, network requests, API responses, WebSockets and performance. Prefer query_devtools with a preset; the get_* actions are older. Attaches the debugger, so Chrome shows its debugging bar. evaluate runs JavaScript in the page and replay_request re-sends a request; both can change data and have guards. Needs the extension.

Inputs: action (required), query, store, tabId, +15 more. Returns: query_* actions return their modules as extra top-level fields.

fileforge_export_actionA

Write stored results or SQL query output to a file in formats such as CSV, JSON, Markdown, HAR or ZIP. Use this to hand data to another tool. Use fileforge_result_action or fileforge_sql_action to read data without creating a file. Writes only to FileForge's exports folder, and a filename you reuse replaces that file.

Inputs: action (required), ref, query, format, +1 more. Returns: query_* actions return their modules as extra top-level fields.

fileforge_extension_actionA

Inspect a Chrome extension: manifest, permissions, storage, service worker, content-script injection and errors. Use this to debug an extension you're building, and fileforge_audit_action for store policy checks. reveal_storage_value needs FILEFORGE_ALLOW_SECRET_REVEAL=1. Needs the extension.

Inputs: action (required), key, area, store, +3 more. Returns: query_* actions return their modules as extra top-level fields.

fileforge_eye_actionA
Destructive

Monitor many tabs at once: network traffic, console errors, JS exceptions, DOM changes and WebSocket frames. Set tripwires such as "status >= 500", then read get_tripwires; they don't notify you. watch_person tags events that mention an identity. Use fileforge_devtools_action for one tab in depth. Attaches the debugger to watched tabs; the incognito actions open and close windows. Needs the extension.

Inputs: action (required), all, url, tabs, +11 more. Returns: query_* actions return their modules as extra top-level fields.

fileforge_file_actionA

Fetch, parse and convert files, extract text, and decode data URIs, including those in a page. Use this for documents and embedded assets, and fileforge_scrape_action for HTML pages. Fetches public URLs without your browser session; private addresses need FILEFORGE_ALLOWED_FETCH_HOSTS. Local paths need the output folders of ~/.fileforge or FILEFORGE_ALLOWED_READ_PATHS. Can write files locally.

Inputs: action (required), to, run, url, +11 more. Returns: query_* actions return their modules as extra top-level fields.

fileforge_memory_actionA

Remember pages over time: save a page, find earlier visits, diff it against a previous visit, and search saved pages or pull evidence for a question. Use this to see what changed on a page. Use fileforge_result_action to read tool results and fileforge_search_action to search history. Data stays in ~/.fileforge. save_page and diff_page need the extension.

Inputs: action (required), ref, url, limit, +6 more. Returns: query_* actions return their modules as extra top-level fields.

fileforge_note_actionA

Keep local notes: create, list and search them. Use this to save findings across sessions. Use fileforge_memory_action to save page content and fileforge_report_action for shareable evidence. Notes stay in ~/.fileforge, and there's no update or delete action.

Inputs: action (required), tag, url, body, +5 more. Returns: query_* actions return their modules as extra top-level fields.

fileforge_page_interactionA
Destructive

Read and act inside one open page: get text, snapshots and forms, click, fill, scroll, assert, and debug selectors. click and fill act on the real signed-in page, so they can submit or change data. hide_elements lasts until restore_hidden_elements. Use fileforge_qa_testing for repeatable checks across pages and fileforge_scrape_action for structured extraction. Needs the extension.

Inputs: action (required), mode, depth, store, +28 more. Returns: query_* actions return their modules as extra top-level fields.

fileforge_perf_actionA

Run a performance audit on a URL across viewports and return Core Web Vitals. Use this for a performance check of one page. Use fileforge_devtools_action for raw session data and fileforge_audit_action for SEO, content and security. Loads the URL in its own tab, closes it afterward, and stores the result by default. It doesn't change the site. Needs the extension.

Inputs: url (required), action (required), store, project, +6 more. Returns: query_* actions return their modules as extra top-level fields.

fileforge_qa_testingA

Run repeatable pass/fail checks: smoke tests, page boot, routes, console, network, forms and element watches. Use fileforge_page_interaction for individual steps and fileforge_coding_action while fixing code. URL checks load pages in your session. check_console_clean and check_network_clean read a running DevTools session and return SESSION_NOT_STARTED without one. Needs the extension.

Inputs: action (required), url, store, tabId, +6 more. Returns: query_* actions return their modules as extra top-level fields.

fileforge_report_actionA

Generate evidence bundles from the active tab: a bug report, PR evidence with screenshots and QA results, or a full debug bundle. Use this when you need something to share or attach. Use fileforge_coding_action for context while working. Bundles are saved locally and can contain page data, so review them before sharing. Needs the extension.

Inputs: action (required), urls, tabId, title, +2 more. Returns: query_* actions return their modules as extra top-level fields.

fileforge_responsive_actionA

Find layout bugs across screen widths: scan a URL, and locate overflow and overlapping elements. capture_matrix takes a screenshot at each viewport. Use fileforge_visual_action to compare screenshots against baselines. Loads the page in your session and can store results; it doesn't change the site. Needs the extension.

Inputs: action (required), url, store, tabId, +2 more. Returns: query_* actions return their modules as extra top-level fields.

fileforge_result_actionA
Read-onlyIdempotent

Read results other tools stored in ~/.fileforge: fetch one by ref, list them, search them, or slice a large one. Use this when a tool returns a ref instead of full data. Use fileforge_sql_action to query across results and fileforge_export_action to write one to a file. Works without the extension.

Inputs: action (required), ref, limit, query, +2 more. Returns: query_* actions return their modules as extra top-level fields.

fileforge_runtime_actionA
Read-onlyIdempotent

Check FileForge itself: whether the server and extension are connected, their versions, which tools are available, and recent requests. Use status when other tools report a bridge or connection error. It doesn't touch page content.

Inputs: action (required), limit, failuresOnly, includeDetails. Returns: query_* actions return their modules as extra top-level fields.

fileforge_scrape_actionA

Extract structured content from pages, tabs or a whole site: text, links, tables, metadata, assets and design tokens. Prefer query_scrape; the others are older single-purpose actions. It can't click or submit; use fileforge_page_interaction for that. crawl_site opens real tabs in your signed-in session, up to 50 pages by default. Query stored links and tables with fileforge_sql_action. Needs the extension.

Inputs: action (required), url, urls, query, +10 more. Returns: query_* actions return their modules as extra top-level fields.

fileforge_search_actionA
Read-onlyIdempotent

Search local data by text: saved pages, stored results, notes, browser history and bookmarks. Use all to search everything, or narrow it to one source. Use fileforge_memory_action to compare page visits and fileforge_scrape_action to read a live page. History and bookmarks need the extension.

Inputs: action (required), ref, limit, query. Returns: query_* actions return their modules as extra top-level fields.

fileforge_sql_actionA

Query FileForge's stored results with SELECT-only SQL. Use list_tables and describe_table to see the schema, query to read rows, and export_query to write rows to a file. Covers saved results and scraped pages, links and tables, not the live browser. Use fileforge_result_action to fetch a single known ref. Works without the extension.

Inputs: action (required), ref, limit, query, +4 more. Returns: query_* actions return their modules as extra top-level fields.

fileforge_task_actionA
Destructive

Run multi-step work two ways. Tasks (start, add, status, monitor_page) track one job. Routines (create, validate, dry_run, run, plan_from_prompt) are saved and can be scheduled, but cron only fires while this server runs. For a single step, call the tool directly. Runs act in your browser, pausing only at steps that require approval. delete removes a task; routines can only be disabled.

Inputs: action (required), url, mode, name, +62 more. Returns: query_* actions return their modules as extra top-level fields.

fileforge_visual_actionA

Capture and compare how pages look: screenshots of a page, element or region, baselines, visual diffs across routes and viewports, and computed CSS, colors and fonts. Use fileforge_responsive_action to find layout bugs. Files and baselines are saved locally. capture_screenshot needs the tab to be visible. Needs the extension.

Inputs: action (required), x, y, ref, +29 more. Returns: query_* actions return their modules as extra top-level fields.

fileforge_workflow_actionA
Destructive

Record browser actions as a reusable recipe, then list, replay, export or delete recipes. Use this to repeat a sequence you did by hand. Use fileforge_task_action for scheduled or multi-step routines. Replaying really clicks and types in your signed-in browser, and delete_recipe is permanent. Needs the extension.

Inputs: action (required), name, steps, store, +5 more. Returns: query_* actions return their modules as extra top-level fields.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.8/5.0

    Scored across 26 tools

    Disambiguation3/5

    Many tools overlap around browser inspection, auditing, scraping and QA: audit vs a11y/perf/responsive, devtools vs api/eye, coding vs app, and memory vs note/result/search. The descriptions cross-reference each other and help, but an agent still has to make non-obvious choices among several closely related tools.

    Naming Consistency4/5

    All tools use a consistent fileforge_ snake_case prefix, and almost all end in _action. Two tools, fileforge_page_interaction and fileforge_qa_testing, break the suffix pattern, but the overall convention is still predictable.

    Tool Count2/5

    At 26 top-level tools, the surface is heavy for the apparent browser QA/automation scope. Several tools could reasonably be consolidated, especially the audit, devtools/API/monitoring, and extraction/result families, which increases selection burden.

    Completeness4/5

    The set broadly covers browser control, scraping, QA, audits, performance, accessibility, DevTools, files, notes, memory, reports and exports. Minor lifecycle gaps remain, such as notes lacking update/delete, routines only being disabled rather than deleted, and no obvious cleanup for stored results, but agents can mostly work around these.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers