Set up the host
1
Runtime
Node 22 or later for the MCP server, Python 3.10 or later for scripts, and Install Node 22 from your distribution or from nodejs.org. Chromium’s own libraries are listed in Linux servers, and Docker has a tested image.
git and fontconfig for the font installer. On Debian or Ubuntu:2
Browser and fonts
3
Agent
Add the MCP server to your agent as on any other machine. Pre-downloading the browser in the previous step keeps the first tool call inside the client’s timeout.
Headless or headed
The MCP server and the packages run headless by default, and a GPU-less server needs nothing else for that. For--headed (a real window on a virtual display), install Xvfb and the package starts a display sized to the persona’s screen and stops it afterwards:
Non-interactive runs
Both agent CLIs run one task and exit, which suits cron jobs and CI.- Claude Code
- Codex
- Your own agent
Put the server in the project’s
.mcp.json (Claude Code), then:claude -p needs ANTHROPIC_API_KEY in the environment or a logged-in Claude Code.In GitHub Actions
These are the steps for anubuntu-24.04 job. The agent’s own steps and secrets are yours.
.github/workflows/browse.yml
.mcp.json names the server. Hosted Linux runners for public repositories have 4 cores and 16 GB, and a persona never claims more cores or memory than the host has, so every persona on them reports 4 cores. Choosing a host explains what that means for the machines a site sees.
Several agents at once
Each browser locks its profile, so give every agent that runs at the same time its own profile:--profile agent-1, --profile agent-2, and so on, or --isolated for throwaway sessions. Many sessions at once has memory figures per browser.