dap-mcp

by KashunCheng
Verified

local-only server

The server can only run on the client’s local machine because it depends on local resources.

Integrations

  • Supports debugging pytest modules during test execution, providing breakpoint management and step-by-step debugging capabilities for Python tests.

  • Integrates with Python debugging through debugpy, allowing the setting/removal of breakpoints, controlling execution flow, evaluating expressions, and viewing source code.

  • Provides XML-rendered output for debugging information and tool responses to integrate with MCP clients.

dap-mcp

dap-mcp는 디버그 어댑터 프로토콜(DAP) 세션 관리에 특화된 모델 컨텍스트 프로토콜(MCP) 구현입니다. MCP는 대규모 언어 모델의 컨텍스트 창을 최적화하고 확장하는 표준화된 프레임워크를 제공하며, 이 프로젝트에서는 디버깅 워크플로를 개선하고 간소화하는 데 사용됩니다.

특징

  • 디버그 어댑터 프로토콜 통합: 표준화된 프로토콜을 사용하여 디버거와 상호 작용합니다.
  • MCP 프레임워크: MCP를 활용하여 컨텍스트를 최적화하고 디버깅 워크플로를 개선합니다.
  • 풍부한 디버깅 도구: 중단점을 설정, 나열 및 제거하고, 실행을 제어(계속, 단계별 실행/나머지 실행/다음 실행), 표현식을 평가하고, 스택 프레임을 변경하고, 소스 코드를 봅니다.
  • 유연한 구성: JSON 구성 파일을 통해 디버거 설정, 소스 디렉토리 및 기타 매개변수를 사용자 정의합니다.

설치

필수 조건

  • Python 3.10 이상
  • uv (선택 사항, 서버 실행용)

서버 설치 및 실행

dap-mcp 와 종속성을 설치하세요:

지엑스피1

구성

이 프로젝트는 JSON 구성 파일(예: .config.json )을 사용하여 디버거 설정과 소스 디렉터리를 지정합니다. 구성 예시는 다음과 같습니다.

{ "type": "debugpy", "debuggerPath": "/path/to/python/with/debugpy", "debuggerArgs": [ "-m", "debugpy.adapter" ], // source directories for resolving file paths // if you always use absolute paths, you can omit this "sourceDirs": [ "/path/to/source/code" ], // debugger-specific settings start here // configurations for debugpy can be found at // https://github.com/microsoft/debugpy/wiki/Debug-configuration-settings // you can use "program" instead of "module" to specify the program to debug "module": "pytest", // the python executable to use to run the debuggee "python": ["/path/to/python"], "cwd": "/path/to/working/directory" }

이 구성은 디버거에 다음 정보를 알려줍니다.

  • 디버거 실행 파일과 인수의 경로입니다.
  • 중단점 작업 중 파일 경로를 확인하기 위한 소스 디렉터리입니다.
  • 디버기를 시작하는 데 필요한 기타 설정(예: 모듈, 작업 디렉토리, 인터프리터 경로)

사용 가능한 디버거 유형

유형예시 경로예제 인수
디버그파이/usr/bin/python3["-m", "debugpy.adapter"]
lldb/usr/bin/lldb-dap[]

사용 가능한 도구

이 프로젝트는 MCP 프레임워크를 통해 호출할 수 있는 여러 도구를 제공합니다.

  • 실행: 디버기 프로그램을 실행합니다.
  • set_breakpoint: 지정된 파일과 줄에 중단점을 설정합니다(선택적 조건 포함).
  • remove_breakpoint: 지정된 파일과 줄에서 중단점을 제거합니다.
  • list_all_breakpoints: 디버거에 현재 설정된 모든 중단점을 나열합니다.
  • continue_execution: 중단점에 도달한 후 프로그램 실행을 계속합니다.
  • step_in: 함수 호출에 들어갑니다.
  • step_out: 현재 함수에서 나갑니다.
  • 다음: 다음 코드 줄로 넘어갑니다.
  • 평가: 현재 디버깅 컨텍스트에서 표현식을 평가합니다.
  • change_frame: 다른 스택 프레임으로 전환합니다.
  • view_file_around_line: 지정된 줄 주변의 소스 코드를 봅니다(아무것도 지정되지 않은 경우 마지막으로 제공된 파일을 사용).
  • 종료: 디버깅 세션을 종료합니다.

이러한 도구는 MCP 클라이언트와의 통합을 위해 XML로 렌더링된 출력을 제공합니다.

다른 DAP 서버로 확장

추가 DAP 서버를 지원하려면 dap_mcp/config.py 파일에 새로운 DAP 전용 구성 클래스를 추가하기만 하면 됩니다. 모든 DAP 구성은 기본 DAPConfig 클래스에서 확장됩니다. 각 새 하위 클래스는 다음을 수행해야 합니다.

  • ( Literal 사용하여) 판별자 역할을 하는 고유한 type 값을 정의합니다.
  • 해당 디버거에 특화된 추가 필드나 설정을 포함합니다.

예를 들어, "mydap"이라는 가상 DAP 서버에 대한 지원을 추가하려면 다음을 추가할 수 있습니다.

class MyDAP(DAPConfig): type: Literal["mydap"] # Add any additional settings for MyDAP here customSetting: Optional[str] = Field( None, description="A custom setting for MyDAP." )

새 구성 클래스를 만든 후, 새 클래스를 포함하여 디버거별 구성에 사용되는 공용체 유형을 업데이트합니다. 예:

DebuggerSpecificConfig = Annotated[Union[DebugPy, MyDAP], Field(..., discriminator="type")]

이제 "type": "mydap" 과 함께 구성 JSON을 제공하면 새 MyDAP 클래스를 사용하여 구문 분석 및 검증이 수행되고 DAP 서버 확장이 완전히 통합됩니다.

기여하다

기여를 환영합니다! 기여하려면:

  1. 저장소를 포크합니다.
  2. 기능이나 버그 수정을 위해 새로운 브랜치를 만듭니다.
  3. 테스트를 작성하고 모든 검사가 통과되는지 확인하세요.
  4. 풀 리퀘스트를 제출하세요.

코딩 지침을 따르고 변경 사항에 적합한 테스트를 포함하세요.

특허

이 프로젝트는 AGPL-3.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.

-
security - not tested
A
license - permissive license
-
quality - not tested

디버깅 세션 중에 언어 모델이 디버거를 제어하고, 중단점을 설정하고, 표현식을 평가하고, 소스 코드를 탐색할 수 있도록 디버그 어댑터와의 상호 작용을 가능하게 하는 모델 컨텍스트 프로토콜(MCP) 구현입니다.

  1. Features
    1. Installation
      1. Prerequisites
      2. Installing and Running the Server
    2. Configuration
      1. Available Debugger Types
    3. Available Tools
      1. Extending with Other DAP Servers
        1. Contributing
      2. License
        ID: l2jcplh0de