概述
mcp-windbg 是一个 MCP (Model Context Protocol) 服务器,将 WinDbg/CDB/KD 桥接给 AI 模型,实现用自然语言分析崩溃转储、远程调试和内核调试。
本文记录在 WSL 环境下,通过 mcporter 集成 mcp-windbg 的完整方案。
环境前提
| 组件 | 要求 | 本机状态 |
|---|---|---|
| Windows Debugging Tools | 含 cdb.exe + kd.exe | ✅ C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\ |
| Windows Python 3.10+ | 用于运行 mcp-windbg | ✅ C:\Python312\python.exe |
| WSL mcporter | MCP 客户端/路由器 | ✅ mcporter 0.9.0 (npm) |
IMPORTANT
mcp-windbg 必须运行在 Windows 侧(需要
cdb.exe/kd.exe),不能直接用 WSL 的 Python。方案核心是 WSL 侧的 mcporter 通过 stdio 调用 Windows 侧的 Python。
安装步骤
Step 1 — Windows 侧安装 mcp-windbg
在 WSL 中直接调用 Windows Python 进行安装:
bash
/mnt/c/Python312/python.exe -m pip install mcp-windbg版本兼容性坑
mcp-windbg==1.0.0依赖mcp>=1.28.1,但 pip 会自动拉取mcp 2.0.0,其中McpError被重命名为MCPError,导致 ImportError。解决方法:手动降级到
mcp<2.0: bash/mnt/c/Python312/python.exe -m pip install "mcp>=1.28.1,<2.0"验证安装成功后
mcp版本应为1.29.0。
Step 2 — mcporter 注册
bash
mcporter config add mcp-windbg \
--stdio "/mnt/c/Python312/python.exe -m mcp_windbg"生成的配置文件(~/.openclaw/workspace/config/mcporter.json):
json
{
"mcpServers": {
"mcp-windbg": {
"command": "/mnt/c/Python312/python.exe -m mcp_windbg"
}
}
}Step 3 — 验证
bash
mcporter list mcp-windbg --schema成功时会列出 9 个工具及其完整 schema:
mcp-windbg
9 tools · 2316ms · STDIO /mnt/c/Python312/python.exe -m mcp_windbg
可用工具(9 个)
| 工具 | 用途 |
|---|---|
list_dumps | 列出目录中的崩溃转储文件 |
open_cdb_dump | 打开并自动分检崩溃转储(!analyze -v) |
open_cdb_remote | 连接用户态远程调试服务器(-remote) |
open_kd_session | 连接内核调试目标(-k,KDNET/命名管道/串口) |
run_cdb_command | 在用户态会话上执行 WinDbg 命令 |
run_kd_command | 在内核会话上执行 KD 命令 |
close_cdb_session | 关闭用户态会话 |
close_kd_session | 关闭内核会话(可选拁resume 目标机) |
send_ctrl_break | 中断正在运行的实时会话 |
每个 open_* 调用返回一个 session_id,后续用该 id 操作对应会话。支持同时打开多个会话。
使用示例
通过 mcporter 调用
bash
# 列出 C:\dumps 下的转储文件
mcporter call mcp-windbg.list_dumps directory_path="C:\\dumps"
# 打开转储并自动分析
mcporter call mcp-windbg.open_cdb_dump dump_path="C:\\dumps\\app.dmp" include_stack_trace=true
# 在已打开的会话上执行命令
mcporter call mcp-windbg.run_cdb_command session_id="cdb-xxxx" command="kb"
# 关闭会话
mcporter call mcp-windbg.close_cdb_session session_id="cdb-xxxx"通过 AI 自然语言(OpenClaw / Claude Code 等)
分析 C:\dumps\app.dmp 这个崩溃转储,告诉我崩溃原因和调用栈
连接 tcp:Port=5005,Server=192.168.0.100 并查看当前线程状态
打开内核会话 net:port=50000,key=1.2.3.4,执行 !analyze -v
环境变量(可选)
设置微软符号服务器路径,提升转储分析质量:
bash
# mcporter 配置中添加 env(如支持)
# 或在 Windows 侧设置环境变量
setx _NT_SYMBOL_PATH "SRV*C:\Symbols*https://msdl.microsoft.com/download/symbols"架构示意
┌─────────────────────────────────────────┐
│ WSL (Linux) │
│ │
│ mcporter ──stdio──┐ │
│ │ │ │
│ │ /mnt/c/Python312/python.exe │
│ │ -m mcp_windbg │ │
└────┼────────────────┼──────────────────┘
│ │
─────┼────────────────┼─── Windows ───────
│ │
▼ ▼
cdb.exe kd.exe
(用户态) (内核态)
.dmp 分析 KDNET/管道/串口