Skip to content
Agentmart
Submit a tool

Feedthrough

Debug bridge inside your web app: an agent reads the DOM, console and network.

Connector by feedthrough · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)★ 4
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/feedthrough-feedthrough

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Debug bridge inside your web app: an agent reads the DOM, console and network. Any browser.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.

Tools
13 read · 8 write · 3 delete
Secrets
None asked for
Install scripts
Not scanned yet
Runs as
Node.js package

Tools by what they do 24

Read from the source code; the running server may list different tools.

Read 13 · Look things up without changing anything.

  • connection_status
  • connection_status()
  • get_console_logs
  • get_html
  • get_html(selector)
  • get_instructions
  • get_instructions()
  • get_network_requests
  • get_page_info
  • get_page_info()
  • inspect_element
  • query_dom
Show 1 more tools
  • query_dom(selector)

Write 8 · Create, change, send or run things.

  • click
  • click(selector)
  • fill
  • hover
  • hover(selector)
  • press_key
  • set_style
  • set_text

Delete 3 · Delete, drop, revoke or wipe things.

  • reset_overrides
  • reset_overrides()
  • set_attribute

Secrets and settings it asks for

Other settings (environment variables or headers).

  • FEEDTHROUGH_ALLOWED_HOST_SUFFIXES
  • FEEDTHROUGH_PORT

Tools (24)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • click

    Click an element by calling its native click(), which fires a click event and runs the default activation: following a link, toggling a checkbox or radio, submitting a form. Prefer an id selector (#submit-btn) for reliable targeting. Note it does NOT synthesize the preceding pointer/mouse sequence (pointerdown / mousedown / mouseup) or move focus, so a handler wired specifically to those events rather than to click won't fire; for keyboard-driven activation use press_key instead. Behavior: if the selector matches nothing the call returns an error; it does not scroll the element into view, and …

  • click(selector)
  • connection_status

    Check whether a browser with the Feedthrough bridge is currently connected. Returns a connected flag, a list of open tabs (id, url, which is active), and a 'server' block identifying this bridge: its name, version, and the port it actually bound. That port matters — if another agent session's server already held the default 8765, this one moved up, and the page will not find it until the app's dev server is started with FEEDTHROUGH_PORT set to the reported port. When a page is connected but behaving as though someone else is driving it, compare this name with the 'server' field from get_page_i…

  • connection_status()
  • fill

    Set the value of an input, textarea, or select element. Focuses the element, assigns the value through the element's native value setter (so React/Vue controlled inputs register the change), then fires bubbling input and change events. The value is set in one shot, not typed character by character, so per-keystroke handlers (keydown / keypress / keyup / beforeinput) do NOT fire; to send Enter to submit or trigger a key shortcut, follow with press_key. Prefer an id selector (#search-input). If the selector matches nothing the call returns an error; it returns as soon as the events are dispatche…

  • get_console_logs

    Return console output captured since the bridge connected. Covers every console method — log/warn/error/info/debug plus dir, table, assert, trace, count, countReset, time/timeEnd/timeLog, group/groupCollapsed/groupEnd, and clear. Each entry has a 'level' (the closest of the five standard levels); rich methods also carry a 'method' field, and console.trace() plus failing console.assert() entries include a 'stack'. Uncaught exceptions and unhandled promise rejections are also captured (level 'error', method 'uncaught' / 'unhandledrejection') even though the app never logged them. When the app is…

  • get_html

    Return the outerHTML of an element (capped at 50 KB). Use this when the summarised query_dom output isn't enough and you need to see the actual markup/structure of a region. Read-only: it only reads the DOM and makes no changes, and it returns an error if the selector matches nothing.

  • get_html(selector)
  • get_instructions

    Returns the Feedthrough usage guide as a Markdown text document, with sections for the recommended workflow, tool-ordering tips, and selector advice. Read-only and takes no arguments; it does not touch the page or require a connected browser. Call it at the start of a debugging session if you are unfamiliar with Feedthrough or want a quick refresher.

  • get_instructions()
  • get_network_requests

    Return all fetch and XHR requests captured since the bridge connected, including URL, method, HTTP status, duration, request and response headers, and request and response bodies (bodies capped at 10 KB each — anything longer is truncated with a marker; binary responses are summarised). Use this to find failed requests (4xx/5xx), wrong URLs, slow calls, or to inspect what the app actually sent or received. Use 'filter' to narrow by URL/method and 'since' (a ms timestamp) to see only requests that fired after an action. Read-only: it returns a passively captured log and does not issue or modify…

  • get_page_info

    Return basic page context: current URL, document title, readyState, viewport size, scroll position, user agent, and a 'server' block naming which Feedthrough bridge this page is connected to (name, port, version — null against a pre-0.4 bridge). Read-only and non-destructive: it only reads page state and makes no changes. Useful to orient at the start of a session or confirm a navigation happened. If several agent sessions are running on this machine, check 'server.name' against connection_status: a mismatch means this tab is talking to another session's server, so you are driving the wrong ap…

  • get_page_info()
  • hover

    Hover over an element by dispatching synthetic, bubbling mouseover and mouseenter events from inside the page. This triggers JavaScript hover handlers (onMouseEnter / onMouseOver), so hover-only UI that mounts on hover (tooltips, popovers, dropdown and submenus) appears in the DOM; follow up with query_dom, get_html, or inspect_element to read what was revealed. Three limits to know: it does NOT activate the CSS :hover pseudo-class (that is driven by the real cursor, not synthetic events), so styles or content shown purely via :hover in CSS will not change; no mouseout / mouseleave is sent, so…

  • hover(selector)
Show 9 more tools
  • inspect_element

    Return full details about a single element: tag, id, classes, all attributes, text content, bounding rect (top/right/bottom/left/width/height + page scroll and an inViewport flag), a compact ancestor 'path' (e.g. 'body > main > div#app > button.cta'), a curated set of computed styles (layout, box model, typography, positioning, flex/grid), an 'overflow' block when content is clipped/overflowing (scroll vs client size + per-axis x/y flags), a 'clipped' block when an ancestor's overflow cuts the element off (the clipping ancestor + which edges), an effective-visibility check ('visible' boolean, …

  • press_key

    Dispatch a key press (keydown/keypress/keyup) on an element — e.g. Enter to submit a search, Escape to close a modal, Tab to move focus, or ArrowUp/ArrowDown in a list. Use named keys (Enter, Escape, Tab, Backspace, Delete, ArrowUp/Down/Left/Right) or a single character. Note: this fires key handlers but does NOT insert text into inputs — use 'fill' to set an input's value, then press_key for the submit/shortcut. If the selector matches nothing the call returns an error; it dispatches the key events and returns without waiting for any resulting navigation or re-render.

  • query_dom

    Query the page with a CSS selector and return a summary of every matching element (tag, id, classes, text content). Good for counting list items, checking what's rendered, or finding the right selector before calling inspect_element or click. Read-only: it only reads the DOM and never changes the page. Returns an empty list (not an error) when nothing matches, so it is also a safe existence check.

  • query_dom(selector)
  • reset_overrides

    Undo every set_style / set_attribute / set_text change the bridge has applied since it connected, restoring the original values. Best effort: elements the framework has since re-created may not roll back (a page reload always fully resets).

  • reset_overrides()
  • set_attribute

    Set or remove an attribute on an element to preview a change (toggle disabled, swap a class, set an aria-* attribute). Pass value=null to remove the attribute. Live preview only — not saved to source, resets on reload. If the attribute is one a framework controls (class, value, checked, disabled, …) the result includes a 'frameworkWarning' that it may be reverted on the next render — relay it. Reset with reset_overrides.

  • set_style

    Set one or more inline CSS properties on an element to PREVIEW a visual change live (e.g. shrink a label that doesn't fit, adjust padding or width). This edits the running DOM only — it is NOT saved to source and resets on reload — so tell the user it's a preview, and once they're happy, make the real change in the CSS/component source. Inline styles override the stylesheet and usually survive re-renders. The result includes a 'note' to relay; reset with reset_overrides.

  • set_text

    Replace an element's text content to preview wording/label changes. Live preview only — not saved to source, resets on reload. textContent is almost always framework-controlled, so the result includes a 'frameworkWarning' that React/Vue/etc. will likely overwrite it on the next render — relay that, and persist real changes in the source. Reset with reset_overrides.

Signals

Stars
4
Forks
1
Open issues
1
Weekly downloads
41
Last commit
Sep 4, 2026 (1 month ago)
Last release
Sep 4, 2026 (1 month ago)
Last package publish
Sep 4, 2026 (1 month ago)

From GitHub (fetched Oct 24, 2026) and the package registry.

Details

Registry name
io.github.feedthrough/feedthrough
Version
0.4.0
Auth
No auth
Packages
npm @feedthrough/mcp
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026
Cite this page

Feedthrough MCP server. Agent Mart. https://agentmart.dev/connectors/feedthrough-feedthrough (last updated 2026-10-24)