MCP.Market

Cdpm MCP server

by IGELHARINE·io.github.IGELHARINE/cdpm·v0.1.9·3 stars

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

A92/100grade A
What users say
No reviews yet
Be the first
Safety scan
A92/100

full report

Adoption
Growing

3 stars97 downloads/wk

Reviews

Write one

Nobody has reviewed Cdpm yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Cdpm tools (36, 2 write)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • browser_back

    Go back.

  • browser_block

    Blocks tab network requests matching URL patterns (they fail). add adds, remove removes, clear removes all rules you set.

  • browser_click

    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.

  • browser_close

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

  • browser_dialog

    Accepts (accept: true) or dismisses (accept: false) an open dialog (alert/confirm/prompt/beforeunload). The tab is frozen while a dialog is open.

  • browser_download_wait

    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_drag

    Drags with the real mouse (press → move in steps → release): drag and drop, sliders, reordering, drag CAPTCHAs, etc.

  • browser_eval

    Evaluates a JavaScript expression in the tab and returns the result as JSON. Escape hatch only when other tools can't do it.

  • browser_fill

    Fills several inputs on the same page in order (each cleared, typed with real key events, value verified).

  • browser_forward

    Go forward (after going back).

  • browser_hover

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

  • browser_launch

    Starts slot Chrome. Call only when the user explicitly asks (other tools never start a closed slot).

  • browser_navigate

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

  • browser_network

    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_detail

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

  • browser_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_permission

    Lists or answers Chrome permission bubbles ("site wants to: access other apps and services on this device / show notifications / know your location…").

  • browser_press_key
  • browser_reload

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

  • browser_screenshot

    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_scroll

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

  • browser_select

    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_snapshot

    Reads the tab as accessibility-tree text. Clickable/typable elements get refs like [e12].

  • browser_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_close

    Closes a tab. tab is required.

  • browser_tab_new

    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_select

    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_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_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_type

    Types text into a ref element, sending real key events (keydown/keypress/input/keyup) per character like a human.

  • browser_uploadwrite action

    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

  • browser_wait

    Waits until text appears; gone: that text disappears; url: the URL changes; enabled: that button/input becomes enabled;

  • slot_inbox

    Shows your unread messages. With wait (seconds), waits up to that long for a new message (for real-time conversation).

  • slot_pause

    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.

  • slot_resume

    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_sendwrite action

    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.

Public scan report

scanner v0.1.10 · 2026-10-28 · same rubric, same numbers if you re-run it

no findings
  • Code scan43 source files scanned25/25
  • –Live reliabilityno gateway calls yet and no remote to proben/a
  • –Tool poisoningtools not inspected (local package is not executed); not countedn/a
  • Auth qualitylocal package, no credentials required12/15
  • Maintenancelast push 10 days ago15/15
  • Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Overall 92/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How Cdpm compares

Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
92/100
higher than 95% of 48,255 servers
Tools
36
the typical server has 7
Tools that change things
6%
typical: 0%. Fewer write tools means less an agent can break
GitHub stars
3
more than 80% of 28,688 servers
Downloads a week
97
more than 62% of 12,191 servers with a package

What its tools let an agent do: 34 read · 2 change

Install Cdpm in Claude Code, Cursor or VS Code

Runs npx -y cdpm-mcp on your machine. Read the scan report first; the gateway never runs local packages.

claude mcp add cdpm -- npx -y cdpm-mcp
Add to Cursor

What the publisher says

From the Cdpm repository's README, as published. We do not edit it. Read it on GitHub

CDPM

한국어 README

CDPM is an MCP server that keeps up to 30 Chrome instances ("slots") on fixed debugging ports and lets any number of Claude Code sessions and subagents drive them by number: "open slot 3", "log in on slot 1, then fill the form in slot 2". Each slot is an ordinary Chrome with its own profile, so logins stick between runs and the browser is the same one you would use by hand.

It grew out of running several Claude agents against logged-in web apps at once, where the hard parts were not clicking buttons but sharing browsers between sessions, keeping them alive, and noticing when Chrome itself got in the way.

Demo

Nine subagents on slots 11-19 (headless). Slots 11-18 each read a GitHub repository page and send the numbers to slot 19 with slotsend; slot 19 waits on slotinbox, writes a comparison table and opens it. Recorded over CDP from a real run: about 45 seconds of wall time, one frame per pass over the nine slots.

What is different

  • Shared, numbered browsers. Slot N listens on port 14049 + N and keeps its profile in its own folder. Sessions don't own a browser; they address a slot. Two sessions can work in the same slot on different tabs: commands are queued per tab, so two agents typing into one tab don't interleave. This is covered by an integration test and by a long test where three sessions share one slot for 600 rounds without memory, tab or lock-file growth.
  • Plain Chrome over CDP. No Playwright or Puppeteer. Clicks and keys are sent with Input.dispatch*Event, so pages receive trusted events. Chrome is started without --enable-automation, so navigator.webdriver stays false. CDPM never calls Runtime.enable, and every script it runs to read the page lives in an isolated world the page cannot see; snapshots pierce shadow roots. That removes the usual automation fingerprints. It does not get you past rate limits or IP reputation: nine slots searching Google at the same moment will still get a CAPTCHA.
  • Survives the boring failures. Slots are started detached, so closing VS Code or Claude Code (even with a process-tree kill) leaves them running. After a reboot, CDPM re-attaches to whatever Chrome answers on the slot ports and re-checks its process ID before touching taskbar icons. If Chrome updates itself while a slot is running (on Windows the update swaps chrome.exe, the old browser can no longer start renderers, and new tabs hang blank), CDPM restarts that slot on the new version and reopens its tabs.
  • Agents can coordinate. slotsend / slotinbox deliver messages addressed by slot and agent name. They are stored on disk, so they survive a Chrome restart, and a waiting agent wakes as soon as one arrives.
  • Browser UI the page can't see. JavaScript dialogs are reported and answered with browserdialog. On Windows, permission bubbles ("access other apps and services on this device", notifications, location) are detected through UI Automation and answered with browserpermission. File pickers triggered by an agent's action are intercepted instead of opening OS windows; a print dialog the page opens is reported right away (the page itself is never modified).

Quick start

npm install -g cdpm-mcp
cdpm install

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

Cdpm: common questions

Is Cdpm MCP server safe?
Yes, by our scan: it is graded A (92/100). Read the Cdpm safety report
How do I install Cdpm?
It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
Does Cdpm need an API key?
Not as far as the registry entry and our scan can tell: no credentials are declared or required.
Is Cdpm maintained?
The last commit was 16 days ago (2026-10-19). The latest release is v0.1.9.
What can I use instead of Cdpm?
Servers from other publishers that do the same job: Deja Vu MCP server.
How does Cdpm compare with other MCP servers?
safety score 92/100 (higher than 95% of 48,255 servers); tools 36 (the typical server has 7); tools that change things 6% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.

Alternatives to Cdpm

Same job from other publishers: the closest match first, then the best rated.

  • Deja Vu
    deja-vu: local memory over the session histories of forty-three coding agents.
    A