Skip to content
Agentmart
Submit a tool

Cdpm

Lets many Claude Code sessions and subagents share numbered, logged-in Chrome instances over CDP

Connector by IGELHARINE · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)★ 2
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/igelharine-cdpm

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Lets many Claude Code sessions and subagents share numbered, logged-in Chrome instances over CDP

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.

Runs code on install

Its package runs an install script (such as npm postinstall or setup.py code) as soon as you install it, before any tool is called. Read the script first.

Tools
7 read · 19 write · 1 delete · 9 not yet classified
Secrets
None asked for
Install scripts
Runs code on install
Runs as
Node.js package

Tools by what they do 36

Read from the source code; the running server may list different tools.

Read 7 · Look things up without changing anything.

  • browser_eval
  • browser_network_detail
  • browser_permission
  • browser_screenshot
  • browser_snapshot
  • browser_status
  • slot_inbox

Write 19 · Create, change, send or run things.

  • browser_click
  • browser_close
  • browser_dialog
  • browser_download_wait
  • browser_fill
  • browser_forward
  • browser_hover
  • browser_launch
  • browser_navigate
  • browser_pdf
  • browser_press_key
  • browser_scroll
Show 7 more tools
  • browser_select
  • browser_tab_close
  • browser_tab_select
  • browser_text
  • browser_type
  • browser_upload
  • slot_send

Delete 1 · Delete, drop, revoke or wipe things.

  • browser_drag

Not yet classified 9 · We could not tell from the name and description.

  • browser_back
  • browser_block
  • browser_network
  • browser_reload
  • browser_tab_new
  • browser_tabs
  • browser_wait
  • slot_pause
  • slot_resume

Network hosts it talks to 4

  • github.com · found in code
  • mail.google.com · found in code
  • test.igel.kr · found in code
  • wehago.com · found in code

Files it touches

  • /opt/google/chrome/chrome
  • Your home directory (~)
  • Any path the agent passes to its tools

Tools (36)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • browser_backBack

    Go back.

  • browser_blockBlock requests

    Blocks tab network requests matching URL patterns (they fail). add adds, remove removes, clear removes all rules you set. Patterns: * any chars, ? one char. A bare domain matches every request containing it ("ads.example.com" → "*ads.example.com*"). A trailing * is added automatically so query strings still match ("*.png" → "*.png*"). The tab skips the cache while rules exist. Rules last only while this Claude session is alive and are shown to other agents in the header. With no args, shows current rules.

  • browser_clickClick

    Clicks a ref element with real mouse events. If another element covers it, doesn't click and reports it. Waits for loading if the click navigates; reports new tabs. Clicking a file input or "attach" button intercepts the OS file picker (not shown); then use browser_upload. Doesn't click <select> dropdowns (they open a list popup on the user's screen); use browser_select.

  • browser_closeClose slot

    Closes slot Chrome cleanly (session and cookies saved). The profile (logins) is kept. Reports if another agent used it recently.

  • browser_dialogHandle dialog

    Accepts (accept: true) or dismisses (accept: false) an open dialog (alert/confirm/prompt/beforeunload). The tab is frozen while a dialog is open. Usually judge from its content and handle it yourself (accept if it is part of the requested task; close unneeded notices/ads). Ask the user only when it confirms an irreversible action they didn't request (payment, deletion, etc.). beforeunload: accept = leave page (input lost), dismiss = stay. For prompt, text is the input.

  • browser_download_waitWait for download

    Waits for the most recently started download to finish and returns the saved file path (user's Chrome download folder). Call after clicking the download button. Returns as soon as it finishes.

  • browser_dragDrag

    Drags with the real mouse (press → move in steps → release): drag and drop, sliders, reordering, drag CAPTCHAs, etc. Target: to (element ref), to_text (text at the drop spot), or dx/dy (pixels from from). HTML drag is handled without starting an OS drag.

  • browser_evalRun JS

    Evaluates a JavaScript expression in the tab and returns the result as JSON. Escape hatch only when other tools can't do it. Runs in an isolated world: DOM can be read and modified, but globals created by page scripts (window.appVar, etc.) are not visible.

  • browser_fillFill form

    Fills several inputs on the same page in order (each cleared, typed with real key events, value verified). Stops on page change, dialog, or any failed field, and reports how far it got. submit="Enter" presses Enter in the last field; a button ref clicks that button. For dropdowns use browser_select.

  • browser_forwardForward

    Go forward (after going back).

  • browser_hoverHover

    Moves the real mouse over a ref element (no click). For hover menus and tooltips. Use read=changes to see the opened menu.

  • browser_launchLaunch slot

    Starts slot Chrome. Call only when the user explicitly asks (other tools never start a closed slot). Without slot, uses the lowest free slot. If already running, just attaches. The user decides windowed (visible) vs headless (hidden): headless: true only if they say "headless/hidden". If unstated, don't guess; ask first, then call with headless. Starting a closed slot without headless only returns a confirmation request. Start several slots at once with slots (list) or count (lowest first). For different jobs per slot, after launching give each slot its own subagent in parallel.

  • browser_navigateNavigate

    Navigates the tab to a URL and waits for the body to load.

  • browser_networkNetwork requests

    Tab network request list (newest at bottom). Records the latest 500 since CDPM first attached to the tab. Filter with filter (URL part), type (Document, XHR, Fetch, Script, Image, etc.), failed (failures only). For details pass the n-number to browser_network_detail.

  • browser_network_detailNetwork request detail

    Shows one request's headers, sent data and response body (start of it, if text). id is the n-number from browser_network.

Show 21 more tools
  • browser_pdfSave as PDF

    Saves the page as a PDF (receipts, articles, etc.). Without path, saves to the user's Downloads folder named after the page title. Doesn't change the screen or window.

  • browser_permissionAnswer permission bubble

    Lists or answers Chrome permission bubbles ("site wants to: access other apps and services on this device / show notifications / know your location…"). They are browser UI: not in snapshot/screenshot, page tools can't click them, and the page often waits until they are answered. The header warns when one is open. Without button: shows the open bubbles with their exact button names. With button: presses that button (exact name as listed, e.g. "허용", "Allow", "Block", "Allow while visiting the site"). Windows, windowed slots only.

  • browser_press_keyPress key

    Description is built at runtime.

  • browser_reloadReload

    Reloads the page (same as Chrome reload). ignore_cache=true bypasses the cache. Careful: unsaved user input on the page is lost.

  • browser_screenshotScreenshot

    Captures the visible area of the tab as PNG, even background tabs (without switching). Never changes window size or viewport, so full-page capture is unsupported (scroll then capture, or use snapshot/text).

  • browser_scrollScroll

    Scrolls a ref element into view, or by dy pixels (positive = down, negative = up, default 600). Reports the actual resulting position.

  • browser_selectSelect option

    Picks an option in a <select> dropdown (by value or visible text; partial match OK). Focuses the dropdown and moves with keys (arrow keys on Windows/Linux, typing the first letters on macOS), so the page gets real events and no list popup opens. If nothing matches, lists the available options.

  • browser_snapshotSnapshot

    Reads the tab as accessibility-tree text. Clickable/typable elements get refs like [e12]. Long pages are split; only page 1 (top) is shown (page=2 to continue; refs stay the same across pages). find="text" shows only matching elements with their parent context; ref="e40" shows only that element's subtree. Refs change when the page changes, so re-snapshot before acting.

  • browser_statusSlot status

    Shows running Chrome slots (1-30) with their tabs, opener, last action and one-line summary. Pass slot for just that slot.

  • browser_tab_closeClose tab

    Closes a tab. tab is required.

  • browser_tab_newNew tab

    Opens a new tab in the slot and returns its ID. When agents share a slot, open your own tab and work only by its ID to avoid mixing.

  • browser_tab_selectBring tab to front

    Brings a tab to the front of its Chrome window. Changes what the user sees, so use only when the user wants it. (Background tabs can be read, operated and captured; no need to bring them forward to work.)

  • browser_tabsList tabs

    Slot tab list: number, ID, title, URL, opener, last action, per-tab summary (updated only by actions with summary). "·front" marks the tab currently in front in its window (one per window).

  • browser_textRead text

    Reads the page body text (main/article if present). With ref, only that element's text. Shorter and easier than a snapshot for articles/documents. Use page for long text.

  • browser_typeType

    Types text into a ref element, sending real key events (keydown/keypress/input/keyup) per character like a human. clear=true clears existing content; submit=true presses Enter after. Verifies the resulting value and reports a mismatch. fast=true inserts very long text at once without key events. Date/time inputs get the value set directly in their format (time "19:30", date "2026-10-08"; change event then has isTrusted=false).

  • browser_uploadUpload file

    Puts files into a file input (no OS file picker shown to the user). Give ref of the file input (<input type=file> or its label), or for a site's custom "attach" button, click it first with browser_click (CDPM intercepts the picker) and call without ref. The site gets the same events as a human file pick.

  • browser_waitWait

    Waits until text appears; gone: that text disappears; url: the URL changes; enabled: that button/input becomes enabled; response: a network response for that URL completes (returns its body); network_idle: the network goes quiet; otherwise for seconds. For SPAs (search results, lists, etc.), instead of reading the page, getting the data response (JSON) with response="/api/search" after a click is faster and more accurate (it searches from this agent's last action on that tab, so responses that arrived during the click are caught). Only reads, never touches the page, so the user's input is not …

  • slot_inboxCheck messages

    Shows your unread messages. With wait (seconds), waits up to that long for a new message (for real-time conversation). Messages already delivered in another tool's header are not unread; when there are no new ones, recently received ones are noted for reference.

  • slot_pausePause slot

    Use only when the user says to pause (e.g. "pause 3"); agents never call it on their own. All action tools on the slot are refused and any browser_wait in progress stops at once. An action already sent to Chrome finishes. Reading still works. Applies immediately to agents in other Claude sessions too. all=true pauses every running slot.

  • slot_resumeResume slot

    Use only when the user says to resume (e.g. "continue 3"); the agent owning a paused slot never calls it on its own. Unpauses and messages every agent on the slot to wake it (agents re-read the page and continue). all=true resumes every paused slot.

  • slot_sendSend message

    Sends a message to other agents (real-time collaboration). slot = the slot the recipient owns (to reach another slot's agent, use that slot number). Omit to to send to everyone on that slot. Recipients get it instantly if waiting in slot_inbox wait, otherwise in their next tool result header (a running browser_wait stops at once). When you finish a step, notify waiting agents right away.

Signals

Stars
2
Forks
0
Open issues
0
Last commit
Oct 19, 2026 (10 days ago)
Last release
Oct 19, 2026 (10 days ago)

From GitHub (fetched Oct 24, 2026).

Details

Registry name
io.github.IGELHARINE/cdpm
Version
0.1.9
Auth
No auth
Packages
npm cdpm-mcp
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026
Cite this page

Cdpm MCP server. Agent Mart. https://agentmart.dev/connectors/igelharine-cdpm (last updated 2026-10-24)