Skip to content
Agentmart
Submit a tool

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

IndexedMITLocal (stdio)★ 179
Write a review

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.

We use your email only for this newsletter. Privacy

About

Step-through debugging for AI agents: breakpoints, stepping and live variables in nine languages

Use cases: debugging

No 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_status
  • evaluate_expression
  • get_local_variables
  • get_output
  • get_scopes
  • get_source_context
  • get_stack_trace
  • get_variables
  • list_breakpoints
  • list_debug_sessions
  • list_supported_languages
  • list_threads

Write 11 · Create, change, send or run things.

  • attach_to_process
  • close_debug_session
  • create_debug_session
  • detach_from_process
  • dev_rebuild_and_restart
  • dev_restart_debugger
  • restart_debugging
  • set_breakpoint
  • start_debugging
  • unexpose_session
  • wait_for_stop

Delete 2 · Delete, drop, revoke or wipe things.

  • clear_breakpoints
  • remove_breakpoint

Not yet classified 7 · We could not tell from the name and description.

  • continue_execution
  • expose_session
  • pause_execution
  • redefine_classes
  • step_into
  • step_out
  • step_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_process

    Attach 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_breakpoints

    Remove 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_session

    Close a debugging session

  • continue_execution

    Continue 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_session

    Create 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_process

    Detach from the debugged process without terminating it

  • dev_rebuild_and_restart

    Description is built at runtime.

  • dev_restart_debugger

    Description is built at runtime.

  • dev_server_status

    Get the current status of the mcp-debugger backend (state, PID, uptime, buildInProgress, transport, project root, port, and display-safe environment overrides).

  • evaluate_expression

    Evaluate 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_session

    Expose 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_variables

    Get 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_output

    Get 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_scopes

    Get scopes for a stack frame

  • get_source_context

    Get source context around a specific line in a file

Show 17 more tools
  • get_stack_trace

    Get 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_variables

    Get 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_breakpoints

    List 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_sessions

    List all active debugging sessions. Paused sessions include lastStop with the reason for the most recent stop (e.g. "breakpoint" vs "exception")

  • list_supported_languages

    List all supported debugging languages with metadata

  • list_threads

    List all threads in the debugged process

  • pause_execution

    Pause 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_classes

    Hot-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_breakpoint

    Remove 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_debugging

    Restart 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_breakpoint

    Set a breakpoint. Setting breakpoints on non-executable lines (structural, declarative) may lead to unexpected behavior

  • start_debugging

    Start 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_into

    Step 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_out

    Step 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_over

    Step 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_session

    Close 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_stop

    Block 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
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)