Skip to main content
Glama
README.md
# OpenChrome

OpenChrome is a browser automation MCP server for controlling a real Chrome
browser from Claude Code, Codex CLI, OpenCode, or any MCP client.

It ships as a Node CLI plus MCP runtime. Desktop apps, browser extensions,
native-host installers, deployment templates, and release artifact builders are
outside this repository surface.

## Install

```bash
npm install -g openchrome-mcp
openchrome setup --client codex
```

For Claude Code:

```bash
openchrome setup --client claude
```

Restart the MCP host after setup so it reloads the generated configuration.

## Run

```bash
openchrome serve --auto-launch --auto-elect --minimal
```

Manual Codex CLI configuration:

```bash
openchrome config --client codex
```

Add the printed `[mcp_servers.openchrome]` block to `~/.codex/config.toml`.

## CLI

OpenChrome can call its MCP tools directly from the shell:

```bash
oc run navigate --arg url=https://example.com
oc run read_page --arg mode=dom --json
oc navigate https://example.com
oc click ref_5
```

Playbooks run deterministic YAML scenarios:

```bash
oc playbook run scenario.yaml --vars url=https://iana.org --out report.md
```

## HTTP Mode

Run a long-lived MCP HTTP daemon when multiple clients should share one managed
Chrome owner:

```bash
openchrome serve --http 3100 --auth-token <token> --idle-timeout 30m
curl -s http://127.0.0.1:3100/health
```

Independent stdio clients should use separate `--port` and `--user-data-dir`
profiles, or connect through broker mode with `--auto-elect`.

## Capabilities

- Real Chrome control through CDP.
- Navigation, clicks, typing, screenshots, DOM reads, accessibility reads, and
  natural-language element lookup.
- Parallel tab/session workflows with broker-safe profile ownership.
- Compact page serialization for lower-token agent loops.
- Outcome contracts, evidence bundles, diffs, and diagnostics.
- Optional pilot-tier recovery and skill runtime behind `--pilot`.

Full tool catalogue: [`docs/agent/capability-map.md`](docs/agent/capability-map.md).

## Documentation

| Topic | Link |
| --- | --- |
| Architecture | [`docs/architecture.md`](docs/architecture.md) |
| Getting started | [`docs/getting-started.md`](docs/getting-started.md) |
| CLI | [`docs/cli.md`](docs/cli.md) |
| Playbooks | [`docs/cli/playbook.md`](docs/cli/playbook.md) |
| MCP topologies | [`docs/mcp/topologies.md`](docs/mcp/topologies.md) |
| HTTP daemon | [`docs/getting-started/http-daemon.md`](docs/getting-started/http-daemon.md) |
| Security model | [`SECURITY.md`](SECURITY.md) |
| Repository structure | [`docs/dev/project-structure.md`](docs/dev/project-structure.md) |

## Development

```bash
git clone https://github.com/shaun0927/openchrome.git
cd openchrome
npm install
npm run build
npm test
```

Useful checks:

```bash
npm run lint
npm run lint:repo-structure
npm run lint:tier
npm run docs:capability-map:check
```

## License

MIT

TDQS

B3.1/5.0

Scored across 121 tools

Disambiguation2/5

Massive functional overlap across the surface: act/interact/computer all perform element actions; read_page/page_content both retrieve page content; oc_task_*, oc_run_*, and oc_task_run_* form three interleaved tracking families that are genuinely hard to tell apart; oc_observe/query_dom/find/inspect all do element discovery. An agent would frequently pick the wrong tool despite reading descriptions.

Naming Consistency2/5

Two parallel naming families coexist: namespaced oc_* tools (oc_browser_control, oc_evidence_get) alongside unnamespaced legacy tools (tabs_activate, read_page, interact, act). Verbs are inconsistent (tabs_create vs oc_task_start; list_profiles vs oc_profile_status), and several names are semantically opaque without the description (oc_diff, oc_query, oc_reflect, oc_journal).

Tool Count1/5

The header claims 121 tools and ~64 are actually described — far beyond any reasonable browser-automation surface. The TaskRun/Run/task/run families alone account for ~15 near-duplicate tools, and niche utilities like oc_totp_generate, oc_doctor_report, oc_reap_orphans, and oc_normalize_action inflate the count well past what an agent can reliably navigate.

Completeness5/5

The browser-automation domain is exhaustively covered: navigation, tabs, DOM querying, element interaction, form filling, screenshots, cookies, devtools URLs, console/network capture, evidence bundling, session recording, profiling, and task lifecycle tracking. There are essentially no gaps in the coverage — if anything the surface overshoots complete.

Maintenance

ActivityMaintained
ResponsivenessWithin a week