The browser MCP server where cost falls with usage.
Give Cursor, Claude, or any MCP client an authenticated, audited browser. Compile a skill once, replay it with no LLM, and let a semantic cache match new requests to skills you — and the network — already built.
Works in every major MCP client over stdio — drop in one config block and your agent has a browser.
A browser your agent drives natively
Not a screenshot tool bolted onto a model — a full execution engine exposed as MCP tools, authenticated and audited, and built to get cheaper the more it runs.
Native MCP tools
run, compile_skill, and run_skill (plus list_skills, search_library, observe and more) drop straight into Cursor, Claude Desktop, Claude Code, or Cline so your agent acts on the web.
Replay with no LLM
Compile a path once, then run_skill blind-replays it deterministically — no model in the loop. The most-repeated workflows trend toward zero marginal LLM cost.
Shared skill library
search_library matches your intent against a sanitized cross-tenant corpus, so your agent finds a skill the network already compiled for that host.
Authenticated by construction
Every target-bearing tool is authenticated with your key and acts on exactly the URL you pass — scoped to your tenant, metered, and written to the audit log.
Full task bundle
Credential vault, proxy egress, CAPTCHA solving, human-in-the-loop handoff, and video recording — exposed as tools, not bolt-ons.
Token-efficient state
Pages are serialized into compact indexed DOM state instead of raw HTML, so your model spends tokens on the decision, not the markup.
Three tools, one authenticated engine
Lead with run, compile_skill, and run_skill — the loop that turns a goal into a cheap, replayable skill.
runExecute a goal on a target URL you provide — observe the page as indexed state, plan, and act until a success condition is met.
compile_skillDiscover a goal once with the planner, then minimize it into a reusable, deterministic skill.
run_skillBlind-replay a compiled skill with no LLM in the loop — the cheap, deterministic path.
// .cursor/mcp.json (Cursor) — claude_desktop_config.json (Claude
// Desktop) and Cline use the identical "mcpServers" shape.
{
"mcpServers": {
"twin-browser": {
"command": "npx",
"args": ["-y", "@twin-browser/mcp"],
"env": {
"TWIN_API_KEY": "ab_live_…",
"WEB_BASE_URL": "https://twin-browser.com"
}
}
}
}Claude Desktop, Claude Code and Cline use the same shape — the full how-to is in the MCP setup guide.
Register once, call from anywhere
Cursor, Claude Desktop, and Cline take the JSON block; Claude Code registers from the CLI. Then your agent calls the tools by name — here are the three that matter.
# Claude Code — register the server from the CLI:
claude mcp add twin-browser \
--env TWIN_API_KEY=ab_live_… \
--env WEB_BASE_URL=https://twin-browser.com \
-- npx -y @twin-browser/mcp
# Verify it connected and list the exposed tools:
claude mcp list
# → twin-browser: run, compile_skill, run_skill, list_skills,
# search_library, observe (connected)// run — execute a goal on a target URL you provide
{ "tool": "run", "arguments": {
"url": "https://app.acme.com/invoices",
"prompt": "export last month as CSV",
"success": { "kind": "urlIncludes", "value": "/exports" } } }
// compile_skill — discover once, minimize into a deterministic skill
{ "tool": "compile_skill", "arguments": {
"url": "https://app.acme.com/invoices",
"prompt": "export last month as CSV", "name": "acme-export" } }
// run_skill — blind-replay, no LLM in the loop
{ "tool": "run_skill", "arguments": {
"name": "acme-export", "url": "https://app.acme.com/invoices" } }
// → { "success": true, "credits_charged": 1, "llm_calls": 0 }Browser MCP, answered
What is a browser MCP server?
Which MCP clients are supported?
What are the core tools?
How is Twin’s MCP server different from a plain headless-browser MCP?
How is access controlled?
Where to go next
Wire it up in two minutes.
Paste one config block, point it at your engine, and your agent has an authenticated, audited browser.