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)
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(immer aktive Erfassung),get_network_requestscreenshot_page,list_console_messages
CLI-Optionen
Sie können Flags oder Umgebungsvariablen (Namen rechts) übergeben:
--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— ignoriert TLS-Fehler (ACCEPT_INSECURE_CERTS=true)--connect-existing— verbindet sich mit einem bereits laufenden Firefox, 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— setzt Firefox-Einstellungen beim Start viamoz:firefoxOptions(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: Auflisten/Auswählen privilegierter Kontexte, Ausführen privilegierter Skripte, Abrufen/Setzen von Firefox-Einstellungen und Auflisten von Erweiterungen. 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 Standardwerte bei Bedarf zu überschreiben.
Verbindung zu einem bestehenden Firefox
Verwenden Sie --connect-existing, um Ihre echte Browsersitzung zu automatisieren – mit Cookies, Logins und geöffneten 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 Bot-Erkennung auf Seiten auslösen kann, die durch Cloudflare, Akamai usw. geschützt sind. 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, immer aktive 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/vorwärts, Viewport setzen
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 den Parameter saveTo, um Screenshots stattdessen 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 Aufruf mit
cmd(Weitere Informationen unter https://github.com/modelcontextprotocol/servers/issues/1082#issuecomment-2791786310)"mcpServers": { "firefox-devtools": { "command": "cmd", "args": ["/c", "npx", "-y", "firefox-devtools-mcp@latest"] } }Die entscheidende Änderung: Unter Windows erfordert das Ausführen eines Node.js-Pakets via
npxoft das Präfixcmd /c, um korrekt aus einem anderen Prozess wie dem VSCode-Erweiterungshost ausgeführt zu werden. Daher wurde "command": "npx" durch "command": "cmd" ersetzt und der eigentlichenpx-Befehl in das "args"-Array verschoben, vorangestellt mit "/c". Dieser Fix ermöglicht es Windows, den Befehl korrekt zu interpretieren und den Server zu starten.Lösung 2 Anstatt einer weiteren Shell-Ebene können Sie den absoluten Pfad zu
npxschreiben:"mcpServers": { "firefox-devtools": { "command": "C:\\nvm4w\\nodejs\\npx.ps1", "args": ["-y", "firefox-devtools-mcp@latest"] } }Hinweis: Der obige Pfad ist ein Beispiel. Sie müssen ihn an den tatsächlichen Speicherort von
npxauf Ihrem Computer anpassen. Abhängig von Ihrem Setup könnte die Dateiendung.cmd,.batoder.exestatt.ps1lauten. Stellen Sie außerdem sicher, dass Sie doppelte Backslashes (\\) als Pfadtrennzeichen verwenden, wie vom JSON-Format gefordert.
Versionierung
Pre-1.0 API: Versionen beginnen bei
0.x. Verwenden Sie@latestmit npx für das neueste Release.
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 Mitwirken
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.
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Appeared in Searches
Latest Blog Posts
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