mcp-debugger
Step-through debugging for AI agents: breakpoints, stepping and live variables in nine languages
Connector by debugmcp · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/debugmcp-mcp-debugger
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: debugging
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
Runs code on install
Its package runs an install script (such as npm postinstall or setup.py code) as soon as you install it, before any tool is called. Read the script first.
- Tools
- 12 read · 11 write · 2 delete · 7 not yet classified
- Secrets
- None asked for
- Install scripts
- Runs code on install
- Runs as
- Node.js package
Tools by what they do 32
Read from the source code; the running server may list different tools.
Read 12 · Look things up without changing anything.
dev_server_statusevaluate_expressionget_local_variablesget_outputget_scopesget_source_contextget_stack_traceget_variableslist_breakpointslist_debug_sessionslist_supported_languageslist_threads
Write 11 · Create, change, send or run things.
attach_to_processclose_debug_sessioncreate_debug_sessiondetach_from_processdev_rebuild_and_restartdev_restart_debuggerrestart_debuggingset_breakpointstart_debuggingunexpose_sessionwait_for_stop
Delete 2 · Delete, drop, revoke or wipe things.
clear_breakpointsremove_breakpoint
Not yet classified 7 · We could not tell from the name and description.
continue_executionexpose_sessionpause_executionredefine_classesstep_intostep_outstep_over
Files it touches
- Any path the agent passes to its tools
Tools (32)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
attach_to_processAttach to a running process for debugging. After the handshake the target is verified by polling for threads; if none are reported within verifyTimeout (~20s default) the attach fails and the proxy is torn down. When a requested post-attach pause is accepted but no stopped event arrives within its bounded wait, returns state "running" with pending:true; the late event alone changes the session to "paused" — call wait_for_stop to block until it does
clear_breakpointsRemove all breakpoints in a session, or all breakpoints in one file. Clearing zero breakpoints is success. Takes effect immediately while the program is running or paused
close_debug_sessionClose a debugging session
continue_executionContinue execution. Returns immediately after the adapter acknowledges; does not wait for the next stop. Call wait_for_stop to block until the program stops again or ends — it reports why (lastStop, e.g. "breakpoint" vs "exception") and where; list_debug_sessions and get_stack_trace show the same without waiting. Use get_output to read the program's stdout/stderr
create_debug_sessionCreate a new debugging session. Passing port, processId or an adapterConfig that names a debugger URI (vmServiceUri, websocketAddress, vmServiceInfoFile) attaches to a running process in the same call, with every attach argument attach_to_process takes (host alone does not); omit them for launch mode. Attaching pauses the target unless stopOnEntry is false
detach_from_processDetach from the debugged process without terminating it
dev_rebuild_and_restartDescription is built at runtime.
dev_restart_debuggerDescription is built at runtime.
dev_server_statusGet the current status of the mcp-debugger backend (state, PID, uptime, buildInProgress, transport, project root, port, and display-safe environment overrides).
evaluate_expressionEvaluate expression in the current debug context. Without frameId, uses the same adopted top frame as stack and locals — at a breakpoint or step that is the frame the program stopped in even when the stack display would hide it — and discloses an automatic thread switch or a hidden paused frame in anchorNote; frame names the frame that was used, on success and on failure. Expressions can read and modify program state. Waits up to 30s by default
expose_sessionExpose a debug session as a read-only DAP mirror endpoint on 127.0.0.1 so an IDE (e.g. VS Code) can attach as a second debug client and inspect live state: threads, stack, scopes, variables, evaluate. Returns host, port, and a session token the IDE must include as "mirrorToken" in its attach configuration. The mirror never drives execution — continue/step/pause and breakpoint changes are rejected; control stays with this MCP session. Requires an active session (launched or attached); works while running or paused. Calling it again returns the same endpoint. The endpoint closes on unexpose_sess…
get_local_variablesGet local variables for the shared inspection anchor. If the stopped thread is frameless, a sibling with policy-recognized user frames is preferred, adopted, and disclosed in note. At a breakpoint or step inside a frame the stack display hides as internal (a node_modules dependency), the anchor is that frame — the one the program stopped in — and note says so. A JavaScript frame with no Local/block scope returns empty with guidance instead of mislabeling Global bindings. Responses are size-guarded; pass names:[...] to fetch specific variables in full
get_outputGet debuggee output (stdout/stderr/console) captured for a session. Buffered per launch (last 1000 entries; adapter telemetry and known adapter-internal diagnostics — e.g. LLDB DWARF-parser noise — filtered out). Works while the program is running and after it finishes, until the session is closed. Pass since=nextSince from the previous response to fetch only new output
get_scopesGet scopes for a stack frame
get_source_contextGet source context around a specific line in a file
Show 17 more tools
get_stack_traceGet stack trace. The response includes stopReason — why the session is paused. For an implicit frameless stopped thread, a sibling with policy-recognized user frames is preferred and adopted, with the switch disclosed in note. Internal/runtime frames are filtered by default; when any are hidden the response carries hiddenFrames and a note. When the frame the program is paused in is itself internal, pausedFrame names it (kept: whether it was retained as stackFrames[0]) and the note says so. The note also says when the top frame's file is newer than the compiled file the debugger binds it throug…
get_variablesGet variables (scope is variablesReference: number). Responses are size-guarded: oversized values are cut (truncated:true) and very large scopes return a capped list with a truncation notice — pass names:[...] to fetch specific variables in full
list_breakpointsList all breakpoints in a session with their verified state and adapter-assigned ids. Session-global function breakpoints appear separately as functionBreakpoints (omitted when filtering by file). Works before launch (queued, verified=false), while running or paused, and after the program exits
list_debug_sessionsList all active debugging sessions. Paused sessions include lastStop with the reason for the most recent stop (e.g. "breakpoint" vs "exception")
list_supported_languagesList all supported debugging languages with metadata
list_threadsList all threads in the debugged process
pause_executionPause a running program. Waits briefly for the stop; if the program cannot stop within ~5s (e.g. blocked in native code, or an idle server waiting for input), returns success with pending:true and the session reports "paused" the next time the program runs code (call wait_for_stop to block until then). An observed stop answers with stopReason, the first visible frame as location (with its source context), and note when the stop was reported on a thread with no program frame — a sibling thread in program code is shown instead, or, when none has one, the note says no program frame is active. Fai…
redefine_classesHot-swap changed Java classes into a running JVM. Scans a classes directory for .class files modified after sinceTimestamp, matches them against loaded classes in the target JVM, and redefines them using JDI. Returns which classes were redefined and the newest file timestamp (pass as sinceTimestamp on next call for incremental updates). Statement-anchored breakpoints are re-resolved against the new source after the swap (anchorResolution reports moved/stale). Only works with Java debug sessions.
remove_breakpointRemove a breakpoint by breakpointId (returned by set_breakpoint / list_breakpoints), by function name, or by file + line (removes all breakpoints at that location). Takes effect immediately while the program is running or paused; also works after the program exits, before a relaunch
restart_debuggingRestart the debuggee: terminate the current program (if still running) and relaunch it with the same configuration as the last start_debugging. All current breakpoints are re-applied automatically. The get_output buffer starts fresh — read from since=0 after a restart. Works while running, paused, or after the program has exited. Not available for attach sessions or sessions never launched. Answers like start_debugging, including "running" with pending:true when the relaunch has not stopped within the same short hold (then call wait_for_stop)
set_breakpointSet a breakpoint. Setting breakpoints on non-executable lines (structural, declarative) may lead to unexpected behavior
start_debuggingStart debugging a script. Answers when the launched program stops, when it ends, or after a short hold — whichever comes first, and the same way in every language: "paused" with a reason and, as wait_for_stop answers a stop, the location, its source context and a note (a breakpoint reached as the program starts is answered here), "stopped" with the exit code, or "running" with pending:true when the program has not stopped yet; the message says what is armed. The hold is not a limit on the program — nothing is cancelled when it passes and breakpoints stay armed: call wait_for_stop to block unti…
step_intoStep into the current call. Waits briefly for the program to stop; if the step is still executing after ~5s, returns success with state "running" and pending:true — the session becomes "paused" when the step completes (call wait_for_stop to block until then)
step_outStep out of the current function. Waits briefly for the program to stop; if the step is still executing after ~5s (e.g. the rest of the function is long-running), returns success with state "running" and pending:true — the session becomes "paused" when the step completes (call wait_for_stop to block until then)
step_overStep over the current line. Waits briefly for the program to stop; if the step is still executing after ~5s (e.g. stepping over a long-running call), returns success with state "running" and pending:true — the step is still in effect and the session becomes "paused" when it completes (call wait_for_stop to block until then, or pause_execution to interrupt)
unexpose_sessionClose a session's DAP mirror endpoint and disconnect any attached IDE clients. Succeeds as a no-op if the session is not exposed
wait_for_stopBlock until the session next pauses or ends, then say why and where. Call it after continue_execution (which does not wait) and whenever a tool answers pending:true, instead of polling list_debug_sessions. Answers at once when the session is already paused (state "paused" with lastStop — the same record list_debug_sessions shows — and the top frame as location) or already over (the terminal state, with exitCode when the debuggee reported one); note says when the answer is anchored on a thread other than the one the stop was reported on, or when no frame of the shown stack is program code. If n…
Compare and alternatives
Featured in
Signals
- Stars
- 179
- Forks
- 24
- Open issues
- 11
- Weekly downloads
- 2,327
- Last commit
- Oct 21, 2026 (7 days ago)
- Last release
- Sep 30, 2026 (28 days ago)
- Last package publish
- Sep 30, 2026 (28 days ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.debugmcp/mcp-debugger- Version
- 0.25.1
- Auth
- No auth
- Packages
- npm @debugmcp/mcp-debuggeroci
docker.io/debugmcp/mcp-debugger:0.25.1 - License
- MIT
- Repository
- github.com/debugmcp/mcp-debugger
- Website
- debugmcp.io
- First seen
- Oct 24, 2026
- Last checked
- Oct 25, 2026
Cite this page
mcp-debugger. Agent Mart. https://agentmart.dev/connectors/debugmcp-mcp-debugger (last updated 2026-10-25)