services/openclaw/mcp-and-browser.md
Table of Contents
OpenClaw MCP Servers and Browser Control
🧩 MCP Servers
MCP server config lives in the main config at ~/.openclaw/openclaw.json under the mcp.servers key.
Currently configured: none — OpenClaw's mcp.servers is empty as of 2026-09-25.
asanawas removed from OpenClaw on 2026-09-25. Asana is handled by theasanaskill now, not an MCP server.personal-notesis likewise a skill now; the notes vault lives at~/Work/personal-notes/and the local-notes service runs under PM2 on port 8007.- The
personal-notes/granola-local/playwright/qwestly*MCP entries you may see elsewhere belong to Claude Code (personal-notes/.claude/settings.local.json), not OpenClaw.
Format is standard stdio-based (same as Claude Desktop), for when you add one:
"mcp": {
"servers": {
"server-name": {
"command": "npx",
"args": ["-y", "package-name", ...]
}
}
}
Edit with openclaw mcp set <name> <json> or directly in the JSON file.
🖥️ Browser Control (Built-in Tool)
The browser tool is a built-in OpenClaw first-class tool (not a skill). It bundles Chromium via Playwright and connects over CDP (Chrome DevTools Protocol).
Stack: Agent → OpenClaw browser tool → Playwright → Chrome → web
Key notes:
- Uses Chromium launched/managed by Playwright under OpenClaw
- Separate, isolated profile from the user's personal browser — the
openclawprofile (orange accent) never touches your daily Chrome.profile="user"instead attaches directly to your real signed-in Chrome session via Chrome DevTools MCP. - The
openclawprofile is still persistent across restarts. If it shows one of your real accounts signed in (e.g. Google), that's from an explicitbrowser importprofilecookie copy or a manual sign-in inside that isolated window at some point — not a leak from your daily browser. Check current state withbrowser profiles(listsopenclaw,user,chrome, plus any detectedsystemProfilesavailable to import from). - Supports snapshot, click, type, navigate, screenshot, and more
- Stale element refs can happen after page changes — snapshot again, then act
refs="aria"gives durable Playwright aria-ref ids- Use
labelon tabs for stable handles across calls