arc-cdp-mcp
Provides control of the Arc browser, enabling navigation, clicking, form filling, screenshots, page reading, console and network inspection, and tab management via the Chrome DevTools Protocol.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@arc-cdp-mcp Navigate to example.com and take a full-page screenshot"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
arc-cdp-mcp
An MCP server that gives Claude Code control of Arc — navigate, click, fill forms, screenshot, read console and network traffic. It exists because the official "Claude in Chrome" extension does not work in Arc.
It talks to Arc over the Chrome DevTools Protocol, skipping the extension layer entirely.
Why the official extension fails in Arc
If you installed the Claude extension in Arc and nothing happens, here is what is actually going on. The extension is installed and its native-messaging channel to Claude Code does work — commands reach Arc. Two things break after that:
1. The side panel. The service worker checks for chrome.sidePanel and falls back to
a notification whose text is right there in the bundle:
Claude requires the Chrome Side Panel API, which isn't available in this browser. Use Google Chrome, Microsoft Edge, or Brave.
Arc has the API schema compiled in, but its side panel is a custom implementation
(ArcBrowserSidePanel) that is not exposed to extensions.
2. New tabs. Arc's new tab is chrome://start-page/<uuid>, which isn't navigable from
an extension context — it fails with ERR_INVALID_URL. The tab-group handshake then hangs
waiting for a page that will never be ready.
Since Claude Code runs in the terminal, the side panel isn't the part you need — the automation is. So this server drops the extension and speaks CDP to Arc directly.
Related MCP server: jevbridge
Requirements
macOS, Arc, Node 18+, and Claude Code.
Install
git clone https://github.com/chmodami/arc-cdp-mcp
cd arc-cdp-mcp
npm install
claude mcp add arc-cdp --scope user -- node "$PWD/src/server.js"Restart Claude Code — MCP servers load at session start.
Running
Arc has to be launched with a debugging port. It must be fully quit first; the flag only applies to a new process.
./arc-start.shThe script quits Arc, relaunches it with --remote-debugging-port=9222, and waits for CDP
to answer. Opening Arc from the Dock afterwards won't carry the flag.
For a different port: ./arc-start.sh 9333, and set ARC_CDP_URL=http://127.0.0.1:9333.
Tools
Tool | What it does |
| List tabs with id, title, URL and |
| Open a URL (reuse the active tab or open a new one) |
| Close a tab this server opened |
| PNG of the viewport or the full page |
| Visible text plus every interactive element, each with a |
| Click by |
| Fill a field, optionally pressing Enter |
| Send a key |
| Run JS in the page |
| Console output and page errors, regex-filterable |
| HTTP responses, regex-filterable, |
The intended loop is arc_read_page → take a ref → arc_click/arc_type, rather than
guessing CSS selectors. Refs are reassigned on every read, so read again after anything
that changes the DOM.
Your tabs vs. the server's tabs
CDP can see every Arc tab, including your bank and your email. To keep an implicit call from ever landing on one:
Tabs this server opened are
owned: true; tabs that already existed areowned: false.The active tab — used when
tabIdis omitted — is always an owned one.Targeting one of your tabs requires passing its
tabIdexplicitly.arc_close_tabrefuses to close a tab it doesn't own.
Be clear about what this is: a convention inside the server, not a sandbox. An explicit
tabId still reaches any tab. CDP has no per-site permission model — the official
extension's site-by-site approval is a real protection you give up here. Decide whether
that trade is right for you before installing.
Teaching your agent to use it
The tools show up on their own, but Claude Code still sees the mcp__claude-in-chrome__*
tools and may reach for those first — they connect, accept commands, and then time out.
skill/arc-browser.md is a skill that tells the agent to use arc_* instead, along with
the read-then-act loop and the tab rules. Install it with:
mkdir -p ~/.claude/skills/arc-browser
sed "s|<REPO_PATH>|$PWD|g" skill/arc-browser.md > ~/.claude/skills/arc-browser/SKILL.mdLimitations
Arc must be launched with the flag. Without it, every tool returns an error telling you how to relaunch.
Tabs Arc has suspended have no renderer and stay invisible until they load.
No side panel: this is automation only, not Claude chat inside the browser.
macOS only, because
arc-start.shusesopenandosascript.
Prior art
arc-browser-mcp also drives Arc, with an
AppleScript engine alongside CDP. Worth a look — it may fit you better.
License
MIT
Available Tools
11 toolsarc_clickClicarB
Clica num elemento, identificado por ref (de arc_read_page), seletor CSS ou texto visível.
Inputs: ref, text, tabId, selector.
arc_close_tabFechar abaA
Fecha uma aba aberta por este servidor. Abas do usuário não podem ser fechadas.
Inputs: tabId (required).
arc_consoleConsoleB
Mensagens de console e erros de página capturados desde que a aba abriu.
Inputs: tabId, pattern.
arc_evalExecutar JSB
Roda JavaScript na página e devolve o resultado serializado.
Inputs: expression (required), tabId.
arc_networkRedeC
Respostas HTTP capturadas na aba desde que ela abriu.
Inputs: tabId, pattern, onlyErrors.
arc_pressTeclaC
Aperta uma tecla na página (Enter, Escape, ArrowDown, Control+A…).
Inputs: key (required), tabId.
arc_read_pageLer páginaA
Devolve o texto visível da página e a lista de elementos interativos, cada um com um ref estável. Use os refs em arc_click e arc_type em vez de inventar seletores CSS.
Inputs: tabId, maxChars.
arc_screenshotScreenshotA
Captura a aba como PNG. Use para ver o estado visual da página.
Inputs: tabId, fullPage.
arc_tabsListar abasA
Lista as abas do Arc visíveis, com id, título e URL. owned: true são as abas que este servidor abriu; owned: false são abas do próprio usuário — só atue nelas se ele pedir, passando o tabId explicitamente.
Inputs: no named parameters.
arc_typeDigitarB
Preenche um campo de texto. Com submit, aperta Enter no fim.
Inputs: value (required), ref, text, tabId, +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 11 tools
Each tool has a clear, distinct purpose with no overlap: click, type, press, eval, console, network, read_page, tabs, navigate, close_tab, and screenshot cover separate actions. The names unambiguously indicate their functions.
All tools follow a uniform prefix 'arc_' with lowercase and underscores. While some are verbs (click, type, navigate) and some are nouns (console, network, tabs), the consistent format and clear action-oriented names make the set highly coherent.
With 11 tools, the set is well-scoped for browser automation. Each tool serves a necessary function, and the count falls comfortably within the ideal 3-15 range without feeling bloated or sparse.
The toolkit covers the core browser automation lifecycle: navigation, interaction (click, type, press), reading content (read_page, screenshot), debugging (console, network, eval), and tab management (tabs, close_tab). Missing features like refresh/back are minor and do not detract from overall completeness.
Maintenance
Related MCP Connectors
Give AI agents a real cloud Chrome: open sessions, navigate, read pages, click, type and screenshot.
Control a real browser from AI agents: navigate, click, type, screenshot, read the page.
Cloud browser, web extraction, screenshots, and remote CDP tools for AI agents.
Let AI agents observe and control Chrome tabs you explicitly share via Browse Bridge.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables browser automation (navigate, screenshot, click, type, etc.) for Claude Code via MCP protocol, with a Chrome extension for configuration.2MIT
- AlicenseAqualityBmaintenanceEnables Claude Code to control your actual logged-in Chrome browser through an MV3 extension, perceiving pages as element tables and performing actions such as navigation, clicks, typing, and assertions via CDP.824 npm14MIT
- AlicenseAqualityCmaintenanceEnables Claude Code to control Google Chrome using local Playwright sessions to navigate, click, fill forms, take screenshots, and read pages, with security guards and an audit log.68 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables Claude Code to control a real browser for navigation, interaction, screenshots, accessibility snapshots, and automated end-to-end testing through MCP tools.106 npmMIT