关于 MCP Server for WinDBG Crash Analysis
这是一个 MCP 服务,将 AI 模型与 WinDbg 连接,用于崩溃转储分析、用户模式远程调试和内核调试。它封装 cdb.exe 和 kd.exe 以无界面方式运行,面向希望使用其他 MCP 客户端或批量分析转储的用户。
主要功能
- 01崩溃转储自动分析与初步诊断
- 02用户模式远程调试,支持 TCP、命名管道和 COM
- 03内核调试,通过 KDNET、命名管道或串口连接
- 04可执行任意 WinDbg 或 KD 命令
- 05支持多个会话同时打开并独立寻址
- 06内置文本过滤脚本,可脱敏敏感信息
适用场景
- 01根因分析 .dmp 崩溃转储或蓝屏转储
- 02调试挂起的实时用户模式进程
- 03批量比对文件夹中的多个转储以寻找共同特征
MCP 相关
该项目是 MCP 服务,向 MCP 客户端暴露 WinDbg 调试工具,如 open_cdb_dump、run_cdb_command 和 open_kd_session 等工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
用于 WinDbg 崩溃分析的 MCP 服务
一个模型上下文协议服务,可将 AI 模型与 WinDbg 连接起来,用于崩溃转储分析、用户模式远程调试和内核调试。
提示
想要直接集成在 WinDbg 中的 AI 调试功能? Microsoft 现已发布官方 WinDbg MCP,从 WinDbg 1.2610.1001.0 开始提供。你可以在 WinDbg 的 MCP 服务 设置中启用它,然后在 VS Code 中通过 GitHub Copilot,或通过 GitHub Copilot CLI, 与当前调试会话聊天。如果这正是你需要的,请从这里开始:
本项目是由社区独立构建的替代方案。它以无头模式运行
cdb.exe/kd.exe, 适用于想要使用其他 MCP 客户端、通过 HTTP 从另一台机器驱动调试器,或在不打开 WinDbg UI 的情况下对大量转储 编写脚本进行分诊的场景。
概览
此服务驱动 Windows 调试器——用户模式使用 CDB(用于转储和 -remote),内核目标(-k)使用 KD——让你可以用自然语言进行调试:“显示调用堆栈并解释此访问冲突”,或 “打开一个内核会话,告诉我哪个驱动程序触发了错误检查。”
它并非能神奇地自动修复问题的工具,而是一个 Python 封装器,可让大模型运行真实的调试器命令并分析输出。
功能
- 崩溃转储分析 - 打开
.dmp/.mdmp/.hdmp,通过一次调用自动完成分诊(!analyze -v、堆栈、模块、线程)。 - 用户模式远程调试 - 通过 TCP、命名管道或 COM,连接到正在运行的
cdb/WinDbg 调试服务(-remote),并按需中断。 - 内核调试 - 通过 KDNET、命名管道或串行连接到内核目标(
-k,由kd.exe驱动);服务会等待目标就绪并为你中断。 - 运行任意 WinDbg/KD 命令 - 用自然语言驱动已打开的会话,执行任意命令(
kb、!process 0 0、!heap、lm等)。 - 会话 ID - 每次打开会话都会返回一个会话 ID;可同时打开多个会话(转储、远程、内核),并分别访问。
- 弹性实时会话 - 支持每次调用的超时;如果耗时较长的实时命令超过超时时间,服务会发送 CTRL+BREAK 中断命令,并重新同步会话,而不会导致会话卡死。
- 多转储分诊 - 在目录中查找并比较多个转储。
- 文本过滤钩子 - 可通过
--filter-script在工具参数和输出离开计算机前对其中的个人身份信息/机密进行脱敏。 - stdio 或 HTTP - 可在本地通过 stdio 运行,也可作为可流式传输的 HTTP 服务运行,供另一台机器驱动。
使用场景
| 你有 | 你想要 | 指南 |
|---|---|---|
来自崩溃或蓝屏的 .dmp | 找出根本原因:异常或错误检查、故障帧以及发生原因 | 分析崩溃转储 |
一个实时用户模式进程(通过 cdb -server) | 中断并检查挂起或实时状态 | 调试远程目标 |
| 一台启用了 KD 的计算机或 VM | 调试驱动程序、错误检查和启动时问题 | 调试内核目标 |
| 一个装满转储文件的文件夹 | 对批次进行分诊并找出共同特征 | 对多个转储文件进行分诊 |
| 一台调试主机,但你在其他地方工作 | 通过 HTTP 从另一台计算机控制它 | 从另一台计算机进行调试 |
| 包含机密或个人身份信息(PII)的转储文件 | 在工具输出离开本机前对其进行清理 | 编辑敏感数据 |
工具
每个 open_* 工具都会返回一个不透明的 session_id(例如 cdb-1a2b3c4d);将其传递给对应的 run_*、close_*、send_ctrl_break 和 wait_for_break 调用。用户模式目标(转储文件和 -remote)在 cdb.exe 下运行;内核目标和内核转储文件在 kd.exe 下运行。
| 工具 | 用途 |
|---|---|
list_dumps | 列出目录中的崩溃转储文件 |
open_cdb_dump | 打开并对崩溃转储文件进行分诊 |
open_cdb_remote | 附加到用户模式远程调试服务(-remote) |
open_kd_session | 附加到内核目标(-k、KDNET / 命名管道 / 串行连接) |
open_kd_dump | 打开并对内核崩溃转储文件进行分诊(MEMORY.DMP、小型转储) |
run_cdb_command | 在用户模式会话中运行命令 |
run_kd_command | 在内核会话中运行命令 |
close_cdb_session | 关闭用户模式会话 |
close_kd_session | 关闭内核会话(恢复目标计算机运行) |
send_ctrl_break | 中断正在运行的实时会话 |
wait_for_break | 等待使用 g 恢复运行的目标再次停止 |
参数、超时和内置分诊提示词见工具参考。
快速开始
说明
**企业环境中的 Claude Code:**当托管设置定义了
allowedMcpServers时, 插件捆绑的 MCP 服务可能会被静默跳过(Claude Code 问题 #32882)。 我建议手动安装并注册服务, 然后可选地添加技能或Agent插件。 该服务仍必须符合组织的 MCP 策略。
先决条件
- Windows,安装了 Windows 调试工具或 Microsoft Store 中的 WinDbg,其中包含
cdb.exe和kd.exe(会自动检测)。 - 任意兼容 MCP 的客户端(Claude Code、GitHub Copilot、Claude Desktop、Cursor、Windsurf、Cline 等)。
Python 本身不是先决条件。以下各安装方式会分别说明所需条件。
在 Claude Code 中安装
如有需要,先安装服务插件,然后可选地添加技能、Agent 或两者:
| 插件 | 服务 | 包含的工作流 |
|---|---|---|
mcp-windbg-uvx | 由插件通过 uvx 启动 | 仅 MCP 工具 |
mcp-windbg-skills | 使用 uvx 插件或你自己的 MCP 连接 | 四个可选技能 |
mcp-windbg-agents | 使用 uvx 插件或你自己的 MCP 连接 | 可选的 crash-analyst Agent |
使用 uvx 运行服务
最简捷的方式:两行即可,无需 pip install,也无需编辑 MCP 配置。添加
十一个工具,并预先配置好符号。技能和 Agent 需单独安装。
/plugin marketplace add svnscha/mcp-windbg
/plugin install mcp-windbg-uvx@mcp-windbg
需要 uv,它提供 uvx:winget install astral-sh.uv。插件会在首次使用时通过它从 PyPI 获取指定版本的服务,因此无需安装其他内容。有关符号和选项,请参阅插件 README。
自行注册服务
如果你不想使用插件,或者已经在运行该软件包:
pip install mcp-windbg
claude mcp add mcp-windbg -s user -e _NT_SYMBOL_PATH="SRV*C:\Symbols*https://msdl.microsoft.com/download/symbols" -- python -m mcp_windbg
需要 Python 3.10 或更高版本。你可以添加以下任一可选插件,以获得引导式工作流或 Agent。
为现有服务添加技能
安装 uvx 插件或自行注册 mcp-windbg 后,可以选择添加这四项技能:
/plugin marketplace add svnscha/mcp-windbg
/plugin install mcp-windbg-skills@mcp-windbg
调用 /mcp-windbg-skills:analyze-dump、/mcp-windbg-skills:debug-remote、
/mcp-windbg-skills:kernel-debug 或 /mcp-windbg-skills:windbg-doctor。
此插件使用你已配置的 MCP 连接,不会添加服务、运行时、符号设置或 crash-analyst Agent。它适用于公开 mcp-windbg 工具的原生可执行文件、Python 安装或 HTTP 服务。
将此插件与用于服务的 uvx 一起安装,即可同时使用服务和技能;也可以不安装此插件,只使用工具。
从捆绑技能的版本升级时,请安装此插件以保留工作流;
它们的调用前缀将从 /mcp-windbg: 更改为 /mcp-windbg-skills:。
无论是否安装这些插件,服务的内置 MCP 提示词都可使用。有关更新或切换插件,请参阅插件指南。
为现有服务添加 Agent
/plugin marketplace add svnscha/mcp-windbg
/plugin install mcp-windbg-agents@mcp-windbg
请说:“在 C:\dumps\app.dmp 上使用 mcp-windbg-agents:crash-analyst Agent”。 它会通过你现有的 MCP 连接分析转储文件,并返回结论、证据和后续步骤。它既不需要 uvx,也不需要技能插件。 从捆绑 Agent 的版本升级时,请安装此插件以保留该 Agent。
无需 Python 即可安装
每个发行版都附带
mcp-windbg.exe:这是一个已签名的可执行文件,包含自身的解释器和所有依赖项。
仍然需要 cdb.exe。将客户端的 command 指向该文件,并且不提供任何 args。
发行版还会发布 SHA256SUMS,且二进制文件经过代码签名,因此两者均可验证:
(Get-FileHash .\mcp-windbg.exe -Algorithm SHA256).Hash
Get-AuthenticodeSignature .\mcp-windbg.exe | Format-List Status, SignerCertificate
Status 应显示为 Valid。签名者是 Liasoft GmbH,该公司为签名证书提供支持;本项目由 Sven Scharmentke 编写。
在其他客户端中安装
pip install mcp-windbg
需要 Python 3.10 或更高版本。然后将客户端指向 python -m mcp_windbg。对于 VS Code
(GitHub Copilot),按 F1 并选择 MCP:打开用户配置,即可在每个工作区中启用:
{
"servers": {
"mcp_windbg": {
"type": "stdio",
"command": "python",
"args": ["-m", "mcp_windbg"],
"env": {
"_NT_SYMBOL_PATH": "SRV*C:\\Symbols*https://msdl.microsoft.com/download/symbols"
}
}
}
}
有关 Claude Desktop、Copilot CLI、Autohand Code、HTTP 和从源代码安装的设置,请参阅客户端配置指南。
开始调试
重启客户端,然后提出你的需求:
Analyze the crash dump at C:\dumps\app.dmp
Connect to tcp:Port=5005,Server=192.168.0.100 and show me the current thread state
Open a kernel session on net:port=50000,key=1.2.3.4, run !analyze -v, and tell me which driver bugchecked
服务选项(--cdb-path、--kd-path、--symbols-path、--filter-script、--transport 等)请参阅命令行参考。
文档
| 主题 | 描述 |
|---|---|
| 入门指南 | 配置并进行首次崩溃转储分析 |
| 分析崩溃转储 | 找出异常根因:故障帧以及异常发生的原因 |
| 调试远程目标 | 附加到正在运行的用户模式进程并检查卡顿问题 |
| 调试内核目标 | 通过 KDNET 或管道调试驱动程序、错误检查和启动时问题 |
| 对多个转储进行分类 | 扫描文件夹并找出共同特征 |
| 从另一台计算机进行调试 | 通过 HTTP 运行服务并远程控制 |
| 编辑敏感数据 | 在工具输出离开本机前清除机密信息 |
| 参考 | 工具、提示词、CLI 选项和客户端配置 |
| 故障排除 | 常见问题及解决方案 |
| 开发 | 从本地检出版本运行,并将客户端指向开发构建 |
博客
了解开发历程:崩溃分析的未来:AI 遇上 WinDbg
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。