services/openclaw/mcp-and-browser.md

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.

  • asana was removed from OpenClaw on 2026-09-25. Asana is handled by the asana skill now, not an MCP server.
  • personal-notes is 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 openclaw profile (orange accent) never touches your daily Chrome. profile="user" instead attaches directly to your real signed-in Chrome session via Chrome DevTools MCP.
  • The openclaw profile is still persistent across restarts. If it shows one of your real accounts signed in (e.g. Google), that's from an explicit browser importprofile cookie copy or a manual sign-in inside that isolated window at some point — not a leak from your daily browser. Check current state with browser profiles (lists openclaw, user, chrome, plus any detected systemProfiles available 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 label on tabs for stable handles across calls