VS Code 또는 CLI 환경에서 중단점 설정, 코드 단계별 실행, 변수 검사를 통해 AI agent가 운영 디버깅을 수행할 수 있도록 지원합니다.
다른 이름 microsoft/DebugMCP
- 스타
- 581
- Tools
- —
- 다운로드, 30일
- —
- 최신 버전
- —
- 마지막 커밋
- 2026년 11월 4일
- 라이선스
- MIT
DebugMCP MCP란?
DebugMCP은(는) MCP server입니다. VS Code 또는 CLI 환경에서 중단점 설정, 코드 단계별 실행, 변수 검사를 통해 AI agent가 운영 디버깅을 수행할 수 있도록 지원합니다.
프로젝트 README에서 생성된 요약
DebugMCP MCP server 정보
이 server를 통해 AI agent는 중단점을 설정하고, 코드를 단계별로 실행하며, 변수를 검사하는 운영 디버깅을 수행할 수 있습니다. 이를 통해 어시스턴트는 단순히 로그를 읽는 수준을 넘어 디버거를 능동적으로 제어하고, 식을 평가하거나 실행 중인 프로그램을 일시 중지하여 상태를 검사할 수 있습니다. 이 기능은 VS Code 내에서 작동하거나, IDE 없이도 Debug Adapter Protocol 어댑터에 연결되는 독립형 CLI를 통해 사용할 수 있습니다.
개발자는 Claude Code, Cursor, Windsurf, GitHub Copilot을 포함한 다양한 MCP 호환 어시스턴트와 함께 이를 사용할 수 있습니다. server는 완전히 로컬에서 실행되며 시작 시 외부 인증 정보나 설정이 필요하지 않습니다. VS Code와 호환되는 모든 프로그래밍 언어 또는 DAP 어댑터를 제공하는 언어를 지원합니다. 시스템에는 코드 실행을 체계적으로 조사할 수 있도록 start_debugging, step_over, add_breakpoint와 같은 특정 도구가 포함되어 있습니다.
활용 사례
- 1런타임 오류 조사AI agent가 자율적으로 중단점을 설정하고 코드를 한 줄씩 실행하며 버그의 근본 원인을 찾을 수 있습니다.
- 2실행 중인 루프 디버깅AI에게 명령하여 무한 루프에 빠진 프로그램을 중단시키고 현재 상태를 검사할 수 있습니다.
- 3자동화된 테스트 디버깅agent가 VS Code Testing API를 사용하여 특정 테스트를 실행하고 개별 테스트 케이스 내의 중단점에서 멈출 수 있습니다.
- 4터미널 기반 디버깅개발자는 IDE를 열지 않고도 명령줄에서 코딩 agent를 DAP 어댑터에 직접 연결할 수 있습니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
자동 검사
2026년 11월 13일에 실행됨전체 보고서 →아직 인증되지 않았습니다. 서버는 80점 이상의 점수, 심각한 결함 없음, 그리고 검사에 충분한 데이터를 갖추어야 합니다. 검사 방식
- 소스 저장소 연결 및 접근 가능통과
- 오픈 소스 라이선스 (OSI)통과
- 최근 1년 내 커밋 또는 릴리스통과
- 패키지 이름이 인기 패키지와 유사하지 않음검사되지 않음
- 원격 엔드포인트가 HTTPS 사용검사되지 않음
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 모델에 대한 숨겨진 지침 없음통과
- 패키지와 의존성에 심각한 보안 권고 없음검사되지 않음
README
GitHub에서 보기DebugMCP (MCP Server) - Empowering AI Agents with Operational Debugging Capabilities
Let AI agents debug your code inside VS Code - set breakpoints, step through execution, inspect variables, and evaluate expressions. Works with Codex, GitHub Copilot, GitHub Copilot CLI, Claude Code, Cline, Cursor, Windsurf, Roo Code, and any MCP-compatible assistant. Compatible with any VS Code supported coding language.
🚀 DebugMCP CLI is now available on npm! Debug directly from the terminal without requiring VS Code or any IDE at all by connecting AI coding agents to explicitly configured Debug Adapter Protocol (DAP) adapters. The debug adapter and target process run in the background. Install it with
npm install --global debugmcp, then rundebugmcp configure --agent copilot-cli. The CLI also installs thedebug-liveskill automatically. View the package on npm
⭐ If you find DebugMCP useful, please star the repo on GitHub! It helps others discover the project and motivates continued development.
📢 Developers Notice: This extension is maintained by ozzafar@microsoft.com and orbarila@microsoft.com. We welcome feedback and contributions to help improve this extension.
🎬 Watch DebugMCP in action — your AI assistant autonomously sets breakpoints, steps through code, and inspects variables directly in VS Code.
✨ What's New
2.4
- Standalone DebugMCP CLI — install
debugmcpfrom npm and give MCP-compatible agents direct access to explicitly configured DAP adapters without running VS Code. The CLI supports any language with a DAP adapter that communicates over stdio, configures supported agents, and installs thedebug-liveskill automatically.
2.2
- Cross-agent
debug-liveskill install — the systematic debugging workflow ships as an Agent Skill and is now installed into the standard skills directories —~/.agents/skills/(the cross-agent location honored by skills-compatible harnesses, including VS Code agent mode) and~/.copilot/skills/when present — so it's discoverable everywhere instead of being copied next to each agent's config where nothing scans it (fixes #105, where VS Code never loaded the skill). The server also advertises MCPinstructionsand thestart_debuggingtool points at the skill for the full workflow. - Pause running programs — new
pause_executiontool interrupts a freely-running program and stops at its current location, even with no breakpoint set (great for busy loops and embedded/bare-metal targets), so you can then inspect state or step from there. - Robust debugging via the VS Code Testing API —
start_debuggingwith atestNameuses the VS Code Testing API to discover and launch the test, producing consistent breakpoint hits inside individual test cases across language test runners (pytest, Jest/Vitest, Java, .NET, Go, etc.).
🚀 Quick Install
Install DebugMCP from VS Code Marketplace or use the direct link: vscode:extension/ozzafar.debugmcpextension
Install DebugMCP from Open VSX Registry
Table of Contents
- Overview
- Features
- Installation
- Quick Start
- Supported AI Assistants
- Supported Languages
- Configuration
- FAQ
- Troubleshooting
- How It Works
- Contributing
- License
Overview
DebugMCP is an MCP server that gives AI coding agents full control over the VS Code debugger. Instead of reading logs or guessing, your AI assistant can autonomously set breakpoints, launch debug sessions, step through code line by line, inspect variable values, and evaluate expressions — just like a human developer would. It runs 100% locally, requires zero configuration, and works out of the box with any MCP-compatible AI assistant.
Features
🔧 Tools
| Tool | Description | Parameters |
|---|---|---|
| start_debugging | Start a debug session for a source code file | fileFullPath (required)workingDirectory (required)testName (optional)configurationName (optional) |
| stop_debugging | Stop the current debug session | None |
| step_over | Execute the next line (step over function calls) | None |
| step_into | Step into function calls | None |
| step_out | Step out of the current function | None |
| continue_execution | Continue until next breakpoint | None |
| pause_execution | Interrupt a freely-running program and stop at its current location (no breakpoint needed) | None |
| restart_debugging | Restart the current debug session; a fresh stop without acknowledgement returns an explicit completion-unconfirmed result, not confirmed success | None |
| get_debug_status | Read paused/running/no-session status, the active session ID, and selected-frame details when paused; optionally wait for a pause | waitForPauseSeconds (optional, 0-600; bounded by the operation timeout) |
| get_debug_output | Read captured output for one session; requires user-enabled capture and at least one filter | sessionId (required)prefix and/or category (required filter; both are ANDed)cursor (optional)limit (optional, 1-100) |
| add_breakpoint | Add a breakpoint at a specific line (optionally conditional) | fileFullPath (required)line (required, 1-based)condition (optional) |
| add_logpoint | Add a logpoint that logs a message (instead of pausing) when a line is reached | fileFullPath (required)line (required, 1-based)logMessage (required, {expr} interpolated)condition (optional) |
| remove_breakpoint | Remove a breakpoint from a specific line | fileFullPath (required)line (required) |
| clear_all_breakpoints | Remove all breakpoints at once | None |
| list_breakpoints | List all active breakpoints | None |
| list_variable_names | List names and types of variables in scope, without reading any values | scope (optional: 'local', 'global', 'all') |
| get_variables_values | Get the values of specifically named variables at the current execution point | variableNames (required, e.g. ["user","response"])scope (optional: 'local', 'global', 'all') |
| evaluate_expression | Evaluate an expression in debug context; expandable children are listed by name and type without their values | expression (required) |
Note: The MCP server exposes tools for debugger actions, while the procedural workflow guidance (when to debug, how to structure a root-cause investigation, language-specific quirks) lives in the companion Agent Skill. Tool descriptions stay terse and behavioral; the extension installs the
debug-liveskill into the standard skills directories (~/.agents/skills/, plus~/.copilot/skills/when present) so skills-compatible harnesses load the full workflow on demand. The server also advertises MCPinstructionspointing agents at it before debugging.
Debug output capture
To read logpoint messages without pausing the program, enable
debugmcp.captureDebugOutput in VS Code user settings before output is emitted.
For the standalone CLI host, start it with debugmcp serve --capture-output.
Capture is off by default, and MCP tools cannot enable it.
Obtain sessionId from get_debug_status while the session is active, then call
get_debug_output, for example:
{
"sessionId": "<session-id-from-get_debug_status>",
"prefix": "[orders]",
"limit": 20
}
Provide a nonempty prefix (up to 256 characters), a category (console,
stdout, stderr, or important), or both. Reuse the returned nextCursor as
cursor with the same filters to read new entries; hasMore indicates additional
entries to scan, and truncated reports evicted history. Only DAP output events
are captured, not existing Debug Console contents.
Output stays in memory, bounded to 8 sessions and 1,000 events/256 KiB per session. Events over 8 KiB are replaced by an omission marker. History can remain after termination until eviction, but changing the capture setting or disposing the host clears it; output is not persisted or logged by the capture feature. Credential-pattern redaction happens before retention, but is heuristic and event-local, not a guarantee that every secret is removed. Enable capture only for output you intend to make available to the agent.
🎯 Debugging Best Practices
DebugMCP follows systematic debugging practices for effective issue resolution:
- Start with Entry Points: Begin debugging at function entry points or main execution paths
- Follow the Execution Flow: Use step-by-step execution to understand code flow
- Root Cause Analysis: Don't stop at symptoms - find the underlying cause
🛡️ Security & Reliability
- Secure Communication: All MCP communications use secure protocols
- Local Operation: The MCP server runs 100% locally with no external communications and requires no credentials
- State Validation: Robust validation of debugging states and operations
Installation
Standalone CLI (preview)
The standalone host talks directly to explicitly configured DAP adapters and does not require VS Code. It never discovers, downloads, installs, or selects an adapter automatically.
Install the published package:
npm install --global debugmcp
For repository development, build and invoke the local bundle:
npm install
npm run package
node dist/debugmcp.js adapter add python --command "python -m debugpy.adapter"
node dist/debugmcp.js adapter validate python
node dist/debugmcp.js configure
Adapter registrations are stored in .debugmcp.json by default. Add --user
to adapter add, adapter list, or adapter remove to use the per-user
configuration. Project registrations override registrations with the same name
in user configuration.
Language shorthands derive the DAP type and file extensions for python,
csharp, dotnet, cpp, c, javascript, typescript, node, java,
go, rust, ruby, php, swift, and dart. These are configuration
conveniences, not a language support boundary. The command remains explicit so
the selected environment determines which adapter installation is used.
Languages without a shorthand provide --type and --extensions explicitly.
Compiled-language registrations can provide the executable in --launch;
values support ${workspaceFolder}, ${file}, ${fileDirname}, and
${fileBasenameNoExtension}.
The current CLI supports adapters that speak DAP over stdio. A registration can
provide adapter-specific launch properties with --launch followed by a JSON
object. If multiple registered adapters claim the same file extension,
start_debugging.configurationName must identify the adapter to use. Test
discovery remains host-specific; configure the adapter launch properties to run
the required test command.
Adapter arguments beginning with -- can follow --args directly. Use a
standalone -- after --args when an adapter argument has the same name as a
DebugMCP option, for example --args -- --user.
debugmcp configure presents the same agent choices as the VS Code extension's
setup popup and writes the standalone stdio command for every selected agent.
In automation, repeat --agent <id> to bypass the terminal prompt, for example
debugmcp configure --agent copilot-cli --agent codex. Each configuration has
one canonical debugmcp entry, so configuring the CLI replaces an existing
extension HTTP entry rather than registering both.
The command also installs the bundled debug-live skill into the standard
personal skills directories. Restart configured agents to discover it.
Use debugmcp status to inspect the GitHub Copilot CLI registration. The
DebugMCP command configures only the standalone CLI. To use the interactive
VS Code version, configure it through the DebugMCP extension's agent popup;
the command line does not select or configure the extension.
Quick Install Options
Option 1: Direct Link (Fastest)
- Click this link: vscode:extension/ozzafar.debugmcpextension
- Or copy and paste in your browser:
vscode:extension/ozzafar.debugmcpextension
Option 2: VS Code Marketplace
- Visit: https://marketplace.visualstudio.com/items?itemName=ozzafar.debugmcpextension
- Click "Install"
Option 3: Within VS Code
- Open VSCode
- Go to Extensions (Ctrl+Shift+X / Cmd+Shift+X)
- Search for "DebugMCP"
- Click Install
- The extension automatically activates and registers as an MCP server
Verification
After installation, you should see:
- DebugMCP extension in your installed extensions
- MCP server automatically running on port 3001 (configurable)
- Debug tools available to connected AI assistants
📝 Note: No additional debugging rule instructions are needed - the extension works out of the box.
💡 Tip: Enable auto-approval for all debugmcp tools in your AI assistant to create seamless debugging workflows without constant approval interruptions.
Quick Start
- Install the extension (see Installation)
- Open your project in VSCode
- Ask your AI to debug - it can now set breakpoints, start debugging, and analyze your code!
Supported AI Assistants
DebugMCP works with any MCP-compatible AI assistant. It auto-detects and offers to register itself with:
| Assistant | Auto-Registration | Manual Config |
|---|---|---|
| GitHub Copilot | ✅ | See config |
| GitHub Copilot CLI | ✅ | See config |
| Claude Code | ✅ | See config |
| Cline | ✅ | See config |
| Cursor | ✅ | See config |
| Codex | ✅ | See config |
| Windsurf | ✅ | See config |
| Roo Code | ✅ | See config |
| Antigravity | ✅ | See config |
| Any MCP-compatible assistant | — | See manual setup |
Supported Languages
DebugMCP supports debugging for the following languages with their respective VSCode extensions:
| Language | Extension Required | File Extensions | Status |
|---|---|---|---|
| Python | Python | .py |
✅ Fully Supported |
| JavaScript/TypeScript | Built-in / JS Debugger | .js, .ts, .jsx, .tsx |
✅ Fully Supported |
| Java | Extension Pack for Java | .java |
✅ Fully Supported |
| C/C++ | C/C++ | .c, .cpp, .cc |
✅ Fully Supported |
| Go | Go | .go |
✅ Fully Supported |
| Rust | rust-analyzer | .rs |
✅ Fully Supported |
| PHP | PHP Debug | .php |
✅ Fully Supported |
| Ruby | Ruby | .rb |
✅ Fully Supported |
| C#/.NET | C# | .cs, .csproj |
✅ Fully Supported |
Configuration
MCP Server Configuration (Recommended)
The extension runs an MCP server automatically. It will pop up a message to auto-register the MCP server in your AI assistant.
You can also trigger the registration manually via the Command Palette:
DebugMCP: Show Agent Selection Popup
Manual MCP Server Registration (Optional)
🔄 Auto-Migration: If you previously configured DebugMCP with SSE transport, the extension will automatically migrate your configuration to the new Streamable HTTP transport on activation.
Cline
Add to your Cline settings or cline_mcp_settings.json:
{
"mcpServers": {
"debugmcp": {
"type": "streamableHttp",
"url": "http://localhost:3001/mcp",
"description": "DebugMCP - AI-powered debugging assistant"
}
}
}
GitHub Copilot
Add to your VS Code settings (settings.json):
{
"mcp": {
"servers": {
"debugmcp": {
"type": "http",
"url": "http://localhost:3001/mcp",
"description": "DebugMCP - Multi-language debugging support"
}
}
}
}
GitHub Copilot CLI
Add to ~/.copilot/mcp-config.json (${COPILOT_HOME}/mcp-config.json if COPILOT_HOME is set):
{
"mcpServers": {
"debugmcp": {
"type": "http",
"url": "http://localhost:3001/mcp",
"tools": ["*"]
}
}
}
Claude Code
Register DebugMCP with Claude Code:
claude mcp add --transport http --scope user debugmcp http://localhost:3001/mcp
Or add the equivalent configuration to ~/.claude.json (top-level mcpServers, for cross-project user-scope access — see the Claude Code MCP docs):
{
"mcpServers": {
"debugmcp": {
"type": "http",
"url": "http://localhost:3001/mcp"
}
}
}
Claude Desktop: Claude Desktop connects to local/remote HTTP MCP servers through Settings → Connectors → Add custom connector rather than a static config file — paste
http://localhost:3001/mcpthere. DebugMCP doesn't auto-register with Desktop for this reason.
Cursor
Add to Cursor's MCP settings:
{
"mcpServers": {
"debugmcp": {
"type": "streamableHttp",
"url": "http://localhost:3001/mcp",
"description": "DebugMCP - Debugging tools for AI assistants"
}
}
}
Codex
Register DebugMCP with Codex:
codex mcp add debugmcp --url http://localhost:3001/mcp
Or add the equivalent configuration to ~/.codex/config.toml (${CODEX_HOME}/config.toml if CODEX_HOME is set):
[mcp_servers.debugmcp]
url = "http://localhost:3001/mcp"
Windsurf
Add to Windsurf's MCP settings (~/.windsurf/mcp_settings.json or workspace .windsurf/mcp_settings.json):
{
"mcpServers": {
"debugmcp": {
"type": "streamableHttp",
"url": "http://localhost:3001/mcp",
"description": "DebugMCP - Debugging tools for AI assistants"
}
}
}
Roo Code
Add to Roo Code's MCP settings:
{
"mcpServers": {
"debugmcp": {
"type": "streamableHttp",
"url": "http://localhost:3001/mcp",
"description": "DebugMCP - Debugging tools for AI assistants"
}
}
}
Antigravity
Add to Antigravity's MCP settings:
{
"mcpServers": {
"debugmcp": {
"type": "streamableHttp",
"url": "http://localhost:3001/mcp",
"description": "DebugMCP - Debugging tools for AI assistants"
}
}
}
Extension Settings
Configure DebugMCP behavior in VSCode settings:
{
"debugmcp.serverPort": 3001,
"debugmcp.timeoutInSeconds": 180,
"debugmcp.bindHost": ["127.0.0.1", "::1"],
"debugmcp.captureDebugOutput": false
}
| Setting | Default | Description |
|---|---|---|
debugmcp.serverPort |
3001 |
Port number for the MCP server |
debugmcp.timeoutInSeconds |
180 |
Timeout for debugging operations |
debugmcp.bindHost |
["127.0.0.1", "::1"] |
Network interface(s) the HTTP server binds to. Accepts a string or array of strings. See Security model before changing. |
debugmcp.captureDebugOutput |
false |
User-controlled, machine-scoped capture of bounded debugger output. See Debug output capture; agents cannot enable capture through MCP. |
Security model
DebugMCP exposes powerful debugger primitives (evaluate_expression, start_debugging, …) over an unauthenticated local HTTP endpoint. To keep that surface safe, the server enforces four controls:
- Loopback-only bind. The HTTP server binds to the IPv4 and IPv6 loopback addresses (
127.0.0.1and::1) by default, so other hosts on your network cannot reachhttp://<your-ip>:3001/mcp. Binding both families ensures clients that resolvelocalhostto either family connect successfully. Thedebugmcp.bindHostsetting (string or array of strings) lets you opt into a different interface (for example, when forwarding the port into a remote container), but doing so exposes the unauthenticated debugger to anything that can route to that address — do not point it at0.0.0.0or a LAN address on an untrusted network. - Host / Origin header validation. Every request must carry a
Hostheader naming a loopback address (localhost,127.0.0.1, or[::1]); any port suffix in theHostmust also match the server's listening port. Requests with any otherHost— including those that arrive via DNS rebinding from a malicious webpage — are rejected with HTTP 403. The same loopback check is applied to theOriginheader when present. - Least-privilege variable inspection.
get_variables_valuesrequires an explicitvariableNameslist (max 50, no wildcards) and returns only those variables. It no longer dumps every variable in scope, which previously handed the agent unrelated process state that it never asked for. Uselist_variable_namesto discover what exists; that tool returns names and types only and never reads a value. - Secret redaction on variable inspection. Values with credential-bearing names or values matching a known credential shape are replaced with
<redacted: possible secret>before the response leaves the extension. The evaluated result returned byevaluate_expressionis covered too. Whenget_variables_valuesorevaluate_expressionexpands a complex value, descendants are listed by name and type only. Useevaluate_expressionwith an exact descendant path when its value is needed. Recursive expansion is capped at 100 child fields total per response. Null-ish values (None,undefined,'') are never redacted so "my token is empty" bugs remain debuggable. Redaction is always on and cannot be turned off.
DebugMCP MCP 질문
DebugMCP를 사용하려면 VS Code가 반드시 필요한가요?
아니요, 독립형 DebugMCP CLI를 사용하면 AI 코딩 agent를 설정된 Debug Adapter Protocol (DAP) 어댑터에 연결하여 터미널에서 직접 디버깅할 수 있습니다.
중단점이 없는 실행 중인 프로그램을 일시 중지할 수 있나요?
네, pause_execution 도구를 사용하면 실행 중인 프로그램을 중단하고 현재 위치에서 멈출 수 있습니다. 이는 무한 루프나 임베디드 타겟을 조사할 때 유용합니다.
디버깅 중에 데이터가 외부 서버로 전송되나요?
아니요, MCP server는 외부 통신 없이 100% 로컬에서 실행되며 별도의 인증 정보가 필요하지 않습니다.