Skip to content

Releases: debugmcp/mcp-debugger

Release 0.23.0

Choose a tag to compare

@github-actions github-actions released this 09 Jul 15:20
092377d

🎉 Release 0.23.0

[0.23.0] - 2026-07-09

Added

  • verifyTimeout parameter on create_debug_session and attach_to_process — controls how long (ms) attach mode waits for the debugger to report at least one thread before failing the attach (default: 5000, max: 600000). Increase for targets slow to become debuggable, e.g. a busy or warming JVM (#147, fixes #143)
  • timeout parameter on evaluate_expression and redefine_classes — controls the max time (ms) to wait for the operation to complete (default: 30000, max: 600000) (#148, fixes #142)

Fixed

  • Slow step/pause no longer reported as failurestep_over, step_into, step_out, pause_execution, and continue_execution now return pending: true with a truthful "still running" message instead of success: false when the operation outlives its grace window (#144)
  • Python attach handshake — attach-first DAP handshake sequencing for debugpy attach (#149, fixes #145)
  • DAP disconnect ordering — send DAP disconnect before destroying the socket; Windows launch-mode tree-kill now runs first, with an already-exited PID guard (#157, fixes #156)
  • Dev proxy backend output — line-buffered and sanitized before logging, matching the main proxy's handling (#158, fixes #154)

Security

  • Comprehensive stderr/env secret-redaction audit across the proxy and dev-proxy, closing gaps where adapter/backend output could leak into logs or tool errors unsanitized (#150, #152, #155, fixes #146, #151, #153)
  • All 23 open dependency advisories resolved via pnpm.overrides (hono, fast-uri, vite, qs, ip-address, esbuild, brace-expansion); CI's pnpm audit step is no longer continue-on-error (#160)
  • CI workflow token permissions job-scoped; the last unpinned GitHub Action (dependabot/fetch-metadata) SHA-pinned; a stray compiled Go example binary untracked (#161)
  • Dependency pinning sweep — hash-pinned pip installs (pip, debugpy), pnpm installed via corepack instead of npm install -g, ruby:3.3-slim pinned by digest, Dependabot now covers the docker ecosystem (#163)
  • Signed release artifacts — GitHub releases now ship the published npm tarballs alongside SLSA provenance (multiple.intoto.jsonl), verifiable with slsa-verifier (#164)
  • OpenSSF Scorecard 6.0 → 8.7 and an OpenSSF Best Practices "passing" badge (#160#164, #174)

Changed

  • Added fast-check property-based tests covering the log sanitizers, stream line-buffering, and DAP wire framing — caught and fixed a real bug where env vars named __proto__ were silently dropped by the sanitizer (#162)

📦 Installation

Docker:

docker pull debugmcp/mcp-debugger:0.23.0

npm (global install):

npm install -g @debugmcp/mcp-debugger@0.23.0

npx (no install):

npx @debugmcp/mcp-debugger@0.23.0 stdio

PyPI:

pip install debug-mcp-server-launcher==0.23.0

Optional adapters:

npm install -g @debugmcp/adapter-python
npm install -g @debugmcp/adapter-ruby
npm install -g @debugmcp/adapter-mock

📚 Documentation

See the README for usage instructions.

Release 0.22.0

Choose a tag to compare

@github-actions github-actions released this 06 Jul 06:55
4325cb1

🎉 Release 0.22.0

[0.22.0] - 2026-07-06

Added

  • Ruby debugging support – launch and attach via rdbg (debug gem) DAP, including remote attach to containers and Kubernetes pods through port forwarding; conditional breakpoints, locals, repl-context expression evaluation, detach/re-attach (adapted from PR #88, contributed by @Poyraxx)
  • Direct-connect attach – adapter policies can now return a connect-mode spawn config to attach straight to an already-listening DAP server without spawning an adapter process; policy selection is driven by the session language via a single shared getPolicyForLanguage() mapping instead of adapter-command sniffing
  • Ruby documentationdocs/ruby/README.md user guide with verified launch/attach flows and Docker/Kubernetes remote-attach walkthroughs (examples/ruby/remote-attach/)

Fixed

  • JavaScript attach mode – establish the js-debug child session when attaching, so breakpoints, stepping, and inspection work for attached Node.js processes (#131, fixes #124)
  • Truthful attach failuresattach_to_process now reports adapter/connection errors instead of returning an empty success (#129)
  • pause_execution state – reports the correct session state instead of a stale one (#119)
  • Proxy lifecycle – the per-session proxy process is stopped when a debuggee terminates naturally, eliminating leaked proxy processes (#127)
  • Server orphan self-defense – a stdin watchdog shuts the server down when its MCP client disappears, and backend shutdown is graceful across stdio/http/sse commands (#130)
  • Proxy bootstrap heartbeat – removed a one-sided heartbeat that could kill healthy proxies during slow startups (#126, fixes #123)
  • Logging – per-process log files prevent multi-process rotation races, and a rotation-failure latch stops runaway retry loops (#128, fixes #121)
  • Python interpreter validation – a configured pythonPath is validated for debugpy availability up front, with a clear error instead of a hang (#107, fixes #106)
  • Java adapter vendoring – honors SKIP_ADAPTER_VENDOR and skips gracefully on a javac older than JDK 21 (#116)
  • Attach sessions no longer apply host-side file existence checks to breakpoint paths — attach targets may run on a remote filesystem (container, pod, other machine)
  • test:unit now actually runs the per-adapter unit suites on Windows (the tests/adapters/*/unit glob never expanded under cmd.exe)
  • CLI bundle prepare-pack workspace list updated for new adapter packages

Changed

  • Test suite parallelized and hardened via Vitest projects — unit suite runtime dropped from ~12 minutes to ~10 seconds (#110)
  • README refreshed with current capabilities and language matrix (#87)

Dependencies

  • Bumped commander 14 → 15. The CLI surface is unchanged; commander is bundled into the published CLI, so end-user installs are unaffected. (#92)

📦 Installation

Docker:

docker pull debugmcp/mcp-debugger:0.22.0

npm (global install):

npm install -g @debugmcp/mcp-debugger@0.22.0

npx (no install):

npx @debugmcp/mcp-debugger@0.22.0 stdio

PyPI:

pip install debug-mcp-server-launcher==0.22.0

Optional adapters:

npm install -g @debugmcp/adapter-python
npm install -g @debugmcp/adapter-ruby
npm install -g @debugmcp/adapter-mock

📚 Documentation

See the README for usage instructions.

Release 0.21.0

Choose a tag to compare

@github-actions github-actions released this 31 May 03:02
72a59b0

🎉 Release 0.21.0

[0.21.0] - 2026-05-30

Changed

  • Minimum Node.js raised to 22. All packages now declare engines.node >=22.0.0, and the Docker image builds on node:22-slim. Node 18 and 20 are no longer supported (Node 20 reached end-of-life April 2026).

Dependencies

  • Bumped which 6 → 7 (requires Node 22+). The API is unchanged, and which is bundled into the @debugmcp/mcp-debugger npx CLI, so end-user installs are unaffected. (supersedes #76)

📦 Installation

Docker:

docker pull debugmcp/mcp-debugger:0.21.0

npm (global install):

npm install -g @debugmcp/mcp-debugger@0.21.0

npx (no install):

npx @debugmcp/mcp-debugger@0.21.0 stdio

PyPI:

pip install debug-mcp-server-launcher==0.21.0

Optional adapters:

npm install -g @debugmcp/adapter-python
npm install -g @debugmcp/adapter-mock

📚 Documentation

See the README for usage instructions.

Release 0.20.0

Choose a tag to compare

@github-actions github-actions released this 30 Mar 04:05

🎉 Release 0.20.0

[0.20.0] - 2026-03-29

Added

  • redefine_classes MCP tool — hot-swap changed Java classes into a running JVM without restarting the debug session (21 MCP tools total) (PR #26, contributed by @Finomosec)
  • E2E tests for redefine_classes and Java ClassPrepareEvent/BreakpointEvent race condition
  • redefine_classes documentation in docs/java/README.md

Fixed

  • Attach-mode stopOnEntry — restore default to preserve paused state; pass stopOnEntry through to attach and default to false in create_debug_session
  • Java event loop race — prevent ClassPrepareEvent from resuming stopped threads (PR #27, contributed by @Finomosec)
  • Java attach suspend — suspend VM on attach when stopOnEntry is true
  • Remove dead ProcessAdapter class and unrecognized --no-wait arg from debugpy E2E test

Changed

  • Comprehensive osoji sweeps — dead code removal, stale docs rewrite, test robustness improvements
  • Replace istanbul ignore comments with real unit tests
  • Fix comprehensive test matrix failures; add dotnet/java language coverage

📦 Installation

Docker:

docker pull debugmcp/mcp-debugger:0.20.0

npm (global install):

npm install -g @debugmcp/mcp-debugger@0.20.0

npx (no install):

npx @debugmcp/mcp-debugger@0.20.0 stdio

PyPI:

pip install debug-mcp-server-launcher==0.20.0

Optional adapters:

npm install -g @debugmcp/adapter-python
npm install -g @debugmcp/adapter-mock

📚 Documentation

See the README for usage instructions.

Release 0.19.0

Choose a tag to compare

@github-actions github-actions released this 22 Mar 14:34

🎉 Release 0.19.0

[0.19.0] - 2026-03-22

Added

  • .NET/C# debug adapter — full debugging via netcoredbg with launch/attach modes, conditional breakpoints, exception breakpoints, TCP-to-stdio bridge, and Portable PDB support (PR #24, contributed by @bob7123)
  • list_threads MCP tool — list all threads in the debugged process (20 MCP tools total)
  • pause_execution enhanced — optional threadId parameter to pause a specific thread
  • Java pause commandpause_execution support for Java adapter
  • Java per-breakpoint suspend policy — control thread suspension behavior per breakpoint (PR #25, contributed by @Finomosec)
  • Batteries-included CLI bundle — Rust, Java, and .NET adapters now bundled in @debugmcp/mcp-debugger
  • Pause test programs for Go, .NET, Java
  • Regression tests for Go and .NET pause fixes
  • Adapter registry, server coverage, and Go policy unit tests
  • Bridge fallback and bundle asset verification tests
  • Disconnect/detach safety tests

Fixed

  • Go and .NET pause workflow failures
  • Latent bugs in adapter loader, mock DAP parser, Java adapter, and Docker entrypoint
  • Fail fast with clear error when Docker daemon is not running
  • netcoredbg bridge path resolution for spaces in paths and NPX bundle variants
  • dapLaunchArgs.program preservation for compiled languages
  • Comprehensive osoji audit remediations (runtime bugs, dead code, stale docs)
  • 0% coverage files addressed after Vitest 4 upgrade

Changed

  • Adapter loading, error handling, logging, and language-specific documentation updated
  • Test robustness improvements and dead code removal

📦 Installation

Docker:

docker pull debugmcp/mcp-debugger:0.19.0

npm (global install):

npm install -g @debugmcp/mcp-debugger@0.19.0

npx (no install):

npx @debugmcp/mcp-debugger@0.19.0 stdio

PyPI:

pip install debug-mcp-server-launcher==0.19.0

Optional adapters:

npm install -g @debugmcp/adapter-python
npm install -g @debugmcp/adapter-mock

📚 Documentation

See the README for usage instructions.

Release 0.18.1

Choose a tag to compare

@github-actions github-actions released this 11 Mar 17:09

🎉 Release 0.18.1

[0.18.1] - 2026-03-11

Added

  • Java FQCN (Fully Qualified Class Name) support as breakpoint file parameter — pass class names like com.example.MyClass instead of file paths

Fixed

  • Multi-breakpoint aggregation and sourcePath-based breakpoint cleanup
  • Moved isJavaFqcn into adapter policy layer following Open/Closed principle

📦 Installation

Docker:

docker pull debugmcp/mcp-debugger:0.18.1

npm (global install):

npm install -g @debugmcp/mcp-debugger@0.18.1

npx (no install):

npx @debugmcp/mcp-debugger@0.18.1 stdio

PyPI:

pip install debug-mcp-server-launcher==0.18.1

Optional adapters:

npm install -g @debugmcp/adapter-python
npm install -g @debugmcp/adapter-mock

📚 Documentation

See the README for usage instructions.

Release 0.18.0

Choose a tag to compare

@github-actions github-actions released this 06 Mar 12:17

🎉 Release 0.18.0

[0.18.0] - 2026-03-05

Added

  • Go debugging support – full Delve DAP adapter with debug, test, exec, replay, and core modes, goroutine-aware stack traces, and automatic dlv detection (contributed by @swinyx)
  • Java debugging support – JDI bridge (JdiDapServer.java) with launch and attach modes, variable inspection, and deferred breakpoints via ClassPrepareRequest (contributed by @roofpig95008)
  • Java attach mode – connect to running JVMs via JDWP agent for debugging servers and complex applications
  • Java expression evaluation – full expression evaluator supporting field access, method calls, array indexing, arithmetic, string concatenation, casting, instanceof, ternary, and unary operators
  • Java conditional breakpoints – conditions evaluated server-side via the expression evaluator
  • Java documentationdocs/java/README.md user guide covering prerequisites, JDI bridge architecture, and troubleshooting
  • CI Go + Java toolchains – workflow now installs Go 1.21, Delve, and JDK 21 for cross-platform E2E testing
  • Dev proxy – lightweight MCP proxy for hot-reloading mcp-debugger during development without restarting Claude Code
  • Dev proxy STDIO backend transport mode – STDIO transport option for the dev proxy

Changed

  • Java backend – replaced KDA (kotlin-debug-adapter) and stdio-tcp-bridge with a single JDI bridge (JdiDapServer.java) using com.sun.jdi.* directly; zero external dependencies, compiles on first use
  • Java minimum JDK – bumped from JDK 11+ to JDK 21+ to match --release 21 compilation target
  • Removed dead sendConfigDoneWithAttach/sendConfigDoneWithLaunch code paths

Fixed

  • Java inner class breakpoints – fixed JDWP ClassPrepareRequest filter patterns (*ClassName$* silently fails; changed to ClassName$*)
  • Java instanceof with interfacesisSubtypeOf now handles InterfaceType subjects and recursive interface-extends-interface chains
  • Java thread ID overflow – changed from int to long thread IDs throughout the DAP bridge
  • Java frame ID collisions – replaced arithmetic encoding (threadId * 100000 + frameIndex) with lookup-table approach
  • Java breakpoint IDs – added unique, monotonically increasing breakpoint IDs per DAP spec
  • Java thread safety – used ConcurrentHashMap and AtomicInteger for shared state; added synchronized blocks for frame cache access
  • Java short-circuit evaluation&& and || now properly short-circuit
  • Java thread discovery – discover JVM threads via DAP threads request instead of hardcoding threadId=1
  • Java variable access – document and enforce javac -g requirement for LocalVariableTable (JDI needs it for local variable inspection)
  • Block EventSource phantom reconnection in SSE transport
  • Coerce stringified tool arguments from SSE transport
  • Docker Java support, crash safety, and continue-execution state race
  • Auto-detach safety for attach sessions
  • Prevent orphan child processes from holding ports after SSE crash
  • Prevent SSE backend from crashing immediately after startup
  • Two-phase initialized event handling for Delve on Windows
  • Replace printf-generated Docker entry.sh with version-controlled script
  • Downgrade missing debugpy to warning for virtualenv support
  • Prevent Docker path double-prefixing with idempotent resolution
  • Bundled Go adapter and mock-adapter-process for npx distribution
  • Resolved workspace:* dependency resolution during pnpm pack
  • Fixed cross-test pollution from process.env.PATH in Go/Python unit tests
  • Added Go adapter to Dockerfile and fixed Windows volume mount paths

Removed

  • Java jdb adapter – jdb text-parsing approach proved too fragile; replaced by JDI bridge

📦 Installation

Docker:

docker pull debugmcp/mcp-debugger:0.18.0

npm (global install):

npm install -g @debugmcp/mcp-debugger@0.18.0

npx (no install):

npx @debugmcp/mcp-debugger@0.18.0 stdio

PyPI:

pip install debug-mcp-server-launcher==0.18.0

Optional adapters:

npm install -g @debugmcp/adapter-python
npm install -g @debugmcp/adapter-mock

📚 Documentation

See the README for usage instructions.

Release v0.17.0

Choose a tag to compare

@github-actions github-actions released this 22 Nov 16:33

🎉 Release v0.17.0

📦 Installation

Docker:

docker pull debugmcp/mcp-debugger:v0.17.0

npm (global install):

npm install -g @debugmcp/mcp-debugger@v0.17.0

npx (no install):

npx @debugmcp/mcp-debugger@v0.17.0 stdio

PyPI:

pip install debug-mcp-server-launcher==v0.17.0

Optional adapters:

npm install -g @debugmcp/adapter-python
npm install -g @debugmcp/adapter-mock

📚 Documentation

See the README for usage instructions.

Release v0.16.0

Choose a tag to compare

@github-actions github-actions released this 10 Nov 14:54

🎉 Release v0.16.0

📦 Installation

Docker:

docker pull debugmcp/mcp-debugger:v0.16.0

npm (global install):

npm install -g @debugmcp/mcp-debugger@v0.16.0

npx (no install):

npx @debugmcp/mcp-debugger@v0.16.0 stdio

PyPI:

pip install debug-mcp-server-launcher==v0.16.0

Optional adapters:

npm install -g @debugmcp/adapter-python
npm install -g @debugmcp/adapter-mock

📚 Documentation

See the README for usage instructions.

Release v0.14.1

Choose a tag to compare

@github-actions github-actions released this 16 Sep 11:01

🎉 Release v0.14.1

📦 Installation

Docker:

docker pull debugmcp/mcp-debugger:v0.14.1

npm:

npm install -g @debugmcp/mcp-debugger@v0.14.1

PyPI:

pip install debug-mcp-server-launcher==v0.14.1

📚 Documentation

See the README for usage instructions.