firefox-devtools-mcp
Firefox DevTools MCP
Model Context Protocol-Server zur Automatisierung von Firefox via WebDriver BiDi (durch Selenium WebDriver). Funktioniert mit Claude Code, Claude Desktop, Cursor, Cline und anderen MCP-Clients.
Repository: https://github.com/mozilla/firefox-devtools-mcp
Hinweis: Dieser MCP-Server erfordert eine lokale Firefox-Browser-Installation und kann nicht auf Cloud-Hosting-Diensten wie glama.ai ausgeführt werden. Verwenden Sie
npx firefox-devtools-mcp@latest, um ihn lokal auszuführen, oder nutzen Sie Docker mit dem bereitgestellten Dockerfile.
Anforderungen
Node.js ≥ 20.19.0
Firefox 100+ installiert (wird automatisch erkannt oder über
--firefox-pathübergeben)
Related MCP server: gecko-mcp
Installation und Verwendung mit Claude Code (npx)
Empfohlen: Verwenden Sie npx, damit Sie immer die neueste veröffentlichte Version von npm ausführen.
Option A — Claude Code CLI
claude mcp add firefox-devtools npx firefox-devtools-mcp@latestÜbergeben Sie Optionen entweder als Argumente oder Umgebungsvariablen. Beispiele:
# Headless + viewport via args
claude mcp add firefox-devtools npx firefox-devtools-mcp@latest -- --headless --viewport 1280x720
# Or via environment variables
claude mcp add firefox-devtools npx firefox-devtools-mcp@latest \
--env START_URL=https://example.com \
--env FIREFOX_HEADLESS=trueOption B — Claude Code-Einstellungen (JSON) bearbeiten
Fügen Sie dies zu Ihrer Claude Code-Konfigurationsdatei hinzu:
macOS:
~/Library/Application Support/Claude/Code/mcp_settings.jsonLinux:
~/.config/claude/code/mcp_settings.jsonWindows:
%APPDATA%\Claude\Code\mcp_settings.json
{
"mcpServers": {
"firefox-devtools": {
"command": "npx",
"args": ["-y", "firefox-devtools-mcp@latest", "--headless", "--viewport", "1280x720"],
"env": {
"START_URL": "about:home"
}
}
}
}Option C — Hilfsskript (lokaler Entwicklungs-Build)
npm run setup
# Choose Claude Code; the script saves JSON to the right pathAusprobieren mit dem MCP Inspector
npx @modelcontextprotocol/inspector npx firefox-devtools-mcp@latest --start-url https://example.com --headlessAnschließend können Sie Tools aufrufen wie:
list_pages,select_page,navigate_pagetake_snapshotund dannclick_by_uid/fill_by_uidlist_network_requests(ständige Erfassung),get_network_requestscreenshot_page,list_console_messages
CLI-Optionen
Sie können Flags oder Umgebungsvariablen übergeben (Namen rechts):
--firefox-path— absoluter Pfad zur Firefox-Binärdatei--headless— Ausführung ohne UI (FIREFOX_HEADLESS=true)--viewport 1280x720— anfängliche Fenstergröße--profile-path— Verwendung eines bestimmten Firefox-Profils--firefox-arg— zusätzliche Firefox-Argumente (wiederholbar)--start-url— öffnet diese URL beim Start (START_URL)--accept-insecure-certs— TLS-Fehler ignorieren (ACCEPT_INSECURE_CERTS=true)--connect-existing— an einen bereits laufenden Firefox anhängen, anstatt einen neuen zu starten (CONNECT_EXISTING=true)--marionette-port— Marionette-Port für den Modus "connect-existing", Standard 2828 (MARIONETTE_PORT)--pref name=value— Firefox-Einstellung beim Start übermoz:firefoxOptionsfestlegen (wiederholbar)--enable-script— aktiviert das Toolevaluate_script, das beliebiges JavaScript im Seitenkontext ausführt (ENABLE_SCRIPT=true)--enable-privileged-context— aktiviert Tools für privilegierte Kontexte: privilegierte Kontexte auflisten/auswählen, privilegierte Skripte ausführen, Firefox-Einstellungen abrufen/festlegen und Erweiterungen auflisten. ErfordertMOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1(ENABLE_PRIVILEGED_CONTEXT=true)
Hinweis zu
--pref: Wenn Firefox in der Automatisierung läuft, wendet er RecommendedPreferences an, die das Browserverhalten für Tests modifizieren. Die Option--prefermöglicht es, diese Standardeinstellungen bei Bedarf zu überschreiben.
Verbindung zu einem bestehenden Firefox
Verwenden Sie --connect-existing, um Ihre echte Browsersitzung zu automatisieren – mit intakten Cookies, Logins und offenen Tabs:
# Start Firefox with Marionette enabled
firefox --marionette
# Run the MCP server
npx firefox-devtools-mcp --connect-existing --marionette-port 2828Oder setzen Sie marionette.enabled in about:config (oder user.js) auf true, um Marionette bei jedem Start zu aktivieren.
BiDi-abhängige Funktionen (Konsolenereignisse, Netzwerkereignisse) sind im Modus "connect-existing" nicht verfügbar; alle anderen Funktionen funktionieren normal.
Warnung: Lassen Sie Marionette nicht während des normalen Surfens aktiviert. Es setzt
navigator.webdriver = trueund ändert andere Browser-Fingerabdruck-Signale, was bei Websites, die durch Cloudflare, Akamai usw. geschützt sind, eine Bot-Erkennung auslösen kann. Aktivieren Sie Marionette nur, wenn Sie MCP-Automatisierung benötigen, und starten Sie Firefox danach normal neu.
Tool-Übersicht
Seiten: auflisten/neu/navigieren/auswählen/schließen
Snapshot/UID: erstellen/auflösen/löschen
Eingabe: klicken/hovern/ausfüllen/ziehen/hochladen/Formular ausfüllen
Netzwerk: auflisten/abrufen (ID-basiert, Filter, ständige Erfassung)
Konsole: auflisten/löschen
Screenshot: Seite/nach UID (mit optionalem
saveTofür CLI-Umgebungen)Skript: evaluate_script
Privilegierter Kontext: privilegierte ("chrome") Kontexte auflisten/auswählen, evaluate_privileged_script (erfordert
MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1)WebExtension: install_extension, uninstall_extension, list_extensions (auflisten erfordert
MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1)Firefox-Verwaltung: get_firefox_info, get_firefox_output, restart_firefox, set_firefox_prefs, get_firefox_prefs
Dienstprogramme: Dialog akzeptieren/verwerfen, Verlauf zurück/vor, Viewport festlegen
Screenshot-Optimierung für Claude Code
Bei der Verwendung von Screenshots in der Claude Code CLI können die Base64-Bilddaten erheblichen Kontext verbrauchen. Verwenden Sie stattdessen den Parameter saveTo, um Screenshots auf der Festplatte zu speichern:
screenshot_page({ saveTo: "/tmp/page.png" })
screenshot_by_uid({ uid: "abc123", saveTo: "/tmp/element.png" })Die Datei kann dann mit dem Read-Tool von Claude Code betrachtet werden, ohne die Kontextgröße zu beeinträchtigen.
Lokale Entwicklung
npm install
npm run build
# Run with Inspector against local build
npx @modelcontextprotocol/inspector node dist/index.js --headless --viewport 1280x720
# Or run in dev with hot reload
npm run inspector:devTesten
npm run test:run # all tests once (unit + integration)
npm test # watch modeSiehe docs/testing.md für vollständige Details zum Ausführen spezifischer Testsuiten, der E2E-Szenarioabdeckung und bekannter Probleme.
Fehlerbehebung
Firefox nicht gefunden: Übergeben Sie
--firefox-path "/Applications/Firefox.app/Contents/MacOS/firefox"(macOS) oder den korrekten Pfad auf Ihrem Betriebssystem.Erster Start ist langsam: Selenium richtet die BiDi-Sitzung ein; nachfolgende Starts sind schneller.
Veraltete UIDs nach Navigation: Erstellen Sie einen neuen Snapshot (
take_snapshot), bevor Sie UID-Tools verwenden.Windows 10: Fehler bei der Erkennung für MCP-Server 'firefox-devtools': MCP error -32000: Connection closed
Lösung 1 Mit
cmd /cumschließen (Details):"mcpServers": { "firefox-devtools": { "command": "cmd", "args": ["/c", "npx", "-y", "firefox-devtools-mcp@latest"] } }Lösung 2 Verwenden Sie den absoluten Pfad zu
npx(passen Sie die Erweiterung –.cmd,.bat,.exeoder.ps1– an Ihr Setup an):"mcpServers": { "firefox-devtools": { "command": "C:\\nvm4w\\nodejs\\npx.ps1", "args": ["-y", "firefox-devtools-mcp@latest"] } }
Versionierung
Pre-1.0 API: Versionen beginnen bei
0.x. Verwenden Sie@latestmit npx für die neueste Version.
CI und Release
GitHub Actions für CI, Release und npm-Veröffentlichung sind enthalten. Siehe docs/ci-and-release.md für Details und erforderliche Secrets.
Probleme und Mitwirkung
Probleme werden auf Bugzilla unter product: Developer Infrastructure, component: AI for Development verfolgt.
Für Fragen und Diskussionen treten Sie dem #firefox-devtools-mcp Matrix-Raum bei.
Autor
Gewartet von Mozilla.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseCqualityDmaintenanceProvides Firefox browser automation capabilities through Playwright, allowing control of Firefox from MCP-enabled applications with features for basic automation and advanced multi-tab debugging.2930MIT
- AlicenseAqualityAmaintenanceDrive Firefox-based browsers (Floorp, LibreWolf, Zen, Waterfox, Mullvad, Firefox) from any MCP client — read pages, screenshot, click, fill forms and manage tabs in your real session, over Marionette/WebDriver. OS input & JS eval locked by default.41681MIT
- AlicenseBqualityCmaintenanceA local Firefox bridge for MCP agents that enables tab control, DOM interaction, mouse/keyboard actions, and screenshots.24MIT
- AlicenseNot gradedqualityDmaintenanceProvides browser automation using Selenium, supporting Chrome and Firefox, with tools for navigation, element interaction, screenshots, and more.1Mulan Permissive Software , Version 2
Related MCP Connectors
Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.
Automate cloud browsers to navigate websites, interact with elements, and extract structured data.…
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mozilla/firefox-devtools-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server