Teleport Playwright MCP — read-only, P2P, zero cloud
Microsoft's Playwright MCP drives a browser via accessibility snapshots instead of screenshots. Sharing it over MCPWire gives a remote agent a real browser on your machine — pair --confirm with browser_click and browser_type so nothing happens without your y/n. This guide maps all 10 tools of
@playwright/mcp by blast radius, then gives you the exact
command to share it with a remote teammate's AI agent — capability without credentials.
npx -y mcpwire share --allow "browser_snapshot,browser_screenshot,browser_console_messages,browser_close" --redact-secrets --ttl 30m -- npx -y @playwright/mcp
Only the 4 read-only tools are exposed; the other 6 are invisible to the peer
(filtered from tools/list and blocked if forced). Tunnel dies in 30 minutes. Add
--confirm to approve every call, or --max-calls 20 for a hard budget.
{
"mcpServers": {
"teleported-playwright": {
"command": "npx",
"args": [
"-y",
"mcpwire",
"join",
"wire://<TICKET_FROM_HOST_BANNER>"
]
}
}
} | tool | risk | notes |
|---|---|---|
browser_navigate | CAUTION | Opens URLs on your machine. |
browser_snapshot | SAFE | Accessibility tree capture. |
browser_screenshot | SAFE | Screenshot capture. |
browser_click | CAUTION | Clicks page elements. |
browser_type | CAUTION | Types into fields — could type credentials. |
browser_fill_form | CAUTION | Batch form filling. |
browser_press_key | CAUTION | Key events. |
browser_evaluate | HIGH RISK | Runs arbitrary JS in the page. |
browser_console_messages | SAFE | Reads console output. |
browser_close | SAFE | Closes the page. |
🔒 Why not just share your token?
Playwright's credential would grant the full toolset to a foreign LLM — including browser_evaluate. With mcpwire the credential stays in your env; the peer only ever holds an expiring wire:// capability scoped to 4 tools.
🎥 Audit everything
Add --record session.wirelog and every call, block and redaction is logged locally. Drag the file into mcpwire.co/replay for a DevTools-style waterfall of what the remote agent actually did.
🔁 Works with every MCP client
Claude Desktop, Cursor, Windsurf, Cline — anything speaking MCP over stdio. Your peer pastes the snippet above; you keep the kill-switch (Ctrl+C) in your terminal.
What happens if the peer's agent tries to call a blocked Playwright tool?
The request never reaches your MCP server. mcpwire answers with a JSON-RPC error (-32601 [MCPWire Firewall]) and logs the attempt — the tool doesn't exist from the agent's point of view, so well-behaved agents won't even try.
Can I expose the caution-level tools too?
Yes — just add them to --allow or run with --confirm so each call waits for your y/n in the host terminal. The risk map above tells you exactly what you'd be signing up for.
Is the traffic really serverless?
Yes. Discovery goes through the public Hyperswarm DHT; the data path is a direct Noise-encrypted socket between the two machines (UDP hole punching). If both NATs are stubborn, Hyperswarm routes through community relays — which only see ciphertext.
← all teleport guides ⚡ open the policy builder
Need persistent wire://your-company/db namespaces, SSO / GitHub identity
verification before the P2P handshake, and centralized audit logs for compliance (SOC2 / ISO)?