browser-firefox-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@browser-firefox-mcp Enumerate forms and inject XSS payloads on http://testphp.vulnweb.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
browser-firefox-mcp
Security-focused Firefox browser MCP server for penetration testing agents. Built on Playwright with a Python-native API designed for vulnerability scanning, session manipulation, network inspection, and reconnaissance.
Features
Firefox-first: Uses Playwright's native Firefox engine for accurate rendering (especially useful for anti-bot detection)
Security tooling: XSS payload injection, form enumeration, DOM analysis, sensitive data leak detection
Session management: Cookie export/inject, token extraction, storage manipulation
Network inspection: Request/response interception and capture via CDP
Reconnaissance: Technology stack fingerprinting, framework detection, metadata extraction
MCP stdio transport: Works with cyberstrikeai, Claude Code, Cursor, and any MCP-compatible client
Related MCP server: mcp-browser-automation
Quick Start (Kali Linux)
git clone https://your-repo/browser-firefox-mcp.git
cd browser-firefox-mcp
uv venv && source .venv/bin/activate
uv pip install -e .
playwright install firefox
python server.py # or: browser-firefox-mcpIntegration with cyberstrikeai
Add to your ~/.config/cyberstrikeai/config.json (or equivalent):
{
"mcp_servers": {
"firefox-browser": {
"command": "python",
"args": ["server.py"],
"cwd": "/path/to/browser-firefox-mcp"
}
}
}The agent will automatically discover tools: navigate, click, fill, screenshot,
inject_payload, scan_forms, capture_network, get_session_info,
recon_technology_stack, etc.
Architecture
┌──────────────────┐ JSON-RPC (stdio) ┌──────────────────┐
│ cyberstrikeai │ ◄──────────────────────► │ server.py │
│ (agent) │ │ (MCP stdio) │
└──────────────────┘ └────────┬─────────┘
│
┌────────────▼─────────┐
│ core/ modules │
│ engine | page │
│ security | session │
│ network | recon │
└────────────┬─────────┘
│
┌───────▼───────┐
│ Firefox (headless) │
└─────────────────┘License
MIT
Available Tools
40 toolsblock_urlsC
Block navigations matching glob-style URL patterns.
Inputs: patterns (required).
clear_cookiesC
Clear all cookies for the current context.
Inputs: no named parameters.
clickC
Click an element identified by CSS selector.
Inputs: selector (required), timeout.
click_textA
Click the first node whose visible text contains the given text.
Inputs: text (required), timeout.
close_browserA
Close the browser and release resources.
Inputs: no named parameters.
dom_analysisB
Extract structural summary of the DOM tree.
Inputs: no named parameters.
enumerate_formsA
List all forms with actions, methods, and field details.
Inputs: no named parameters.
enumerate_linksC
List all hyperlinks on the page.
Inputs: relative_only.
export_stateA
Save full browser state (cookies + storage) to a file.
Inputs: path (required).
fill_inputB
Fill a form field. Fires framework-compatible input/change events.
Inputs: value (required), selector (required), timeout, clear_first.
find_reflectionA
Check whether text was reflected in the current page DOM.
Inputs: text (required).
find_sensitive_dataA
Scan page HTML and text for leaked secrets, keys, tokens.
Inputs: no named parameters.
get_cookiesA
List all cookies, optionally filtered by domain patterns.
Inputs: domains.
get_network_summaryC
Get a filtered summary of captured network traffic.
Inputs: status_filter, resource_types.
get_session_infoA
Full session snapshot: cookies + storage + detected tokens.
Inputs: no named parameters.
get_storage_dataA
Dump localStorage and sessionStorage contents.
Inputs: no named parameters.
get_textC
Extract visible text under the given CSS selector.
Inputs: selector.
get_url_paramsA
Extract and list all URL query parameters.
Inputs: no named parameters.
go_backC
Navigate back in history.
Inputs: no named parameters.
go_forwardC
Navigate forward in history.
Inputs: no named parameters.
import_stateB
Restore browser state from a previously saved file.
Inputs: path (required).
inject_payloadC
Inject a single custom payload into a target element and verify reflection.
Inputs: payload (required), selector (required).
inject_xss_payloadC
Inject XSS probes into a target input/textarea and check for reflection.
Inputs: selector (required), payloads, clear_first.
js_evalC
Execute JavaScript expression and return result.
Inputs: expression (required).
list_contextsA
List all active browser contexts.
Inputs: no named parameters.
new_contextA
Create a new isolated browser context (separate cookie jar).
Inputs: proxy.
press_keyA
Press a keyboard key or combination (e.g. 'Enter', 'Control+a').
Inputs: key (required).
read_pageA
Read the full page: DOM HTML length + title + metadata summary.
Inputs: no named parameters.
recon_technology_stackB
Detect technologies/frameworks/CMS used on the current page.
Inputs: no named parameters.
reload_pageD
Reload the current page.
Inputs: no named parameters.
screenshotA
Take a screenshot. Returns base64 string, or saves to path.
Inputs: path, full_page.
security_headers_checkB
Check for common security headers and protections.
Inputs: no named parameters.
set_cookieB
Set a single cookie. Useful for session token replay.
Inputs: name (required), value (required), path, domain, +3 more.
set_cookiesA
Bulk-inject cookies (e.g., from Burp export).
Inputs: cookies (required).
set_storage_itemC
Write a key-value pair to localStorage or sessionStorage.
Inputs: key (required), value (required), store.
start_network_captureA
Begin capturing all HTTP(S) requests/responses on the current page.
Inputs: no named parameters.
stop_network_captureB
Stop capturing and report totals.
Inputs: no named parameters.
upload_fileB
Upload file(s) to a file input element.
Inputs: selector (required), file_paths (required).
wait_for_selectorC
Wait for an element to appear. Returns True when found.
Inputs: selector (required), timeout_ms.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 40 tools
Several tools overlap in purpose, such as inject_xss_payload vs inject_payload and find_reflection vs find_sensitive_data, though descriptions help distinguish them. Most tools are distinct, but the boundaries are not always crystal clear.
Naming is mostly verb_noun with underscores, but there are deviations like 'dom_analysis' and 'security_headers_check' that reverse the pattern, and 'new_context' is not a clear verb. Mixed conventions remain readable but lack strict consistency.
With 40 tools, the server exceeds the recommended range for a focused MCP server. Many tools are highly specialized (e.g., network capture, security scanning) and contribute to a heavy surface, making it feel over-scoped.
The toolset covers a wide range of browser automation and security testing operations, including navigation, interaction, cookies, storage, network capture, and security checks. Minor gaps like hover/focus or tab management exist, but overall it's comprehensive for its domain.
Maintenance
Related MCP Connectors
Official Browserless MCP server: browser automation, scraping, screenshots and PDFs for AI agents.
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
Stealth web browser for agents: search, fetch, click, download and type in persistent MCP sessions.
Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.
Related MCP Servers
- AlicenseBqualityDmaintenanceA universal browser automation MCP server using Playwright, enabling programmatic control of Chrome with 63 tools for navigation, interaction, media control, and CDP-based diagnostics.6328 npm3MIT
- AlicenseBqualityDmaintenanceAn MCP server for generic browser automation using Playwright. Enables MCP clients to navigate pages, inspect elements, execute JavaScript, capture screenshots, and monitor console logs and network traffic via a headless Chromium instance.727 npmISC
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides structured control of a Playwright browser for QA, scraping, diagnostics, and reproducible browser workflows.8,154 npmMIT
- FlicenseNot gradedqualityDmaintenanceA policy-aware Meta-MCP server that orchestrates Playwright and Chrome DevTools for secure, high-level browser automation with origin whitelists and credential redaction.-