browser-use-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TEXT_MODEL | No | Chat model name when using the chat Jev decider. | |
| HTTPS_PROXY | No | Proxy used by the process that runs the server when installing the engine. | |
| JEV_DECIDER | No | Policy decider for Jev: typesafe or chat. | typesafe |
| TYPESAFE_MODEL | No | Optional model name for the TypeSafe policy endpoint. | |
| TYPESAFE_API_KEY | No | API key for the default TypeSafe Jev policy; required only for browser_goal or browser_act intents. | |
| TYPESAFE_BASE_URL | No | Optional base URL for the TypeSafe policy endpoint. | |
| TEXT_MODEL_API_KEY | No | Optional API key for the chat model endpoint. | |
| TEXT_MODEL_BASE_URL | No | Base URL of a chat model endpoint when using the chat Jev decider. | |
| BROWSER_USE_MCP_HOME | No | State root containing the managed Python environment, profiles, and locks. | ~/.browser-use-mcp |
| BROWSER_USE_MCP_HOST | No | Host for the Streamable HTTP transport. | 127.0.0.1 |
| BROWSER_USE_MCP_MODE | No | Browser mode: attach to an existing Chrome or launch a dedicated browser. | attach |
| BROWSER_USE_MCP_PATH | No | Path for the Streamable HTTP transport endpoint. | /mcp |
| BROWSER_USE_MCP_PORT | No | Port for the Streamable HTTP transport. | 7331 |
| TYPESAFE_FALLBACK_URL | No | Optional fallback URL for the TypeSafe policy endpoint. | |
| BROWSER_USE_MCP_NO_JEV | No | Withdraw browser_goal and the browser_act intent parameter when enabled. | false |
| BROWSER_USE_MCP_PYTHON | No | Python interpreter path; defaults to the managed environment. | |
| BROWSER_USE_MCP_NO_EVAL | No | Withdraw the browser_eval tool when enabled. | false |
| BROWSER_USE_MCP_PROFILE | No | Browser profile name under the state root. | default |
| BROWSER_USE_MCP_HEADLESS | No | Run launch-mode Chrome without a visible window. | false |
| BROWSER_USE_MCP_LOG_LEVEL | No | Log level; logs always go to stderr. | info |
| BROWSER_USE_MCP_TRANSPORT | No | MCP transport to use: stdio or http. | stdio |
| BROWSER_USE_MCP_CDP_ENDPOINT | No | Specific Chrome DevTools endpoint to drive, such as http://127.0.0.1:9333 or a ws:// endpoint. | |
| BROWSER_USE_MCP_HTTP_IDLE_MS | No | HTTP session idle timeout in milliseconds before its browser is closed. | 900000 |
| BROWSER_USE_MCP_USER_DATA_DIR | No | Explicit browser user data directory. | |
| BROWSER_USE_MCP_ATTACH_SHARING | No | Attach-mode sharing policy: shared or exclusive. | shared |
| BROWSER_USE_MCP_NO_SCREENSHOTS | No | Withdraw the browser_screenshot tool when enabled. | false |
| BROWSER_USE_MCP_REQUEST_TIMEOUT_MS | No | Per-browser-request timeout in milliseconds. | 180000 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| browser_openA | Open a page in the browser this MCP session owns and return its indexed action space. The session reuses that browser and its logins across calls; the previous tab is closed first. |
| browser_pageA | Read the current page again: the same indexed action space under a new observation number. Use it after the page changes on its own, or after a refused action. |
| browser_actA | Run one operation on one target from an observation: CLICK, TYPE_TEXT, SELECT, SCROLL_UP, SCROLL_DOWN, WAIT. CLICK, TYPE_TEXT, and SELECT take a target index from that observation; TYPE_TEXT also takes the text. SCROLL_UP, SCROLL_DOWN, and WAIT take no target. You may instead omit operation and target and give an intent: the policy chooses the operation and target on that observation and runs it. A TYPE_TEXT with an intent and no text gets its value from the text model. Both spend model quota; --jev-decider says whether Jev or the text model answers. |
| browser_evalA | Evaluate one JavaScript expression in the page this session owns and return what it produced: a string as itself, any other value as JSON, capped so one dump cannot crowd out the conversation. Use it for a programmatic read the indexed action space cannot express, or a one-off DOM operation. It runs on this session's one CDP connection: never start a second client — a raw websocket, a puppeteer/playwright script, another browser-harness daemon — because Chrome 144+ asks "Allow remote debugging?" once per connection and two drivers race each other on the same page. The expression gets no user gesture, a thrown error comes back as text, and it produces no observation: call browser_page before the next browser_act. |
| browser_screenshotA | Capture the visible viewport as an image. Target boxes and page structure are not drawn into it. |
| browser_consoleA | Read what the page reported since the last read: console messages, uncaught exceptions, and failed or 4xx/5xx requests. Each read drains the buffer, so read it after reproducing a problem. |
| browser_goalA | Hand one goal to the browser policy in its own tab and return the trace it produced. The policy chooses operations and targets by itself and spends model quota — --jev-decider says whether Jev or the text model answers; the page this session already has open is left untouched. |
| browser_closeA | Close the tab this session owns and stop its daemon. The browser this session attached to is never closed: other sessions may still be driving it. |
| browser_doctorA | Report what the browser tools need and whether it is there: the Python interpreter, the engine and browser-harness versions, the managed environment, the browser that would be launched, the attach target, the configuration in use, and the fix for anything missing. Call it first when browser work fails. With install: true it builds a missing engine environment first and waits for that install. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 9 tools
Tools mostly target distinct browser operations: open, re-observe, act, evaluate, screenshot, console, goal, close, and doctor are separable. The main overlap is browser_act's intent mode versus browser_goal, both policy-driven model actions, though goal is scoped to its own tab and an overall objective.
All tools use a consistent browser_ prefix, making them easy to recognize as one family. Suffixes mix nouns (browser_page, browser_screenshot, browser_console) and verbs (browser_open, browser_close, browser_act), which is a minor deviation but still readable and predictable.
Nine tools is well-scoped for a browser automation server. Each tool covers a meaningful part of the browser-control lifecycle without obvious redundancy or filler.
The surface covers opening, observing, acting, evaluating JavaScript, screenshotting, console inspection, autonomous goals, closing, and diagnostics. Minor gaps exist around explicit navigation/history controls such as back, forward, or direct URL navigation separate from browser_open, but core workflows are covered.