Skip to content

KindTis/DumpAnalysisMCP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DumpAnalysisMCP

DumpAnalysisMCP는 Windows 크래시 덤프(minidump/full dump)를 분석하는 MCP(Model Context Protocol) 서버입니다.
MCP 클라이언트가 stdio 기반으로 덤프 분석, 스레드 조회, 소스 문맥 조회, 안전한 패치/빌드/테스트를 호출할 수 있도록 설계되었습니다.

프로젝트 소개

  • 목적: AI Agent가 Windows dump를 구조화된 데이터로 읽고 원인 분석 속도를 높이도록 지원
  • 대상: user-mode C++/Unreal Engine 덤프 분석
  • 핵심 강점:
    • 예외/스택/모듈/심볼 품질 구조화
    • 멀티스레드 분석(threads, crashing_thread, faulting_thread_confidence)
    • source_path_map 기반 소스 경로 remap
    • 정책 기반 안전 실행(apply_patch, build_project, run_tests)

주요 기능

  • dump 세션 등록 및 dump_id 발급
  • analyze_dump 정규화 결과 제공
  • 스레드 목록/스레드별 스택 조회
  • 예외/모듈/경고 리소스 조회
  • 소스 문맥 조회 및 코드 참조 검색
  • 확인 플래그 기반의 안전한 파일 변경/빌드/테스트 실행

요구 사항

  • OS: Windows 10/11
  • Python: 3.11 이상
  • 디버거: WinDbg 또는 Debugging Tools for Windows (cdb.exe)
  • 입력 경로:
    • dump_path: 존재하는 dump 파일(절대 경로)
    • symbol_root: 존재하는 디렉터리(절대 경로)
    • source_root: 존재하는 디렉터리(절대 경로)
  • project_type: native_cpp 또는 unreal_engine

환경 변수(선택):

변수명 기본값 설명
DUMP_MCP_CDB_PATH cdb.exe cdb.exe 경로. 환경 차이를 줄이려면 절대 경로 권장
DUMP_MCP_LOG_LEVEL WARNING 로그 레벨
DUMP_MCP_ANALYZE_TIMEOUT_SECONDS 180 dump 분석 타임아웃
DUMP_MCP_BUILD_TIMEOUT_SECONDS 1200 빌드 타임아웃
DUMP_MCP_TEST_TIMEOUT_SECONDS 1800 테스트 타임아웃
DUMP_MCP_MAX_OUTPUT_CHARS 200000 stdout/stderr 최대 보존 길이
DUMP_MCP_BUILD_ALLOWLIST msbuild,dotnet,cmake,ninja,UnrealBuildTool,RunUAT 빌드 허용 실행 파일
DUMP_MCP_TEST_ALLOWLIST ctest,dotnet,pytest,UnrealEditor-Cmd,RunUAT 테스트 허용 실행 파일

설치

기본 설치:

python -m pip install -e .

개발 설치(테스트 포함):

python -m pip install -e .[dev]

빠른 시작

  1. cdb.exe 경로 설정(예시)
$env:DUMP_MCP_CDB_PATH="C:\Program Files\WindowsApps\Microsoft.WinDbg_1.2601.12001.0_x64__8wekyb3d8bbwe\amd64\cdb.exe"
$env:DUMP_MCP_LOG_LEVEL="INFO"
  1. MCP 클라이언트 설정(.vscode/mcp.json 등)

servers 형식:

{
  "servers": {
    "dump-analysis": {
      "command": "python",
      "args": ["-m", "windows_dump_analysis_mcp"],
      "env": {
        "DUMP_MCP_CDB_PATH": "<REPLACE_WITH_CDB_ABSOLUTE_PATH>",
        "DUMP_MCP_LOG_LEVEL": "INFO"
      }
    }
  }
}

mcpServers 형식:

{
  "mcpServers": {
    "dump-analysis": {
      "command": "python",
      "args": ["-m", "windows_dump_analysis_mcp"],
      "env": {
        "DUMP_MCP_CDB_PATH": "<REPLACE_WITH_CDB_ABSOLUTE_PATH>",
        "DUMP_MCP_LOG_LEVEL": "INFO"
      }
    }
  }
}

사용법

기본 분석 흐름:

  1. register_dump
  2. analyze_dump
  3. 필요 시 get_thread_list, get_thread_stack_trace, get_source_context

register_dump 예시 payload:

{
  "dump_path": "C:\\path\\to\\sample.dmp",
  "symbol_root": "C:\\path\\to\\symbols",
  "source_root": "C:\\path\\to\\source",
  "project_type": "native_cpp",
  "binary_root": "C:\\path\\to\\bin",
  "source_path_map": {
    "c:\\original\\source\\root": "C:\\path\\to\\source"
  }
}

Tool 레퍼런스

Tool 설명 주요 인자
register_dump 분석 세션 등록 후 dump_id 반환 dump_path, symbol_root, source_root, project_type, binary_root?, dump_type_hint?, log_paths?, source_path_map?
analyze_dump dump 분석 실행 및 정규화 결과 반환 dump_id
get_exception_info 예외 요약 조회 dump_id
get_stack_trace 선택 스레드 스택 조회(기본: crashing thread) dump_id, max_frames?, thread_id?
get_thread_list 스레드 목록/충돌 메타데이터 조회 dump_id
get_thread_stack_trace 특정 스레드 스택 조회 dump_id, thread_id, max_frames?
get_module_list 모듈 목록/심볼 품질 조회 dump_id
get_source_context 선택 프레임/스레드 소스 문맥 조회 dump_id, frame_index?, context_before?, context_after?, thread_id?
search_code_references 코드 참조 검색 query, dump_id?, source_root?, max_results?, ignore_case?
apply_patch 파일 변경 preview/apply changes, dump_id?, source_root?, mode?, user_confirmed?
build_project 가드된 빌드 실행 command, dump_id?, working_directory?, timeout_seconds?, user_confirmed=true
run_tests 가드된 테스트 실행 command, dump_id?, working_directory?, timeout_seconds?, user_confirmed=true

Resource 레퍼런스

  • project://symbols/status
  • project://source/root
  • crash://{dump_id}/summary
  • crash://{dump_id}/exception
  • crash://{dump_id}/stack
  • crash://{dump_id}/threads
  • crash://{dump_id}/modules
  • crash://{dump_id}/warnings
  • crash://{dump_id}/source/main-frame

안전 정책

  • build_project, run_tests: user_confirmed=true 필수
  • apply_patch:
    • 기본은 preview
    • mode=applyuser_confirmed=true 필수
  • 빌드/테스트 명령은 allowlist 실행 파일만 허용
  • 쉘 체이닝(&&, |, ;) 차단

예제

  • examples/cpp-crash-sample-1
  • examples/cpp-crash-sample-2
  • examples/cpp-crash-sample-3

개발

테스트 실행:

python -m pytest -q

트러블슈팅

  • Configured cdb_path must be an absolute path:
    • DUMP_MCP_CDB_PATH를 절대 경로로 설정하세요.
  • source_root does not exist 또는 source mapping 오류:
    • source_root 절대 경로와 source_path_map 매핑을 확인하세요.
  • 심볼 품질이 낮거나 WRONG_SYMBOLS 경고가 보이는 경우:
    • symbol_root에 올바른 PDB가 있는지 확인하세요.

About

DumpAnalysisMCP는 Windows 환경에서 minidump/full dump를 분석하기 위한 MCP(Model Context Protocol) 서버입니다.

Resources

License

Stars

Watchers

Forks

Contributors

Languages