返回更新列表
新发布Sep 19, 2026

firefox-devtools-mcp v0.10.3

用于 Firefox DevTools 的 Model Context Protocol 服务器 - 使 AI 助手能够通过 WebDriver BiDi 检查和操控 Firefox 浏览器

分享

Firefox DevTools MCP

npm version CI codecov License: MIT License: Apache 2.0

Glama

Model Context Protocol 服务器,让 AI 智能体能够使用 Firefox。它有两个主要用例:

  • 智能体浏览:智能体使用浏览器执行常规任务,例如阅读页面、填写表单以及完成网站上的多步骤流程。
  • 智能体辅助 Web 开发:智能体加载你正在处理的页面,并使用开发者工具对其进行检查,例如控制台、网络请求、调试器和性能分析器。

它通过 WebDriver BiDi(经由 Selenium WebDriver)控制 Firefox,并可与 Claude Code、Claude Desktop、Cursor、Cline 及其他 MCP 客户端配合使用。

仓库:https://github.com/mozilla/firefox-devtools-mcp

注意:此 MCP 服务器需要本地安装 Firefox 浏览器,无法在 glama.ai 等云托管服务上运行。使用 npx @mozilla/firefox-devtools-mcp@latest 在本地运行,或使用提供的 Dockerfile 配合 Docker 运行。

安全

浏览器 MCP 服务器存在固有风险。以下是一些关键实践:

  • 使用专用的 Firefox 配置文件。 切勿针对你的常规配置文件运行该服务器——智能体可以访问浏览器所能触及的一切内容,包括 Cookie 和已保存的会话。
  • 谨慎选择访问的网站。 页面可能返回旨在操纵智能体的内容(提示注入)。请坚持使用你控制或信任的网站。
  • 仅启用你需要的工具模块。 默认的 basic 预设已包含 evaluate_script;--tool-preset slim 会将其移除。更高级的预设,例如 --tool-preset developer(调试、网络、控制台、性能分析器)和 --tool-preset mozilla(特权上下文),会进一步扩展智能体的能力。

有关风险的完整说明以及如何报告漏洞,请参阅 SECURITY.md。

要求

  • Node.js ≥ 20.19.0
  • 已安装 Firefox 100+(自动检测,或传入 --firefox-path)

在 Claude Code 或 Codex 中安装和使用(npx)

推荐:使用 npx,以便运行 npm 上最新发布的版本。

选项 A — CLI

Claude Code

claude mcp add firefox-devtools npx @mozilla/firefox-devtools-mcp@latest

# Headless + viewport via args
claude mcp add firefox-devtools npx @mozilla/firefox-devtools-mcp@latest -- --headless --viewport 1280x720

# Or via environment variables
claude mcp add firefox-devtools npx @mozilla/firefox-devtools-mcp@latest \
  --env START_URL=https://example.com \
  --env FIREFOX_HEADLESS=true

Codex

codex mcp add firefox-devtools -- npx @mozilla/firefox-devtools-mcp@latest

# Headless + viewport via args
codex mcp add firefox-devtools -- \
  npx @mozilla/firefox-devtools-mcp@latest -- --headless --viewport 1280x720

# Or via environment variables
codex mcp add firefox-devtools \
  --env START_URL=https://example.com \
  --env FIREFOX_HEADLESS=true \
  -- npx @mozilla/firefox-devtools-mcp@latest

选项 B — 编辑配置文件

Claude Code

添加到 Claude Code 的 mcp_settings.json:

{
  "mcpServers": {
    "firefox-devtools": {
      "command": "npx",
      "args": ["-y", "@mozilla/firefox-devtools-mcp@latest", "--headless", "--viewport", "1280x720"],
      "env": {
        "START_URL": "about:blank"
      }
    }
  }
}

Codex

添加到 ~/.codex/config.toml:

[mcp_servers.firefox-devtools]
command = "npx"
args = ["-y", "@mozilla/firefox-devtools-mcp@latest", "--headless", "--viewport", "1280x720"]

[mcp_servers.firefox-devtools.env]
START_URL = "about:blank"

选项 C — 辅助脚本(本地开发构建)

npm run setup
# Choose Claude Code; the script saves JSON to the right path

使用 MCP Inspector 试用

npx @modelcontextprotocol/inspector npx @mozilla/firefox-devtools-mcp@latest --start-url https://example.com --headless

然后调用如下工具:

  • list_pages、select_page、navigate_page
  • take_snapshot,然后 click_by_uid / fill_by_uid
  • list_network_requests(始终开启捕获)、get_network_request
  • list_downloads(始终开启捕获)、set_download_behavior
  • screenshot_page、list_console_messages

CLI 选项

你可以传入标志或环境变量(名称在右侧):

  • --firefox-path — Firefox 二进制文件的绝对路径
  • --headless — 无界面运行(FIREFOX_HEADLESS=true)
  • --viewport 1280x720 — 初始窗口大小
  • --profile-path — 使用特定的 Firefox 配置文件。Firefox 会在该路径下的 firefox_devtools_mcp_profile 子文件夹中运行,并带有 .firefox-devtools-mcp 标记文件;将 --profile-path 指向已标记的配置文件会直接复用它
  • --firefox-arg — 额外的 Firefox 参数(可重复)
  • --start-url — 启动时打开此 URL(START_URL)
  • --accept-insecure-certs — 忽略 TLS 错误(ACCEPT_INSECURE_CERTS=true)
  • --connect-existing — 连接到已在运行的 Firefox,而不是启动新的实例(CONNECT_EXISTING=true)
  • --marionette-port — connect-existing 模式下的 Marionette 端口,默认 2828(MARIONETTE_PORT)
  • --idle-timeout — 无工具调用的秒数,超过后 connect-existing 会话会释放 Firefox,默认 1800。Firefox 一次只接受一个客户端,因此其他客户端只能在它被释放后才能连接。下一次工具调用会重新连接,并选择当时在 Firefox 中处于活动状态的标签页(IDLE_TIMEOUT)
  • --pref name=value — 在启动时通过 moz:firefoxOptions 设置 Firefox 首选项(可重复)
  • --tool-preset — 选择要启用的工具模块:slim、basic(默认)、developer、mozilla 或 all。参见工具模块与预设。(TOOL_PRESET)
  • --tools — 显式指定要启用的工具模块列表,完全覆盖 --tool-preset(例如 --tools pages network script)。参见工具模块与预设。
  • --enable-script — 已弃用,请使用 --tool-preset developer 或 --tools ... script debugging。 选择 developer 工具预设。(ENABLE_SCRIPT=true)
  • --enable-privileged-context — 已弃用,请使用 --tool-preset mozilla 或 --tools ... privileged prefs。 选择 mozilla 工具预设。需要 MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1(ENABLE_PRIVILEGED_CONTEXT=true)
  • --android-device — 启用 Firefox for Android 模式;值为 ADB 设备序列号(例如 emulator-5554)。运行 adb devices 列出已连接的设备。省略该值或使用 auto 可自动选择唯一已连接的设备。
  • --android-wipe-app-data — 确认 Android 模式会清除目标应用的所有数据。必须与 --android-device 一起使用。(ANDROID_WIPE_APP_DATA=true)
  • --android-package — Android 应用包名,默认 org.mozilla.firefox。其他包名:Firefox Beta 为 org.mozilla.firefox_beta,Firefox Nightly 为 org.mozilla.fenix,Firefox Nightly Debug 为 org.mozilla.fenix.debug,geckoview 为 org.mozilla.geckoview_example(ANDROID_PACKAGE)
  • --unrestricted-save-paths — 允许 saveTo 参数写入磁盘上的任意位置,而不是默认根目录。参见将大量输出保存到磁盘以及 SECURITY.md 中的安全说明。(UNRESTRICTED_SAVE_PATHS=true)
  • --log-file — 将 MCP 服务器日志写入文件而不是 stderr。对于使用会隐藏服务器输出的 MCP 客户端进行调试会话很有用。设置 DEBUG=* 可同时包含详细调试日志。示例:--log-file /tmp/firefox-mcp.log

工具模块与预设

工具被分组为模块。你可以通过命名预设(--tool-preset)或显式列表(--tools)选择要暴露的模块。当两者同时给出时,--tools 优先,预设被忽略。

预设(每个都是前一个的超集):

  • slim — 浏览和与页面交互所需的最小集合
  • basic(默认)— 增加用于常规浏览的工具
  • developer — 增加面向 Web 开发者的工具
  • mozilla — 增加面向 Firefox 开发者的工具
  • all — 所有模块

有关模块列表以及每个预设中包含的模块,请参阅 docs/tools.md。

请注意,默认的 basic 包含 script,因此也包含 evaluate_script 工具。 有关这对攻击面意味着什么,请参阅 SECURITY.md,并使用 --tool-preset slim 或显式的 --tools 列表将其移除。

# Use the developer preset (adds network, console, debugging and profiler tools)
npx @mozilla/firefox-devtools-mcp --tool-preset developer

# Enable only the modules you need
npx @mozilla/firefox-devtools-mcp --tools pages network console

prefs 和 privileged 模块需要 MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1,并且仅在 Mozilla 内部构建中可用。launch 模块同样需要 Mozilla 内部构建:它会在调用方指定的二进制文件、配置文件、环境和一组首选项下重启 Firefox,这属于应由操作者掌控的配置变更。请改用 --pref、--firefox-path 及其他命令行选项。bidi 模块也需要 Mozilla 内部构建:它会发送任意 WebDriver BiDi 命令,因此可以访问其他模块所暴露的功能。公开包即使被请求也会跳过这些模块,并记录一条警告,指明被丢弃的模块。

实用首选项(--pref)

分类