Skip to main content
Charlotte is an MCP server that gives AI agents structured, token-efficient access to the web. Instead of dumping the full accessibility tree on every call, Charlotte returns only what the agent needs: a compact page summary on arrival, targeted queries for specific elements, and full detail only when explicitly requested. On content-heavy pages that orientation is up to ~140x smaller than a full accessibility-tree snapshot from Playwright MCP; on trivially small pages the two are roughly the same size.

Try it in one command

Run Charlotte as a remote MCP server and connect it to claude.ai — no domain, no config:
It prints a public connector URL and an operator token. In claude.ai: Settings → Connectors → Add custom connector — paste the URL, leave the OAuth Client ID/Secret fields blank, and enter the token on Charlotte’s consent page when it appears. That’s it; you’re browsing.
The demo URL and token are ephemeral — both rotate on restart. For a stable domain, your own tunnel or reverse proxy, and docker compose, see Self-Hosting.
Prefer the stdio transport for a local MCP client (Claude Code, Claude Desktop, Cursor, and others)?
Full client configuration and CLI usage live in the project README.

Where to go next

  • Self-Hosting — stand up Charlotte Remote on your own host: token, config, compose, and connecting claude.ai.
  • Security — the trust boundary, SSRF and Host-header guards, the OAuth handshake, and sizing.
  • Docker — image choices, sandbox posture, and running the container in production.
  • Configuration — every config key, environment variable, and precedence rule.
  • Benchmarks — Charlotte vs. Playwright MCP, measured: orientation cost, per-task cost, and where Charlotte still loses.
  • Changelog — release history and what’s new.