com um clique
browsing
// Browser automation. MUST invoke before calling Playwright. Use when browsing websites, checking UI, filling forms, or automating web workflows.
// Browser automation. MUST invoke before calling Playwright. Use when browsing websites, checking UI, filling forms, or automating web workflows.
Use when interacting with GitHub (issues, PRs, projects, repo exploration)
Configure TTS engine for the talkback plugin. Use when user types /talkback.
Manages Cloudflare zones via API. Use when purging cache, querying DNS records, or checking zone analytics.
Use when committing or creating branches
| name | browsing |
| description | Browser automation. MUST invoke before calling Playwright. Use when browsing websites, checking UI, filling forms, or automating web workflows. |
ALWAYS use a subagent for browser tasks. Never call browser tools directly in main context — the snapshots consume thousands of tokens per page.
Task tool config:
subagent_type: general-purpose
model: haiku
The subagent does all navigation and interaction, then returns a concise summary.
Sessions persist per project. All tool calls in a conversation share one browser instance.
When the user needs to see or interact with the browser (OAuth, CAPTCHAs, login), open a headed browser sharing the same profile. Close the headless browser first with browser_close, then launch via Bash with run_in_background: true:
const pw = require('<playwright-path>');
(async () => {
const ctx = await pw.chromium.launchPersistentContext('<profile-path>', {
headless: false, channel: 'chrome',
args: ['--disable-session-crashed-bubble', '--hide-crash-restore-bubble']
});
const page = ctx.pages()[0] || await ctx.newPage();
await page.goto('<url>');
await page.waitForEvent('close').catch(() => {});
await ctx.close();
})();
To find the values:
find ~/.npm/_npx -path '*/@playwright/mcp' -type d → sibling playwright package~/Library/Caches/ms-playwright/mcp-chrome-<hash> where hash = first 7 chars of SHA-256 of project root pathThe script waits in the background until the user closes the window, then cleans up so headless can resume.
browser_fill_form for multiple fields, not browser_type per fieldCheck UI: Navigate → screenshot → analyze
Submit form: Snapshot (get refs) → browser_fill_form → click submit → screenshot (verify)
Debug visuals: Full-page screenshot → element screenshot → console messages