openbrowser-ai — Claude Code MCP server: what it does, how to install
Runs browser automation via direct Chrome DevTools Protocol commands and async Python execution. Useful for scraping dynamic pages, inspecting forms, and capturing screenshots.
claude mcp add --env OPENBROWSER_HEADLESS=<OPENBROWSER_HEADLESS> --env OPENBROWSER_ALLOWED_DOMAINS=<OPENBROWSER_ALLOWED_DOMAINS> --env OPENBROWSER_USER_DATA_DIR=<OPENBROWSER_USER_DATA_DIR> --env OPENBROWSER_STORAGE_STATE=<OPENBROWSER_STORAGE_STATE> --env OPENBROWSER_COMPACT_DESCRIPTION=<OPENBROWSER_COMPACT_DESCRIPTION> --transport stdio openbrowser-ai -- uvx openbrowser-aiWhat openbrowser-ai does
The server connects an assistant to the browser using the Chrome DevTools Protocol (CDP). Instead of predefined macros, the model writes async Python code inside a persistent namespace. It inspects DOM elements and extracts structured data directly from pages. Screenshots help inspect visual layouts.
Setup needs Python 3.12 or newer. The package discovers existing installations of Chrome or Chromium automatically. You do not need to configure external browser drivers. When no compatible browser is found, uvx downloads Chromium during the initial run.
Logins persist between executions via OPENBROWSER_USER_DATA_DIR and OPENBROWSER_STORAGE_STATE. Without explicit boundaries in OPENBROWSER_ALLOWED_DOMAINS, the agent has access to visit arbitrary web domains.
What it helps with
- scrape dynamic web pages and complex online stores
- automate multi-step form submissions and registration flows
- inspect page layouts visually using screenshots
- persist authentication cookies between automation sessions
Example prompts for the agent
- Navigate to
https://example.com, complete the contact form, and submit it. - Capture a screenshot of the main dashboard and extract all visible statistics.
- Sign in to the platform and check whether the account settings load properly.
How to install openbrowser-ai
Platform CLI
claude mcp add --env OPENBROWSER_HEADLESS=<OPENBROWSER_HEADLESS> --env OPENBROWSER_ALLOWED_DOMAINS=<OPENBROWSER_ALLOWED_DOMAINS> --env OPENBROWSER_USER_DATA_DIR=<OPENBROWSER_USER_DATA_DIR> --env OPENBROWSER_STORAGE_STATE=<OPENBROWSER_STORAGE_STATE> --env OPENBROWSER_COMPACT_DESCRIPTION=<OPENBROWSER_COMPACT_DESCRIPTION> --transport stdio openbrowser-ai -- uvx openbrowser-aiReplace <…> with your own values. 2 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from openbrowser-ai <command>
Platform CLI
codex mcp add openbrowser-ai --env OPENBROWSER_HEADLESS=<OPENBROWSER_HEADLESS> --env OPENBROWSER_ALLOWED_DOMAINS=<OPENBROWSER_ALLOWED_DOMAINS> --env OPENBROWSER_USER_DATA_DIR=<OPENBROWSER_USER_DATA_DIR> --env OPENBROWSER_STORAGE_STATE=<OPENBROWSER_STORAGE_STATE> --env OPENBROWSER_COMPACT_DESCRIPTION=<OPENBROWSER_COMPACT_DESCRIPTION> -- uvx openbrowser-aiReplace <…> with your own values. 2 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from openbrowser-ai <command>
Config file
{
"mcpServers": {
"openbrowser-ai": {
"command": "uvx",
"args": [
"openbrowser-ai"
],
"env": {
"OPENBROWSER_HEADLESS": "<OPENBROWSER_HEADLESS>",
"OPENBROWSER_ALLOWED_DOMAINS": "<OPENBROWSER_ALLOWED_DOMAINS>",
"OPENBROWSER_USER_DATA_DIR": "<OPENBROWSER_USER_DATA_DIR>",
"OPENBROWSER_STORAGE_STATE": "<OPENBROWSER_STORAGE_STATE>",
"OPENBROWSER_COMPACT_DESCRIPTION": "<OPENBROWSER_COMPACT_DESCRIPTION>"
}
}
}
}Replace <…> with your own values. 2 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from openbrowser-ai <command>
Config file
{
"servers": {
"openbrowser-ai": {
"type": "stdio",
"command": "uvx",
"args": [
"openbrowser-ai"
],
"env": {
"OPENBROWSER_HEADLESS": "<OPENBROWSER_HEADLESS>",
"OPENBROWSER_ALLOWED_DOMAINS": "<OPENBROWSER_ALLOWED_DOMAINS>",
"OPENBROWSER_USER_DATA_DIR": "<OPENBROWSER_USER_DATA_DIR>",
"OPENBROWSER_STORAGE_STATE": "<OPENBROWSER_STORAGE_STATE>",
"OPENBROWSER_COMPACT_DESCRIPTION": "<OPENBROWSER_COMPACT_DESCRIPTION>"
}
}
}
}Replace <…> with your own values. 2 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from openbrowser-ai <command>
Platform CLI
gemini mcp add -e OPENBROWSER_HEADLESS=<OPENBROWSER_HEADLESS> -e OPENBROWSER_ALLOWED_DOMAINS=<OPENBROWSER_ALLOWED_DOMAINS> -e OPENBROWSER_USER_DATA_DIR=<OPENBROWSER_USER_DATA_DIR> -e OPENBROWSER_STORAGE_STATE=<OPENBROWSER_STORAGE_STATE> -e OPENBROWSER_COMPACT_DESCRIPTION=<OPENBROWSER_COMPACT_DESCRIPTION> openbrowser-ai uvx openbrowser-aiReplace <…> with your own values. 2 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from openbrowser-ai <command>
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about openbrowser-ai
How do you install openbrowser-ai in Claude Code?
Run claude mcp add openbrowser-ai -- uvx openbrowser-ai. To lock down domains or specify a custom profile path, pass the respective environment variables during addition.
What does openbrowser-ai do?
It gives the LLM direct CDP access to a headless or visible browser. The assistant writes and runs async Python code to click buttons, fill fields, and scrape data.
Do I need to install a separate browser driver?
No, it detects pre-installed Chromium browsers like Chrome or Edge automatically. If none are found, running openbrowser-ai install via uvx downloads Chromium directly.