← Index

io.github.serkan-ozal/browser-devtools-mcp

io.github.serkan-ozal/browser-devtools-mcp·v0.5.3·Browser Automation
Quality Score
89
/100

Playwright browser & Node.js MCP. ARIA refs, screenshots, ref-based interactions.

§01  Install
Remote endpoint

Streamable HTTP / SSE endpoint. Add to any MCP client that supports remote servers.

https://{your_mcp_server_host}/mcp
Claude Desktop (claude_desktop_config.json)
{
  "mcpServers": {
    "browser-devtools-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "browser-devtools-mcp"
      ],
      "env": {
        "PLATFORM": "<platform>",
        "PORT": "<port>",
        "SESSION_IDLE_SECONDS": "<session_idle_seconds>",
        "SESSION_IDLE_CHECK_SECONDS": "<session_idle_check_seconds>",
        "SESSION_CLOSE_ON_SOCKET_CLOSE": "<session_close_on_socket_close>",
        "CONSOLE_MESSAGES_BUFFER_SIZE": "<console_messages_buffer_size>",
        "HTTP_REQUESTS_BUFFER_SIZE": "<http_requests_buffer_size>",
        "BROWSER_SERVER_INSTRUCTIONS_ENABLE": "<browser_server_instructions_enable>",
        "BROWSER_POLICY_UI_DEBUGGING_ENABLE": "<browser_policy_ui_debugging_enable>",
        "BROWSER_HEADLESS_ENABLE": "<browser_headless_enable>",
        "BROWSER_PERSISTENT_ENABLE": "<browser_persistent_enable>",
        "BROWSER_CDP_ENDPOINT_URL": "<browser_cdp_endpoint_url>",
        "BROWSER_CDP_ENABLE": "<browser_cdp_enable>",
        "BROWSER_CDP_OPEN_INSPECT": "<browser_cdp_open_inspect>",
        "BROWSER_PERSISTENT_USER_DATA_DIR": "<browser_persistent_user_data_dir>",
        "BROWSER_USE_INSTALLED_ON_SYSTEM": "<browser_use_installed_on_system>",
        "BROWSER_EXECUTABLE_PATH": "<browser_executable_path>",
        "BROWSER_LOCALE": "<browser_locale>",
        "OTEL_ENABLE": "<otel_enable>",
        "OTEL_SERVICE_NAME": "<otel_service_name>",
        "OTEL_SERVICE_VERSION": "<otel_service_version>",
        "OTEL_ASSETS_DIR": "<otel_assets_dir>",
        "OTEL_INSTRUMENTATION_USER_INTERACTION_EVENTS": "<otel_instrumentation_user_interaction_events>",
        "OTEL_EXPORTER_TYPE": "<otel_exporter_type>",
        "OTEL_EXPORTER_HTTP_URL": "<otel_exporter_http_url>",
        "OTEL_EXPORTER_HTTP_HEADERS": "<your-otel_exporter_http_headers>",
        "AWS_REGION": "<aws_region>",
        "AWS_PROFILE": "<aws_profile>",
        "AMAZON_BEDROCK_ENABLE": "<amazon_bedrock_enable>",
        "AMAZON_BEDROCK_IMAGE_EMBED_MODEL_ID": "<amazon_bedrock_image_embed_model_id>",
        "AMAZON_BEDROCK_TEXT_EMBED_MODEL_ID": "<amazon_bedrock_text_embed_model_id>",
        "AMAZON_BEDROCK_VISION_MODEL_ID": "<amazon_bedrock_vision_model_id>",
        "FIGMA_ACCESS_TOKEN": "<your-figma_access_token>",
        "FIGMA_API_BASE_URL": "<figma_api_base_url>",
        "DAEMON_PORT": "<daemon_port>",
        "DAEMON_SESSION_IDLE_SECONDS": "<daemon_session_idle_seconds>",
        "DAEMON_SESSION_IDLE_CHECK_SECONDS": "<daemon_session_idle_check_seconds>",
        "NODE_SERVER_INSTRUCTIONS_ENABLE": "<node_server_instructions_enable>",
        "NODE_POLICY_DEBUGGING_ENABLE": "<node_policy_debugging_enable>",
        "NODE_INSPECTOR_HOST": "<node_inspector_host>",
        "TOOL_OUTPUT_SCHEMA_DISABLE": "<tool_output_schema_disable>",
        "AVAILABLE_TOOL_DOMAINS": "<available_tool_domains>"
      }
    }
  }
}
Cursor (.cursor/mcp.json)
{
  "mcpServers": {
    "browser-devtools-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "browser-devtools-mcp"
      ],
      "env": {
        "PLATFORM": "<platform>",
        "PORT": "<port>",
        "SESSION_IDLE_SECONDS": "<session_idle_seconds>",
        "SESSION_IDLE_CHECK_SECONDS": "<session_idle_check_seconds>",
        "SESSION_CLOSE_ON_SOCKET_CLOSE": "<session_close_on_socket_close>",
        "CONSOLE_MESSAGES_BUFFER_SIZE": "<console_messages_buffer_size>",
        "HTTP_REQUESTS_BUFFER_SIZE": "<http_requests_buffer_size>",
        "BROWSER_SERVER_INSTRUCTIONS_ENABLE": "<browser_server_instructions_enable>",
        "BROWSER_POLICY_UI_DEBUGGING_ENABLE": "<browser_policy_ui_debugging_enable>",
        "BROWSER_HEADLESS_ENABLE": "<browser_headless_enable>",
        "BROWSER_PERSISTENT_ENABLE": "<browser_persistent_enable>",
        "BROWSER_CDP_ENDPOINT_URL": "<browser_cdp_endpoint_url>",
        "BROWSER_CDP_ENABLE": "<browser_cdp_enable>",
        "BROWSER_CDP_OPEN_INSPECT": "<browser_cdp_open_inspect>",
        "BROWSER_PERSISTENT_USER_DATA_DIR": "<browser_persistent_user_data_dir>",
        "BROWSER_USE_INSTALLED_ON_SYSTEM": "<browser_use_installed_on_system>",
        "BROWSER_EXECUTABLE_PATH": "<browser_executable_path>",
        "BROWSER_LOCALE": "<browser_locale>",
        "OTEL_ENABLE": "<otel_enable>",
        "OTEL_SERVICE_NAME": "<otel_service_name>",
        "OTEL_SERVICE_VERSION": "<otel_service_version>",
        "OTEL_ASSETS_DIR": "<otel_assets_dir>",
        "OTEL_INSTRUMENTATION_USER_INTERACTION_EVENTS": "<otel_instrumentation_user_interaction_events>",
        "OTEL_EXPORTER_TYPE": "<otel_exporter_type>",
        "OTEL_EXPORTER_HTTP_URL": "<otel_exporter_http_url>",
        "OTEL_EXPORTER_HTTP_HEADERS": "<your-otel_exporter_http_headers>",
        "AWS_REGION": "<aws_region>",
        "AWS_PROFILE": "<aws_profile>",
        "AMAZON_BEDROCK_ENABLE": "<amazon_bedrock_enable>",
        "AMAZON_BEDROCK_IMAGE_EMBED_MODEL_ID": "<amazon_bedrock_image_embed_model_id>",
        "AMAZON_BEDROCK_TEXT_EMBED_MODEL_ID": "<amazon_bedrock_text_embed_model_id>",
        "AMAZON_BEDROCK_VISION_MODEL_ID": "<amazon_bedrock_vision_model_id>",
        "FIGMA_ACCESS_TOKEN": "<your-figma_access_token>",
        "FIGMA_API_BASE_URL": "<figma_api_base_url>",
        "DAEMON_PORT": "<daemon_port>",
        "DAEMON_SESSION_IDLE_SECONDS": "<daemon_session_idle_seconds>",
        "DAEMON_SESSION_IDLE_CHECK_SECONDS": "<daemon_session_idle_check_seconds>",
        "NODE_SERVER_INSTRUCTIONS_ENABLE": "<node_server_instructions_enable>",
        "NODE_POLICY_DEBUGGING_ENABLE": "<node_policy_debugging_enable>",
        "NODE_INSPECTOR_HOST": "<node_inspector_host>",
        "TOOL_OUTPUT_SCHEMA_DISABLE": "<tool_output_schema_disable>",
        "AVAILABLE_TOOL_DOMAINS": "<available_tool_domains>"
      }
    }
  }
}
Cline (cline_mcp_settings.json)
npx -y browser-devtools-mcp
§02  Environment variables
PLATFORM

Platform: browser (default) or node for Node.js backend debugging.

PORT

Port for HTTP transport.

SESSION_IDLE_SECONDS

Idle session timeout (seconds).

SESSION_IDLE_CHECK_SECONDS

Interval for checking idle sessions (seconds).

SESSION_CLOSE_ON_SOCKET_CLOSE

Close session when socket closes.

CONSOLE_MESSAGES_BUFFER_SIZE

Maximum console messages to buffer.

HTTP_REQUESTS_BUFFER_SIZE

Maximum HTTP requests to buffer.

BROWSER_SERVER_INSTRUCTIONS_ENABLE

When true, include server instructions in MCP server info (browser platform). Default: true.

BROWSER_POLICY_UI_DEBUGGING_ENABLE

When true, include UI_DEBUGGING_POLICY in server policies (browser platform). Default: false.

BROWSER_HEADLESS_ENABLE

Run browser in headless mode.

BROWSER_PERSISTENT_ENABLE

Use persistent browser context (preserves cookies, localStorage, extensions).

BROWSER_CDP_ENDPOINT_URL

CDP attach: http(s) root or ws(s) URL. Resolves via /json/version, /json/list, or ws /devtools/browser (Chrome 136+). Mutually exclusive with BROWSER_PERSISTENT_ENABLE.

BROWSER_CDP_ENABLE

When true and no BROWSER_CDP_ENDPOINT_URL: probe 127.0.0.1:9222 then :9229 for CDP. Else use BROWSER_CDP_ENDPOINT_URL or default http://127.0.0.1:9222.

BROWSER_CDP_OPEN_INSPECT

On loopback CDP failure, if Chrome is running, open chrome://inspect/#remote-debugging. Default true. Set false to disable.

BROWSER_PERSISTENT_USER_DATA_DIR

Directory for persistent browser context user data.

BROWSER_USE_INSTALLED_ON_SYSTEM

Use system-installed Chrome browser instead of Playwright's bundled browser.

BROWSER_EXECUTABLE_PATH

Custom browser executable path.

BROWSER_LOCALE

Browser locale (e.g., "en-US", "tr-TR").

OTEL_ENABLE

Enable OpenTelemetry integration.

OTEL_SERVICE_NAME

OpenTelemetry service name.

OTEL_SERVICE_VERSION

OpenTelemetry service version.

OTEL_ASSETS_DIR

Directory containing OpenTelemetry bundle files.

OTEL_INSTRUMENTATION_USER_INTERACTION_EVENTS

User interaction events to instrument (comma-separated, e.g., "click,submit").

OTEL_EXPORTER_TYPE

OpenTelemetry exporter type: "otlp/http", "console", or "none".

OTEL_EXPORTER_HTTP_URL

OpenTelemetry collector base URL (e.g., "http://localhost:4318").

OTEL_EXPORTER_HTTP_HEADERS
secret

OpenTelemetry exporter HTTP headers (comma-separated key=value pairs).

AWS_REGION

AWS region for Bedrock usage.

AWS_PROFILE

AWS profile name for Bedrock usage.

AMAZON_BEDROCK_ENABLE

Enable Amazon Bedrock usage.

AMAZON_BEDROCK_IMAGE_EMBED_MODEL_ID

Amazon Bedrock image embedding model ID.

AMAZON_BEDROCK_TEXT_EMBED_MODEL_ID

Amazon Bedrock text embedding model ID.

AMAZON_BEDROCK_VISION_MODEL_ID

Amazon Bedrock vision model ID.

FIGMA_ACCESS_TOKEN
secret

Figma API access token for design comparison.

FIGMA_API_BASE_URL

Figma API base URL.

DAEMON_PORT

Daemon mode port (CLI).

DAEMON_SESSION_IDLE_SECONDS

Daemon mode idle session timeout (seconds).

DAEMON_SESSION_IDLE_CHECK_SECONDS

Daemon mode idle session check interval (seconds).

NODE_SERVER_INSTRUCTIONS_ENABLE

When true, include server instructions in MCP server info (node platform). Default: true.

NODE_POLICY_DEBUGGING_ENABLE

When true, include NODE_DEBUGGING_POLICY in server policies (node platform). Default: false.

NODE_INSPECTOR_HOST

Inspector host for debug_connect when MCP runs in Docker (e.g. host.docker.internal). Default: 127.0.0.1.

TOOL_OUTPUT_SCHEMA_DISABLE

When true, omit tool output schema from MCP tool registration (can reduce token usage for some clients).

AVAILABLE_TOOL_DOMAINS

Comma-separated tool domains to enable (e.g. navigation,interaction,a11y). Unset = all tools. Browser: a11y, content, debug, figma, interaction, navigation, o11y, react, run, stub, sync. Node: debug, run.

§03  MCP Quality Score  ·  methodology
freshness
24
completeness
20
installability
25
documentation
15
stability
5
§04  Alternatives in Browser Automation