MCP Server
MCP
io.github.serkan-ozal/browser-devtools-mcp
Playwright browser & Node.js MCP. ARIA refs, screenshots, ref-based interactions.
Install
npx -y [email protected]
Configuration Example
{
"remotes": [
{
"type": "streamable-http",
"url": "https://{your_mcp_server_host}/mcp",
"variables": {
"your_mcp_server_host": {
"description": "Your self-hosted MCP server host (host:port, without scheme).",
"isRequired": true
}
}
}
],
"packages": [
{
"registryType": "npm",
"registryBaseUrl": "https://registry.npmjs.org",
"identifier": "browser-devtools-mcp",
"version": "0.9.1",
"transport": {
"type": "stdio"
},
"environmentVariables": [
{
"description": "Platform: browser (default) or node for Node.js backend debugging.",
"format": "string",
"name": "PLATFORM"
},
{
"description": "Port for HTTP transport.",
"format": "number",
"name": "PORT"
},
{
"description": "Idle session timeout (seconds).",
"format": "number",
"name": "SESSION_IDLE_SECONDS"
},
{
"description": "Interval for checking idle sessions (seconds).",
"format": "number",
"name": "SESSION_IDLE_CHECK_SECONDS"
},
{
"description": "Close session when socket closes.",
"format": "boolean",
"name": "SESSION_CLOSE_ON_SOCKET_CLOSE"
},
{
"description": "Maximum console messages to buffer.",
"format": "number",
"name": "CONSOLE_MESSAGES_BUFFER_SIZE"
},
{
"description": "Maximum HTTP requests to buffer.",
"format": "number",
"name": "HTTP_REQUESTS_BUFFER_SIZE"
},
{
"description": "When true, include server instructions in MCP server info (browser platform). Default: true.",
"format": "boolean",
"name": "BROWSER_SERVER_INSTRUCTIONS_ENABLE"
},
{
"description": "When true, include UI_DEBUGGING_POLICY in server policies (browser platform). Default: false.",
"format": "boolean",
"name": "BROWSER_POLICY_UI_DEBUGGING_ENABLE"
},
{
"description": "Run browser in headless mode.",
"format": "boolean",
"name": "BROWSER_HEADLESS_ENABLE"
},
{
"description": "Use persistent browser context (preserves cookies, localStorage, extensions).",
"format": "boolean",
"name": "BROWSER_PERSISTENT_ENABLE"
},
{
"description": "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.",
"format": "string",
"name": "BROWSER_CDP_ENDPOINT_URL"
},
{
"description": "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.",
"format": "boolean",
"name": "BROWSER_CDP_ENABLE"
},
{
"description": "On loopback CDP failure, if Chrome is running, open chrome://inspect/#remote-debugging. Default true. Set false to disable.",
"format": "boolean",
"name": "BROWSER_CDP_OPEN_INSPECT"
},
{
"description": "Directory for persistent browser context user data.",
"format": "string",
"name": "BROWSER_PERSISTENT_USER_DATA_DIR"
},
{
"description": "Use system-installed Chrome browser instead of Playwright's bundled browser.",
"format": "boolean",
"name": "BROWSER_USE_INSTALLED_ON_SYSTEM"
},
{
"description": "Custom browser executable path.",
"format": "string",
"name": "BROWSER_EXECUTABLE_PATH"
},
{
"description": "When false, launches Chromium with --no-sandbox. Required for Docker/Lambda/CI.",
"format": "boolean",
"name": "BROWSER_CHROMIUM_SANDBOX"
},
{
"description": "Extra Chromium launch args (comma-separated).",
"format": "string",
"name": "BROWSER_LAUNCH_ARGS"
},
{
"description": "Comma-separated list of allowed hostnames. When set, all requests to non-matching hosts are aborted. Subdomains match automatically.",
"format": "string",
"name": "BROWSER_ALLOWED_DOMAINS"
},
{
"description": "Browser locale (e.g., \"en-US\", \"tr-TR\").",
"format": "string",
"name": "BROWSER_LOCALE"
},
{
"description": "Enable OpenTelemetry integration.",
"format": "boolean",
"name": "OTEL_ENABLE"
},
{
"description": "OpenTelemetry service name.",
"format": "string",
"name": "OTEL_SERVICE_NAME"
},
{
"description": "OpenTelemetry service version.",
"format": "string",
"name": "OTEL_SERVICE_VERSION"
},
{
"description": "Directory containing OpenTelemetry bundle files.",
"format": "string",
"name": "OTEL_ASSETS_DIR"
},
{
"description": "User interaction events to instrument (comma-separated, e.g., \"click,submit\").",
"format": "string",
"name": "OTEL_INSTRUMENTATION_USER_INTERACTION_EVENTS"
},
{
"description": "OpenTelemetry exporter type: \"otlp/http\", \"console\", or \"none\".",
"format": "string",
"name": "OTEL_EXPORTER_TYPE"
},
{
"description": "OpenTelemetry collector base URL (e.g., \"http://localhost:4318\").",
"format": "string",
"name": "OTEL_EXPORTER_HTTP_URL"
},
{
"description": "OpenTelemetry exporter HTTP headers (comma-separated key=value pairs).",
"format": "string",
"isSecret": true,
"name": "OTEL_EXPORTER_HTTP_HEADERS"
},
{
"description": "AWS region for Bedrock usage.",
"format": "string",
"name": "AWS_REGION"
},
{
"description": "AWS profile name for Bedrock usage.",
"format": "string",
"name": "AWS_PROFILE"
},
{
"description": "Enable Amazon Bedrock usage.",
"format": "boolean",
"name": "AMAZON_BEDROCK_ENABLE"
},
{
"description": "Amazon Bedrock image embedding model ID.",
"format": "string",
"name": "AMAZON_BEDROCK_IMAGE_EMBED_MODEL_ID"
},
{
"description": "Amazon Bedrock text embedding model ID.",
"format": "string",
"name": "AMAZON_BEDROCK_TEXT_EMBED_MODEL_ID"
},
{
"description": "Amazon Bedrock vision model ID.",
"format": "string",
"name": "AMAZON_BEDROCK_VISION_MODEL_ID"
},
{
"description": "Figma API access token for design comparison.",
"format": "string",
"isSecret": true,
"name": "FIGMA_ACCESS_TOKEN"
},
{
"description": "Figma API base URL.",
"format": "string",
"name": "FIGMA_API_BASE_URL"
},
{
"description": "Daemon mode port (CLI).",
"format": "number",
"name": "DAEMON_PORT"
},
{
"description": "Daemon mode idle session timeout (seconds).",
"format": "number",
"name": "DAEMON_SESSION_IDLE_SECONDS"
},
{
"description": "Daemon mode idle session check interval (seconds).",
"format": "number",
"name": "DAEMON_SESSION_IDLE_CHECK_SECONDS"
},
{
"description": "When true, include server instructions in MCP server info (node platform). Default: true.",
"format": "boolean",
"name": "NODE_SERVER_INSTRUCTIONS_ENABLE"
},
{
"description": "When true, include NODE_DEBUGGING_POLICY in server policies (node platform). Default: false.",
"format": "boolean",
"name": "NODE_POLICY_DEBUGGING_ENABLE"
},
{
"description": "Inspector host for debug_connect when MCP runs in Docker (e.g. host.docker.internal). Default: 127.0.0.1.",
"format": "string",
"name": "NODE_INSPECTOR_HOST"
},
{
"description": "When true, omit tool output schema from MCP tool registration (can reduce token usage for some clients).",
"format": "boolean",
"name": "TOOL_OUTPUT_SCHEMA_DISABLE"
},
{
"description": "Comma-separated tool domains to enable (e.g. navigation,interaction,a11y,scenario). Unset = all tools. Browser: a11y, content, debug, figma, interaction, navigation, o11y, react, scenario, run, stub, sync. Node: debug, run.",
"format": "string",
"name": "AVAILABLE_TOOL_DOMAINS"
},
{
"description": "Working directory for project-level config (.browser-devtools-mcp/). Default: process.cwd().",
"format": "string",
"name": "WORKING_DIR"
},
{
"description": "Search strategy: SIMPLE (default, minisearch + stemmer) or FTS5 (better-sqlite3, optional dep).",
"format": "string",
"name": "SEARCH_STRATEGY"
},
{
"description": "Override SEARCH_STRATEGY for scenario search only.",
"format": "string",
"name": "SCENARIO_SEARCH_STRATEGY"
}
]
}
]
}
mcp
model-context-protocol
streamable-http
npm
By
Comments
Sign in to leave a comment