Cdpm MCP server
io.github.IGELHARINE/cdpm·v0.1.9·3 starsLets many Claude Code sessions and subagents share numbered, logged-in Chrome instances over CDP
3 stars97 downloads/wk
Reviews
Write oneNobody 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 postsRead from the package source without running it. The installed server may list more.
browser_backGo back.
browser_blockBlocks tab network requests matching URL patterns (they fail). add adds, remove removes, clear removes all rules you set.
browser_clickClicks 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_closeCloses slot Chrome cleanly (session and cookies saved). The profile (logins) is kept. Reports if another agent used it recently.
browser_dialogAccepts (accept: true) or dismisses (accept: false) an open dialog (alert/confirm/prompt/beforeunload). The tab is frozen while a dialog is open.
browser_download_waitWaits 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_dragDrags with the real mouse (press → move in steps → release): drag and drop, sliders, reordering, drag CAPTCHAs, etc.
browser_evalEvaluates a JavaScript expression in the tab and returns the result as JSON. Escape hatch only when other tools can't do it.
browser_fillFills several inputs on the same page in order (each cleared, typed with real key events, value verified).
browser_forwardGo forward (after going back).
browser_hoverMoves the real mouse over a ref element (no click). For hover menus and tooltips. Use read=changes to see the opened menu.
browser_launchStarts slot Chrome. Call only when the user explicitly asks (other tools never start a closed slot).
browser_navigateNavigates the tab to a URL and waits for the body to load.
browser_networkTab 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_detailShows one request's headers, sent data and response body (start of it, if text). id is the n-number from browser_network.
browser_pdfSaves 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_permissionLists or answers Chrome permission bubbles ("site wants to: access other apps and services on this device / show notifications / know your location…").
browser_press_keybrowser_reloadReloads the page (same as Chrome reload). ignore_cache=true bypasses the cache. Careful: unsaved user input on the page is lost.
browser_screenshotCaptures 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_scrollScrolls a ref element into view, or by dy pixels (positive = down, negative = up, default 600). Reports the actual resulting position.
browser_selectPicks 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_snapshotReads the tab as accessibility-tree text. Clickable/typable elements get refs like [e12].
browser_statusShows running Chrome slots (1-30) with their tabs, opener, last action and one-line summary. Pass slot for just that slot.
browser_tab_closeCloses a tab. tab is required.
browser_tab_newOpens 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_selectBrings 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_tabsSlot 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_textReads 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_typeTypes text into a ref element, sending real key events (keydown/keypress/input/keyup) per character like a human.
browser_uploadwrite actionPuts 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_waitWaits until text appears; gone: that text disappears; url: the URL changes; enabled: that button/input becomes enabled;
slot_inboxShows your unread messages. With wait (seconds), waits up to that long for a new message (for real-time conversation).
slot_pauseUse 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_resumeUse 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 actionSends 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
- 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
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
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 installShortened. 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 Vudeja-vu: local memory over the session histories of forty-three coding agents.not reviewedEstablishedA