Install
code --add-mcp '{"name":"browser","command":"npx","args":["@agent-infra/mcp-server-browser@latest"]}'Who it is for
If you want a large model to operate a browser, and you want the default path to be Puppeteer’s structured accessibility data rather than starting with a vision model, this server matches. Official docs describe it as a lightweight MCP service that gives models browser-automation ability, plus an optional vision mode for complex layouts and visual elements.
It fits people who already have Node.js 18 or newer and who use VS Code, Cursor, Windsurf, or Claude Desktop. If you do not have Node.js 18+, or the client cannot add a command-type MCP, do not connect it yet.
This is not a read-only page summary: browser automation will start or attach a browser, read the accessibility tree, and may process heavier visual information in vision mode. Official docs say the default needs no vision model and mainly consumes structured data, but outbound network access and a local browser process are both present.
First try in 3 minutes
The official recommended path is to launch @agent-infra/mcp-server-browser with npx. Prerequisite: Node.js 18 or newer is already installed on this machine.
In VS Code, the official command is:
code --add-mcp '{"name":"browser","command":"npx","args":["@agent-infra/mcp-server-browser@latest"]}'
That registers an MCP named browser, with command npx and argument @agent-infra/mcp-server-browser@latest. After it runs, reload the client and confirm the browser service is connected.
Then make one low-risk call: use the browser-automation ability this browser service provides, stay on the default structured accessibility-data path, and do not turn on vision mode. Official pages do not write specific tool names, parameters, or sample URLs, so call only tools the client shows for this browser service. Do not invent tool names that never appear, and do not invent a URL to open. Success signal: the client shows browser as connected, and it returns a structured result based on the accessibility tree, not a visual screenshot.
Official docs also show a command form under Cursor Settings -> MCP -> Add new MCP Server, and a remote start with --port 8089; for the first try use only the VS Code command above. Do not open a second path in parallel.
Usage examples
Example 1: browser automation with the default structured accessibility data. Official docs say it gives models browser ability through Puppeteer’s structured accessibility data, needs no vision model, and mainly consumes structured data to reduce context. Use this when you want the model to understand controls and text structure on a page. Official docs name no specific tool and give no sample site; when calling, use only tools the client shows that belong to the browser service, and treat success as receiving structured accessibility data.
Example 2: when structured data is not enough, then consider the optional vision mode. Official docs say vision mode is for complex layouts and visual elements, and that it is optional. Official docs do not say how to turn it on, which model it needs, or whether anything is written to disk; so you can only confirm that optional vision ability exists. Do not treat it as a required first-try step, and do not assume it is zero risk. If the client has no separate vision-switch instructions, that means the official page did not fully document the enablement steps; stay on the structured-data path.
Limits
The prerequisite is Node.js 18+. Official docs name these clients: VS Code, Cursor, Windsurf, Claude Desktop. Remote start can use npx @agent-infra/mcp-server-browser --port 8089, and can also pass DISPLAY=:0 for VNC or a virtual display; those are not the main first-try path.
Browser automation will go online, will control the browser, may open a page you specify, and will leave browsing traces on this machine. Optional vision mode is used only when structured data is insufficient; official docs do not describe it as no-network or no-local-read.
Official docs give no rate limit and no undo or rollback. Closing the browser window or stopping the npx process is the stop you can do, but for navigation or input that already happened on the page, official docs give no one-click undo.