
Windows 실행 파일(x86 및 x64)을 위한 MCP 디버거 서버입니다. 디버기(debuggee)의 정적/동적 분석 및 메모리 검사를 위한 MCP 도구로 디버거 기능을 깔끔한 인터페이스를 통해 제공합니다.
이 프로젝트는 학습과 실험을 위해 자체 제작한 경량 MCP Debugger Server입니다. MCP Debugger Server는 디버거 기능을 MCP 도구로 노출하여, 외부 MCP 클라이언트가 깔끔한 인터페이스를 통해 실행 제어, 메모리 검사 및 디버기 분석을 수행할 수 있도록 합니다.
디버거는 C++로 작성되었으며, 기존 디버거 프레임워크에 의존하지 않고 핵심 디버깅 기능을 처음부터 구현했습니다. 명령어 디코딩에는 Zydis 디스어셈블러를 사용합니다. 디버거는 공식 MCP C# SDK를 사용하여 C#으로 작성된 MCP 서버와 통합됩니다.
키워드:
MCP 서버, 디버거, 디스어셈블러, 정적 분석, 동적 분석, 디버깅, AI, EXE, 실행 파일, Windows

데모에서는 Gemini CLI를 MCP 클라이언트로 사용했습니다.
이 가이드는 Windows에서 MCP.Server.exe를 빌드하여 Visual Studio Code에 통합하는 단계별 프로세스를 제공합니다.
VS Code를 구성하기 전에 MCP 서버를 컴파일해야 합니다.
MCPDebugger.sln을 엽니다.\build\Release\x86 또는 \build\Release\x64 하위 폴더에 MCP.Server.exe가 있는지 확인합니다.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 디버거를 사용한 복잡한 디버깅 및 리버스 엔지니어링 작업의 경우, 2025년 11월 기준으로 Claude Opus 4.5가 가장 우수한 결과를 제공했습니다. 대규모 실행 추적, 상세한 디스어셈블리 및 다단계 추론을 다른 테스트된 모델보다 일관되게 더 안정적으로 처리했습니다.
ChatGPT 4.1 및 Gemini 2.5 Pro는 기본적인 스테핑, 명령어 검사 및 간단한 제어 흐름 추론과 같은 단순한 분석 시나리오에 충분했습니다. 이 모델들은 Example_x64 및 Example_x86 폴더에 제공된 예제에서 잘 작동했지만, 더 복잡하거나 장기 실행되는 디버깅 세션에서는 한계를 보였습니다.
모델 성능은 시간이 지남에 따라 변할 수 있지만, 위 내용은 테스트 당시 관찰된 동작을 반영합니다.
MCP를 통한 디버깅은 높은 토큰 사용량과 비용 증가를 초래할 수 있습니다. AI 상호 작용은 상태 비저장(stateless)이므로, 모든 관련 디버깅 컨텍스트(레지스터, 메모리, 디스어셈블리, 모듈 등)는 각 요청과 함께 반복적으로 전송되어야 합니다.
스테핑 및 임시 중단점과 같이 실행을 자주 중단하고 상세한 상태를 반환하는 작업은 토큰 소비를 크게 증가시킬 수 있습니다.
저비용 운영이 필요한 경우, 정적 분석에 집중하고 다음 MCP 도구를 비활성화하는 것이 좋습니다.
이 도구들을 비활성화하면 반복적인 상태 전송이 줄어들어 토큰 사용량을 제어하는 데 도움이 됩니다.
리포지토리에는 정적 분석 및 디버깅을 시작하는 데 도움이 되는 예제 프로젝트가 포함되어 있으며, 다음 폴더에 있습니다.
Example_x64 및 Example_x86
Example_x64 및 Example_x86 프로젝트는 입문용 디버깅 대상으로 사용되는 간단한 콘솔 애플리케이션을 제공합니다. 이 애플리케이션은 런타임에 사용자에게 암호를 입력하라는 메시지를 표시합니다. 두 예제의 올바른 암호는 secret입니다.
MCP_Debugging_Sessions
동적 분석 및 디버깅을 활용하는 더 복잡한 디버깅 세션을 포함하는 폴더입니다. 이 세션에서는 Claude Opus 4.5가 사용되었습니다. 대상 파일은 여기에서 다운로드할 수 있습니다. MCP Debugger를 사용하기 전에 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++로 구현된 핵심 디버거입니다. .NET 클라이언트에 관리형 인터페이스를 노출하기 위해 C++/CLI 브리지가 포함되어 있습니다.
MCP.Debugger.Tester
관리형 .NET 인터페이스를 통해 디버거를 테스트하는 데 사용되는 간단한 WinForms 애플리케이션입니다.
MCP.Debugger.Types
디버거와 .NET 클라이언트 간의 관리-네이티브 전환을 위한 공유 구조 및 데이터 타입을 정의하는 타입 어셈블리입니다.
MCP.Server
디버거 기능을 MCP 도구로 노출하여 외부 클라이언트에 제공하는 C# MCP 서버입니다.