Let Claude Code and other MCP agents control your existing Chrome browser through Codex Desktop's browser bridge.
codex-browser-bridge is a small Go binary that exposes Codex Desktop's Chrome browser bridge as an MCP server.
It connects to the local Codex browser named pipe, speaks the same length-prefixed JSON-RPC protocol, and provides browser-control tools to Claude Code or any MCP-compatible agent.
Codex Desktop can talk to its Chrome extension through a privileged native pipe. Other agents, such as Claude Code, cannot directly access that internal bridge.
This project reuses the local browser bridge that already exists on your machine and wraps it as an MCP server.
That means an agent can:
- inspect your current browser tabs
- claim an existing tab
- open and close tabs
- navigate pages
- capture screenshots
- read DOM / accessibility snapshots
- click, type, scroll, and evaluate JavaScript
Useful when an agent needs to work with pages that require a real browser session, such as dashboards, logged-in web apps, local development servers, or documentation sites.
Experimental.
The current version is designed for local Windows environments where Codex Desktop and the Codex Chrome Extension are already installed and running.
- MCP server over stdio
- Single Go binary
- No browser profile copying
- Uses your existing Chrome session
- Auto-discovers
codex-browser-use-*named pipes - Talks to Codex Desktop's extension host through JSON-RPC
- Uses Chrome DevTools Protocol commands for page control
- Includes an interactive CLI mode for debugging
- Windows
- Chrome
- Codex Desktop running
- Codex Chrome Extension installed and enabled
- Go 1.23+ if building from source
The bridge connects to local named pipes created by Codex Desktop. If no pipe is found, start Codex Desktop first and make sure the extension is active.
npm i -g @delicious233/codex-browser-bridgego install github.com/DeliciousBuding/codex-browser-bridge/cmd/bridge@latestMake sure your Go binary path is available in PATH.
Download the latest binary from:
https://github.com/DeliciousBuding/codex-browser-bridge/releases
Then place codex-browser-bridge.exe somewhere in your PATH.
git clone https://github.com/DeliciousBuding/codex-browser-bridge.git
cd codex-browser-bridge
make buildThe binary will be generated at:
bin/codex-browser-bridge
Add the MCP server to your Claude Code settings.
{
"mcpServers": {
"codex-browser": {
"command": "codex-browser-bridge",
"args": ["-mode", "mcp"],
"transport": "stdio"
}
}
}If you built from source, use the absolute path instead:
{
"mcpServers": {
"codex-browser": {
"command": "D:/path/to/codex-browser-bridge/bin/codex-browser-bridge.exe",
"args": ["-mode", "mcp"],
"transport": "stdio"
}
}
}Restart Claude Code after editing the settings file.
Then ask the agent things like:
List my open browser tabs.
Open https://example.com in a new tab and take a screenshot.
Claim my current documentation tab and summarize what is visible.
The binary has three modes.
Default mode. Used by Claude Code or other MCP clients.
codex-browser-bridge -mode mcpLists active Codex browser named pipes.
codex-browser-bridge -mode discoverExample output:
[
{
"Name": "codex-browser-use-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"UUID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
]Useful for debugging the bridge without an MCP client.
codex-browser-bridge -mode cliConnect to a specific pipe:
codex-browser-bridge -mode cli -pipe "codex-browser-use-<uuid>"Available CLI commands:
tabs
create
close <tab_id>
user-tabs
claim <tab_id>
nav <tab_id> <url>
snapshot <tab_id>
screenshot <tab_id>
info
ping
try <method> [json_params]
quit
| Tool | Description |
|---|---|
codex_list_tabs |
List tabs managed by the current bridge session |
codex_create_tab |
Create a new browser tab |
codex_close_tab |
Close a browser tab |
codex_user_tabs |
List open tabs across browser windows |
codex_claim_tab |
Claim an existing user tab for automation |
| Tool | Description |
|---|---|
codex_navigate |
Navigate a tab to a URL |
codex_navigate_back |
Navigate a tab back one entry in its history |
codex_navigate_forward |
Navigate a tab forward one entry in its history |
codex_reload |
Reload a tab |
codex_wait_for_load |
Poll document.readyState until complete |
| Tool | Description |
|---|---|
codex_screenshot |
Capture a screenshot (returns MCP image). fullPage parameter is reserved for future implementation — currently always captures the viewport. |
codex_dom_snapshot |
Get an accessibility tree snapshot |
codex_dom_get_visible |
Get a simplified visible DOM tree (human-readable; use codex_dom_snapshot for node IDs usable with codex_dom_click) |
codex_evaluate |
Evaluate JavaScript in the page context |
codex_get_info |
Get backend information from the extension |
| Tool | Description |
|---|---|
codex_click |
Click an element by CSS selector |
codex_fill |
Fill an input by CSS selector |
codex_dom_click |
Click a DOM node by accessibility node ID from codex_dom_snapshot |
codex_cua_click |
Click by screen coordinates |
codex_cua_type |
Type text at the current focus |
codex_cua_keypress |
Press keyboard keys |
codex_cua_scroll |
Scroll by coordinates |
| Tool | Description |
|---|---|
codex_name_session |
Assign a human-readable name to the browser session |
codex_finalize |
Finalize the session and clean up tabs |
MCP Client
Claude Code / other agent
│
│ stdio JSON-RPC
▼
codex-browser-bridge
Go binary
│
│ length-prefixed JSON-RPC frames
▼
Windows Named Pipe
\\.\pipe\codex-browser-use-*
│
▼
Codex Desktop extension host
│
▼
Codex Chrome Extension
│
▼
Chrome tabs
- The bridge searches for local named pipes matching
codex-browser-use-*. - It connects to the selected pipe through
go-winio. - Every request is encoded as a 4-byte little-endian length prefix followed by a JSON-RPC payload.
- Browser operations are sent to the Codex extension host.
- Page-level operations use Chrome DevTools Protocol commands such as
Page.navigate,Page.captureScreenshot,Runtime.evaluate, andInput.dispatchMouseEvent. - The MCP layer exposes these operations as
codex_*tools.
This tool gives an agent access to your active browser session.
Use it with the same caution you would apply to browser automation tools:
- do not expose the bridge to a network port
- do not run it for untrusted MCP clients
- review agent actions before allowing sensitive operations
- avoid using it on pages containing passwords, payment details, private tokens, or production admin consoles
- remember that claimed tabs may already be logged in
The project is intended for local development and controlled automation.
No codex-browser-use pipes found. Is Codex Desktop running?
Check:
- Codex Desktop is running
- Chrome is running
- Codex Chrome Extension is installed and enabled
- the extension has been initialized by Codex Desktop
Check:
- the binary is in
PATH - the MCP server config points to the correct executable
- Claude Code was restarted after editing settings
codex-browser-bridge -mode discoverworks in a terminal
Some browser operations require the bridge to attach to the tab before sending CDP commands. If a tab was opened outside the bridge, list user tabs first, then claim the target tab.
git clone https://github.com/DeliciousBuding/codex-browser-bridge.git
cd codex-browser-bridge
make test
make buildCommon commands:
make build # build binary
make test # go vet ./... && go test ./...
make clean # remove build outputPossible next steps:
- richer error messages for common pipe / extension failures
- non-Windows fallback or explicit platform guards
- better screenshot output handling for MCP clients
- typed tool result schemas
- optional allowlist / confirmation layer for sensitive domains
- examples for Claude Code, Cursor, Codex CLI, and other MCP clients
MIT License.
This is an independent third-party project. It is not affiliated with, endorsed by, or connected to OpenAI, Codex Desktop, Anthropic, Claude Code, Google, or Chrome.
Thanks to LINUX DO for the community support and feedback.
