Releases: debugmcp/mcp-debugger
Release 0.20.0
🎉 Release 0.20.0
[0.20.0] - 2026-03-29
Added
redefine_classesMCP 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_classesand Java ClassPrepareEvent/BreakpointEvent race condition redefine_classesdocumentation indocs/java/README.md
Fixed
- Attach-mode stopOnEntry — restore default to preserve paused state; pass
stopOnEntrythrough to attach and default tofalseincreate_debug_session - Java event loop race — prevent
ClassPrepareEventfrom resuming stopped threads (PR #27, contributed by @Finomosec) - Java attach suspend — suspend VM on attach when
stopOnEntryis true - Remove dead
ProcessAdapterclass and unrecognized--no-waitarg 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.0npm (global install):
npm install -g @debugmcp/mcp-debugger@0.20.0npx (no install):
npx @debugmcp/mcp-debugger@0.20.0 stdioPyPI:
pip install debug-mcp-server-launcher==0.20.0Optional adapters:
npm install -g @debugmcp/adapter-python
npm install -g @debugmcp/adapter-mock📚 Documentation
See the README for usage instructions.
Release 0.19.0
🎉 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_threadsMCP tool — list all threads in the debugged process (20 MCP tools total)pause_executionenhanced — optionalthreadIdparameter to pause a specific thread- Java pause command —
pause_executionsupport 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.programpreservation 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.0npm (global install):
npm install -g @debugmcp/mcp-debugger@0.19.0npx (no install):
npx @debugmcp/mcp-debugger@0.19.0 stdioPyPI:
pip install debug-mcp-server-launcher==0.19.0Optional adapters:
npm install -g @debugmcp/adapter-python
npm install -g @debugmcp/adapter-mock📚 Documentation
See the README for usage instructions.
Release 0.18.1
🎉 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.MyClassinstead of file paths
Fixed
- Multi-breakpoint aggregation and sourcePath-based breakpoint cleanup
- Moved
isJavaFqcninto adapter policy layer following Open/Closed principle
📦 Installation
Docker:
docker pull debugmcp/mcp-debugger:0.18.1npm (global install):
npm install -g @debugmcp/mcp-debugger@0.18.1npx (no install):
npx @debugmcp/mcp-debugger@0.18.1 stdioPyPI:
pip install debug-mcp-server-launcher==0.18.1Optional adapters:
npm install -g @debugmcp/adapter-python
npm install -g @debugmcp/adapter-mock📚 Documentation
See the README for usage instructions.
Release 0.18.0
🎉 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
dlvdetection (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 documentation –
docs/java/README.mduser 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) usingcom.sun.jdi.*directly; zero external dependencies, compiles on first use - Java minimum JDK – bumped from JDK 11+ to JDK 21+ to match
--release 21compilation target - Removed dead
sendConfigDoneWithAttach/sendConfigDoneWithLaunchcode paths
Fixed
- Java inner class breakpoints – fixed JDWP ClassPrepareRequest filter patterns (
*ClassName$*silently fails; changed toClassName$*) - Java instanceof with interfaces –
isSubtypeOfnow handlesInterfaceTypesubjects and recursive interface-extends-interface chains - Java thread ID overflow – changed from
inttolongthread 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
ConcurrentHashMapandAtomicIntegerfor shared state; addedsynchronizedblocks 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 -grequirement 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 duringpnpm pack - Fixed cross-test pollution from
process.env.PATHin 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.0npm (global install):
npm install -g @debugmcp/mcp-debugger@0.18.0npx (no install):
npx @debugmcp/mcp-debugger@0.18.0 stdioPyPI:
pip install debug-mcp-server-launcher==0.18.0Optional adapters:
npm install -g @debugmcp/adapter-python
npm install -g @debugmcp/adapter-mock📚 Documentation
See the README for usage instructions.
Release v0.17.0
🎉 Release v0.17.0
📦 Installation
Docker:
docker pull debugmcp/mcp-debugger:v0.17.0npm (global install):
npm install -g @debugmcp/mcp-debugger@v0.17.0npx (no install):
npx @debugmcp/mcp-debugger@v0.17.0 stdioPyPI:
pip install debug-mcp-server-launcher==v0.17.0Optional adapters:
npm install -g @debugmcp/adapter-python
npm install -g @debugmcp/adapter-mock📚 Documentation
See the README for usage instructions.
Release v0.16.0
🎉 Release v0.16.0
📦 Installation
Docker:
docker pull debugmcp/mcp-debugger:v0.16.0npm (global install):
npm install -g @debugmcp/mcp-debugger@v0.16.0npx (no install):
npx @debugmcp/mcp-debugger@v0.16.0 stdioPyPI:
pip install debug-mcp-server-launcher==v0.16.0Optional adapters:
npm install -g @debugmcp/adapter-python
npm install -g @debugmcp/adapter-mock📚 Documentation
See the README for usage instructions.
Release v0.14.1
🎉 Release v0.14.1
📦 Installation
Docker:
docker pull debugmcp/mcp-debugger:v0.14.1npm:
npm install -g @debugmcp/mcp-debugger@v0.14.1PyPI:
pip install debug-mcp-server-launcher==v0.14.1📚 Documentation
See the README for usage instructions.
Release v0.14.0
🎉 Release v0.14.0
📦 Installation
Docker:
docker pull debugmcp/mcp-debugger:v0.14.0npm:
npm install -g @debugmcp/mcp-debugger@v0.14.0PyPI:
pip install debug-mcp-server-launcher==v0.14.0📚 Documentation
See the README for usage instructions.
Release v0.13.0
🎉 Release v0.13.0
📦 Installation
Docker:
docker pull debugmcp/mcp-debugger:v0.13.0npm:
npm install -g @debugmcp/mcp-debugger@v0.13.0PyPI:
pip install debug-mcp-server-launcher==v0.13.0📚 Documentation
See the README for usage instructions.