该项目是一个自制的轻量级 MCP 调试器服务器,用于学习和实验。MCP 调试器服务器将调试器功能暴露为 MCP 工具,使外部 MCP 客户端能够通过简洁的接口控制执行、检查内存和分析被调试程序。
调试器使用 C++ 编写,从头实现了核心调试功能,不依赖现有的调试器框架。指令解码使用了 Zydis 反汇编器。调试器与一个使用 C# 编写的 MCP 服务器集成,该服务器基于官方 MCP C# SDK 构建。
关键词:
MCP server, debugger, disassembler, 静态分析, 动态分析, 调试, AI, EXE, executable, Windows

Demo 中使用了 Gemini CLI 作为 MCP 客户端
本指南提供了在 Windows 上的 Visual Studio Code 中构建和集成 MCP.Server.exe 的逐步流程。
在配置 VS Code 之前,必须编译 MCP 服务器:
MCPDebugger.sln。MCP.Server.exe 存在于 \build\Release\x86 或 \build\Release\x64 子文件夹中。确保已在 VS Code 中安装并启用以下扩展:
Ctrl + Shift + P 打开命令面板。> 并选择 "Add MCP Server"。command (stdio) 作为服务器类型。输入在步骤 1 中构建的 MCP.Server.exe 的完整路径。
[!CAUTION] 一次只能激活一种架构(x86 或 x64)作为 MCP 服务器。如果切换架构,请先移除之前的服务器条目。
| 架构 | 输入的示例路径 |
|---|---|
| Windows x64 | C:\YourProject\bin\x64\MCP.Server.exe |
| Windows x86 | C:\YourProject\bin\x86\MCP.Server.exe |
Ctrl + Alt + I),切换到 Agent Mode,然后点击 Tools 图标。您的 MCP 工具现在应该列出并准备就绪。可以在此处启用/禁用 MCP 工具。

对于使用此 MCP 调试器进行复杂的调试和逆向工程任务,Claude Opus 4.5 在 2025 年 11 月 的结果远远优于其他模型。它一致地处理了大型执行轨迹、详细的反汇编和多步推理,比其他测试的模型更可靠。
ChatGPT 4.1 和 Gemini 2.5 Pro 足以应对简单的分析场景,例如基本单步执行、指令检查和简单的控制流推理。这些模型在处理 Example_x64 和 Example_x86 文件夹中提供的示例时表现良好,但在处理更复杂或长时间的调试会话时表现出局限性。
模型性能可能随时间变化,但以上反映的是测试时的观察结果。
通过 MCP 进行调试可能导致高 token 消耗和增加的成本。AI 交互是无状态的,这意味着所有相关的调试上下文(寄存器、内存、反汇编、模块等)必须在每次请求时重复传输。
频繁停止执行并返回详细状态的操作(例如单步执行和临时断点)会显著增加 token 消耗。
如果需要低成本操作,强烈建议专注于静态分析,并禁用以下 MCP 工具:
禁用这些工具可以减少重复的状态传输量,有助于控制 token 消耗。
该存储库包含示例项目,以帮助开始静态分析和调试,位于以下文件夹中:
Example_x64 和 Example_x86
Example_x64 和 Example_x86 项目提供了一个简单的控制台应用程序,用作入门调试目标。该应用程序在运行时提示用户输入密码。两个示例的正确密码都是 secret。
MCP_Debugging_Sessions
一个文件夹,包含更复杂的调试会话,利用了动态分析和调试。在这些会话中使用了 Claude Opus 4.5。目标程序可以在此处下载。请注意,目标程序在使用 MCP 调试器之前已使用 UPX -d 解包。
MCP 服务器暴露以下工具来与调试器交互:
Debugger_Start
启动指定可执行文件的调试器,并在初始系统断点处中断。
Debugger_Stop
停止调试器并终止被调试进程。
Debugger_Continue
在被调试程序在断点处停止时继续执行。
Debugger_ContinueToEntryPoint
从系统断点继续执行到程序入口点。
Debugger_ContinueToBreakpoint
继续执行,直到到达指定虚拟地址的临时断点。
Debugger_ContinueToApiBreakpoint
继续执行,直到到达指定 API 函数的临时断点。
Debugger_StepInto
单步进入下一条指令,进入函数调用。
Debugger_StepOver
单步跳过函数调用,继续执行到下一条指令。
Debugger_Disassemble
反汇编指定虚拟地址处的内存,并返回包含符号信息的指令。
Debugger_TryResolveString
尝试从被调试进程的内存中解析并读取字符串。
Debugger_ReadMemory
从被调试进程读取原始内存字节。
Debugger_WriteMemory
将任意字节写入被调试进程的内存。
Debugger_GetModules
返回被调试进程当前加载的模块列表。
Debugger_GetModuleImports
返回指定模块的导入函数。
Debugger_GetModuleExports
返回指定模块的导出函数。
Debugger_GetModuleSections
返回指定模块的节信息。
Visual Studio 解决方案包含以下项目:
MCP.Debugger
用 C++ 实现的核心调试器。它包含一个 C++/CLI 桥接层,用于为 .NET 客户端暴露托管接口。
MCP.Debugger.Tester
一个简单的 WinForms 应用程序,用于通过托管 .NET 接口测试调试器。
MCP.Debugger.Types
一个类型程序集,定义了托管与非托管之间用于调试器和 .NET 客户端转换的共享结构和数据类型。
MCP.Server
C# MCP 服务器,将调试器功能作为 MCP 工具暴露给外部客户端。