Codex Chrome MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CODEX_HOME | No | Codex home directory. | ~/.codex |
| CODEX_CHROME_CLIENT | No | Absolute path to browser-client.mjs. Auto-detection (cache `latest` -> native-host manifests -> newest cache dir) currently resolves 26.715.31925, which has no `cdp` capability - pin vendor/chrome-26.727.51351/scripts/browser-client.mjs for raw CDP. | auto-detected |
| CODEX_CHROME_BROWSER | No | Backend id: `extension`, `iab`, `cdp`, or a specific id. | extension |
| CODEX_CHROME_AUTO_APPROVE | No | Auto-approve elicitation prompts. | true |
| CODEX_CHROME_SESSION_NAME | No | Session name shown in the UI. | 🔎 Cursor |
| CODEX_CHROME_SECURITY_MODE | No | Re-enables Codex's consent checks when set to empty string. | disabled-for-local-testing |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| browser_documentationA | Return the full Codex Chrome (browser use) API reference for the live |
| browser_execA | Run arbitrary async JavaScript against Codex's Chrome API. In scope: |
| list_user_tabsA | List the user's real open Chrome tabs (across windows), newest first. Use an entry's id with claim_tab to take control. |
| list_tabsA | List tabs currently controlled by this browser session. |
| new_tabB | Create a new controlled tab (optionally navigate to url) and make it the active tab. |
| claim_tabA | Take control of one of the user's existing Chrome tabs (id from list_user_tabs) and make it the active tab. |
| gotoA | Navigate the active tab (or tab_id) to a URL. Creates a tab if none is active. |
| snapshotA | Return the active tab's url, title, and a filtered DOM listing interactable elements with node ids. Use a node_id with the click tool. |
| screenshotB | Capture a screenshot of the active tab (or tab_id). |
| clickA | Click on the active tab. Prefer node_id (from snapshot) or x+y (viewport coordinates); selector/text use Playwright and may be less reliable when Codex shares the page. |
| type_textB | Type text. With |
| press_keyB | Press a key or chord at the current focus, e.g. keys=['Enter'] or ['Control','a']. |
| scrollA | Scroll the active tab by a delta (positive scrollY scrolls down). By default scrolls the page reliably regardless of layout; pass node_id to scroll inside a specific scroll container, x+y to send a mouse wheel at a viewport point, or selector to scrollIntoView a specific element. Returns before/after scroll position, pageHeight, and nearBottom. On virtualized lists (e.g. Discourse post streams) use small steps (<= ~2 viewports) and extract between steps, or content will be skipped. |
| eval_jsA | Evaluate JavaScript in the page via Playwright and return the result (JSON-projected; depth<=8, strings<=200k chars). Pass an expression or |
| fetch_urlA | Fetch rendered content for one or more URLs through the user's Chrome (their cookies/session) WITHOUT touching the active tab, via browser.tabs.content. Ideal for JSON endpoints (e.g. Discourse /t/.json) or reading pages in bulk - much faster than goto+scroll+DOM scraping. content_type: 'text' (default), 'html', or 'domSnapshot'. May fail if the browser host does not support tabs_content or a content-blocker extension blocks the URL; fall back to goto + eval_js then. |
| get_console_logsC | Return recent console log messages captured for the active tab. |
| cdp_sendA | Send a raw Chrome DevTools Protocol command to the active tab (or tab_id) via the browser's |
| cdp_eventsA | Read buffered Chrome DevTools Protocol events from the active tab (or tab_id) via the |
| name_sessionB | Set the browser session name (shown in the Codex/Chrome UI). |
| finalizeA | End browser work for now, cleaning up session tabs. Optionally keep specific tabs open (status 'deliverable' or 'handoff'). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ohaoz/chrome-use-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server