Skip to main content
AllMCPs
BrowseBestCategoriesStackCompareToolsGuidesBlog
Log in Submit MCP

Stay in the loop

Get new MCP servers and top picks in your inbox.

AllMCPs

The open directory for discovering and installing Model Context Protocol servers.

AllMCPs on GitHub (opens in a new tab)
Launched onTiny Startupstinystartups.com
Explore
  • Browse servers
  • Best MCP servers
  • Categories
  • MCP clients
  • Agent prompts
  • Stack Builder
  • Compare servers
  • Random discovery New
  • Submit a server
  • Pricing & Boost Boost
Learn
  • Guides hub
  • What is MCP?
  • Install guide
  • Build an MCP server
  • Deploy an MCP server
  • Security guide
  • Troubleshooting
  • MCP for SEO & AEO
  • Protocol versioning
  • Blog & updates
Tools
  • All developer tools
  • Config generator
  • Config validator
  • Config auditor
  • MCP playground
  • Token calculator
  • OpenAPI โ†’ MCP
  • Badge generator
For agents
  • REST API docs
  • Trust & traffic Live
  • Remote MCP server SSE โ†— (opens in a new tab)
  • llms.txt โ†— (opens in a new tab)
  • Catalog JSON โ†— (opens in a new tab)
Company
  • About
  • Advertise Sponsor
  • Contact
  • GitHub โ†— (opens in a new tab)
  • Terms
  • Privacy
AllMCPs VerifiedAllMCPs VerifiedFeatured on Nick LaunchesFeatured on Nick LaunchesLaunch Llama NewsletterLaunch Llama NewsletterVerified DR - allmcps.comVerified DR - allmcps.comFeatured on SaaSGrowFeatured on SaaSGrowFeatured on Twelve ToolsFeatured on Twelve ToolsFeatured on Saaspa.geFeatured on Saaspa.geFeatured on Findly.toolsFeatured on Findly.toolsFeatured on Startup FameFeatured on Startup FameFeatured on LaunchKiwiFeatured on LaunchKiwiFeatured on ScrollLaunchFeatured on ScrollLaunchFeatured on DailyPingsFeatured on DailyPingsFazier badgeFazier badgeFeatured on NewTool.siteFeatured on NewTool.siteFeatured on saasfame.comFeatured on saasfame.comDR Checker - Domain RatingDR Checker - Domain RatingListed on Turbo0Listed on Turbo0Launched on LaunchBoard - Product Launch PlatformLaunched on LaunchBoard - Product Launch PlatformList on SimilarlabsList on Similarlabshttps://codetrendy.comhttps://codetrendy.comListed on DevTool.ioFeatured on BuildlistFeatured on BuildlistLaunched on Tiny StartupsFeatured on ShowMeBestAIFeatured on ShowMeBestAIFind us on LaunchZoneFind us on LaunchZoneAllMCPs VerifiedAllMCPs VerifiedFeatured on Nick LaunchesFeatured on Nick LaunchesLaunch Llama NewsletterLaunch Llama NewsletterVerified DR - allmcps.comVerified DR - allmcps.comFeatured on SaaSGrowFeatured on SaaSGrowFeatured on Twelve ToolsFeatured on Twelve ToolsFeatured on Saaspa.geFeatured on Saaspa.geFeatured on Findly.toolsFeatured on Findly.toolsFeatured on Startup FameFeatured on Startup FameFeatured on LaunchKiwiFeatured on LaunchKiwiFeatured on ScrollLaunchFeatured on ScrollLaunchFeatured on DailyPingsFeatured on DailyPingsFazier badgeFazier badgeFeatured on NewTool.siteFeatured on NewTool.siteFeatured on saasfame.comFeatured on saasfame.comDR Checker - Domain RatingDR Checker - Domain RatingListed on Turbo0Listed on Turbo0Launched on LaunchBoard - Product Launch PlatformLaunched on LaunchBoard - Product Launch PlatformList on SimilarlabsList on Similarlabshttps://codetrendy.comhttps://codetrendy.comListed on DevTool.ioFeatured on BuildlistFeatured on BuildlistLaunched on Tiny StartupsFeatured on ShowMeBestAIFeatured on ShowMeBestAIFind us on LaunchZoneFind us on LaunchZone
ยฉ 2026 Jackalope Digital LLC. All rights reserved.
  1. Home
  2. ๐Ÿ“‚ Browser Automation
  3. Feedthrough
Feedthrough logo
Health: ActiveRecent health check succeeded.Last checked 9/9/2026, 5:47:03 PM

Feedthrough

User RatingsBe the first to rate and review this MCP server!
View Repository4 GitHub StarsTotal stargazers on GitHub for the source repository (4 stars).Visit Website
browser-automationdebuggingdomtestingmcp

Injects an in-page debug bridge that lets MCP clients inspect and control web applications through a local server.

Quick Install

Automated & IDE Setup

Copy the AI prompt to install this server into Claude Code, Cursor, or another agent โ€” or use 1-click editor setup below.

Add to CursorAdd to VS Code
Automated check passedโ€” started and listed 16 tools correctly (1mo ago).
Manual Client & Custom JSON ConfigExpand JSON โ–พ

Client Config & Setup

Choose your client or environment
Target File:~/Library/Application Support/Claude/claude_desktop_config.json
claude_desktop_config.json
{
  "mcpServers": {
    "feedthrough-feedthrough": {
      "command": "npx",
      "args": [
        "-y",
        "@feedthrough/mcp"
      ]
    }
  }
}

๐Ÿ’ก Paste the JSON block into your client's configuration file under mcpServers, then restart the application.

Install Tool Schemas (16) Directory Badge Claim listing Alternatives๐Ÿ“‚ More in Browser Automation

Overview

Feedthrough injects into a running web page and exposes DOM state, console logs, network requests, and interaction commands as MCP tools. The bridge connects to a local stdio MCP server over WebSocket, allowing agents to work with existing browser, Cypress, or Playwright sessions. Use it when debugging or driving an app from inside its own execution environment.

Use cases

โ€ขInspect DOM elements and page state
โ€ขRead console logs and network requests
โ€ขClick and fill controls in a running page
โ€ขDebug applications inside Cypress or Playwright
โ€ขDrive pages in browsers without an external CDP session

Key features

โ€ขIn-page DOM inspection and querying
โ€ขConsole log interception
โ€ขFetch and XHR interception
โ€ขClick and fill interaction commands
โ€ขWebSocket connection from page to MCP server
โ€ขAdapters for Vite, Next.js, Nuxt, SvelteKit, Remix, Webpack, Cypress, and Playwright

Capabilities & Tool Schemas (16) ~3.9k tokensApproximate context cost of this serverโ€™s tool schemas (~4 chars/token), before any tool is called. Actual usage depends on your client and model.Verified live Verified liveCaptured by calling this serverโ€™s live tools/list endpoint.

Inspect callable tools, capabilities, and parameters exposed to AI agents by Feedthrough.

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.

connection_status

Check whether a browser with the Feedthrough bridge is currently connected. Returns connected flag and a list of open tabs (id, url, which is active). Call this first โ€” every tool except get_instructions requires a connected browser.

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 noisy with framework or deprecation warnings, pass levels: ['error'] (or ['error', 'warn']) so the real errors aren't buried, and use 'match' to narrow by content. Pass 'since' (a ms timestamp from an earlier entry's 'ts', or Date.now() before an action) to see only what happened after that point. Read-only: it returns a passively captured buffer and neither clears the console nor changes the page. Always check this early โ€” app errors and debug output often identify the root cause immediately.

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 any requests.

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.

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, with a 'hiddenReason' such as 'ancestor div#modal display:none' or 'opacity:0' when not visible, accounting for ancestors), an occlusion check ('hittable' boolean from a center-point hit-test, with 'occludedBy' naming the element actually on top when something covers it), an 'a11y' block (resolved role, best-effort accessible name, and key states like expanded/checked/selected/disabled/hidden/tabindex), a 'pseudo' block with ::before/::after content when set (icon fonts, generated text), and live form state where applicable (an input's current value, checked, disabled, etc.). Pass 'properties' to additionally read any specific computed CSS properties by name โ€” they come back under 'requested'. Use this to understand why an element looks wrong or isn't behaving as expected. Read-only: it only reads element state and never changes the page, and it returns an error if the selector matches nothing. Note: addEventListener-registered event handlers cannot be read from the page; only inline on* handler attributes appear (in 'attributes').

Documentation Overview

Feedthrough

Debug with AI โ€” from inside your app.

Feedthrough injects a lightweight debug bridge into any running web page, then exposes everything โ€” DOM state, console logs, network requests, and user interactions โ€” as MCP tools. Any MCP-compatible AI agent can inspect and drive the page conversationally, in real time.

Code
Browser (any)
 โ””โ”€โ”€ @feedthrough/core          โ† injected into your page
      โ”œโ”€โ”€ console interceptor
      โ”œโ”€โ”€ fetch / XHR interceptor
      โ””โ”€โ”€ DOM inspector
      โ†•  WebSocket
@feedthrough/mcp               โ† MCP server, exposes tools over stdio
 โ””โ”€โ”€ Tools: click, fill, inspect_element, query_dom,
            get_console_logs, get_network_requests, โ€ฆ
      โ†•  MCP protocol
Claude Code / Cursor / any MCP client

The name

Many physics and chemistry experiments run inside a sealed vacuum chamber, with all the air pumped out so nothing contaminates the experiment. The catch: you still need to control instruments inside the chamber and read their measurements, and the smallest air leak ruins the run. A feedthrough is the part that solves this โ€” a specially engineered connector that carries electrical signals through the chamber wall while keeping the vacuum perfectly intact. You can't reach inside, but the feedthrough lets you observe and control what's happening in there anyway.

The parallel is exact: Feedthrough extracts runtime debug data from inside a running web app without disturbing it, and sends control signals back in โ€” clicks, keystrokes, DOM queries โ€” without breaking the execution environment.


Why Feedthrough?

Every other browser MCP tool is an external observer โ€” it controls the browser from outside via Puppeteer or CDP and only works in Chrome. Feedthrough is an embedded agent. It runs inside the page, so it sees:

  • Framework internals (React component trees, Redux store, custom globals)
  • Any browser, not just Chrome
  • Your existing dev workflow โ€” no separate controlled browser to launch
  • Cypress's own browser context during test runs

Packages

PackageDescription
@feedthrough/coreIn-browser bridge โ€” intercepts console, fetch, XHR; handles commands
@feedthrough/mcpMCP server โ€” bridges any MCP client to the browser via WebSocket
@feedthrough/cypressCypress adapter โ€” auto-injects the bridge before each test page load
@feedthrough/playwrightPlaywright adapter โ€” injects the bridge via page.addInitScript()
@feedthrough/viteVite plugin for apps with a static index.html
@feedthrough/webpackWebpack plugin โ€” adds bridge as a global entry point
@feedthrough/nextjsNext.js adapter โ€” wraps next.config.ts with withFeedthrough()
@feedthrough/nuxtNuxt 3 module
@feedthrough/sveltekitSvelteKit adapter โ€” injects via the handle hook
@feedthrough/remixRemix adapter โ€” injects via a Vite dev server middleware

Framework support

FrameworkAdapterNotes
Vite + React / Vue / Solid / Preact@feedthrough/viteStatic index.html โ€” plugin uses transformIndexHtml
Next.js@feedthrough/nextjsWraps the webpack config; dev only
Nuxt 3@feedthrough/nuxtRegisters as a Nuxt module; dev only
SvelteKit@feedthrough/sveltekithandle hook with transformPageChunk; dev only
Remix@feedthrough/remixVite dev server middleware; dev only
Webpack apps@feedthrough/webpackGlobal entry point; guards against production mode
Cypress@feedthrough/cypresswindow:before:load hook
Playwright@feedthrough/playwrightpage.addInitScript()

Quick start

1. Start the MCP server

Terminal
npx @feedthrough/mcp

The server listens for browser connections on ws://127.0.0.1:8765 and exposes MCP tools on stdio. Override the port with FEEDTHROUGH_PORT=9000. If the port is already taken, the server steps up to the next free one rather than refusing to start โ€” see Running several sessions at once.

2. Add it to your MCP client config

config.json
{
  "mcpServers": {
    "feedthrough": {
      "command": "npx",
      "args": ["@feedthrough/mcp"]
    }
  }
}

3. Inject the bridge into your page

Vite + React / Vue / Solid / Preact:

server.ts
// vite.config.ts
import { feedthrough } from "@feedthrough/vite";
export default defineConfig({ plugins: [feedthrough()] });

Next.js:

server.ts
// next.config.ts
import { withFeedthrough } from "@feedthrough/nextjs";
export default withFeedthrough()({ /* your next config */ });

Nuxt 3:

server.ts
// nuxt.config.ts
export default defineNuxtConfig({ modules: ["@feedthrough/nuxt"] });

SvelteKit:

server.ts
// src/hooks.server.ts
import { feedthroughHandle } from "@feedthrough/sveltekit";
import { sequence } from "@sveltejs/kit/hooks";
export const handle = sequence(feedthroughHandle);

Remix:

server.ts
// vite.config.ts
import { feedthrough } from "@feedthrough/remix";
export default defineConfig({ plugins: [remix(), feedthrough()] });

Webpack:

server.ts
// webpack.config.mjs
import { FeedthroughPlugin } from "@feedthrough/webpack";
export default { plugins: [new FeedthroughPlugin()] };

Cypress:

server.ts
// cypress/support/e2e.ts
import { setupFeedthrough } from "@feedthrough/cypress";
setupFeedthrough();

Playwright:

server.ts
// import test from the adapter instead of @playwright/test
import { test, expect } from "@feedthrough/playwright";

Or manually (any bundler):

ts
// main.ts
if (import.meta.env.DEV) {
  import("@feedthrough/core").then(({ init }) => init());
}

4. Open your page and start asking

Once the bridge connects you'll see [feedthrough] tab connected in the MCP server output. For the simplest experience, keep a single tab open. Multiple tabs can connect at the same time and commands are routed to the most recently active one, but a single tab avoids any ambiguity.

Then ask your AI agent:

Code
> What's on the page right now?
> Click the submit button and tell me what network requests fired
> Why is the counter showing the wrong value?

MCP tools

ToolDescription
get_instructions()Usage guide โ€” recommended workflow, tool ordering, and selector tips
query_dom(selector)All elements matching a CSS selector
inspect_element(selector, properties?)Tag, attributes, full bounding rect + inViewport, ancestor path, curated computed styles, overflow info (clipped/overflowing content), clipped-by-ancestor info, effective visibility (visible + hiddenReason, accounting for ancestors), occlusion (hittable + occludedBy), accessibility (a11y: role, name, states), pseudo ::before/::after content, live form state; properties reads extra CSS props by name
get_html(selector)Raw outerHTML of a region (capped at 50 KB)
get_console_logs(limit?, levels?, match?, since?)Console output (all methods) plus uncaught errors & promise rejections; filter by levels, match, or since timestamp
get_network_requests(filter?, since?)Captured fetch + XHR โ€” URL, method, status, duration, headers, request/response bodies (10 KB cap); narrow by filter or since
get_page_info()URL, title, readyState, viewport size, scroll position, user agent, and which bridge this page is connected to
connection_status()Connected tabs and which one is active, plus this server's name, version, and bound port
click(selector)Click an element via native click() (fires click + default activation, not the pointer sequence)
fill(selector, value)Set an input/textarea/select value (fires input + change, not keystrokes)
hover(selector)Fire mouseover/mouseenter to mount hover UI (JS handlers, not CSS :hover)
press_key(selector, key)Dispatch a key press โ€” Enter, Escape, Tab, arrow keys, or a character
set_style(selector, properties)Preview a visual fix โ€” set inline CSS live (not saved to source)
set_attribute(selector, name, value)Preview an attribute change โ€” toggle disabled, swap a class, set aria-* (null removes)
set_text(selector, text)Preview wording/label changes โ€” replace an element's text
reset_overrides()Undo every live set_style / set_attribute / set_text change

Live edit is a preview, not a save. set_style / set_attribute / set_text mutate the running DOM so the agent can show you a fix without a rebuild. They are not written to your source and reset on reload/HMR. The loop: the agent previews live, you confirm, then it edits the actual source to make it stick. Changes a framework owns (text, controlled attributes) may be overwritten on the next render โ€” the tool result flags this so the agent can tell you.


Example app

examples/react-app is a small React app with three deliberate bugs โ€” a good sandbox for trying out the diagnostic workflow:

bash
# Terminal 1 โ€” app
cd examples/react-app && pnpm dev    # http://localhost:5173

# Terminal 2 โ€” MCP server
cd packages/mcp && node dist/index.js

Connect an AI agent and ask it to find what's wrong. The three bugs are all invisible from the UI but findable in under a minute via get_console_logs, get_network_requests, and query_dom.


Running several sessions at once

Two AI agent sessions on one machine each start their own Feedthrough MCP server, and only one of them can have port 8765. That is handled, but it is worth knowing how.

The server moves, and tells you where it went. On a busy port it steps up (8766, 8767, โ€ฆ) instead of failing. connection_status() reports the port it actually bound, and the agent passes that to the dev server it starts:

Read the full README โ†’View source on GitHub โ†’

Related MCP Servers

View all in Browser Automation View all alternatives
  • Selenium MCP logoSelenium MCP

    Python MCP server for Selenium WebDriver โ€” 84 tools for browser automation, element interactions, assertions, and self-healing locators, plus codegen for Java TestNG / JUnit 5 / Cucumber / pytest / C NUnit / Playwright and CI pipelines (GitHub Actions / Jenkins / GitLab CI). No ChromeDriver setup needed.

    ๐Ÿ“‚ Browser Automation6 views
    Compare vs Selenium MCP โ†’
  • Devloop logoDevloop

    Drives a browser (or a native Expo/React Native app on iOS/Android) and your dev server onto one correlated timeline, so a browser console error and the backend stack trace from the same moment line up. Includes repro action sequences, a unified log/network query API, and an Electron cockpit.

    ๐Ÿ“‚ Browser Automation2 views
    Compare vs Devloop โ†’
  • Visionaire Engine logoVisionaire Engine

    Design-debugging context for AI agents from a real Chrome: which CSS rule WINS with file:line, blast radius (how many other elements that rule styles) + a scoped-fix selector, WordPress/Elementor origin attribution, interaction timelines, live CSS fix trials, and pixel/alignment/WCAG-contrast audits. No AI inside โ€” deterministic CDP.

    ๐Ÿ“‚ Browser Automation2 views
    Compare vs Visionaire Engine โ†’
  • Gecko MCP logoGecko MCP

    Control Firefox browsers (Floorp, LibreWolf, Zen, Firefox) from any MCP client.

    ๐Ÿ“‚ Browser Automation0 views
    Compare vs Gecko MCP โ†’

Adoption & maintenance

Factual signals from GitHub, npm, and our automated checks โ€” not a rating.

GitHub stars
4
Stargazers on the source repository.
npm downloads
615
Package downloads in the last 30 days.
Last commit
7d ago
Most recent push to the default branch.
Availability
100%
Our rolling endpoint + install checks that succeeded.
Install check
Passed
Our sandbox started it and listed its tools.
Tools exposed
16
Callable tools this server registers over MCP.
Directory activity
2 views
Config copies, upvotes, and views on AllMCPs.

Reviews

No reviews yet โ€” be the first to share how this listing worked for you.

Frequently Asked Questions about Feedthrough

No. It injects a bridge into the page and runs inside the page rather than using an external CDP driver.

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewFeedthrough AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/feedthrough-feedthrough?style=directory)](https://allmcps.com/mcp/feedthrough-feedthrough)
HTML Embed
<a href="https://allmcps.com/mcp/feedthrough-feedthrough"><img src="https://allmcps.com/api/badge/feedthrough-feedthrough?style=directory" alt="Feedthrough on AllMCPs" /></a>

Technical Specs & Signals

Category๐Ÿ“‚Browser Automation
PricingFree
More technical detailsExpand โ–พ
TransportSTDIO
RuntimeNode.js
AuthNo auth required
ClientsCursor
Last updatedSep 4, 2026
11/11 checks healthy over the last 33d
Views2
Unique ViewsTotal visits recorded for this listing page on AllMCPs.
Installs0
Installs & Copy ActionsTotal times users copied install commands or configuration snippets for this server.
GitHub stars4
GitHub Star CountTotal stargazers on GitHub representing community popularity (4 stars).
Last commit7d ago
Last Repository CommitThe most recent commit or push recorded for this server's GitHub repository.Last commit on Sep 4, 2026
npm downloads615/mo
Monthly npm DownloadsAverage monthly package installs recorded from npm registry statistics.
73Quality signal: Great ยท 73/100How this signal is calculated โ–พ
Server availability25/25
Verified ownership10/20
Documentation & tools30/30
Adoption & activity8/15
Community engagement0/10

A guidance signal from public completeness & health data โ€” not a user rating. New listings start lower and rise as they add docs, get verified, and grow adoption. Signals we can't observe for a listing are skipped, not counted against it.

Supply-chain signal

No high-severity advisories surfaced by our automated scan.

Critical 0High 0Medium 0Low 0

Scanned 23d ago via OSV.dev ยท @feedthrough/mcp (npm)

โ˜… Spotlight Slot

Feature Your MCP Server

Get maximum visibility for your server across our directory, search results, and detail pages.

Spotlight Your Server

Own this project?

This directory is pre-filled from public sources. Claim via GitHub README, site badge, or DNS TXT to unlock edit access and the Official badge โ€” proof is checked automatically, then reviewed by our team.

Free dofollow backlink: add your website and place the AllMCPs badge on it โ€” no claim needed. We detect it automatically and keep it verified as long as the badge stays live.

Claim & get free dofollow

Share & Embed

Add our SVG badge (dark/light directory styles) or embeddable widget to your site.

Explore more

More in ๐Ÿ“‚ Browser Automation โ†’Best MCP servers for Browser Automation โ†’Alternatives to Feedthrough โ†’Install in Claude DesktopInstall in CursorInstall in VS Code