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. Browse
  3. Firefox Devtools MCP
  4. vs Feedthrough
Side-by-Side Model Context Protocol Comparison

Firefox Devtools MCP vs Feedthrough

In-depth architectural comparison of the Firefox Devtools MCP and Feedthrough MCP servers. Compare execution transports, security boundaries, tool capabilities, quality scores, and ready-to-paste client installation snippets for Claude, Cursor, Windsurf, and VS Code.

At a Glance & Executive Verdict

Firefox Devtools MCP
Browser Automation · Local stdio
Quality: 63/100 (Good) | Auth: No auth required
Feedthrough
Browser Automation · Local stdio
Quality: 64/100 (Good) | Auth: No auth required
Verdict Summary: Choose Firefox Devtools MCP if you need specialized Browser Automation tools running via a local process. Choose Feedthrough if your workspace requires Browser Automation integration with local subprocess execution. Both servers can be configured concurrently in your client's mcpServers manifest.

Which MCP Server Should You Choose?

Firefox Devtools MCP logo

Choose Firefox Devtools MCP when:

  • You need dedicated capabilities in the Browser Automation domain.
  • You prefer local stdio subprocess transport architecture.
  • Your security boundary fits: No auth required (Free / Open Source).
  • You have access to required keys: START_URL, FIREFOX_HEADLESS, ACCEPT_INSECURE_CERTS, CONNECT_EXISTING, MARIONETTE_PORT, TOOL_PRESET, ENABLE_SCRIPT, ENABLE_PRIVILEGED_CONTEXT.
  • Primary tools included: slim, developer, mozilla.
Explore Firefox Devtools MCP Details
Feedthrough logo

Choose Feedthrough when:

  • You need dedicated capabilities in the Browser Automation domain.
  • You prefer local stdio subprocess transport architecture.
  • Your security boundary fits: No auth required (Free / Open Source).
  • You have access to required keys: FEEDTHROUGH_PORT.

Feature & Specification Comparison

Specification
Firefox Devtools MCP logo
Firefox Devtools MCP
freema
Browser Automation
Feedthrough logo
Feedthrough
feedthrough
Browser Automation
SummaryFirefox browser automation via WebDriver BiDi for testing, scraping, and browser control. Supports snapshot/UID-based interactions, network monitoring, console capture, and screenshots.In-browser debug bridge that injects into your running web app, so an agent can read the DOM, console logs and network requests, and click/fill/inspect the page. Runs inside the page (not an external CDP driver), so it works in any browser and inside Cypress/Playwright runs.
Category & Scope

Tools & Capabilities Breakdown

Firefox Devtools MCP Tools (4)

slim
`pages`, `snapshot`, `input`, `screenshot`
developer
`basic` plus `debugging`, `network`, `console`, `profiler`
mozilla
`developer` plus `prefs`, `privileged`
all
every module

Feedthrough Tools (16)

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.

Ready-to-Paste Client Configurations

Paste either (or both) of these JSON server blocks into your client config file (e.g. claude_desktop_config.json or ~/.cursor/mcp.json).

Firefox Devtools MCP Configuration
mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "freema-firefox-devtools-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@mozilla/firefox-devtools-mcp@latest"
      ],
      "env": {
        "START_URL": "YOUR_START_URL_HERE",
        "FIREFOX_HEADLESS": "YOUR_FIREFOX_HEADLESS_HERE",
        "ACCEPT_INSECURE_CERTS": "YOUR_ACCEPT_INSECURE_CERTS_HERE",
        "CONNECT_EXISTING": "YOUR_CONNECT_EXISTING_HERE",
        "MARIONETTE_PORT": "YOUR_MARIONETTE_PORT_HERE",
        "TOOL_PRESET": "YOUR_TOOL_PRESET_HERE",
        "ENABLE_SCRIPT": "YOUR_ENABLE_SCRIPT_HERE",
        "ENABLE_PRIVILEGED_CONTEXT": "YOUR_ENABLE_PRIVILEGED_CONTEXT_HERE"
      }
    }
  }
}
Feedthrough Configuration
mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "feedthrough-feedthrough": {
      "command": "npx",
      "args": [
        "-y",
        "@feedthrough/mcp"
      ],
      "env": {
        "FEEDTHROUGH_PORT": "YOUR_FEEDTHROUGH_PORT_HERE"
      }
    }
  }
}

Frequently Asked Questions

Firefox Devtools MCP is categorized under Browser Automation and uses a local stdio subprocess. In contrast, Feedthrough belongs to Browser Automation using local stdio subprocess. Select Firefox Devtools MCP when you need capabilities focused on browser automation and Feedthrough when you require tools for browser automation.

More alternatives to Firefox Devtools MCPMore alternatives to FeedthroughBrowser Automation category hubCanonical compare URL

Related MCP Server Comparisons

Popular comparisons with Firefox Devtools MCP

  • Playwright MCP Server logoFirefox Devtools MCP vs Playwright MCP Server
  • Playwright MCP logoFirefox Devtools MCP vs Playwright MCP
  • Browser Use MCP Server logoFirefox Devtools MCP vs Browser Use MCP Server
  • Ios Simulator MCP logoFirefox Devtools MCP vs Ios Simulator MCP

Popular comparisons with Feedthrough

  • Primary tools included: get_instructions, connection_status, get_console_logs.
  • Explore Feedthrough Details
    Browser Automation
    Browser Automation
    Quality signal63/100 (Good)64/100 (Good)
    Transport ProtocolLocal Subprocess (stdio)Local Subprocess (stdio)
    Auth RequirementNo auth requiredNo auth required
    Pricing ModelFree / Open SourceFree / Open Source
    Required Env Vars
    START_URLFIREFOX_HEADLESSACCEPT_INSECURE_CERTSCONNECT_EXISTINGMARIONETTE_PORTTOOL_PRESETENABLE_SCRIPTENABLE_PRIVILEGED_CONTEXT
    FEEDTHROUGH_PORT
    Compatible Clients
    Claude DesktopCursorWindsurfClineVS Code
    Claude DesktopCursorWindsurfClineVS Code
    Install path signalnpx · highnpx · high
    Engagement & Health 2 views 0 copies 0 upvotes 417 stars 2 views 0 copies 0 upvotes 4 stars
    Verified / OfficialCommunity ListingCommunity Listing
    Open full listingView Firefox Devtools MCP ListingView Feedthrough Listing
    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').
    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 it does not wait for any resulting navigation, network, or re-render to settle, returning as soon as the click is dispatched. Observe the effect with a follow-up get_console_logs / get_network_requests / query_dom. Returns the tag and id of the clicked element.
    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 dispatched and does not wait for downstream validation or re-renders. Returns the tag and the value that was set.
    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 the hovered state stays until the app tears it down or you interact elsewhere; and the events are dispatched whether or not the element is visible or in the viewport (it is not scrolled into view), so a successful call does not by itself confirm anything rendered. If the selector matches nothing the call returns an error. Returns the tag of the hovered element.
    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.
    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_page_info
    Return basic page context: current URL, document title, readyState, viewport size, scroll position, and user agent. 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.
    +4 more tools listed on main page
  • Selenium MCP logoFeedthrough vs Selenium MCP
  • Devloop logoFeedthrough vs Devloop
  • Visionaire Engine logoFeedthrough vs Visionaire Engine
  • Gecko MCP logoFeedthrough vs Gecko MCP