Windows调试服务器

一个基于Model Context Protocol (MCP)的Windows调试服务器,支持崩溃转储分析、远程调试和直接程序调试。

  • by FlorentinoJink
  • Rust
  • 本地部署
  • 12 星标
  • 更新于
在 GitHub 查看 macrohardpro/mcp-windbg

使用说明

mcp windbg rs

中文文档 |英语

A. 模型上下文协议 用于Windows调试的(MCP)服务器——通过CDB进行崩溃转储分析、远程调试和直接程序调试。

用Rust和 东京 用于异步I/O。作为单个可执行文件发布,没有运行时依赖关系。

特性

  • 碰撞倾倒分析 --打开 .dmp 文件,自动运行 !analyze -v,检查线程、模块和堆栈跟踪
  • 远程调试 --通过连接字符串连接到远程调试会话
  • 直接程序调试 --在CDB下启动可执行文件,设置断点,遍历代码,检查变量
  • 会话管理 --多个并发调试会话,可自动重用
  • 可配置超时 --初始化(符号加载)和命令执行分别超时

先决条件

如果未安装CDB,您可以通过以下方式获取:

winget install Microsoft.WinDbg

服务器自动从Windows SDK默认路径、Windge Preview(Microsoft Store)和 PATH.

安装

来源

cargo build --release

二元的: target/release/mcp-windbg-rs.exe

配置

VS代码/Kiro

.vscode/mcp.json:

{
  "servers": {
    "mcp-windbg": {
      "type": "stdio",
      "command": "/path/to/mcp-windbg-rs.exe",
      "args": [],
      "env": {
        "_NT_SYMBOL_PATH": "SRV*C:\\Symbols*https://msdl.microsoft.com/download/symbols"
      }
    }
  }
}

Claude Desktop/Cline/其他MCP客户端

{
  "mcpServers": {
    "mcp-windbg-rs": {
      "command": "mcp-windbg-rs",
      "args": [],
      "env": {
        "_NT_SYMBOL_PATH": "SRV*C:\\Symbols*https://msdl.microsoft.com/download/symbols"
      }
    }
  }
}

环境变量

变量 描述 默认值
CDB_PATH 自定义路径 cdb.exe 自动发现
_NT_SYMBOL_PATH 调试符号搜索路径 --
_NT_SOURCE_PATH 源文件搜索路径 --
MCP_WINDBG_TIMEOUT 命令超时(秒) 30
MCP_WINDBG_INIT_TIMEOUT 转储/符号加载的初始化超时(秒) 120
MCP_WINDBG_VERBOSE 详细日志记录(true/false) false

CLI选项

mcp-windbg-rs [OPTIONS]

  --timeout <SECONDS>       Command execution timeout (default: 30)
  --init-timeout <SECONDS>  Initialization timeout (default: 120)
  --verbose                 Enable verbose logging

工具

工具 说明
open_windbg_dump 打开并分析崩溃转储文件
open_windbg_remote 连接到远程调试会话
launch_debug 在CDB下启动程序进行调试
run_windbg_cmd 在会话中执行任何Winge/CDB命令
close_windbg_dump 关闭转储文件会话
close_windbg_remote 关闭远程调试会话
close_debug 关闭启动调试会话并终止程序
list_windbg_dumps 列表 .dmp 目录中的文件

使用示例

碰撞倾倒分析

Analyze the crash dump at C:\dumps\app.dmp

远程调试

Connect to tcp:Port=5005,Server=192.168.0.100 and show the current state

直接程序调试

启动程序,设置断点,逐步执行代码:

Launch C:\MyApp\app.exe for debugging

然后使用 run_windbg_cmd 为了控制执行:

bp main          — Set breakpoint at main
g                — Continue execution
p                — Step over
t                — Step into
k                — Stack trace
dv               — View local variables
lsa .            — Show source at current location

这 launch_debug 工具支持可选参数:

参数 类型 说明
program_path string 目标程序的路径(必需)
arguments string[] 命令行参数
working_directory string 工作目录
symbols_path string PDB符号搜索路径
source_path string 源代码级调试的源文件路径
include_stack_trace boolean 包括初始堆栈跟踪
include_modules boolean 包含已加载的模块列表

关闭会话

Close the debug session for C:\MyApp\app.exe

故障排除

未找到CDB --通过安装 winget install Microsoft.WinDbg 或设置 CDB_PATH 致你的 cdb.exe 位置。

符号未加载 --设置 _NT_SYMBOL_PATH.建议: SRV*C:\Symbols*https://msdl.microsoft.com/download/symbols

命令超时 --增加与 --timeout 60 或 MCP_WINDBG_TIMEOUT=60。大型转储和符号下载可能需要更高的 MCP_WINDBG_INIT_TIMEOUT.

Web转储调试器

该项目还运送了一艘 基于web的崩溃转储分析服务 (web-dump-debugger)它提供了一个浏览器UI,用于上传、分析和报告崩溃转储。

特性

  • 网络上传 --上传 .zip, .7z,或 .tar.gz 通过浏览器包含转储文件的存档
  • 自动提取 --提取并扫描档案 .dmp, .pdb,以及源文件
  • LLM动力分析 --使用相同 mcp_client.py 编排作为GitHub Actions工作流
  • 实时进度 --服务器发送事件(SSE)将实时分析进度流式传输到浏览器
  • HTML报告 --Markdown分析输出呈现为HTML,语法突出显示
  • 速率限制 --基于滑动窗口算法的IP上传速率限制
  • 会话管理 --具有自动清理功能的隔离式会话工作区

快速开始

# Build both binaries
cargo build --release

# Create a config file (edit llm.api_key first)
cp config.example.toml config.toml

# Start the web server
./target/release/web-dump-debugger --config config.toml

然后打开 http://localhost:8080 在您的浏览器中。

配置

看 config.example.toml 对于所有选项。服务器支持TOML文件和环境变量配置。

API终点

方法 路径 描述
GET / 上传表单HTML页面
POST /upload 上传崩溃转储存档(多部分/表单数据)
GET /progress/:id SSE进度流
GET /report/:id HTML报告页面
GET /download/:id 下载原始Markdown报告
GET /health 健康检查(JSON)

部署

看 docs/WEB_DEPLOYMENT.md 用于生产部署指导。

相关

许可证

AGPL-3.0或更高版本