अपडेट पर वापस जाएँ
New releaseSep 5, 2026

firefox-devtools-mcp v0.10.2

Model Context Protocol server for Firefox DevTools - AI सहायकों को Remote Debugging Protocol के माध्यम से Firefox ब्राउज़र का निरीक्षण और नियंत्रण करने में सक्षम बनाता है

साझा करें

Firefox DevTools MCP

npm version CI codecov License: MIT License: Apache 2.0

Glama

WebDriver BiDi (Selenium WebDriver के माध्यम से) के जरिए Firefox को स्वचालित करने के लिए Model Context Protocol सर्वर। 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 प्रोफ़ाइल का उपयोग करें। सर्वर को अपनी नियमित प्रोफ़ाइल के विरुद्ध कभी न चलाएं — एजेंट के पास वह सब कुछ उपलब्ध है जो ब्राउज़र तक पहुंच सकता है, जिसमें कुकीज़ और सहेजे गए सत्र शामिल हैं।
  • आप किन साइटों पर जाते हैं, इस बारे में सतर्क रहें। पेज एजेंट को हेरफेर करने के लिए डिज़ाइन की गई सामग्री लौटा सकते हैं (प्रॉम्प्ट इंजेक्शन)। उन साइटों पर रहें जिन्हें आप नियंत्रित करते हैं या जिन पर भरोसा करते हैं।
  • केवल उन्हीं टूल मॉड्यूल को सक्षम करें जिनकी आपको आवश्यकता है। डिफ़ॉल्ट 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

# आर्ग्स के माध्यम से हेडलेस + व्यूपोर्ट
claude mcp add firefox-devtools npx @mozilla/firefox-devtools-mcp@latest -- --headless --viewport 1280x720

# या पर्यावरण चर के माध्यम से
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

# आर्ग्स के माध्यम से हेडलेस + व्यूपोर्ट
codex mcp add firefox-devtools -- \
  npx @mozilla/firefox-devtools-mcp@latest -- --headless --viewport 1280x720

# या पर्यावरण चर के माध्यम से
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
# Claude Code चुनें; स्क्रिप्ट JSON को सही पथ पर सहेजती है

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 — UI के बिना चलाएं (FIREFOX_HEADLESS=true)
  • --viewport 1280x720 — प्रारंभिक विंडो आकार
  • --profile-path — एक विशिष्ट Firefox प्रोफ़ाइल का उपयोग करें
  • --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)
  • --pref name=valuemoz: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 — Android के लिए Firefox मोड सक्षम करें; मान 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-pathssaveTo पैरामीटर को डिफ़ॉल्ट रूट के बजाय डिस्क पर कहीं भी लिखने दें। बड़े आउटपुट को डिस्क पर सहेजना और SECURITY.md में सुरक्षा नोट देखें। (UNRESTRICTED_SAVE_PATHS=true)
  • --log-file — stderr के बजाय फ़ाइल में MCP सर्वर लॉग लिखें। सर्वर आउटपुट छिपाने वाले MCP क्लाइंट के साथ सत्रों को डीबग करने के लिए उपयोगी। वर्बोज़ डीबग लॉग भी शामिल करने के लिए DEBUG=* सेट करें। उदाहरण: --log-file /tmp/firefox-mcp.log

टूल मॉड्यूल और प्रीसेट

टूल को मॉड्यूल में समूहीकृत किया गया है। आप चुनते हैं कि कौन से मॉड्यूल को नामित प्रीसेट (--tool-preset) या स्पष्ट सूची (--tools) के साथ एक्सपोज़ करना है। जब दोनों दिए जाते हैं, तो --tools जीतता है और प्रीसेट को अनदेखा किया जाता है।

मॉड्यूल: pages, snapshot, input, network, console, screenshot, downloads, utilities, management, webextension, profiler, screencast, script, debugging, prefs, privileged

प्रीसेट (प्रत्येक पिछले का सुपरसेट है):

  • slimpages, snapshot, input, screenshot
  • basic (डिफ़ॉल्ट) — slim प्लस downloads, script, utilities, management, webextension, screencast
  • developerbasic प्लस debugging, network, console, profiler
  • mozilladeveloper प्लस prefs, privileged
  • all — हर मॉड्यूल

ध्यान दें कि basic, डिफ़ॉल्ट, में script और इसलिए evaluate_script टूल शामिल है। हमले की सतह के लिए इसका क्या अर्थ है, यह देखने के लिए SECURITY.md देखें, और इसे हटाने के लिए --tool-preset slim या स्पष्ट --tools सूची का उपयोग करें।

# डेवलपर प्रीसेट का उपयोग करें (नेटवर्क, कंसोल, डिबगिंग और प्रोफाइलर टूल जोड़ता है)
npx @mozilla/firefox-devtools-mcp --tool-preset developer

# केवल उन मॉड्यूल को सक्षम करें जिनकी आपको आवश्यकता है
npx @mozilla/firefox-devtools-mcp --tools pages network console

prefs और privileged मॉड्यूल को MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1 की आवश्यकता होती है और ये केवल Mozilla-आंतरिक बिल्ड में उपलब्ध हैं। सार्वजनिक पैकेज अनुरोध किए जाने पर भी उन्हें छोड़ देता है और छोड़े गए मॉड्यूल के नाम बताते हुए एक चेतावनी लॉग करता है।

उपयोगी प्राथमिकताएँ (--pref)

  • remote.prefs.recommended=false। जब Firefox स्वचालन में चलता है, तो यह RecommendedPreferences लागू करता है जो परीक्षण के लिए ब्राउज़र व्यवहार को संशोधित करता है। उन्हें छोड़ने और नियमित Firefox इंस्टेंस के करीब कॉन्फ़िगरेशन रखने के लिए remote.prefs.recommended को false पर सेट करें।
  • remote.log.level=Trace। Firefox में वर्बोज़ WebDriver प्रोटोकॉल लॉग सक्षम करें। MCP सर्वर स्वचालित रूप से geckodriver को मिलान लॉग स्तर पास करेगा ताकि दोनों पक्ष समान वर्बोसिटी पर लॉग करें।
  • app.update.disabledForTesting=false। Firefox को अपडेट स्वचालित रूप से डाउनलोड और लागू करने दें। ध्यान दें कि अपडेट आपके सत्र को बाधित कर सकते हैं। remote.prefs.recommended=false सेट करना भी आवश्यक है।

Android के लिए Firefox

Android डिवाइस पर चल रहे Firefox को स्वचालित करने के लिए --android-device का उपयोग करें। आपके PATH पर adb और geckodriver की आवश्यकता है, जो स्वचालित रूप से प्रबंधित होता है।

चेतावनी: Android मोड हर सत्र से पहले लक्षित ऐप का सारा डेटा मिटा देता है। टैब, इतिहास, बुकमार्क, पासवर्ड, कुकीज़ और सेटिंग्स सभी खो जाते हैं। geckodriver सत्र बनाते समय adb shell pm clear <package> चलाता है और इसे छोड़ने का कोई तरीका नहीं देता, फिर सत्र को अपनी अस्थायी प्रोफ़ाइल पर चलाता है जिसे बाद में हटा दिया जाता है। इस वजह से, --android-device को --android-wipe-app-data की आवश्यकता होती है, और आपको अपने उपयोग किए जाने वाले ब्राउज़र को स्वचालित करने के बजाय स्वचालन के लिए समर्पित एक बिल्ड इंस्टॉल करना चाहिए। Bug 2064088 मौजूदा ऐप डेटा को रखने के लिए geckodriver में एक विकल्प जोड़ने पर नज़र रखता है।

# कनेक्टेड डिवाइस सूचीबद्ध करें
adb devices

# एकल कनेक्टेड डिवाइस पर Android के लिए Firefox लॉन्च करें
npx @mozilla/firefox-devtools-mcp --android-device auto --android-wipe-app-data

# एक विशिष्ट डिवाइस को लक्षित करें
npx @mozilla/firefox-devtools-mcp --android-device <serial> --android-wipe-app-data

# इसके बजाय Firefox Nightly का उपयोग करें
npx @mozilla/firefox-devtools-mcp --android-device <serial> --android-package org.mozilla.fenix --android-wipe-app-data

होस्ट और डिवाइस के बीच पोर्ट फ़ॉरवर्डिंग geckodriver द्वारा स्वचालित रूप से संभाली जाती है।

मौजूदा Firefox से कनेक्ट करें

कुकीज़, लॉगिन और खुले टैब के साथ अपने वास्तविक ब्राउज़िंग सत्र को स्वचालित करने के लिए --connect-existing का उपयोग करें:

# Marionette और Remote Agent (BiDi) के साथ Firefox शुरू करें
firefox --marionette --remote-debugging-port

# MCP सर्वर चलाएं
npx @mozilla/firefox-devtools-mcp --connect-existing --marionette-port 2828

दोनों फ्लैग आवश्यक हैं क्योंकि MCP WebDriver Classic (--marionette) और WebDriver BiDi (--remote-debugging-port) दोनों का उपयोग करता है। यदि Firefox केवल --marionette के साथ शुरू किया गया है, तो MCP सर्वर कनेक्ट करने में विफल रहता है और आपको दोनों फ्लैग के साथ Firefox को पुनः आरंभ करने के लिए कहता है।

चेतावनी: सामान्य ब्राउज़िंग के दौरान Marionette को सक्षम न छोड़ें। यह navigator.webdriver = true सेट करता है और अन्य ब्राउज़र फ़िंगरप्रिंट सिग्नल बदलता है, जो Cloudflare, Akamai आदि द्वारा संरक्षित साइटों पर बॉट डिटेक्शन ट्रिगर कर सकता है। केवल तभी Marionette सक्षम करें जब आपको MCP स्वचालन की आवश्यकता हो, फिर Firefox को सामान्य रूप से पुनः आरंभ करें।

टूल अवलोकन

मॉड्यूल द्वारा टूल की पूरी सूची, विवरण और पैरामीटर के साथ, docs/tools.md देखें (स्रोत से उत्पन्न)।

  • पेज: list/new/navigate/select/close/get_page_text (get_page_text वैकल्पिक saveTo का समर्थन करता है)
  • स्नैपशॉट/UID: take/resolve/clear (take वैकल्पिक saveTo का समर्थन करता है)
  • इनपुट: click/hover/fill/drag/upload/form fill/press_key/type_text
  • नेटवर्क: list/get (ID‑प्रथम, फ़िल्टर, हमेशा‑चालू कैप्चर; दोनों वैकल्पिक saveTo का समर्थन करते हैं)
  • डाउनलोड: list_downloads/clear_downloads (हमेशा‑चालू कैप्चर), set_download_behavior (allow/deny/default)
  • कंसोल: list/clear (list वैकल्पिक saveTo का समर्थन करता है)
  • स्क्रीनशॉट: page/by uid (CLI वातावरण के लिए वैकल्पिक saveTo के साथ)
  • स्क्रिप्ट: evaluate_script (पृथक क्षेत्र के लिए वैकल्पिक sandbox; बड़े परिणामों के लिए वैकल्पिक saveTo)
  • विशेषाधिकार प्राप्त संदर्भ: list/select विशेषाधिकार प्राप्त ("chrome") संदर्भ, evaluate_privileged_script (MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1 की आवश्यकता है)
  • WebExtension: install_extension, uninstall_extension, list_extensions (list को MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1 की आवश्यकता है)
  • Firefox प्रबंधन: get_firefox_info, get_firefox_output, restart_firefox
  • Firefox प्राथमिकताएँ: get_firefox_prefs, set_firefox_prefs (MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1 की आवश्यकता है)
  • प्रोफाइलर: profiler_is_active, profiler_start (प्रीसेट या स्पष्ट कॉन्फ़िग), profiler_stop (प्रोफ़ाइल को डाउनलोड निर्देशिका में सहेजता है)
  • स्क्रीनकास्ट: screencast_start (पेज व्यूपोर्ट को डाउनलोड निर्देशिका में वीडियो फ़ाइल में रिकॉर्ड करता है), screencast_stop (Firefox 154+ की आवश्यकता है)
  • उपयोगिताएँ: accept/dismiss डायलॉग, history back/forward, व्यूपोर्ट सेट करें

बड़े आउटपुट को डिस्क पर सहेजना

बड़े टूल आउटपुट Claude Code जैसे CLI क्लाइंट में महत्वपूर्ण संदर्भ का उपभोग कर सकते हैं। screenshot_page, screenshot_by_uid, take_snapshot, list_console_messages, list_network_requests, get_network_request, get_page_text, evaluate_script, और evaluate_privileged_script टूल एक वैकल्पिक saveTo पैरामीटर स्वीकार करते हैं जो इनलाइन लौटाने के बजाय परिणाम को फ़ाइल में लिखता है। saveTo तीन रूपों में से एक लेता है:

  • एक फ़ाइल पथ (वर्तमान कार्यशील निर्देशिका के सापेक्ष, या ~/.firefox-devtools-mcp के भीतर निरपेक्ष; मूल निर्देशिकाएँ बनाई जाती हैं)
  • एक मौजूदा निर्देशिका (इसके अंदर एक टाइमस्टैम्प्ड फ़ाइल उत्पन्न होती है)
  • true (एक टाइमस्टैम्प्ड फ़ाइल ~/.firefox-devtools-mcp/output/ के अंतर्गत उत्पन्न होती है)

प्रतिक्रिया पथ और बाइट आकार लौटाती है। सहेजी गई फ़ाइल में हमेशा पूर्ण, बिना छंटा डेटा होता है: इनलाइन आकार सुरक्षा (कंसोल संदेश कैप, नेटवर्क हेडर ट्रंकेशन, स्नैपशॉट लाइन कैप) कभी भी उस पर लागू नहीं होती।

टेक्स्ट-उत्पादक टूल (स्क्रीनशॉट को छोड़कर सब कुछ) भी preview स्वीकार करते हैं, जो सहेजे गए आउटपुट के कुछ वर्णों की संख्या है जिसे इनलाइन में एक छोटे अंश के रूप में वापस प्रतिध्वनित किया जाता है। स्क्रीनशॉट का कोई पूर्वावलोकन नहीं होता।

screenshot_page({ saveTo: "page.png" })
take_snapshot({ saveTo: true })
list_network_requests({ urlContains: "api", saveTo: "network.json" })
evaluate_script({ function: "() => performance.getEntries()", saveTo: true, preview: 2000 })

डिफ़ॉल्ट रूप से, सहेजने के पथ प्रतिबंधित हैं: सापेक्ष पथ वर्तमान कार्यशील निर्देशिका के विरुद्ध हल होते हैं, और निरपेक्ष पथ केवल ~/.firefox-devtools-mcp के भीतर अनुमत हैं। इन स्थानों से बाहर निकलने वाले पथ अस्वीकार कर दिए जाते हैं। उस निर्देशिका के बाहर निरपेक्ष पथ सहित, मनमाने स्थानों पर लिखने के लिए सर्वर को --unrestricted-save-paths के साथ शुरू करें।

सहेजी गई फ़ाइलों को फिर उदाहरण के लिए Claude Code के Read टूल के साथ संदर्भ आकार को प्रभावित किए बिना देखा जा सकता है।

स्थानीय विकास

npm install
npm run build

# स्थानीय बिल्ड के साथ Inspector के विरुद्ध चलाएं
npx @modelcontextprotocol/inspector node dist/index.js --headless --viewport 1280x720

# या हॉट रीलोड के साथ डेव में चलाएं
npm run inspector:dev

स्थानीय विकास, परीक्षण और CI के बारे में अधिक विवरण के लिए CONTRIBUTING.md देखें।

समस्या निवारण

  • Firefox नहीं मिला: --firefox-path "/Applications/Firefox.app/Contents/MacOS/firefox" (macOS) या आपके OS पर सही पथ पास करें।
  • पहला रन धीमा है: Selenium BiDi सत्र सेट करता है; बाद के रन तेज़ होते हैं।
  • पुराने UID: एक UID तब तक मान्य रहता है जब तक उसका तत्व हटाया नहीं जाता या पेज नेविगेट नहीं होता; जब कोई UID टूल रिपोर्ट करता है कि एक चला गया है, तो एक नया स्नैपशॉट (take_snapshot) लें।
  • Windows 10: MCP सर्वर 'firefox-devtools' के लिए डिस्कवरी के दौरान त्रुटि: MCP त्रुटि -32000: कनेक्शन बंद
    • समाधान 1 cmd /c के साथ लपेटें (विवरण):

      "mcpServers": {
        "firefox-devtools": {
          "command": "cmd",
          "args": ["/c", "npx", "-y", "@mozilla/firefox-devtools-mcp@latest"]
        }
      }
      
    • समाधान 2 npx का निरपेक्ष पथ उपयोग करें (अपने सेटअप से मेल खाने के लिए एक्सटेंशन समायोजित करें — .cmd, .bat, .exe, या .ps1):

      "mcpServers": {
        "firefox-devtools": {
          "command": "C:\\nvm4w\\nodejs\\npx.ps1",
          "args": ["-y", "@mozilla/firefox-devtools-mcp@latest"]
        }
      }
      

संस्करण

  • Pre‑1.0 API: संस्करण 0.x से शुरू होते हैं। नवीनतम रिलीज़ के लिए npx के साथ @latest का उपयोग करें।

योगदान

समस्याएँ दर्ज करने, परीक्षण चलाने और प्रोजेक्ट पर स्थानीय रूप से काम करने के तरीके के लिए CONTRIBUTING.md देखें।

लेखक

Mozilla द्वारा अनुरक्षित।

लाइसेंस

आपकी पसंद पर MIT या Apache 2.0 में से किसी एक के तहत लाइसेंस प्राप्त।

श्रेणियाँ