Releases: lcjanke2020/cdp-mcp
v0.2.2
Patch release — set_breakpoint reliability fix. No API changes: the 48-tool surface from v0.2.0 is unchanged.
Fixed
set_breakpointno longer spirals into a non-recoverableinternal_error(#24, PR #25). After a re-navigation / HMR re-parse theScriptStorecould hold two records for one bundle URL, so the candidate loop issued collidingDebugger.setBreakpointByUrlcalls; the throw escaped before any record was stored, so the idempotency guard could never short-circuit — the source line stayed permanently un-settable for the session and an agent trusting the error would burn its iteration budget. Dedup now keys on physical CDP identity(sessionId, url, line, col)across all matching script records, plus a generated-layer idempotency guard (already-set/breakpoint_conflict). Surfaced by the kimi-k2.6 L4 eval run (deep-source-map/compute-step) — a code issue, not a model one.
Known follow-up
- #26 — two deferred, non-blocking findings from the PR #25 review pass: (1) an orphaned mid-loop bind can re-create the same spiral via a different door (candidate k>1 failing after
1..k-1already bound, with no record stored); (2) duplicate-record collapse keeps the oldestscript_id, which can stale out a follow-upget_script_source. Both pre-existing/latent and judged non-blocking; tracked for a later patch.
Install
npm install -g cdp-mcp@0.2.2
Published from CI via GitHub Actions OIDC trusted publishing, with SLSA build provenance.
Full changelog: v0.2.1...v0.2.2
v0.2.1 — dependency security fixes
Patch release — dependency security fixes. No API changes: the 48-tool surface from v0.2.0 is unchanged.
Security (consumer-facing)
hono4.12.20 → 4.12.25 (transitive, via@modelcontextprotocol/sdk) — clears 4 moderate advisories: IPv6 deny-rule bypass, Set-Cookie injection, JWT auth-scheme, and mount-prefix routing.qs→ 6.15.2 — clears astringifyDoS.npm audit --omit=devis now clean (0 vulnerabilities).
Maintenance (dev / CI — not shipped in the tarball)
vitest2 → 4, clearing a dev-only critical advisory and the vite/esbuild chain (all-scope audit now clean).- GitHub Actions bumped off the deprecated Node 20 runtime (
checkoutv6,setup-nodev6,upload-artifactv7), SHA-pinned.
Validated by a full L4 agent-eval rerun on Kimi (the hono swap sits on the SSE transport path).
Install
npm install -g cdp-mcp@0.2.1
Published from CI via GitHub Actions OIDC trusted publishing, with SLSA build provenance.
Full changelog: v0.2.0...v0.2.1
v0.2.0 — form-driving + session-portability tools
First release shipping the driving + session-portability tool surface. The published 0.1.x line was the debugger core only; these 9 tools merged after v0.1.3 and reach npm for the first time here. 48 tools across 11 categories.
New MCP tools
Form driving
fill— set the value of a text<input>/<textarea>/ contenteditableselect_option— choose an<option>by value, label, or indexcheck/uncheck— idempotent checkbox + radio togglingsuggest_locator— recommend a robust, semantic locator for an element
Session portability
export_storage_state/load_storage_state— Playwright-style storage-state round-trip (localStorage + cookies)get_cookies/set_cookies— cookie read/write (redacted on read)
Also in this release
- Published the LocatorSpec contract + shared locator runtime; the
domtools were refactored onto it. - Hardened
SECURITY.md(agent-operator threat model + deployment hardening) and README updates.
Install
npm install -g cdp-mcp@0.2.0
Published from CI via GitHub Actions OIDC trusted publishing, with SLSA build provenance attached.
Full changelog: v0.1.3...v0.2.0
v0.1.3 — DeepSeek/Kimi reasoning + cache accounting (eval harness)
Eval-harness-only release. The production MCP server is unchanged — all changes are under evals/.
Changes since v0.1.2
- DeepSeek V4 reasoning in the L4 harness —
reasoning_contentcaptured to the.thinkingsidecar and replayed on tool-call turns (V4 requires it, same as Kimi/Moonshot; verified against the live API). (#9, LEO-233) - Per-request output cap raised 4096 → 32K so reasoning turns aren't truncated mid-thought (
finish_reason: length). (#7) - Prompt-cache accounting for DeepSeek + Moonshot — cache hits billed at the cache-read rate (
prompt_cache_hit_tokens/prompt_tokens_details.cached_tokens), with cached clamped ≤ prompt tokens. Fixes v1 over-billing (a DeepSeek run dropped $13.43 → $0.74).
Full Changelog: v0.1.2...v0.1.3
v0.1.2
Fixes
SSE transport fixes (#1) — surfaced via GitHub Copilot CLI over SSE:
- Tools now register over SSE. Emit
notifications/tools/list_changedonce after the client initializes, so clients that gate their firsttools/liston that notification no longer load zero tools. - Idle SSE connections stay alive. Send periodic
: keepalivecomment frames so streams aren't torn down by the HTTP body-idle timeout (~12 min). Tunable viaCDP_MCP_SSE_KEEPALIVE_MS(default 25s;0disables).
Also: an import-safe main() guard so the entrypoint can be unit-tested, and the McpServer serverInfo version now tracks the package version.
v0.1.1
First release published automatically via GitHub Actions using npm trusted publishing (OIDC) with build provenance. No functional change from v0.1.0 — validates the automated, tokenless release pipeline.
v0.1.0 — initial public release
First public release of cdp-mcp — a Model Context Protocol (MCP) server that exposes the Chrome DevTools Protocol to AI agents as a TypeScript-aware frontend debugger.
Highlights
- 39 MCP tools: browser launch/attach, source-mapped breakpoints, stepping, paused-frame inspection (call stack / scope / evaluate), buffered console + network, and structured DOM driving (
locate/wait_for/get_form_state). - Agents work in TypeScript source coordinates; the server resolves source maps and translates to JS for CDP under the hood.
- stdio transport (default, for Claude Code / Copilot CLI) and SSE transport (loopback) for service mode.
- Backed by an L1–L4 test pyramid: unit, fake-CDP contract, real-browser e2e, and a multi-vendor LLM agent-eval harness.
Install
npm install
npm run build
node dist/index.js # stdio MCP transportSee the README to wire it into Claude Code. Alpha — see SECURITY.md before exposing the SSE transport.