MCP Debugger
mcp-debugger
다중 언어 디버깅을 위한 MCP 서버 – AI 에이전트에게 디버깅 슈퍼파워를 부여하세요 🚀
🎯 개요
mcp-debugger는 디버깅 도구를 구조화된 API 호출로 제공하는 모델 컨텍스트 프로토콜(MCP) 서버입니다. AI 에이전트가 Debug Adapter Protocol(DAP)을 사용하여 여러 프로그래밍 언어를 단계별로 디버깅할 수 있게 합니다.
🆕 버전 0.19.0: JDI 브릿지를 통한 Java 디버깅(시작 및 연결 모드 지원)! 또한 Delve를 사용한 Go 디버깅 지원.
🆕 버전 0.17.0: Rust 디버깅 지원! Linux/macOS에서 CodeLLDB를 사용하여 Cargo 프로젝트, 비동기 코드, 전체 변수 검사를 포함한 Rust 프로그램 디버깅 가능 — 또한 단계별 명령이 활성 소스 컨텍스트를 반환하여 에이전트가 자동으로 위치를 유지합니다.
🔥 버전 0.16.0: JavaScript/Node.js 디버깅 지원! 번들된 js-debug를 통한 전체 디버깅 기능, TypeScript 지원, 개선된 npx 배포를 통한 런타임 의존성 제로.
🎬 데모 영상: 디버거가 작동하는 모습을 확인하세요!
녹화 진행 중 - AI 에이전트가 변수 교체 버그를 실시간으로 발견하고 수정하는 모습을 보여줄 예정입니다
✨ 주요 기능
🌐 다중 언어 지원 – 모든 언어에 대한 깔끔한 어댑터 패턴
🐍 debugpy를 통한 Python 디버깅 – 전체 DAP 프로토콜 지원
🟨 js-debug를 통한 JavaScript(Node.js) 디버깅 – VSCode의 검증된 디버거
🦀 CodeLLDB를 통한 Rust 디버깅 – Rust 및 Cargo 프로젝트 디버깅 (Linux/macOS/Windows GNU 툴체인)
🐹 Delve를 통한 Go 디버깅 – Go 프로그램을 위한 전체 DAP 지원
☕ JDI 브릿지를 통한 Java 디버깅 – JDK 21+를 사용한 시작 및 연결 모드
🔷 netcoredbg를 통한 .NET/C# 디버깅 – 전체 DAP 지원으로 .NET 애플리케이션 디버깅
경고: Windows에서는 전체 변수 검사를 위해 GNU 툴체인을 사용하세요. 빌드를 확인하려면
mcp-debugger check-rust-binary <path-to-exe>를 실행하고, 자세한 지침은 Windows에서의 Rust 디버깅을 참조하세요. 참고: 게시된 npm 번들은 레지스트리 크기 제한을 준수하기 위해 Linux x64 CodeLLDB 런타임을 포함합니다. macOS 또는 Windows에서는CODELLDB_PATH환경 변수를 기존 CodeLLDB 설치(예: VSCode 확장 프로그램)로 지정하거나, 저장소를 복제하고pnpm --filter @debugmcp/adapter-rust run build:adapter를 실행하여 플랫폼 바이너리를 로컬에 공급하세요.
Windows Rust 설정 스크립트
Windows에서 작동하는 GNU 툴체인 + dlltool 구성을 위한 가장 빠른 방법을 원한다면 다음을 실행하세요:
pwsh scripts/setup/windows-rust-debug.ps1이 스크립트는 stable-gnu 툴체인을 설치하고(rustup을 통해), dlltool.exe를 설정하며(가능한 경우 MSYS2/MinGW 우선, rustup의 자체 복사본으로 대체), 번들된 Rust 예제를 빌드하고 기본적으로 Rust 스모크 테스트를 실행합니다. 테스트 실행을 건너뛰려면 -SkipTests를 추가하세요. dlltool 경로를 사용자 PATH/DLLTOOL 변수에 유지하려면 -UpdateUserPath를 추가하세요.
또한 이 스크립트는 MSYS2 기반 MinGW-w64 툴체인을 프로비저닝하려고 시도하므로(winget + pacman을 통해), cargo +stable-gnu가 완전히 기능하는 dlltool/ld/as 스택을 갖게 됩니다. MSYS2가 이미 설치되어 있으면 재사용하며, 그렇지 않으면 설치를 안내합니다.
🧪 테스트용 모의 어댑터 – 외부 의존성 없이 테스트 가능
🔌 STDIO 및 SSE 전송 모드 – 모든 MCP 클라이언트와 작동
📦 런타임 의존성 제로 – esbuild + tsup을 통한 자체 포함 번들
⚡ npx 준비 완료 –
npx @debugmcp/mcp-debugger로 직접 실행(설치 불필요)📊 1266개 이상의 테스트 통과 – 실전 검증 완료
🐳 Docker 및 npm 패키지 – 어디에나 배포 가능
🤖 AI 에이전트를 위해 구축 – 쉬운 파싱을 위한 구조화된 JSON 응답
🛡️ 경로 검증 – 존재하지 않는 파일로 인한 충돌 방지
📝 AI 인식 라인 컨텍스트 – 코드 컨텍스트를 사용한 지능형 중단점 배치
🚀 빠른 시작
MCP 클라이언트용 (Claude Desktop 등)
MCP 설정 구성에 추가하세요:
{
"mcpServers": {
"mcp-debugger": {
"command": "node",
"args": ["C:/path/to/mcp-debugger/dist/index.js", "stdio", "--log-level", "debug", "--log-file", "C:/path/to/logs/debug-mcp-server.log"],
"disabled": false,
"autoApprove": ["create_debug_session", "set_breakpoint", "get_variables"]
}
}
}Claude Code CLI용
Claude Code 사용자를 위해 자동 설치 스크립트를 제공합니다:
전제 조건: 설치 스크립트를 실행하기 전에 Claude CLI가 설치되어 있고 PATH에서 사용 가능해야 합니다. 설치 지침은 Claude Code 문서를 참조하세요.
# Clone the repository
git clone https://github.com/debugmcp/mcp-debugger.git
cd mcp-debugger
# Run the installation script
./scripts/install-claude-mcp.sh
# Verify the connection (use 'claude mcp list' if claude is on your PATH)
claude mcp list중요: 콘솔 출력이 JSON-RPC 프로토콜을 손상시키는 것을 방지하기 위해 stdio 인수가 필요합니다. 자세한 설정 및 문제 해결은 CLAUDE.md를 참조하세요.
Docker 사용
docker run -v $(pwd):/workspace debugmcp/mcp-debugger:latest⚠️ Docker 이미지는 Python, JavaScript, Go, Java 및 .NET 어댑터를 제공합니다. Rust 디버깅은 어댑터가 툴체인 옆에서 실행되는 로컬, SSE 또는 패키지 배포가 필요합니다. 참고: 어댑터는 런타임에 동적으로 로드됩니다. 툴체인이 설치되고 감지된 어댑터만
list_supported_languages에 의해 사용 가능한 것으로 보고됩니다.
npm 사용
npm install -g @debugmcp/mcp-debugger
mcp-debugger --help또는 npx를 통해 설치 없이 사용하세요:
npx @debugmcp/mcp-debugger --help📚 작동 원리
mcp-debugger는 구조화된 JSON 매개변수로 호출할 수 있는 MCP 도구로 디버깅 작업을 노출합니다:
// Tool: create_debug_session
// Request:
{
"language": "python", // or "javascript", "rust", "go", "java", "dotnet", or "mock" for testing
"name": "My Debug Session"
}
// Response:
{
"success": true,
"sessionId": "a4d1acc8-84a8-44fe-a13e-28628c5b33c7",
"message": "Created python debug session: My Debug Session"
}🛠️ 사용 가능한 도구
도구 | 설명 | 상태 |
| 새 디버깅 세션 생성 | ✅ 구현됨 |
| 모든 활성 세션 나열 | ✅ 구현됨 |
| 사용 가능한 언어 어댑터 표시 | ✅ 구현됨 |
| 파일에 중단점 설정 | ✅ 구현됨 |
| 스크립트 디버깅 시작 | ✅ 구현됨 |
| 실행 중인 프로세스에 디버거 연결 | ✅ 구현됨 |
| 프로세스에서 디버거 분리 | ✅ 구현됨 |
| 현재 스택 추적 가져오기 | ✅ 구현됨 |
| 디버그 세션의 모든 스레드 나열 | ✅ 구현됨 |
| 프레임에 대한 변수 범위 가져오기 | ✅ 구현됨 |
| 범위 내 변수 가져오기 | ✅ 구현됨 |
| 현재 프레임의 로컬 변수 가져오기 | ✅ 구현됨 |
| 현재 라인 건너뛰기 | ✅ 구현됨 |
| 함수 내부로 진입 | ✅ 구현됨 |
| 함수 외부로 탈출 | ✅ 구현됨 |
| 실행 계속 | ✅ 구현됨 |
| 실행 일시 중지 | ✅ 구현됨 |
| 디버그 컨텍스트에서 표현식 평가 | ✅ 구현됨 |
| 소스 코드 컨텍스트 가져오기 | ✅ 구현됨 |
| 세션 닫기 | ✅ 구현됨 |
| 실행 중인 JVM에 변경된 Java 클래스 핫스왑 (Java 전용) | ✅ 구현됨 |
🏗️ 아키텍처: 동적 어댑터 로딩
버전 0.10.0은 언어 독립적인 핵심 기능과 언어별 구현을 분리하는 깔끔한 어댑터 패턴을 도입했습니다:
┌─────────────┐ ┌────────────────┐ ┌──────────────┐ ┌─────────────────┐
│ MCP Client │────▶│ DebugMcpServer │────▶│SessionManager│────▶│ AdapterRegistry │
└─────────────┘ └────────────────┘ └──────────────┘ └─────────────────┘
│ │
▼ ▼
┌──────────────┐ ┌─────────────────┐
│ ProxyManager │◀─────│ Language Adapter│
└──────────────┘ └─────────────────┘
│
┌──────────────┴──────────────────────────────────────────┐
│ │
┌───────────┼───────────┬───────────┬───────────┬───────────┐ │
│ │ │ │ │ │ │
┌─────▼────┐┌─────▼────┐┌─────▼────┐┌─────▼────┐┌─────▼────┐┌─────▼────┐
│Python ││JavaScript││Rust ││Go ││Java ││Dotnet ││Mock │
│Adapter ││Adapter ││Adapter ││Adapter ││Adapter ││Adapter ││Adapter │
└──────────┘└──────────┘└──────────┘└──────────┘└──────────┘└──────────┘└──────���───┘언어 지원 추가
좋아하는 언어에 대한 디버깅 지원을 추가하고 싶으신가요? 어댑터 개발 가이드를 확인하세요!
💡 예시: Python 코드 디버깅
전체 디버깅 세션 예시는 다음과 같습니다:
# buggy_swap.py
def swap_variables(a, b):
a = b # Bug: loses original value of 'a'
b = a # Bug: 'b' gets the new value of 'a'
return a, b1단계: 디버그 세션 생성
// Tool: create_debug_session
// Request:
{
"language": "python",
"name": "Swap Bug Investigation"
}
// Response:
{
"success": true,
"sessionId": "a4d1acc8-84a8-44fe-a13e-28628c5b33c7",
"message": "Created python debug session: Swap Bug Investigation"
}2단계: 중단점 설정
// Tool: set_breakpoint
// Request:
{
"sessionId": "a4d1acc8-84a8-44fe-a13e-28628c5b33c7",
"file": "buggy_swap.py",
"line": 2
}
// Response:
{
"success": true,
"breakpointId": "28e06119-619e-43c0-b029-339cec2615df",
"file": "C:\\path\\to\\buggy_swap.py",
"line": 2,
"verified": false,
"message": "Breakpoint set at C:\\path\\to\\buggy_swap.py:2"
}3단계: 디버깅 시작
// Tool: start_debugging
// Request:
{
"sessionId": "a4d1acc8-84a8-44fe-a13e-28628c5b33c7",
"scriptPath": "buggy_swap.py"
}
// Response:
{
"success": true,
"state": "paused",
"message": "Debugging started for buggy_swap.py. Current state: paused",
"data": {
"message": "Debugging started for buggy_swap.py. Current state: paused",
"reason": "breakpoint"
}
}4단계: 변수 검사
먼저 범위를 가져옵니다:
// Tool: get_scopes
// Request:
{
"sessionId": "a4d1acc8-84a8-44fe-a13e-28628c5b33c7",
"frameId": 3
}
// Response:
{
"success": true,
"scopes": [
{
"name": "Locals",
"variablesReference": 5,
"expensive": false,
"presentationHint": "locals",
"source": {}
},
{
"name": "Globals",
"variablesReference": 6,
"expensive": false,
"source": {}
}
]
}그런 다음 로컬 변수를 가져옵니다:
// Tool: get_variables
// Request:
{
"sessionId": "a4d1acc8-84a8-44fe-a13e-28628c5b33c7",
"scope": 5
}
// Response:
{
"success": true,
"variables": [
{"name": "a", "value": "10", "type": "int", "variablesReference": 0, "expandable": false},
{"name": "b", "value": "20", "type": "int", "variablesReference": 0, "expandable": false}
],
"count": 2,
"variablesReference": 5
}📖 문서
📘 도구 참조 – 전체 API 문서
🚦 시작하기 가이드 – 최초 설정
🏗️ 아키텍처 개요 – 다중 언어 설계
🔧 어댑터 개발 – 새 언어 추가
🔌 동적 로딩 아키텍처 – 런타임 검색, 지연 로딩, 캐싱
🧩 어댑터 API 참조 – 어댑터, 팩토리, 로더 및 레지스트리 계약
🔄 마이그레이션 가이드 – v0.15.0으로 업그레이드 (동적 로딩)
🐍 Python 디버깅 가이드 – Python 전용 기능
🟨 JavaScript 디버깅 가이드 – JavaScript/TypeScript 기능
🐹 Go 디버깅 가이드 – Delve를 사용한 Go 디버깅
☕ Java 디버깅 가이드 – JDI 브릿지를 사용한 Java 디버깅
Windows에서의 Rust 디버깅 - 툴체인 요구 사항 및 문제 해결
🔧 문제 해결 – 일반적인 문제 및 해결 방법
🤝 기여
기여를 환영합니다! 지침은 CONTRIBUTING.md를 참조하세요.
# Development setup
git clone https://github.com/debugmcp/mcp-debugger.git
cd mcp-debugger
# Install dependencies and vendor debug adapters
pnpm install
# All debug adapters (JavaScript js-debug, Rust CodeLLDB) are automatically downloaded
# Build the project
pnpm build
# Run tests
pnpm test
# Check adapter vendoring status
pnpm vendor:status
# Force re-vendor all adapters (if needed)
pnpm vendor:force디버그 어댑터 공급
이 프로젝트는 pnpm install 중에 디버그 어댑터를 자동으로 공급합니다:
JavaScript: GitHub 릴리스에서 Microsoft의 js-debug 다운로드
Rust: 현재 플랫폼용 CodeLLDB 바이너리 다운로드
CI 환경: 공급을 건너뛰려면
SKIP_ADAPTER_VENDOR=true설정
어댑터를 수동으로 관리하려면:
# Check current vendoring status
pnpm vendor:status
# Re-vendor all adapters
pnpm vendor
# Clean and re-vendor (force)
pnpm vendor:force
# Clean vendor directories only
pnpm clean:vendor로컬에서 컨테이너 테스트 실행
Act를 사용하여 로컬에서 GitHub Actions 워크플로우를 실행합니다:
# Build the Docker image first
docker build -t mcp-debugger:local .
# Run tests with Act (use WSL2 on Windows)
act -j build-and-test --matrix os:ubuntu-latest자세한 테스트 지침은 tests/README.md를 참조하세요.
📊 프로젝트 상태
✅ 프로덕션 준비 완료: 6개의 언어 어댑터와 세련된 다중 언어 배포를 갖춘 v0.19.0
✅ 어댑터 패턴을 사용한 깔끔한 아키텍처
✅ JavaScript/Node.js: js-debug를 통한 전체 디버깅 루프
✅ Go: Delve DAP를 통한 전체 디버깅 지원
✅ Java: JDI 브릿지를 통한 시작 및 연결 모드
🦀 Rust: Linux/macOS/Windows에서 전체 지원 (Windows는 GNU 툴체인 필요; MSVC는 CodeLLDB에서 지원되지 않음)
📈 활발한 개발: 정기적인 업데이트 및 개선
📄 라이선스
MIT 라이선스 - 자세한 내용은 LICENSE를 참조하세요.
👥 기여자
@swinyx — Go 어댑터 (Delve)
@roofpig95008 — Java 어댑터 (JDI 브릿지)
🙏 감사의 말
다음 기술로 구축되었습니다:
Model Context Protocol (Anthropic)
Debug Adapter Protocol (Microsoft)
debugpy (Python 디버깅용)
AI에게 개발자처럼 디버깅할 수 있는 능력을 부여하세요 – 어떤 언어로든! 🎯
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/debugmcp/mcp-debugger'
If you have feedback or need assistance with the MCP directory API, please join our Discord server