{"slug": "mcp-windbg-reaches-1-0-0-now-with-kernel-debugging", "title": "mcp-windbg reaches 1.0.0 now with kernel debugging", "summary": "Mcp-windbg released version 1.0.0, adding kernel debugging support via kd.exe and introducing opaque session IDs for managing debugger sessions. The update includes breaking changes to tool naming and session handling, along with per-call timeouts and improved stability for live debugging.", "body_md": "First stable release, and the one where kernel debugging actually works.\n\nThe tool surface is redesigned around opaque **session ids** and split by debugger engine:\n\nuser-mode (`cdb.exe`\n\n) and kernel (`kd.exe`\n\n). **This is a breaking change** for clients of the\n\n0.x tools. Every `*_windbg_*`\n\ntool has a new name, listed under Changed.\n\n### Added\n\n**Kernel debugging**-`open_kd_session`\n\n,`run_kd_command`\n\n, and`close_kd_session`\n\nattach to a\n\nkernel target over KDNET (`net:port=,key=`\n\n), a named pipe (`com:pipe,port=\\\\.\\pipe\\...`\n\n), or\n\nserial, driven by`kd.exe`\n\n. This was impossible in 0.x: every remote connection was launched\n\nwith`-remote`\n\n, which is user-mode only, so a kernel target could never connect ([#62](https://github.com/svnscha/mcp-windbg/issues/62),[#47](https://github.com/svnscha/mcp-windbg/issues/47)).**Kernel sessions arrive already stopped**-`open_kd_session`\n\nwaits for the target's connect\n\nbanner and breaks in for you, so there is no separate break-in step.**Closing a kernel session sets the machine running again**-`close_kd_session`\n\nsends`g`\n\nby\n\ndefault (`resume: true`\n\n). Pass`resume: false`\n\nonly to leave the target halted on purpose.- point the server at a specific`--kd-path`\n\n`kd.exe`\n\n, the counterpart to`--cdb-path`\n\n.\n\nKernel sessions need their own option because`cdb.exe`\n\ncannot drive a kernel cable.**Session ids**- every`open_*`\n\nreturns an opaque`session_id`\n\n(`cdb-…`\n\n/`kd-…`\n\n) on its first\n\noutput line, and`run_*`\n\n,`close_*`\n\n, and`send_ctrl_break`\n\naddress a session by that id. The\n\nkind is enforced: a`cdb`\n\nid passed to`run_kd_command`\n\n(or the reverse) returns an error\n\nnaming the right tool.**Per-call timeouts**-`timeout_seconds`\n\non any`open_*`\n\n/`run_*`\n\noverrides that tool's\n\ndefault (`open_cdb_dump`\n\n180s, connects 60s,`run_cdb_command`\n\n60s,`run_kd_command`\n\n120s).\n\nThe server-wide`--timeout`\n\n(default 60s) is the floor.- a guided investigation of a live user-mode target: break in,`remote-triage`\n\nprompt\n\norient, then track down the hang or crash.- the same for a kernel target, including telling a real bugcheck`kernel-triage`\n\nprompt\n\napart from a plain break-in, and releasing the machine at the end.\n\n### Changed\n\n**BREAKING**-`list_windbg_dumps`\n\nis now`list_dumps`\n\n.**BREAKING**-`open_windbg_dump`\n\nis now`open_cdb_dump`\n\n.**BREAKING**-`open_windbg_remote`\n\nis now`open_cdb_remote`\n\n.**BREAKING**-`run_windbg_cmd`\n\nis now`run_cdb_command`\n\n(user mode) or`run_kd_command`\n\n(kernel). The`connection_type`\n\ndiscriminator is gone; the tool name says which engine.**BREAKING**-`close_windbg_dump`\n\nand`close_windbg_remote`\n\nare both now`close_cdb_session`\n\n.**BREAKING**-`send_ctrl_break`\n\ntakes a`session_id`\n\n.**BREAKING**- sessions are addressed by id, not by dump path or connection string, and`run_*`\n\nno longer opens one implicitly: open a session first. Reopening the same dump gives you an\n\nindependent session instead of silently reusing one.**Module layout**- kernel sessions live in`kd_session.py`\n\nand user-mode in`cdb_session.py`\n\n,\n\nover a shared`debug_session.py`\n\nthat owns the subprocess and marker protocol.**Docs**- README and the docs site rewritten around the new tools and the session-id flow,\n\nwith a \"Debug a kernel target\" guide, a Development page, and client guides for Claude Code and\n\nAutohand Code ([#63](https://github.com/svnscha/mcp-windbg/pull/63)). Setup instructions standardize on`pip install mcp-windbg`\n\nand\n\n`python -m mcp_windbg`\n\n.**Dependencies**- runtime floors refreshed (`mcp>=1.28.1`\n\n,`pydantic>=2.13.4`\n\n,\n\n`starlette>=1.3.1`\n\n,`uvicorn>=0.51.0`\n\n), plus`pytest>=9.1.1`\n\n, and`uv.lock`\n\nregenerated. The\n\nstreamable-http transport was smoke-tested against the Starlette 0.x to 1.x bump.\n\n### Fixed\n\n**A slow command no longer wedges a live session.** When a command outruns its timeout the\n\ndebugger is still busy running it, so the server now breaks in with CTRL+BREAK and\n\nresynchronizes before reporting the timeout. The session is usable again for the next command\n\ninstead of stranded.**A slow command's output is no longer attributed to the next command.** Every command waits\n\non its own unique completion marker, so late output from one command can never be mistaken for\n\nthe next one's result.**Debugger processes are cleaned up on close.**`cdb.exe`\n\nlaunched through the Microsoft Store\n\nexecution aliases spawns a child that a plain terminate left behind, still holding the target.\n\nShutdown now does a Windows process-tree kill.\n\n### Removed\n\n- All\n`*_windbg_*`\n\ntool names, and the`connection_type`\n\nparameter on`run_windbg_cmd`\n\nand\n\n`send_ctrl_break`\n\n, superseded by the`cdb`\n\n/`kd`\n\nsplit. - Session reuse by dump path or connection string.\n`open_*`\n\nalways creates a fresh session and\n\nreturns its id.\n\n### Added\n\n**Documentation site**: New MkDocs (Material) user guide under`docs/`\n\n, deployed to GitHub Pages via`pages.yml`\n\n. Covers getting started, the use cases, and a reference for the command-line options, tools, and client configuration. Content migrated and trimmed from the project wiki.**Prompts reference**: Documented the built-in`dump-triage`\n\nMCP prompt and its`dump_path`\n\nargument (`docs/reference/prompts.md`\n\n).**Usage guide coverage**: New use-case pages for running the server over HTTP (`Debug from another machine`\n\n) and scrubbing tool output (`Redact sensitive data`\n\n), plus WER auto-capture setup in the triage guide and the`dump-triage`\n\nprompt in the crash-dump guide. Documented the HTTP transport's lack of authentication, that attach-by-PID is unsupported, and that sessions are concurrent.\n\n### Changed\n\n**Package metadata**: Filled in distribution metadata so`pip show`\n\n/ PyPI are complete - added the author/maintainer email, project URLs (Homepage, Repository, Issues, Changelog), and classifiers for Windows, console environment, and the Debuggers/QA topics ([#36](https://github.com/svnscha/mcp-windbg/issues/36))**Contributor guide**: Migrated`AGENTS.md`\n\nto`CLAUDE.md`\n\nand added`.claude/rules/`\n\n(Markdown typography and documentation authoring), plus`scripts/Format-Docs.ps1`\n\nto enforce the typography rules**Docs tooling**: Bumped the docs build dependencies in`requirements-docs.txt`\n\nto their latest patch floors -`mkdocs>=1.6.1`\n\n,`mkdocs-material>=9.7.6`\n\n,`pymdown-extensions>=10.21.3`\n\n(consolidates[#51](https://github.com/svnscha/mcp-windbg/pull/51),[#52](https://github.com/svnscha/mcp-windbg/pull/52),[#53](https://github.com/svnscha/mcp-windbg/pull/53))**Test suite**: Replaced the ad-hoc tests with a declarative end-to-end harness. Each`tests/scenarios/*.yaml`\n\nruns against a really-hosted`python -m mcp_windbg`\n\nserver driven by a real MCP client (only the LLM is faked). Live scenarios carry`live`\n\n/`remote`\n\nmarkers and skip cleanly without CDB, so`-m \"not live\"`\n\nruns anywhere. Adds`pyyaml`\n\nas a dev dependency.**Coverage**: The harness hosts the server under`coverage run --parallel-mode`\n\n(set`MCP_WINDBG_COVERAGE`\n\n), so coverage reflects the subprocess where tool dispatch runs rather than the test process. The suite reaches 90%+; CI enforces a floor with`coverage report --fail-under=88`\n\n(margin below the ~91% actual for cross-version and cdb-output jitter). Code that cannot be line-measured end-to-end (the streamable-http transport on Windows, atexit cleanup, debug-only and defensive branches) is excluded with documented`# pragma: no cover`\n\nand`exclude_also`\n\nrules. Adds`coverage`\n\nas a dev dependency.**LFS dumps are mandatory**: a scenario whose`requires.dump`\n\nfile is missing now hard-fails (run`git lfs pull`\n\n) instead of skipping, so a half-set-up checkout is a loud error rather than silent green.\n\n### Removed\n\n**Dead code**: Removed three unused functions surfaced while raising test coverage -`server.execute_common_analysis_commands`\n\n,`CDBSession.get_session_id`\n\n, and`prompts.get_available_prompts`\n\n. None had callers.\n\n### Fixed\n\n**Stdio server resilience**: The stdio transport no longer crashes on a malformed input line.`serve()`\n\nnow uses the SDK default`raise_exceptions=False`\n\n, so an unparseable line (e.g. when the server is run directly in a terminal) is logged instead of tearing down the whole process ([#45](https://github.com/svnscha/mcp-windbg/issues/45))\n\n### Added\n\n**Tool Content Filter Script Hooks**: Added`--filter-script`\n\nso trusted Python helpers can rewrite string-valued tool arguments and tool text output for use cases like PII redaction without exposing full MCP protocol messages\n\n### Added\n\n**Live Debugger Break-In**: Added the`send_ctrl_break`\n\ntool to interrupt an active CDB/WinDbg session with CTRL+BREAK for dump and remote debugging workflows ([#40](https://github.com/svnscha/mcp-windbg/pull/40))\n\n### Changed\n\n**Dependency Refresh**: Updated runtime dependency floors for`mcp`\n\n,`pydantic`\n\n,`starlette`\n\n, and`uvicorn`\n\n, and refreshed test and validation tooling versions in`pyproject.toml`\n\n**CI Dependency Maintenance**: Updated GitHub Actions dependencies for Python setup and artifact handling in release workflows ([#39](https://github.com/svnscha/mcp-windbg/pull/39),[#42](https://github.com/svnscha/mcp-windbg/pull/42))\n\n### Fixed\n\n**Registry Compatibility**: Restored MCP registry compatibility by reverting`server.json`\n\nto the supported`2025-10-17`\n\nschema version**Publishing Workflow**: Adjusted MCP publishing workflows to match current registry publisher behavior\n\n### Fixed\n\n**Registry Schema Migration**: Updated MCP server schema from deprecated`2025-10-17`\n\nto current`2025-12-11`\n\nversion for mcp-publisher compatibility\n\n### Added\n\n**HTTP Transport in Registry**: Added`streamable-http`\n\ntransport configuration to server.json for MCP registry discovery**Schema Validation in CI**: New`validate-server-schema.py`\n\nscript validates server.json against the official MCP schema\n\n### Fixed\n\n**Registry Schema Update**: Updated MCP server schema version from 2025-09-29 to 2025-10-17 for compatibility with registry.modelcontextprotocol.io**CI Cache Warning**: Disabled unnecessary dependency caching in PyPI publish job to eliminate spurious warnings\n\n### Added\n\n**HTTP Transport Support**: New`--transport streamable-http`\n\noption enables HTTP-based communication alongside the default stdio transport ([#31](https://github.com/svnscha/mcp-windbg/issues/31))**MCP Prompt API**: Implemented prompt templates for AI-assisted crash dump triage and analysis ([#25](https://github.com/svnscha/mcp-windbg/issues/25))\n\n### Changed\n\n**Updated Dependencies**: Bumped`mcp`\n\nto 1.17.0,`pydantic`\n\nto 2.12.0, and other dependencies ([#26](https://github.com/svnscha/mcp-windbg/issues/26))**Improved Prompt Templates**: Removed hard-coded model references from prompt templates for better flexibility ([#29](https://github.com/svnscha/mcp-windbg/issues/29))**Updated Dependabot Configuration**: Improved automated dependency update settings\n\n### Fixed\n\n**Session Cleanup**: Prevent stale debugging sessions if`.shutdown()`\n\nfails ([#28](https://github.com/svnscha/mcp-windbg/issues/28))\n\n**What's New in This Release**\n\nThis release focuses on making mcp-windbg more reliable, faster, and easier to use for everyone - from beginners to advanced users.\n\n### New Features\n\n**Core**\n\n- Live debugging session support via\n`open_windbg_remote`\n\nand`close_windbg_remote`\n\n- Extended dump file support for\n`.mdmp`\n\nand`.hdmp`\n\nformats - Microsoft Store WinDbg CDB compatibility\n\n**Devops**\n\n- Set up continuous integration that automatically tests the code with Python versions 3.10 through 3.14\n- Added automatic dependency updates to keep everything secure and up-to-date\n- Streamlined the release process so new versions reach users faster\n\n**Development**\n\n- Switched to\n`uv`\n\n- a lightning-fast Python package manager that's 10-100x faster than pip - Development setup is now much quicker with commands like\n`uv sync`\n\nand`uv run`\n\n- More reliable builds with locked dependency versions\n\n**Documentation**\n\n- Added comprehensive debugging instructions for AI assistants (\n)`AGENTS.md`\n\n- Created structured templates to help analyze crash dumps more effectively (\n)`.github/prompts/dump-triage.prompt.md`\n\n- All documentation is now available in the\n[repository Wiki](https://github.com/svnscha/mcp-windbg/wiki)for easy access - Simplified the main\nto focus on getting started quickly`README.md`\n\n- Added this structured\nto track all project changes`CHANGELOG.md`\n\n### Improvements\n\n**Performance Boost**: Build times are significantly faster thanks to the new tooling\n\n**Enhanced Security**: Automatic scanning and updates keep dependencies secure\n\n### Community Contributions\n\nSpecial thanks to [@sooknarine](https://github.com/sooknarine) for these valuable contributions:\n\n-\n[Find local dumps with other common extensions #6](https://github.com/svnscha/mcp-windbg/pull/6)- Now finds more crash dump files automatically -\n[Add support for remote debugging #10](https://github.com/svnscha/mcp-windbg/pull/10)- Connect to live debugging sessions -\nInitial version as blogged about.", "url": "https://wpnews.pro/news/mcp-windbg-reaches-1-0-0-now-with-kernel-debugging", "canonical_source": "https://github.com/svnscha/mcp-windbg/releases/tag/v1.0.0", "published_at": "2026-07-17 06:28:17+00:00", "updated_at": "2026-07-17 06:51:06.910136+00:00", "lang": "en", "topics": ["developer-tools"], "entities": ["mcp-windbg", "cdb.exe", "kd.exe", "KDNET", "Claude Code", "Autohand Code"], "alternates": {"html": "https://wpnews.pro/news/mcp-windbg-reaches-1-0-0-now-with-kernel-debugging", "markdown": "https://wpnews.pro/news/mcp-windbg-reaches-1-0-0-now-with-kernel-debugging.md", "text": "https://wpnews.pro/news/mcp-windbg-reaches-1-0-0-now-with-kernel-debugging.txt", "jsonld": "https://wpnews.pro/news/mcp-windbg-reaches-1-0-0-now-with-kernel-debugging.jsonld"}}