{"_id":"@mozilla/firefox-devtools-mcp","_rev":"10-e2dc687d274ed609923c9f05b1514821","name":"@mozilla/firefox-devtools-mcp","dist-tags":{"latest":"0.9.12"},"versions":{"0.9.3":{"name":"@mozilla/firefox-devtools-mcp","version":"0.9.3","keywords":["mcp","mcp-server","model-context-protocol","firefox","firefox-devtools","browser-automation","webdriver-bidi","selenium","devtools","browser-testing","web-automation","claude","claude-ai","ai-agent","llm"],"author":{"name":"Mozilla"},"license":"MIT OR Apache-2.0","_id":"@mozilla/firefox-devtools-mcp@0.9.3","maintainers":[{"name":"mozilla-npm","email":"npm-owners@mozilla.com"},{"name":"mythmon","email":"mythmon@gmail.com"},{"name":"jkratzer","email":"jkratzer@mozilla.com"},{"name":"factorui.npm","email":"factorui.npm@mozilla.com"},{"name":"project-nimbus-publishing","email":"project-nimbus-publishing@mozilla.com"},{"name":"gijs","email":"gijskruitbosch@gmail.com"},{"name":"brizental","email":"brizental@mozilla.com"},{"name":"aplacitelli","email":"aplacitelli@mozilla.com"},{"name":"mozrhelmer","email":"rhelmer@mozilla.com"},{"name":"knowtheory","email":"ted@knowtheory.net"},{"name":"nbaumgardner","email":"niklasbaumgardner@gmail.com"},{"name":"tigleym","email":"tigleym@gmail.com"},{"name":"eemeli","email":"eemeli@gmail.com"},{"name":"jdescottes-mozilla-npm","email":"jdescottes+npm@mozilla.com"},{"name":"ahanot","email":"ahanot+npm@mozilla.com"},{"name":"mlifshin","email":"mlifshin+npm@mozilla.com"},{"name":"llisi-moz","email":"llisi+npm@mozilla.com"},{"name":"jdarcangelo-mozilla","email":"jdarcangelo+npm@mozilla.com"},{"name":"nchevobbe","email":"nchevobbe+npm@mozilla.com"}],"homepage":"https://github.com/mozilla/firefox-devtools-mcp#readme","bugs":{"url":"https://github.com/mozilla/firefox-devtools-mcp/issues"},"bin":{"firefox-devtools-mcp":"dist/index.js"},"dist":{"shasum":"e70fac23f2e2f0cfd8438a052bf6fe64aa25b374","tarball":"https://registry.npmjs.org/@mozilla/firefox-devtools-mcp/-/firefox-devtools-mcp-0.9.3.tgz","fileCount":31,"integrity":"sha512-U8c72DOuJ3agD84NiZRnQN8kx/1HBcTu+22HLjAPahfpuNR+57ocs+3TZDlzVuDQnc/2rhvzuVtEoj0QrK/Xig==","signatures":[{"sig":"MEQCIE2V+a65ShhB5fR2r222oUzmbzOkuCPJVntoFgBcPGvoAiB+eeR1oPcwv9WoFNLDQQMKYH+7OHKMLee3UPCRdKshSw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1320857},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.19.0"},"gitHead":"8e08f5cef6a518888867844baa98d616dbb7c7e5","scripts":{"dev":"tsx watch src/index.moz.ts","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","check":"npm run lint:fix && npm run typecheck","clean":"rm -rf dist","setup":"node scripts/setup-mcp-config.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:ui":"vitest --ui","lint:fix":"eslint src --ext .ts --fix","test:run":"vitest run","build:all":"npm run build && npm run build:moz","build:moz":"node scripts/generate-moz-package.mjs && tsup --config tsup.config.moz.ts","check:all":"npm run check && npm run test:run && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","test:unit":"vitest run --exclude 'tests/integration/**'","typecheck":"tsc --noEmit","test:input":"node scripts/test-input-tools.js","test:tools":"node scripts/test-bidi-devtools.js","test:watch":"vitest watch","test:dialog":"node scripts/test-dialog.js","test:mozlog":"node scripts/test-mozlog.js","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","test:console":"node scripts/test-console.js","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.moz.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build","test:lifecycle":"node scripts/test-lifecycle-hooks.js","test:navigation":"node scripts/test-navigation.js","test:privileged":"node scripts/test-privileged-context.js","test:screenshot":"node scripts/test-screenshot.js","test:firefox-temp":"node scripts/test-firefox-temp.js","test:integration:win":"node scripts/run-integration-tests-windows.mjs"},"_npmUser":{"name":"jdescottes-mozilla-npm","email":"jdescottes+npm@mozilla.com"},"repository":{"url":"git+https://github.com/mozilla/firefox-devtools-mcp.git","type":"git"},"_npmVersion":"10.8.1","description":"Model Context Protocol (MCP) server for Firefox DevTools automation","directories":{},"_nodeVersion":"22.3.0","dependencies":{"ws":"8.18.3","yargs":"17.7.2","geckodriver":"6.0.2","selenium-webdriver":"4.36.0","@modelcontextprotocol/sdk":"1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","tsup":"8.5.0","jsdom":"28.1.0","dotenv":"17.2.1","eslint":"8.57.1","vitest":"3.1.4","prettier":"3.5.3","@types/ws":"8.18.1","@vitest/ui":"3.1.4","typescript":"5.3.3","@types/node":"24.1.0","@types/jsdom":"28.0.0","@types/yargs":"17.0.32","@vitest/coverage-v8":"3.1.4","eslint-config-prettier":"10.1.5","eslint-plugin-prettier":"5.4.0","@types/selenium-webdriver":"4.35.1","@typescript-eslint/parser":"8.58.0","@typescript-eslint/eslint-plugin":"8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/firefox-devtools-mcp_0.9.3_1778155138796_0.6054979448714042","host":"s3://npm-registry-packages-npm-production"}},"0.9.4":{"name":"@mozilla/firefox-devtools-mcp","version":"0.9.4","keywords":["mcp","mcp-server","model-context-protocol","firefox","firefox-devtools","browser-automation","webdriver-bidi","selenium","devtools","browser-testing","web-automation","claude","claude-ai","ai-agent","llm"],"author":{"name":"Mozilla"},"license":"MIT OR Apache-2.0","_id":"@mozilla/firefox-devtools-mcp@0.9.4","maintainers":[{"name":"mozilla-npm","email":"npm-owners@mozilla.com"},{"name":"mythmon","email":"mythmon@gmail.com"},{"name":"jkratzer","email":"jkratzer@mozilla.com"},{"name":"factorui.npm","email":"factorui.npm@mozilla.com"},{"name":"project-nimbus-publishing","email":"project-nimbus-publishing@mozilla.com"},{"name":"gijs","email":"gijskruitbosch@gmail.com"},{"name":"brizental","email":"brizental@mozilla.com"},{"name":"aplacitelli","email":"aplacitelli@mozilla.com"},{"name":"mozrhelmer","email":"rhelmer@mozilla.com"},{"name":"knowtheory","email":"ted@knowtheory.net"},{"name":"nbaumgardner","email":"niklasbaumgardner@gmail.com"},{"name":"tigleym","email":"tigleym@gmail.com"},{"name":"eemeli","email":"eemeli@gmail.com"},{"name":"jdescottes-mozilla-npm","email":"jdescottes+npm@mozilla.com"},{"name":"ahanot","email":"ahanot+npm@mozilla.com"},{"name":"mlifshin","email":"mlifshin+npm@mozilla.com"},{"name":"llisi-moz","email":"llisi+npm@mozilla.com"},{"name":"jdarcangelo-mozilla","email":"jdarcangelo+npm@mozilla.com"},{"name":"nchevobbe","email":"nchevobbe+npm@mozilla.com"}],"homepage":"https://github.com/mozilla/firefox-devtools-mcp#readme","bugs":{"url":"https://github.com/mozilla/firefox-devtools-mcp/issues"},"bin":{"firefox-devtools-mcp":"dist/index.js"},"dist":{"shasum":"1ff9b5ddc506fae2af8fc3ed3c104e9ef24b5a41","tarball":"https://registry.npmjs.org/@mozilla/firefox-devtools-mcp/-/firefox-devtools-mcp-0.9.4.tgz","fileCount":31,"integrity":"sha512-wGP/+S9as51e07ZeJh3vP3Hhpe15AL72kQ44EGoA002cJeZHDBznauX5mhTlEAZjnE3JMwxTO1stQNZc60eD8A==","signatures":[{"sig":"MEUCIQCucCCHruIhlZIZaZtU7ALe5ttskg9xjRhxjpPaHHhTSQIgGhnxY344yHjGmPZVq21l/xpBs8tw0R3DNEvaTXRPVkU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1324745},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.19.0"},"gitHead":"55368a5c35d8b8ab88010505433db11b7f3612de","scripts":{"dev":"tsx watch src/index.moz.ts","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","check":"npm run lint:fix && npm run typecheck","clean":"rm -rf dist","setup":"node scripts/setup-mcp-config.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:ui":"vitest --ui","lint:fix":"eslint src --ext .ts --fix","test:run":"vitest run","build:all":"npm run build && npm run build:moz","build:moz":"node scripts/generate-moz-package.mjs && tsup --config tsup.config.moz.ts","check:all":"npm run check && npm run test:run && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","test:unit":"vitest run --exclude 'tests/integration/**'","typecheck":"tsc --noEmit","test:input":"node scripts/test-input-tools.js","test:tools":"node scripts/test-bidi-devtools.js","test:watch":"vitest watch","test:dialog":"node scripts/test-dialog.js","test:mozlog":"node scripts/test-mozlog.js","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","test:console":"node scripts/test-console.js","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.moz.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build","test:lifecycle":"node scripts/test-lifecycle-hooks.js","test:navigation":"node scripts/test-navigation.js","test:privileged":"node scripts/test-privileged-context.js","test:screenshot":"node scripts/test-screenshot.js","test:firefox-temp":"node scripts/test-firefox-temp.js","test:integration:win":"node scripts/run-integration-tests-windows.mjs"},"_npmUser":{"name":"jdescottes-mozilla-npm","email":"jdescottes+npm@mozilla.com"},"repository":{"url":"git+https://github.com/mozilla/firefox-devtools-mcp.git","type":"git"},"_npmVersion":"10.8.1","description":"Model Context Protocol (MCP) server for Firefox DevTools automation","directories":{},"_nodeVersion":"22.3.0","dependencies":{"ws":"8.18.3","yargs":"17.7.2","geckodriver":"6.0.2","selenium-webdriver":"4.36.0","@modelcontextprotocol/sdk":"1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","tsup":"8.5.0","jsdom":"28.1.0","dotenv":"17.2.1","eslint":"8.57.1","vitest":"3.1.4","prettier":"3.5.3","@types/ws":"8.18.1","@vitest/ui":"3.1.4","typescript":"5.3.3","@types/node":"24.1.0","@types/jsdom":"28.0.0","@types/yargs":"17.0.32","@vitest/coverage-v8":"3.1.4","eslint-config-prettier":"10.1.5","eslint-plugin-prettier":"5.4.0","@types/selenium-webdriver":"4.35.1","@typescript-eslint/parser":"8.58.0","@typescript-eslint/eslint-plugin":"8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/firefox-devtools-mcp_0.9.4_1780589259639_0.12572690268094444","host":"s3://npm-registry-packages-npm-production"}},"0.9.5":{"name":"@mozilla/firefox-devtools-mcp","version":"0.9.5","keywords":["mcp","mcp-server","model-context-protocol","firefox","firefox-devtools","browser-automation","webdriver-bidi","selenium","devtools","browser-testing","web-automation","claude","claude-ai","ai-agent","llm"],"author":{"name":"Mozilla"},"license":"MIT OR Apache-2.0","_id":"@mozilla/firefox-devtools-mcp@0.9.5","maintainers":[{"name":"mozilla-npm","email":"npm-owners@mozilla.com"},{"name":"mythmon","email":"mythmon@gmail.com"},{"name":"jkratzer","email":"jkratzer@mozilla.com"},{"name":"factorui.npm","email":"factorui.npm@mozilla.com"},{"name":"project-nimbus-publishing","email":"project-nimbus-publishing@mozilla.com"},{"name":"gijs","email":"gijskruitbosch@gmail.com"},{"name":"brizental","email":"brizental@mozilla.com"},{"name":"aplacitelli","email":"aplacitelli@mozilla.com"},{"name":"mozrhelmer","email":"rhelmer@mozilla.com"},{"name":"knowtheory","email":"ted@knowtheory.net"},{"name":"nbaumgardner","email":"niklasbaumgardner@gmail.com"},{"name":"tigleym","email":"tigleym@gmail.com"},{"name":"eemeli","email":"eemeli@gmail.com"},{"name":"jdescottes-mozilla-npm","email":"jdescottes+npm@mozilla.com"},{"name":"ahanot","email":"ahanot+npm@mozilla.com"},{"name":"mlifshin","email":"mlifshin+npm@mozilla.com"},{"name":"llisi-moz","email":"llisi+npm@mozilla.com"},{"name":"jdarcangelo-mozilla","email":"jdarcangelo+npm@mozilla.com"},{"name":"nchevobbe","email":"nchevobbe+npm@mozilla.com"}],"homepage":"https://github.com/mozilla/firefox-devtools-mcp#readme","bugs":{"url":"https://github.com/mozilla/firefox-devtools-mcp/issues"},"bin":{"firefox-devtools-mcp":"dist/index.js"},"dist":{"shasum":"cdd91bd622cd2f1d632c8f2d2facf926d5bebaab","tarball":"https://registry.npmjs.org/@mozilla/firefox-devtools-mcp/-/firefox-devtools-mcp-0.9.5.tgz","fileCount":31,"integrity":"sha512-gGau1z56zepbVqn382dna1RwJdmpvPUvVj6z79nhp+WK97hVAmO7N17yNDLCP8IS8cYF0RrLvjTuYArwJPDArw==","signatures":[{"sig":"MEUCIQDi2gu5jfznvzxtF5VsulUgpo+J0OITrFb4X6jW1ElFXAIgWg/r/VmhhjiLm//CVOsGaNrqrCHuHTHRCczGahyrbb0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1328138},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.19.0"},"gitHead":"b0f4495336b36b875cee29480150e660088c3e1a","scripts":{"dev":"tsx watch src/index.moz.ts","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","check":"npm run lint:fix && npm run typecheck","clean":"rm -rf dist","setup":"node scripts/setup-mcp-config.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:ui":"vitest --ui","lint:fix":"eslint src --ext .ts --fix","test:run":"vitest run","build:all":"npm run build && npm run build:moz","build:moz":"node scripts/generate-moz-package.mjs && tsup --config tsup.config.moz.ts","check:all":"npm run check && npm run test:run && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","test:unit":"vitest run --exclude 'tests/integration/**'","typecheck":"tsc --noEmit","test:input":"node scripts/test-input-tools.js","test:tools":"node scripts/test-bidi-devtools.js","test:watch":"vitest watch","publish:moz":"node scripts/publish-moz-package.mjs","test:dialog":"node scripts/test-dialog.js","test:mozlog":"node scripts/test-mozlog.js","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","test:console":"node scripts/test-console.js","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.moz.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build","test:lifecycle":"node scripts/test-lifecycle-hooks.js","test:navigation":"node scripts/test-navigation.js","test:privileged":"node scripts/test-privileged-context.js","test:screenshot":"node scripts/test-screenshot.js","test:firefox-temp":"node scripts/test-firefox-temp.js","test:integration:win":"node scripts/run-integration-tests-windows.mjs"},"_npmUser":{"name":"jdescottes-mozilla-npm","email":"jdescottes+npm@mozilla.com"},"repository":{"url":"git+https://github.com/mozilla/firefox-devtools-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"Model Context Protocol (MCP) server for Firefox DevTools automation","directories":{},"_nodeVersion":"25.2.1","dependencies":{"ws":"8.18.3","yargs":"17.7.2","geckodriver":"6.0.2","selenium-webdriver":"4.36.0","@modelcontextprotocol/sdk":"1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","tsup":"8.5.0","jsdom":"28.1.0","dotenv":"17.2.1","eslint":"8.57.1","vitest":"3.1.4","prettier":"3.5.3","@types/ws":"8.18.1","@vitest/ui":"3.1.4","typescript":"5.3.3","@types/node":"24.1.0","@types/jsdom":"28.0.0","@types/yargs":"17.0.32","@vitest/coverage-v8":"3.1.4","eslint-config-prettier":"10.1.5","eslint-plugin-prettier":"5.4.0","@types/selenium-webdriver":"4.35.1","@typescript-eslint/parser":"8.58.0","@typescript-eslint/eslint-plugin":"8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/firefox-devtools-mcp_0.9.5_1781200834404_0.9991401411958298","host":"s3://npm-registry-packages-npm-production"}},"0.9.6":{"name":"@mozilla/firefox-devtools-mcp","version":"0.9.6","keywords":["mcp","mcp-server","model-context-protocol","firefox","firefox-devtools","browser-automation","webdriver-bidi","selenium","devtools","browser-testing","web-automation","claude","claude-ai","ai-agent","llm"],"author":{"name":"Mozilla"},"license":"MIT OR Apache-2.0","_id":"@mozilla/firefox-devtools-mcp@0.9.6","maintainers":[{"name":"mozilla-npm","email":"npm-owners@mozilla.com"},{"name":"mythmon","email":"mythmon@gmail.com"},{"name":"jkratzer","email":"jkratzer@mozilla.com"},{"name":"factorui.npm","email":"factorui.npm@mozilla.com"},{"name":"project-nimbus-publishing","email":"project-nimbus-publishing@mozilla.com"},{"name":"gijs","email":"gijskruitbosch@gmail.com"},{"name":"brizental","email":"brizental@mozilla.com"},{"name":"aplacitelli","email":"aplacitelli@mozilla.com"},{"name":"mozrhelmer","email":"rhelmer@mozilla.com"},{"name":"knowtheory","email":"ted@knowtheory.net"},{"name":"nbaumgardner","email":"niklasbaumgardner@gmail.com"},{"name":"tigleym","email":"tigleym@gmail.com"},{"name":"eemeli","email":"eemeli@gmail.com"},{"name":"hmanilla","email":"hmanilla+npm@mozilla.com"},{"name":"jdescottes-mozilla-npm","email":"jdescottes+npm@mozilla.com"},{"name":"ahanot","email":"ahanot+npm@mozilla.com"},{"name":"mlifshin","email":"mlifshin+npm@mozilla.com"},{"name":"llisi-moz","email":"llisi+npm@mozilla.com"},{"name":"jdarcangelo-mozilla","email":"jdarcangelo+npm@mozilla.com"},{"name":"nchevobbe","email":"nchevobbe+npm@mozilla.com"}],"homepage":"https://github.com/mozilla/firefox-devtools-mcp#readme","bugs":{"url":"https://github.com/mozilla/firefox-devtools-mcp/issues"},"bin":{"firefox-devtools-mcp":"dist/index.js"},"dist":{"shasum":"f0e5bdaac4d2ad58d103afebd33b4d81aa16b341","tarball":"https://registry.npmjs.org/@mozilla/firefox-devtools-mcp/-/firefox-devtools-mcp-0.9.6.tgz","fileCount":32,"integrity":"sha512-TpsL9Xi16fXAeu6tsDMKjfPNvGpU7cR5mq/Xe4pcbO1yaN7mxEtSPPtSL8Cwx70bdUDk450Q9r1w5roAlIW+4g==","signatures":[{"sig":"MEUCIQDRA8Py1amkRhMVyzvdI5Ggk81CM3r5H61vq+sbmOLSaQIgb4RLuzlLCvEhOeonqJVWtVPYnGcfLBWpKnacrc+S6es=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@mozilla%2ffirefox-devtools-mcp@0.9.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1359210},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.19.0"},"gitHead":"329b0d45ef02a8ebf24867208578615bfdac4cc4","scripts":{"dev":"tsx watch src/index.moz.ts","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","check":"npm run lint:fix && npm run typecheck","clean":"rm -rf dist","setup":"node scripts/setup-mcp-config.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:ui":"vitest --ui","lint:fix":"eslint src --ext .ts --fix","test:run":"vitest run","build:all":"npm run build && npm run build:moz","build:moz":"node scripts/generate-moz-package.mjs && tsup --config tsup.config.moz.ts","check:all":"npm run check && npm run test:run && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","test:unit":"vitest run --exclude 'tests/integration/**'","typecheck":"tsc --noEmit","test:input":"node scripts/test-input-tools.js","test:tools":"node scripts/test-bidi-devtools.js","test:watch":"vitest watch","publish:moz":"node scripts/publish-moz-package.mjs","test:dialog":"node scripts/test-dialog.js","test:mozlog":"node scripts/test-mozlog.js","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","test:console":"node scripts/test-console.js","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.moz.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build","test:lifecycle":"node scripts/test-lifecycle-hooks.js","test:navigation":"node scripts/test-navigation.js","test:privileged":"node scripts/test-privileged-context.js","test:screenshot":"node scripts/test-screenshot.js","test:firefox-temp":"node scripts/test-firefox-temp.js","test:integration:win":"node scripts/run-integration-tests-windows.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1fa47696-bf0f-486a-8989-4d71ea556825"}},"repository":{"url":"git+https://github.com/mozilla/firefox-devtools-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"Model Context Protocol (MCP) server for Firefox DevTools automation","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ws":"8.21.0","yargs":"17.7.2","geckodriver":"6.0.2","selenium-webdriver":"4.36.0","@modelcontextprotocol/sdk":"1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","tsup":"8.5.0","jsdom":"28.1.0","dotenv":"17.2.1","eslint":"8.57.1","vitest":"4.1.8","prettier":"3.5.3","@types/ws":"8.18.1","@vitest/ui":"4.1.8","typescript":"5.3.3","@types/node":"24.1.0","@types/jsdom":"28.0.0","@types/yargs":"17.0.32","@vitest/coverage-v8":"4.1.8","eslint-config-prettier":"10.1.5","eslint-plugin-prettier":"5.4.0","@types/selenium-webdriver":"4.35.1","@typescript-eslint/parser":"8.58.0","@typescript-eslint/eslint-plugin":"8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/firefox-devtools-mcp_0.9.6_1782485355516_0.19363199970577605","host":"s3://npm-registry-packages-npm-production"}},"0.9.7":{"name":"@mozilla/firefox-devtools-mcp","version":"0.9.7","keywords":["mcp","mcp-server","model-context-protocol","firefox","firefox-devtools","browser-automation","webdriver-bidi","selenium","devtools","browser-testing","web-automation","claude","claude-ai","ai-agent","llm"],"author":{"name":"Mozilla"},"license":"MIT OR Apache-2.0","_id":"@mozilla/firefox-devtools-mcp@0.9.7","maintainers":[{"name":"mozilla-npm","email":"npm-owners@mozilla.com"},{"name":"mythmon","email":"mythmon@gmail.com"},{"name":"jkratzer","email":"jkratzer@mozilla.com"},{"name":"factorui.npm","email":"factorui.npm@mozilla.com"},{"name":"project-nimbus-publishing","email":"project-nimbus-publishing@mozilla.com"},{"name":"gijs","email":"gijskruitbosch@gmail.com"},{"name":"brizental","email":"brizental@mozilla.com"},{"name":"aplacitelli","email":"aplacitelli@mozilla.com"},{"name":"mozrhelmer","email":"rhelmer@mozilla.com"},{"name":"knowtheory","email":"ted@knowtheory.net"},{"name":"nbaumgardner","email":"niklasbaumgardner@gmail.com"},{"name":"tigleym","email":"tigleym@gmail.com"},{"name":"eemeli","email":"eemeli@gmail.com"},{"name":"hmanilla","email":"hmanilla+npm@mozilla.com"},{"name":"jdescottes-mozilla-npm","email":"jdescottes+npm@mozilla.com"},{"name":"ahanot","email":"ahanot+npm@mozilla.com"},{"name":"mlifshin","email":"mlifshin+npm@mozilla.com"},{"name":"llisi-moz","email":"llisi+npm@mozilla.com"},{"name":"jdarcangelo-mozilla","email":"jdarcangelo+npm@mozilla.com"},{"name":"nchevobbe","email":"nchevobbe+npm@mozilla.com"}],"homepage":"https://github.com/mozilla/firefox-devtools-mcp#readme","bugs":{"url":"https://github.com/mozilla/firefox-devtools-mcp/issues"},"bin":{"firefox-devtools-mcp":"dist/index.js"},"dist":{"shasum":"6daf59ac1e5f32e607ce5039445aa2d98540919a","tarball":"https://registry.npmjs.org/@mozilla/firefox-devtools-mcp/-/firefox-devtools-mcp-0.9.7.tgz","fileCount":32,"integrity":"sha512-QgDg2uLCSaeVqun0KBqEO/aNckxj3bI5Z9iDiCneWUN573933pMDbGPuyGLTa5WYCkm5O/4jbjnaT5LkWEgkaw==","signatures":[{"sig":"MEUCIAUcBFA75Hf8R8vnhvGSMXITrH0xQPcTX33ivJeaDza+AiEAycsMDILnoARriKTZQxzEaJFmxGaxI0AhCVvtjZeUSkM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@mozilla%2ffirefox-devtools-mcp@0.9.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1359208},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.19.0"},"gitHead":"f8d72b2f68651d727392a666e1f464bf3829060b","scripts":{"dev":"tsx watch src/index.moz.ts","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","check":"npm run lint:fix && npm run typecheck","clean":"rm -rf dist","setup":"node scripts/setup-mcp-config.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:ui":"vitest --ui","lint:fix":"eslint src --ext .ts --fix","test:run":"vitest run","build:all":"npm run build && npm run build:moz","build:moz":"node scripts/generate-moz-package.mjs && tsup --config tsup.config.moz.ts","check:all":"npm run check && npm run test:run && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","test:unit":"vitest run --exclude 'tests/integration/**'","typecheck":"tsc --noEmit","test:input":"node scripts/test-input-tools.js","test:tools":"node scripts/test-bidi-devtools.js","test:watch":"vitest watch","publish:moz":"node scripts/publish-moz-package.mjs","test:dialog":"node scripts/test-dialog.js","test:mozlog":"node scripts/test-mozlog.js","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","test:console":"node scripts/test-console.js","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.moz.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build","test:lifecycle":"node scripts/test-lifecycle-hooks.js","test:navigation":"node scripts/test-navigation.js","test:privileged":"node scripts/test-privileged-context.js","test:screenshot":"node scripts/test-screenshot.js","test:firefox-temp":"node scripts/test-firefox-temp.js","test:integration:win":"node scripts/run-integration-tests-windows.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1fa47696-bf0f-486a-8989-4d71ea556825"}},"repository":{"url":"git+https://github.com/mozilla/firefox-devtools-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"Model Context Protocol (MCP) server for Firefox DevTools automation","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ws":"8.21.0","yargs":"17.7.2","geckodriver":"6.0.2","selenium-webdriver":"4.36.0","@modelcontextprotocol/sdk":"1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","tsup":"8.5.0","jsdom":"28.1.0","dotenv":"17.2.1","eslint":"8.57.1","vitest":"4.1.8","prettier":"3.5.3","@types/ws":"8.18.1","@vitest/ui":"4.1.8","typescript":"5.3.3","@types/node":"24.1.0","@types/jsdom":"28.0.0","@types/yargs":"17.0.32","@vitest/coverage-v8":"4.1.8","eslint-config-prettier":"10.1.5","eslint-plugin-prettier":"5.4.0","@types/selenium-webdriver":"4.35.1","@typescript-eslint/parser":"8.58.0","@typescript-eslint/eslint-plugin":"8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/firefox-devtools-mcp_0.9.7_1782486428571_0.33245310302314635","host":"s3://npm-registry-packages-npm-production"}},"0.9.8":{"name":"@mozilla/firefox-devtools-mcp","version":"0.9.8","keywords":["mcp","mcp-server","model-context-protocol","firefox","firefox-devtools","browser-automation","webdriver-bidi","selenium","devtools","browser-testing","web-automation","claude","claude-ai","ai-agent","llm"],"author":{"name":"Mozilla"},"license":"MIT OR Apache-2.0","_id":"@mozilla/firefox-devtools-mcp@0.9.8","maintainers":[{"name":"mozilla-npm","email":"npm-owners@mozilla.com"},{"name":"mythmon","email":"mythmon@gmail.com"},{"name":"jkratzer","email":"jkratzer@mozilla.com"},{"name":"factorui.npm","email":"factorui.npm@mozilla.com"},{"name":"project-nimbus-publishing","email":"project-nimbus-publishing@mozilla.com"},{"name":"gijs","email":"gijskruitbosch@gmail.com"},{"name":"brizental","email":"brizental@mozilla.com"},{"name":"aplacitelli","email":"aplacitelli@mozilla.com"},{"name":"mozrhelmer","email":"rhelmer@mozilla.com"},{"name":"knowtheory","email":"ted@knowtheory.net"},{"name":"nbaumgardner","email":"niklasbaumgardner@gmail.com"},{"name":"tigleym","email":"tigleym@gmail.com"},{"name":"eemeli","email":"eemeli@gmail.com"},{"name":"hmanilla","email":"hmanilla+npm@mozilla.com"},{"name":"jdescottes-mozilla-npm","email":"jdescottes+npm@mozilla.com"},{"name":"ahanot","email":"ahanot+npm@mozilla.com"},{"name":"mlifshin","email":"mlifshin+npm@mozilla.com"},{"name":"llisi-moz","email":"llisi+npm@mozilla.com"},{"name":"jdarcangelo-mozilla","email":"jdarcangelo+npm@mozilla.com"},{"name":"nchevobbe","email":"nchevobbe+npm@mozilla.com"}],"homepage":"https://github.com/mozilla/firefox-devtools-mcp#readme","bugs":{"url":"https://github.com/mozilla/firefox-devtools-mcp/issues"},"bin":{"firefox-devtools-mcp":"dist/index.js"},"dist":{"shasum":"c53cc9a9af4045c94dfa2d6a7df1f49d6c441164","tarball":"https://registry.npmjs.org/@mozilla/firefox-devtools-mcp/-/firefox-devtools-mcp-0.9.8.tgz","fileCount":24,"integrity":"sha512-lbzFh1sDFL9KBHyPj6sgeHZ+1TuHWyy/2H3f5OgOSMiDIXbV/Ilq8lkCaQYTH+7w5fQdrfl+LOSsnit0DlIENA==","signatures":[{"sig":"MEYCIQDHsRQaNKAJXchkb/9tEuKvzpEnvTKbd3XevMpQjJA13AIhAKaN8DWqnBl/VPU0QIVh4DbckmwFiRJNaabzbo9p9ZEs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@mozilla%2ffirefox-devtools-mcp@0.9.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1351203},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.19.0"},"gitHead":"16232486b741656069988bfe9001178df8d0b1dc","scripts":{"dev":"tsx watch src/index.moz.ts","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","check":"npm run lint:fix && npm run typecheck","clean":"rm -rf dist","setup":"node scripts/setup-mcp-config.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:ui":"vitest --ui","lint:fix":"eslint src --ext .ts --fix","test:run":"vitest run","build:all":"npm run build && npm run build:moz","build:moz":"node scripts/generate-moz-package.mjs && tsup --config tsup.config.moz.ts","check:all":"npm run check && npm run test:run && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","test:unit":"vitest run --exclude 'tests/integration/**'","typecheck":"tsc --noEmit","test:input":"node scripts/test-input-tools.js","test:tools":"node scripts/test-bidi-devtools.js","test:watch":"vitest watch","publish:moz":"node scripts/publish-moz-package.mjs","test:dialog":"node scripts/test-dialog.js","test:mozlog":"node scripts/test-mozlog.js","bump-version":"node scripts/bump-version.mjs","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","test:console":"node scripts/test-console.js","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.moz.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build","test:lifecycle":"node scripts/test-lifecycle-hooks.js","test:navigation":"node scripts/test-navigation.js","test:privileged":"node scripts/test-privileged-context.js","test:screenshot":"node scripts/test-screenshot.js","test:firefox-temp":"node scripts/test-firefox-temp.js","test:integration:win":"node scripts/run-integration-tests-windows.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1fa47696-bf0f-486a-8989-4d71ea556825"}},"repository":{"url":"git+https://github.com/mozilla/firefox-devtools-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"Model Context Protocol (MCP) server for Firefox DevTools automation","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"8.21.0","yargs":"17.7.2","geckodriver":"6.0.2","selenium-webdriver":"4.36.0","@modelcontextprotocol/sdk":"1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","tsup":"8.5.0","jsdom":"28.1.0","dotenv":"17.2.1","eslint":"8.57.1","vitest":"4.1.8","prettier":"3.5.3","@types/ws":"8.18.1","@vitest/ui":"4.1.8","typescript":"5.3.3","@types/node":"24.1.0","@types/jsdom":"28.0.0","@types/yargs":"17.0.32","@vitest/coverage-v8":"4.1.8","eslint-config-prettier":"10.1.5","eslint-plugin-prettier":"5.4.0","@types/selenium-webdriver":"4.35.1","@typescript-eslint/parser":"8.58.0","@typescript-eslint/eslint-plugin":"8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/firefox-devtools-mcp_0.9.8_1782987910828_0.95341065389089","host":"s3://npm-registry-packages-npm-production"}},"0.9.9":{"name":"@mozilla/firefox-devtools-mcp","version":"0.9.9","keywords":["mcp","mcp-server","model-context-protocol","firefox","firefox-devtools","browser-automation","webdriver-bidi","selenium","devtools","browser-testing","web-automation","claude","claude-ai","ai-agent","llm"],"author":{"name":"Mozilla"},"license":"MIT OR Apache-2.0","_id":"@mozilla/firefox-devtools-mcp@0.9.9","maintainers":[{"name":"mozilla-npm","email":"npm-owners@mozilla.com"},{"name":"mythmon","email":"mythmon@gmail.com"},{"name":"jkratzer","email":"jkratzer@mozilla.com"},{"name":"factorui.npm","email":"factorui.npm@mozilla.com"},{"name":"project-nimbus-publishing","email":"project-nimbus-publishing@mozilla.com"},{"name":"gijs","email":"gijskruitbosch@gmail.com"},{"name":"brizental","email":"brizental@mozilla.com"},{"name":"aplacitelli","email":"aplacitelli@mozilla.com"},{"name":"mozrhelmer","email":"rhelmer@mozilla.com"},{"name":"knowtheory","email":"ted@knowtheory.net"},{"name":"nbaumgardner","email":"niklasbaumgardner@gmail.com"},{"name":"tigleym","email":"tigleym@gmail.com"},{"name":"eemeli","email":"eemeli@gmail.com"},{"name":"hmanilla","email":"hmanilla+npm@mozilla.com"},{"name":"jdescottes-mozilla-npm","email":"jdescottes+npm@mozilla.com"},{"name":"ahanot","email":"ahanot+npm@mozilla.com"},{"name":"mlifshin","email":"mlifshin+npm@mozilla.com"},{"name":"llisi-moz","email":"llisi+npm@mozilla.com"},{"name":"jdarcangelo-mozilla","email":"jdarcangelo+npm@mozilla.com"},{"name":"nchevobbe","email":"nchevobbe+npm@mozilla.com"}],"homepage":"https://github.com/mozilla/firefox-devtools-mcp#readme","bugs":{"url":"https://github.com/mozilla/firefox-devtools-mcp/issues"},"bin":{"firefox-devtools-mcp":"dist/index.js"},"dist":{"shasum":"e7bc9a298f8295f651b015350f17b1da8674019a","tarball":"https://registry.npmjs.org/@mozilla/firefox-devtools-mcp/-/firefox-devtools-mcp-0.9.9.tgz","fileCount":23,"integrity":"sha512-JdSNy47QK0ejcvVw3vOEsxWGqXR3g019FixYuvBi249tpA7sQG7Vma4LH7TknodQa8MLw6X4UP5iE1lgVPcyaQ==","signatures":[{"sig":"MEQCIH76jB+SijDPOfi4E6IVjbbVCEgSbI8k1gc6Btm/qCE0AiAc8u2xp9xKUb+aKXI6BpNxo3GFBPICrSK5aif5BVLyug==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@mozilla%2ffirefox-devtools-mcp@0.9.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1350136},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.19.0"},"gitHead":"149e9a5fc49dfd1369e77fdc50463a39d80cfbc8","scripts":{"dev":"tsx watch src/index.moz.ts","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","check":"npm run lint:fix && npm run typecheck","clean":"rm -rf dist","setup":"node scripts/setup-mcp-config.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:ui":"vitest --ui","lint:fix":"eslint src --ext .ts --fix","test:run":"vitest run","build:all":"npm run build && npm run build:moz","build:moz":"node scripts/generate-moz-package.mjs && tsup --config tsup.config.moz.ts","check:all":"npm run check && npm run test:run && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","test:unit":"vitest run --exclude 'tests/integration/**'","typecheck":"tsc --noEmit","test:input":"node scripts/test-input-tools.js","test:tools":"node scripts/test-bidi-devtools.js","test:watch":"vitest watch","publish:moz":"node scripts/publish-moz-package.mjs","test:dialog":"node scripts/test-dialog.js","test:mozlog":"node scripts/test-mozlog.js","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","test:console":"node scripts/test-console.js","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.moz.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build","test:lifecycle":"node scripts/test-lifecycle-hooks.js","test:navigation":"node scripts/test-navigation.js","test:privileged":"node scripts/test-privileged-context.js","test:screenshot":"node scripts/test-screenshot.js","test:firefox-temp":"node scripts/test-firefox-temp.js","test:integration:win":"node scripts/run-integration-tests-windows.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1fa47696-bf0f-486a-8989-4d71ea556825"}},"repository":{"url":"git+https://github.com/mozilla/firefox-devtools-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"Model Context Protocol (MCP) server for Firefox DevTools automation","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"8.21.0","yargs":"17.7.2","geckodriver":"6.0.2","selenium-webdriver":"4.36.0","@modelcontextprotocol/sdk":"1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","tsup":"8.5.0","jsdom":"28.1.0","dotenv":"17.2.1","eslint":"8.57.1","vitest":"4.1.8","prettier":"3.5.3","@types/ws":"8.18.1","@vitest/ui":"4.1.8","typescript":"5.3.3","@types/node":"24.1.0","@types/jsdom":"28.0.0","@types/yargs":"17.0.32","@vitest/coverage-v8":"4.1.8","eslint-config-prettier":"10.1.5","eslint-plugin-prettier":"5.4.0","@types/selenium-webdriver":"4.35.1","@typescript-eslint/parser":"8.58.0","@typescript-eslint/eslint-plugin":"8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/firefox-devtools-mcp_0.9.9_1783008580805_0.3363285634661022","host":"s3://npm-registry-packages-npm-production"}},"0.9.10":{"name":"@mozilla/firefox-devtools-mcp","version":"0.9.10","keywords":["mcp","mcp-server","model-context-protocol","firefox","firefox-devtools","browser-automation","webdriver-bidi","selenium","devtools","browser-testing","web-automation","claude","claude-ai","ai-agent","llm"],"author":{"name":"Mozilla"},"license":"MIT OR Apache-2.0","_id":"@mozilla/firefox-devtools-mcp@0.9.10","maintainers":[{"name":"mozilla-npm","email":"npm-owners@mozilla.com"},{"name":"mythmon","email":"mythmon@gmail.com"},{"name":"jkratzer","email":"jkratzer@mozilla.com"},{"name":"factorui.npm","email":"factorui.npm@mozilla.com"},{"name":"project-nimbus-publishing","email":"project-nimbus-publishing@mozilla.com"},{"name":"gijs","email":"gijskruitbosch@gmail.com"},{"name":"brizental","email":"brizental@mozilla.com"},{"name":"aplacitelli","email":"aplacitelli@mozilla.com"},{"name":"mozrhelmer","email":"rhelmer@mozilla.com"},{"name":"knowtheory","email":"ted@knowtheory.net"},{"name":"nbaumgardner","email":"niklasbaumgardner@gmail.com"},{"name":"tigleym","email":"tigleym@gmail.com"},{"name":"eemeli","email":"eemeli@gmail.com"},{"name":"hmanilla","email":"hmanilla+npm@mozilla.com"},{"name":"jdescottes-mozilla-npm","email":"jdescottes+npm@mozilla.com"},{"name":"ahanot","email":"ahanot+npm@mozilla.com"},{"name":"mlifshin","email":"mlifshin+npm@mozilla.com"},{"name":"llisi-moz","email":"llisi+npm@mozilla.com"},{"name":"jdarcangelo-mozilla","email":"jdarcangelo+npm@mozilla.com"},{"name":"nchevobbe","email":"nchevobbe+npm@mozilla.com"}],"homepage":"https://github.com/mozilla/firefox-devtools-mcp#readme","bugs":{"url":"https://github.com/mozilla/firefox-devtools-mcp/issues"},"bin":{"firefox-devtools-mcp":"dist/index.js"},"dist":{"shasum":"30f7d361dd8d079f92d423402cf53e540dd5a03b","tarball":"https://registry.npmjs.org/@mozilla/firefox-devtools-mcp/-/firefox-devtools-mcp-0.9.10.tgz","fileCount":24,"integrity":"sha512-eLfUpqcvKt2zZbcLHivOYwefY0lRKXZg1vdw4gcDeEc4cWOhD8rVIVxKNKtDWOX21tC8z5HUQcES1fll0F2TYg==","signatures":[{"sig":"MEQCID5+P8/bM3y1WQe+plRzmkk1cA1Ozdr6ATKCxVlSA2cBAiBKuD/onlT+urwNskYA7q53UcMf6uDUmD0g5g4/z0HEpQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@mozilla%2ffirefox-devtools-mcp@0.9.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1352943},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.19.0"},"gitHead":"ebabb536991e62e30d9b5e4646097221d2f9c991","scripts":{"dev":"tsx watch src/index.moz.ts","lint":"eslint src --ext .ts","test":"vitest","build":"tsup","check":"npm run lint:fix && npm run typecheck","clean":"rm -rf dist","setup":"node scripts/setup-mcp-config.js","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:ui":"vitest --ui","lint:fix":"eslint src --ext .ts --fix","test:run":"vitest run","build:all":"npm run build && npm run build:moz","build:moz":"node scripts/generate-moz-package.mjs && tsup --config tsup.config.moz.ts","check:all":"npm run check && npm run test:run && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","test:unit":"vitest run --exclude 'tests/integration/**'","typecheck":"tsc --noEmit","build:mcpb":"node scripts/build-mcpb.mjs","test:input":"node scripts/test-input-tools.js","test:tools":"node scripts/test-bidi-devtools.js","test:watch":"vitest watch","publish:moz":"node scripts/publish-moz-package.mjs","test:dialog":"node scripts/test-dialog.js","test:mozlog":"node scripts/test-mozlog.js","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","test:console":"node scripts/test-console.js","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.moz.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run clean && npm run build","test:lifecycle":"node scripts/test-lifecycle-hooks.js","test:navigation":"node scripts/test-navigation.js","test:privileged":"node scripts/test-privileged-context.js","test:screenshot":"node scripts/test-screenshot.js","test:firefox-temp":"node scripts/test-firefox-temp.js","test:integration:win":"node scripts/run-integration-tests-windows.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1fa47696-bf0f-486a-8989-4d71ea556825"}},"repository":{"url":"git+https://github.com/mozilla/firefox-devtools-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"Model Context Protocol (MCP) server for Firefox DevTools automation","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"8.21.0","yargs":"17.7.2","geckodriver":"6.0.2","selenium-webdriver":"4.36.0","@modelcontextprotocol/sdk":"1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.21.0","tsup":"8.5.0","jsdom":"28.1.0","dotenv":"17.2.1","eslint":"8.57.1","vitest":"4.1.8","prettier":"3.5.3","@types/ws":"8.18.1","@vitest/ui":"4.1.8","typescript":"5.3.3","@types/node":"24.1.0","@types/jsdom":"28.0.0","@types/yargs":"17.0.32","@anthropic-ai/mcpb":"2.1.2","@vitest/coverage-v8":"4.1.8","eslint-config-prettier":"10.1.5","eslint-plugin-prettier":"5.4.0","@types/selenium-webdriver":"4.35.1","@typescript-eslint/parser":"8.58.0","@typescript-eslint/eslint-plugin":"8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/firefox-devtools-mcp_0.9.10_1783702684686_0.7764387759602087","host":"s3://npm-registry-packages-npm-production"}},"0.9.12":{"name":"@mozilla/firefox-devtools-mcp","version":"0.9.12","description":"Model Context Protocol (MCP) server for Firefox DevTools automation","author":{"name":"Mozilla"},"license":"MIT OR Apache-2.0","type":"module","main":"dist/index.js","types":"dist/index.d.ts","bin":{"firefox-devtools-mcp":"dist/index.js"},"scripts":{"dev":"tsx watch src/index.moz.ts","build":"tsup","build:moz":"node scripts/generate-moz-package.mjs && tsup --config tsup.config.moz.ts","build:all":"npm run build && npm run build:moz","build:mcpb":"node scripts/build-mcpb.mjs","publish:moz":"node scripts/publish-moz-package.mjs","start":"node dist/index.js","setup":"node scripts/setup-mcp-config.js","clean":"rm -rf dist","typecheck":"tsc --noEmit","lint":"eslint src --ext .ts","lint:fix":"eslint src --ext .ts --fix","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","check":"npm run lint:fix && npm run typecheck","check:all":"npm run check && npm run test:run && npm run build","prepublishOnly":"npm run clean && npm run build","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","inspector:dev":"NODE_ENV=development npx @modelcontextprotocol/inspector npx tsx src/index.moz.ts","test":"vitest","test:run":"vitest run","test:unit":"vitest run --exclude 'tests/integration/**'","test:coverage":"vitest run --coverage","test:watch":"vitest watch","test:ui":"vitest --ui","test:tools":"node scripts/test-bidi-devtools.js","test:console":"node scripts/test-console.js","test:dialog":"node scripts/test-dialog.js","test:firefox-temp":"node scripts/test-firefox-temp.js","test:input":"node scripts/test-input-tools.js","test:lifecycle":"node scripts/test-lifecycle-hooks.js","test:mozlog":"node scripts/test-mozlog.js","test:navigation":"node scripts/test-navigation.js","test:privileged":"node scripts/test-privileged-context.js","test:screenshot":"node scripts/test-screenshot.js","test:integration:win":"node scripts/run-integration-tests-windows.mjs"},"keywords":["mcp","mcp-server","model-context-protocol","firefox","firefox-devtools","browser-automation","webdriver-bidi","selenium","devtools","browser-testing","web-automation","claude","claude-ai","ai-agent","llm"],"engines":{"node":">=20.19.0"},"dependencies":{"@modelcontextprotocol/sdk":"1.29.0","geckodriver":"6.0.2","selenium-webdriver":"4.36.0","ws":"8.21.0","yargs":"17.7.2"},"devDependencies":{"@anthropic-ai/mcpb":"2.1.2","@types/jsdom":"28.0.0","@types/node":"24.1.0","@types/selenium-webdriver":"4.35.1","@types/ws":"8.18.1","@types/yargs":"17.0.32","@typescript-eslint/eslint-plugin":"8.58.0","@typescript-eslint/parser":"8.58.0","@vitest/coverage-v8":"4.1.8","@vitest/ui":"4.1.8","dotenv":"17.2.1","eslint":"8.57.1","eslint-config-prettier":"10.1.5","eslint-plugin-prettier":"5.4.0","jsdom":"28.1.0","prettier":"3.5.3","tsup":"8.5.0","tsx":"4.21.0","typescript":"5.3.3","vitest":"4.1.8"},"repository":{"type":"git","url":"git+https://github.com/mozilla/firefox-devtools-mcp.git"},"bugs":{"url":"https://github.com/mozilla/firefox-devtools-mcp/issues"},"homepage":"https://github.com/mozilla/firefox-devtools-mcp#readme","publishConfig":{"access":"public"},"gitHead":"38a4b431fac8b799a70146b308d05aa4a7bd478b","_id":"@mozilla/firefox-devtools-mcp@0.9.12","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-FkOGk295G7snuPOGb3SAYlggOVukbjmNANm6E49sW2ie05UqncFH3Zf67NoyQ+o1K70KmMs1bLtPBoc9C57t6w==","shasum":"94fbebcbb16c5026c5f63afafde5a6bac7740935","tarball":"https://registry.npmjs.org/@mozilla/firefox-devtools-mcp/-/firefox-devtools-mcp-0.9.12.tgz","fileCount":24,"unpackedSize":1352943,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@mozilla%2ffirefox-devtools-mcp@0.9.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCQm8jV0IgvnEfmBic60AazPfWnrObuJ1yEZJ7c4yrvJgIhAMWiworOGXOA4warNcn3dlAUZOufPdHz7fa3b1qRJUp9"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1fa47696-bf0f-486a-8989-4d71ea556825"}},"directories":{},"maintainers":[{"name":"mozilla-npm","email":"npm-owners@mozilla.com"},{"name":"mythmon","email":"mythmon@gmail.com"},{"name":"jkratzer","email":"jkratzer@mozilla.com"},{"name":"factorui.npm","email":"factorui.npm@mozilla.com"},{"name":"project-nimbus-publishing","email":"project-nimbus-publishing@mozilla.com"},{"name":"gijs","email":"gijskruitbosch@gmail.com"},{"name":"brizental","email":"brizental@mozilla.com"},{"name":"aplacitelli","email":"aplacitelli@mozilla.com"},{"name":"mozrhelmer","email":"rhelmer@mozilla.com"},{"name":"knowtheory","email":"ted@knowtheory.net"},{"name":"nbaumgardner","email":"niklasbaumgardner@gmail.com"},{"name":"tigleym","email":"tigleym@gmail.com"},{"name":"eemeli","email":"eemeli@gmail.com"},{"name":"hmanilla","email":"hmanilla+npm@mozilla.com"},{"name":"jdescottes-mozilla-npm","email":"jdescottes+npm@mozilla.com"},{"name":"ahanot","email":"ahanot+npm@mozilla.com"},{"name":"mlifshin","email":"mlifshin+npm@mozilla.com"},{"name":"llisi-moz","email":"llisi+npm@mozilla.com"},{"name":"jdarcangelo-mozilla","email":"jdarcangelo+npm@mozilla.com"},{"name":"nchevobbe","email":"nchevobbe+npm@mozilla.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/firefox-devtools-mcp_0.9.12_1783704442427_0.672189598807222"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-07T11:58:58.684Z","modified":"2026-07-10T17:27:23.072Z","0.9.3":"2026-05-07T11:58:58.967Z","0.9.4":"2026-06-04T16:07:39.841Z","0.9.5":"2026-06-11T18:00:34.573Z","0.9.6":"2026-06-26T14:49:15.718Z","0.9.7":"2026-06-26T15:07:08.783Z","0.9.8":"2026-07-02T10:25:11.015Z","0.9.9":"2026-07-02T16:09:40.959Z","0.9.10":"2026-07-10T16:58:04.888Z","0.9.12":"2026-07-10T17:27:22.623Z"},"bugs":{"url":"https://github.com/mozilla/firefox-devtools-mcp/issues"},"author":{"name":"Mozilla"},"license":"MIT OR Apache-2.0","homepage":"https://github.com/mozilla/firefox-devtools-mcp#readme","keywords":["mcp","mcp-server","model-context-protocol","firefox","firefox-devtools","browser-automation","webdriver-bidi","selenium","devtools","browser-testing","web-automation","claude","claude-ai","ai-agent","llm"],"repository":{"type":"git","url":"git+https://github.com/mozilla/firefox-devtools-mcp.git"},"description":"Model Context Protocol (MCP) server for Firefox DevTools automation","maintainers":[{"name":"mozilla-npm","email":"npm-owners@mozilla.com"},{"name":"mythmon","email":"mythmon@gmail.com"},{"name":"jkratzer","email":"jkratzer@mozilla.com"},{"name":"factorui.npm","email":"factorui.npm@mozilla.com"},{"name":"project-nimbus-publishing","email":"project-nimbus-publishing@mozilla.com"},{"name":"gijs","email":"gijskruitbosch@gmail.com"},{"name":"brizental","email":"brizental@mozilla.com"},{"name":"aplacitelli","email":"aplacitelli@mozilla.com"},{"name":"mozrhelmer","email":"rhelmer@mozilla.com"},{"name":"knowtheory","email":"ted@knowtheory.net"},{"name":"nbaumgardner","email":"niklasbaumgardner@gmail.com"},{"name":"tigleym","email":"tigleym@gmail.com"},{"name":"eemeli","email":"eemeli@gmail.com"},{"name":"hmanilla","email":"hmanilla+npm@mozilla.com"},{"name":"jdescottes-mozilla-npm","email":"jdescottes+npm@mozilla.com"},{"name":"ahanot","email":"ahanot+npm@mozilla.com"},{"name":"mlifshin","email":"mlifshin+npm@mozilla.com"},{"name":"llisi-moz","email":"llisi+npm@mozilla.com"},{"name":"jdarcangelo-mozilla","email":"jdarcangelo+npm@mozilla.com"},{"name":"nchevobbe","email":"nchevobbe+npm@mozilla.com"}],"readme":"# Firefox DevTools MCP\n\n[![npm version](https://badge.fury.io/js/@mozilla%2Ffirefox-devtools-mcp.svg)](https://www.npmjs.com/package/mozilla/firefox-devtools-mcp)\n[![CI](https://github.com/mozilla/firefox-devtools-mcp/workflows/CI/badge.svg)](https://github.com/mozilla/firefox-devtools-mcp/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/mozilla/firefox-devtools-mcp/branch/main/graph/badge.svg)](https://codecov.io/gh/mozilla/firefox-devtools-mcp)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE-MIT) [![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE-APACHE)\n\n<a href=\"https://glama.ai/mcp/servers/@mozilla/firefox-devtools-mcp\"><img src=\"https://glama.ai/mcp/servers/@mozilla/firefox-devtools-mcp/badge\" height=\"223\" alt=\"Glama\"></a>\n\nModel Context Protocol server for automating Firefox via WebDriver BiDi (through Selenium WebDriver). Works with Claude Code, Claude Desktop, Cursor, Cline and other MCP clients.\n\nRepository: https://github.com/mozilla/firefox-devtools-mcp\n\n> **Note**: This MCP server requires a local Firefox browser installation and cannot run on cloud hosting services like glama.ai. Use `npx @mozilla/firefox-devtools-mcp@latest` to run locally, or use Docker with the provided Dockerfile.\n\n## Security\n\nBrowser MCP servers carry inherent risks. A few key practices:\n\n- **Use a dedicated Firefox profile.** Never run the server against your regular profile — the agent has access to whatever the browser can reach, including cookies and saved sessions.\n- **Be cautious about which sites you visit.** Pages can return content designed to manipulate the agent (prompt injection). Stick to sites you control or trust.\n- **Avoid enabling extra flags unless needed.** `--enable-script` and `--enable-privileged-context` significantly expand what the agent can do.\n\nSee [SECURITY.md](SECURITY.md) for a full breakdown of risks and how to report vulnerabilities.\n\n## Requirements\n\n- Node.js ≥ 20.19.0\n- Firefox 100+ installed (auto‑detected, or pass `--firefox-path`)\n\n## Install and use with Claude Code (npx)\n\nRecommended: use npx so you always run the latest published version from npm.\n\nOption A — Claude Code CLI\n\n```bash\nclaude mcp add firefox-devtools npx @mozilla/firefox-devtools-mcp@latest\n```\n\nPass options either as args or env vars. Examples:\n\n```bash\n# Headless + viewport via args\nclaude mcp add firefox-devtools npx @mozilla/firefox-devtools-mcp@latest -- --headless --viewport 1280x720\n\n# Or via environment variables\nclaude mcp add firefox-devtools npx @mozilla/firefox-devtools-mcp@latest \\\n  --env START_URL=https://example.com \\\n  --env FIREFOX_HEADLESS=true\n```\n\nOption B — Edit Claude Code settings JSON\n\nAdd to your Claude Code config file:\n\n- macOS: `~/Library/Application Support/Claude/Code/mcp_settings.json`\n- Linux: `~/.config/claude/code/mcp_settings.json`\n- Windows: `%APPDATA%\\Claude\\Code\\mcp_settings.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"firefox-devtools\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@mozilla/firefox-devtools-mcp@latest\", \"--headless\", \"--viewport\", \"1280x720\"],\n      \"env\": {\n        \"START_URL\": \"about:blank\"\n      }\n    }\n  }\n}\n```\n\nOption C — Helper script (local dev build)\n\n```bash\nnpm run setup\n# Choose Claude Code; the script saves JSON to the right path\n```\n\n## Try it with MCP Inspector\n\n```bash\nnpx @modelcontextprotocol/inspector npx @mozilla/firefox-devtools-mcp@latest --start-url https://example.com --headless\n```\n\nThen call tools like:\n\n- `list_pages`, `select_page`, `navigate_page`\n- `take_snapshot` then `click_by_uid` / `fill_by_uid`\n- `list_network_requests` (always‑on capture), `get_network_request`\n- `screenshot_page`, `list_console_messages`\n\n## CLI options\n\nYou can pass flags or environment variables (names on the right):\n\n- `--firefox-path` — absolute path to Firefox binary\n- `--headless` — run without UI (`FIREFOX_HEADLESS=true`)\n- `--viewport 1280x720` — initial window size\n- `--profile-path` — use a specific Firefox profile\n- `--firefox-arg` — extra Firefox arguments (repeatable)\n- `--start-url` — open this URL on start (`START_URL`)\n- `--accept-insecure-certs` — ignore TLS errors (`ACCEPT_INSECURE_CERTS=true`)\n- `--connect-existing` — attach to an already-running Firefox instead of launching a new one (`CONNECT_EXISTING=true`)\n- `--marionette-port` — Marionette port for connect-existing mode, default 2828 (`MARIONETTE_PORT`)\n- `--pref name=value` — set Firefox preference at startup via `moz:firefoxOptions` (repeatable)\n- `--enable-script` — enable the `evaluate_script` tool (executes arbitrary JavaScript in the page context) and debugging tools (list scripts, inspect source, set logpoints). Debugging tools require Firefox 153+. (`ENABLE_SCRIPT=true`)\n- `--enable-privileged-context` — enable privileged context tools: list/select privileged contexts, evaluate privileged scripts, get/set Firefox prefs, and list extensions. Requires `MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1` (`ENABLE_PRIVILEGED_CONTEXT=true`)\n- `--android-device` — enable Firefox for Android mode; value is the ADB device serial (e.g. `emulator-5554`). Run `adb devices` to list connected devices. Omit the value or use `auto` to select the single connected device automatically.\n- `--android-package` — Android app package name, default `org.mozilla.firefox`. Other packages: `org.mozilla.firefox_beta` for Firefox Beta, `org.mozilla.fenix` for Firefox Nightly, `org.mozilla.fenix.debug` for Firefox Nightly Debug, `org.mozilla.geckoview_example` for geckoview (`ANDROID_PACKAGE`)\n- `--log-file` — write MCP server logs to a file instead of stderr. Useful for debugging sessions with MCP clients that hide server output. Set `DEBUG=*` to also include verbose debug logs. Example: `--log-file /tmp/firefox-mcp.log`\n\n\n### Useful preferences (`--pref`)\n\n- remote.prefs.recommended=false. When Firefox runs in automation, it applies [RecommendedPreferences](https://searchfox.org/firefox-main/source/remote/shared/RecommendedPreferences.sys.mjs) that modify browser behavior for testing. Set remote.prefs.recommended to false to skip those and have a configuration closer to a regular Firefox instance.\n- remote.log.level=Trace. Enable verbose WebDriver protocol logs in Firefox. The MCP server will automatically pass the matching log level to geckodriver so both sides log at the same verbosity.\n- app.update.disabledForTesting=false. Allow Firefox to automatically download and apply updates. Note that updates may interrupt your session. Requires also setting remote.prefs.recommended=false.\n\n### Firefox for Android\n\nUse `--android-device` to automate Firefox running on an Android device. Requires `adb` on your PATH and geckodriver, which is managed automatically.\n\n```bash\n# List connected devices\nadb devices\n\n# Launch Firefox for Android on the single connected device\nnpx @mozilla/firefox-devtools-mcp --android-device auto\n\n# Target a specific device\nnpx @mozilla/firefox-devtools-mcp --android-device <serial>\n\n# Use Firefox Nightly instead\nnpx @mozilla/firefox-devtools-mcp --android-device <serial> --android-package org.mozilla.fenix\n```\n\nPort forwarding between the host and device is handled automatically by geckodriver.\n\n### Connect to existing Firefox\n\nUse `--connect-existing` to automate your real browsing session — with cookies, logins, and open tabs intact:\n\n```bash\n# Start Firefox with Marionette enabled\nfirefox --marionette\n\n# Run the MCP server\nnpx @mozilla/firefox-devtools-mcp --connect-existing --marionette-port 2828\n```\n\nOr set `marionette.enabled` to `true` in `about:config` (or `user.js`) to enable Marionette on every launch.\n\nBiDi-dependent features (console events, network events) are not available in connect-existing mode; all other features work normally.\n\n> **Warning:** Do not leave Marionette enabled during normal browsing. It sets\n> `navigator.webdriver = true` and changes other browser fingerprint signals,\n> which can trigger bot detection on sites protected by Cloudflare, Akamai, etc.\n> Only enable Marionette when you need MCP automation, then restart Firefox\n> normally afterward.\n\n## Tool overview\n\n- Pages: list/new/navigate/select/close\n- Snapshot/UID: take/resolve/clear\n- Input: click/hover/fill/drag/upload/form fill\n- Network: list/get (ID‑first, filters, always‑on capture)\n- Console: list/clear\n- Screenshot: page/by uid (with optional `saveTo` for CLI environments)\n- Script: evaluate_script\n- Privileged Context: list/select privileged (\"chrome\") contexts, evaluate_privileged_script (requires `MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1`)\n- WebExtension: install_extension, uninstall_extension, list_extensions (list requires `MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1`)\n- Firefox Management: get_firefox_info, get_firefox_output, restart_firefox, set_firefox_prefs, get_firefox_prefs\n- Profiler: profiler_is_active, profiler_start (preset or explicit config), profiler_stop (saves profile to downloads directory)\n- Utilities: accept/dismiss dialog, history back/forward, set viewport\n\n### Screenshot optimization for Claude Code\n\nWhen using screenshots in Claude Code CLI, the base64 image data can consume significant context.\nUse the `saveTo` parameter to save screenshots to disk instead:\n\n```\nscreenshot_page({ saveTo: \"/tmp/page.png\" })\nscreenshot_by_uid({ uid: \"abc123\", saveTo: \"/tmp/element.png\" })\n```\n\nThe file can then be viewed with Claude Code's `Read` tool without impacting context size.\n\n## Local development\n\n```bash\nnpm install\nnpm run build\n\n# Run with Inspector against local build\nnpx @modelcontextprotocol/inspector node dist/index.js --headless --viewport 1280x720\n\n# Or run in dev with hot reload\nnpm run inspector:dev\n```\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for more details on local development, testing, and CI.\n\n## Troubleshooting\n\n- Firefox not found: pass `--firefox-path \"/Applications/Firefox.app/Contents/MacOS/firefox\"` (macOS) or the correct path on your OS.\n- First run is slow: Selenium sets up the BiDi session; subsequent runs are faster.\n- Stale UIDs after navigation: take a fresh snapshot (`take_snapshot`) before using UID tools.\n- Windows 10: Error during discovery for MCP server 'firefox-devtools': MCP error -32000: Connection closed\n  - **Solution 1** Wrap with `cmd /c` ([details](https://github.com/modelcontextprotocol/servers/issues/1082#issuecomment-2791786310)):\n\n    ```json\n    \"mcpServers\": {\n      \"firefox-devtools\": {\n        \"command\": \"cmd\",\n        \"args\": [\"/c\", \"npx\", \"-y\", \"@mozilla/firefox-devtools-mcp@latest\"]\n      }\n    }\n    ```\n\n  - **Solution 2** Use the absolute path to `npx` (adjust extension — `.cmd`, `.bat`, `.exe`, or `.ps1` — to match your setup):\n\n    ```json\n    \"mcpServers\": {\n      \"firefox-devtools\": {\n        \"command\": \"C:\\\\nvm4w\\\\nodejs\\\\npx.ps1\",\n        \"args\": [\"-y\", \"@mozilla/firefox-devtools-mcp@latest\"]\n      }\n    }\n    ```\n\n## Versioning\n\n- Pre‑1.0 API: versions start at `0.x`. Use `@latest` with npx for the newest release.\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for how to file issues, run tests, and work on the project locally.\n\n## Author\n\nMaintained by [Mozilla](https://www.mozilla.org).\n\n## License\n\nLicensed under either of [MIT](LICENSE-MIT) or [Apache 2.0](LICENSE-APACHE) at your option.\n","readmeFilename":"README.md"}