dap-mcp-server 0.1.9 → 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -24,12 +24,15 @@ Additional adapters (e.g. Node.js via js-debug) can be registered via the `confi
24
24
 
25
25
  | Tool | Description |
26
26
  |------|-------------|
27
- | `debug_launch` | Start a debug session (launch a program with breakpoints) |
27
+ | `debug_inspect` | **One-shot:** launch → run to breakpoint → evaluate expressions → disconnect. Use first when you just need a value at a line. |
28
+ | `debug_run` | **One-shot:** launch → run to completion → return all output. Combine with logpoints for printf-style debugging without editing source. |
29
+ | `debug_launch` | Start an interactive debug session (launch a program with breakpoints) |
28
30
  | `debug_attach` | Attach to a running process |
29
31
  | `debug_restart` | Restart with the same configuration |
30
32
  | `debug_disconnect` | End a debug session |
31
- | `set_breakpoints` | Set/replace breakpoints in a file |
33
+ | `set_breakpoints` | Set/replace breakpoints in a file (use `logMessage` for logpoints) |
32
34
  | `set_exception_breakpoints` | Break on exceptions |
35
+ | `list_breakpoints` | List currently-registered breakpoints for a session |
33
36
  | `get_state` | Get threads, stack trace, scopes, and variables |
34
37
  | `evaluate` | Evaluate an expression in the debuggee context |
35
38
  | `step` | Continue, next, stepIn, stepOut, or pause |
package/SKILL.md CHANGED
@@ -7,56 +7,203 @@ description: Use when debugging a program — when you need to set breakpoints,
7
7
 
8
8
  You have access to a real debugger via the `dap` MCP server. **Use it instead of adding print/log statements** whenever you need to understand runtime behavior, track down a bug, or verify a fix.
9
9
 
10
- ## When to Use the Debugger
10
+ ## When to switch from print() to the debugger
11
11
 
12
- - A test fails and the cause is not obvious from the error message or stack trace
13
- - You need to inspect the value of variables at a specific point in execution
14
- - You suspect a logic error in a loop, conditional, or data transformation
15
- - A function returns an unexpected result and you want to trace the execution path
16
- - You want to verify your fix actually changes behavior at the right point
12
+ Reach for the debugger — don't keep guessing — when any of these are true:
17
13
 
18
- ## Quick Start
14
+ - **Your first fix attempt was wrong.** Stop iterating on guesses. Inspect actual values.
15
+ - **You're about to add 3+ print statements.** Use a logpoint instead (see below) — same information, no code edits.
16
+ - **You need a value on iteration N of a loop.** Use `hitCondition: "N"` instead of conditional prints.
17
+ - **A test fails with a non-obvious traceback.** Launch the test under the debugger; you'll see locals at the failure site.
18
+ - **You're reasoning about state that's modified across many call sites.** A conditional breakpoint on the value beats grepping for assignments.
19
19
 
20
- 1. Check available adapters: call `list_adapters` to see what's installed.
21
- 2. Launch with breakpoints in a single call:
20
+ Print debugging is fine for: trivial one-line checks, scripts you'll throw away in the next message, or when you genuinely just want to see "did this code path execute?".
21
+
22
+ ## Logpoints — print debugging without editing code
23
+
24
+ A **logpoint** is a breakpoint that doesn't pause execution. It just emits a formatted message every time it's hit. This is the single most useful feature for AI agents.
25
+
26
+ Set it via the `logMessage` field on a breakpoint:
22
27
 
23
28
  ```
24
- debug_launch({
25
- adapter: "python", // or "node", "go", "cpp"
26
- program: "/absolute/path/to/file.py",
27
- stopOnEntry: false,
29
+ set_breakpoints({
30
+ file: "/abs/path/src/foo.py",
28
31
  breakpoints: [
29
- { file: "/absolute/path/to/file.py", line: 42 }
32
+ { line: 42, logMessage: "x={x} y={y} state={self.state}" },
33
+ { line: 88, logMessage: "iteration {i}: items={len(items)}" }
30
34
  ]
31
35
  })
32
36
  ```
33
37
 
34
- 3. When the program stops, the response already contains the full state (threads, stack, scopes, variables). Read it — no extra call needed.
35
- 4. Step through code with `step({ action: "next" })` — the response includes the new state.
36
- 5. Evaluate expressions with `evaluate({ expression: "len(items)" })`.
37
- 6. When done, call `debug_disconnect`.
38
+ Then `step({ action: "continue" })` and let the program run. Retrieve every log with `get_output`. You get the same information as inserting `print(f"x={x} y={y}")` at five places — without touching the source file, without re-running, and with the program's natural execution preserved.
39
+
40
+ **When to use logpoints over breakpoints**: when you want to *observe* values across many hits rather than *interrupt* execution to inspect one. They are the right tool ~70% of the time.
41
+
42
+ Expression syntax inside `{...}` depends on the adapter (debugpy: Python; node: JS). The expression is evaluated in the breakpoint's scope.
43
+
44
+ ## Debugging a failing test
45
+
46
+ This is the dominant case. Use the test runner as the program, with the specific test as an argument.
47
+
48
+ ### pytest
49
+
50
+ ```
51
+ debug_launch({
52
+ adapter: "python",
53
+ program: "/abs/path/.venv/bin/pytest",
54
+ args: ["tests/test_foo.py::test_bar", "-x", "--no-header"],
55
+ cwd: "/abs/path",
56
+ breakpoints: [{ file: "/abs/path/src/foo.py", line: 42 }],
57
+ stopOnEntry: false,
58
+ })
59
+ ```
60
+
61
+ For pytest, also consider setting `exceptionBreakpoints: ["raised"]` — pytest swallows exceptions before you see them, but the debugger will stop at the raise site.
62
+
63
+ ### vitest / jest (Node.js)
64
+
65
+ Requires the `node` adapter configured (see "Node.js setup" below). Use the runner binary from `node_modules/.bin`:
66
+
67
+ ```
68
+ debug_launch({
69
+ adapter: "node",
70
+ program: "${cwd}/node_modules/.bin/vitest",
71
+ args: ["run", "tests/foo.test.ts", "-t", "the failing test name"],
72
+ cwd: "/abs/path",
73
+ breakpoints: [{ file: "/abs/path/src/foo.ts", line: 42 }],
74
+ stopOnEntry: false,
75
+ })
76
+ ```
77
+
78
+ ### go test
79
+
80
+ ```
81
+ debug_launch({
82
+ adapter: "go",
83
+ program: "${cwd}", // delve takes a package dir, not a binary
84
+ args: ["-test.run", "TestFoo", "-test.v"],
85
+ cwd: "/abs/path",
86
+ breakpoints: [{ file: "/abs/path/foo.go", line: 42 }],
87
+ stopOnEntry: false,
88
+ })
89
+ ```
90
+
91
+ Delve uses `dlv test` semantics under the hood when the program is a package directory containing test files.
92
+
93
+ ### Node.js setup
94
+
95
+ If `list_adapters` shows no `node` entry, register it once (path depends on installed extension):
96
+
97
+ ```
98
+ configure_adapter({
99
+ type: "node",
100
+ runtime: "node",
101
+ program: "/abs/path/to/js-debug/src/dapDebugServer.js",
102
+ args: [],
103
+ scope: "global",
104
+ })
105
+ ```
106
+
107
+ `js-debug-dap` ships with the VS Code Node debugger extension. Alternatively use `@vscode/js-debug` from npm.
108
+
109
+ ## Quick Start (single-file program)
110
+
111
+ 1. `list_adapters` — see what's installed.
112
+ 2. Launch with breakpoints in one call:
113
+
114
+ ```
115
+ debug_launch({
116
+ adapter: "python",
117
+ program: "/abs/path/file.py",
118
+ stopOnEntry: false,
119
+ breakpoints: [{ file: "/abs/path/file.py", line: 42 }],
120
+ })
121
+ ```
122
+
123
+ 3. The response already contains the full state (threads, stack, scopes, variables) when the breakpoint is hit. No follow-up `get_state` needed.
124
+ 4. Step with `step({ action: "next" })` — response includes the new state.
125
+ 5. `evaluate({ expression: "len(items)" })` for ad-hoc inspection.
126
+ 6. `debug_disconnect` when done.
127
+
128
+ ## Stepping strategy
129
+
130
+ - **`next`** (step over) is the default choice. Use it unless you have a specific reason not to.
131
+ - **`stepIn`** only when you suspect the bug is *inside* the function being called — not at the call site. Stepping into library code will get you lost fast.
132
+ - **`stepOut`** to bail out of a function you stepped into by mistake.
133
+ - **`continue`** to run to the next breakpoint. With logpoints set, this is how you collect runtime traces.
134
+
135
+ If you find yourself stepping line-by-line for more than ~10 steps, you're probably doing it wrong. Set a breakpoint at the next interesting location and continue to it.
136
+
137
+ ## Worked example
138
+
139
+ Bug: `compute_total(items)` returns `0` when items contain a tax-exempt entry.
140
+
141
+ ```
142
+ # Launch under pytest with a breakpoint at the suspect line
143
+ debug_launch({
144
+ adapter: "python",
145
+ program: "/proj/.venv/bin/pytest",
146
+ args: ["tests/test_billing.py::test_tax_exempt", "-x"],
147
+ cwd: "/proj",
148
+ breakpoints: [{ file: "/proj/src/billing.py", line: 57 }],
149
+ stopOnEntry: false,
150
+ })
151
+
152
+ # Response (paraphrased):
153
+ # {
154
+ # sessionId: "s-1",
155
+ # status: "stopped",
156
+ # location: { file: ".../billing.py", line: 57, functionName: "compute_total" },
157
+ # scopes: [{ name: "Locals", variables: [
158
+ # { name: "items", value: "[{...}, {...}]", ... },
159
+ # { name: "subtotal", value: "100", ... },
160
+ # { name: "tax", value: "0", ... }
161
+ # ] }]
162
+ # }
163
+
164
+ # Inspect the exempt item more closely
165
+ evaluate({ expression: "[i for i in items if i.get('tax_exempt')]" })
166
+ # → [{name: 'book', price: 100, tax_exempt: True}]
167
+
168
+ # Step over to see what compute_total actually returns
169
+ step({ action: "next" })
170
+ # → see that `total = subtotal + tax` returns 100, not 0. Bug is upstream.
171
+
172
+ # Continue to verify nothing else changes the return
173
+ step({ action: "continue" })
174
+
175
+ debug_disconnect()
176
+ ```
177
+
178
+ Fix locally, re-run the test, done.
38
179
 
39
180
  ## Key Rules
40
181
 
41
182
  - **Do NOT call `get_state` after `step`** — `step` already returns the new stopped state.
42
- - **Omit `sessionId`** when only one debug session is active — the server resolves it automatically.
183
+ - **Omit `sessionId`** when only one debug session is active.
43
184
  - **Use absolute paths** for `program` and breakpoint `file` parameters.
44
- - **Prefer `stopOnEntry: false` with breakpoints** over `stopOnEntry: true` — it gets you directly to the interesting code.
45
- - **Check `get_output`** for program stdout/stderr if you need to see what the program printed.
185
+ - **Prefer `stopOnEntry: false` with breakpoints** — it gets you directly to the interesting code.
186
+ - **Use `get_output`** for program stdout/stderr (including logpoint output).
46
187
 
47
188
  ## Debugging Strategies
48
189
 
49
190
  ### Narrowing down a bug
50
- 1. Set a breakpoint where you know the state is still correct.
51
- 2. Set another breakpoint where the state is wrong.
52
- 3. Use `step` with `action: "next"` to walk through the code between them.
53
- 4. Use `evaluate` to check intermediate values.
191
+ 1. Set a breakpoint where state is known good.
192
+ 2. Set another where state is wrong.
193
+ 3. Use `step` with `next` to walk between them, or set intermediate logpoints.
54
194
 
55
195
  ### Understanding a crash
56
- 1. Launch with `exceptionBreakpoints: ["uncaughtExceptions"]`.
57
- 2. When it stops on the exception, inspect the stack and variables.
196
+ 1. Launch with `exceptionBreakpoints: ["uncaughtExceptions"]` (or `"raised"` for any raise).
197
+ 2. When stopped at the exception, inspect stack and locals.
58
198
 
59
199
  ### Verifying a fix
60
200
  1. Set a breakpoint at the fixed code.
61
- 2. Run to it, inspect variables, confirm the new behavior.
201
+ 2. Run to it, inspect variables, confirm new behavior.
62
202
  3. Continue to verify the program completes successfully.
203
+
204
+ ### Observing a hot loop without stopping it
205
+ 1. Set logpoints at the relevant lines with `{i}` and any state expression.
206
+ 2. `continue`.
207
+ 3. Read the trace via `get_output`. For long-running programs, poll incrementally:
208
+ pass the `nextSince` value from each call as the `since` parameter of the next call
209
+ to receive only newly-emitted entries.
package/TODO.md ADDED
@@ -0,0 +1,32 @@
1
+ # DAP MCP Server — Improvement TODO
2
+
3
+ Findings from a self-review of how usable this MCP is for an AI agent. Ordered by priority (descending). Check items off as completed.
4
+
5
+ ## Tier 1 — Documentation (SKILL.md). High leverage, low risk.
6
+
7
+ - [x] **P1 — Logpoints section.** `breakpoints[].logMessage` is already wired through (session.ts:138) but is invisible in SKILL.md. It is the closest thing to a drop-in replacement for `print()` debugging: no code edits, captures every hit, no execution pause. Should have its own headline section with an example.
8
+ - [x] **P2 — "Debug a failing test" section.** Most real bugs surface inside test runners (pytest, vitest, jest, go test, cargo test). Currently zero guidance. Add a per-framework template for launching a single test under the debugger.
9
+ - [x] **P3 — "Switch from print() to debugger" triggers.** Concrete rules an AI agent will actually follow: "if first fix attempt was wrong, stop guessing"; "if about to add 3+ prints, use logpoints"; "if reasoning about iteration N, use `hitCondition`"; "if traceback is non-obvious, launch test under debugger".
10
+ - [x] **P4 — Stepping strategy.** Default to `next`. Use `stepIn` only when you suspect the bug is *inside* the called function. Otherwise agents get lost in library internals.
11
+ - [x] **P5 — Full worked example.** Real bug → real `debug_launch` call → real returned state → identified fix. Replaces all the abstract advice with one concrete walkthrough.
12
+ - [x] **P5b — Node.js adapter recipe.** Builtin was removed; add a ready-to-paste `configure_adapter` snippet for `js-debug-dap`.
13
+
14
+ ## Tier 2 — Code changes that materially improve UX.
15
+
16
+ - [x] **P6 — `debug_inspect` macro tool.** One call: launch, run to a breakpoint, evaluate a list of expressions, disconnect. Collapses a 5–7 round-trip workflow into 1. Most likely change to make me reach for the debugger reflexively.
17
+ - [x] **P7 — Flip `stopOnEntry` default to `false` when breakpoints are provided.** Today defaults to `true` regardless (server.ts:206). Doing the right thing automatically is better than relying on the agent reading the SKILL.md.
18
+ - [x] **P8 — Structured deep variables.** `getVariables` with `depth > 1` flattens children into the value string (session.ts:271–278). Hard for the AI to consume. Return nested `children: [...]` instead.
19
+ - [x] **P9 — `list_adapters` summary line + surfaced install hints.** Add `summary: "2/4 installed"` and lift `installHint` for missing adapters to the top level so it's scannable.
20
+ - [x] **P10 — `debug_run` macro tool.** Launch, run to completion, return all stdout/stderr. Zero breakpoints, zero round-trips. For "what does this script actually print/crash with?" cases.
21
+
22
+ ## Tier 3 — Polish.
23
+
24
+ - [x] **P11 — Better "session is not stopped" error.** Currently says "use step with action: pause" (server.ts:549) — bad advice (Python `pause` lands in arbitrary library code). Suggest "set a breakpoint where you want to inspect, then continue to it".
25
+ - [x] **P12 — Version drift.** `McpServer` registers as `0.1.0` (server.ts:48); package.json is `0.1.10`. Read from `package.json`.
26
+ - [x] **P13 — `list_breakpoints` tool.** After several `set_breakpoints` calls, no way to introspect what's set. Minor.
27
+
28
+ ## Tier 4 — Speculative.
29
+
30
+ - [x] **`get_output({ since })` for incremental polling.** Smaller substitute for streaming subscriptions. Caller passes the `nextSince` value from a prior call to receive only newly-emitted entries. Useful for watching logpoint output during `continue` against long-running programs.
31
+ - [ ] ~~Streaming output via MCP resource subscriptions.~~ AI agents don't watch streams in real time; the request/response pattern doesn't benefit. `since`-based polling covers the practical case.
32
+ - [ ] ~~Auto-detect test runner from program path.~~ Too magic; SKILL.md recipes (P2) make the right call explicit, and silent misfires would be worse than no detection at all.
@@ -25,6 +25,9 @@ export const BUILTIN_ADAPTERS = [
25
25
  runtime: "python3",
26
26
  program: "-m",
27
27
  args: ["debugpy.adapter"],
28
+ launchDefaults: {
29
+ console: "internalConsole",
30
+ },
28
31
  installHint: "pip install debugpy",
29
32
  },
30
33
  // node adapter removed — no reliable universal path to js-debug-dap.
@@ -1 +1 @@
1
- {"version":3,"file":"builtin.js","sourceRoot":"","sources":["../../src/adapters/builtin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC/C;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,CAAC,iBAAiB,CAAC;QACzB,WAAW,EAAE,qBAAqB;KACnC;IACD,qEAAqE;IACrE,6CAA6C;IAC7C;QACE,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,KAAK,CAAC;QACb,WAAW,EAAE,qDAAqD;KACnE;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,UAAU;QACnB,IAAI,EAAE,EAAE;QACR,WAAW,EAAE,+DAA+D;KAC7E;CACF,CAAC"}
1
+ {"version":3,"file":"builtin.js","sourceRoot":"","sources":["../../src/adapters/builtin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC/C;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,CAAC,iBAAiB,CAAC;QACzB,cAAc,EAAE;YACd,OAAO,EAAE,iBAAiB;SAC3B;QACD,WAAW,EAAE,qBAAqB;KACnC;IACD,qEAAqE;IACrE,6CAA6C;IAC7C;QACE,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,KAAK,CAAC;QACb,WAAW,EAAE,qDAAqD;KACnE;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,UAAU;QACnB,IAAI,EAAE,EAAE;QACR,WAAW,EAAE,+DAA+D;KAC7E;CACF,CAAC"}
@@ -53,7 +53,11 @@ export class DAPClient extends EventEmitter {
53
53
  const cmd = this.runtime || this.executable;
54
54
  this.process = spawn(cmd, runtimeArgs, {
55
55
  stdio: ["pipe", "pipe", "pipe"],
56
+ detached: true,
56
57
  });
58
+ // Detached child must be unref'd so the parent Node process can exit
59
+ // even if the adapter is still running (cleanup happens via dispose()).
60
+ this.process.unref();
57
61
  this.parser = new MessageParser((msg) => this.handleMessage(msg));
58
62
  this.process.stdout.on("data", (data) => {
59
63
  this.parser.feed(data);
@@ -156,6 +160,25 @@ export class DAPClient extends EventEmitter {
156
160
  }
157
161
  }
158
162
  }
163
+ else if (msg.type === "request") {
164
+ // Reverse request from the adapter (e.g. runInTerminal).
165
+ // We reject all reverse requests — the MCP server has no terminal.
166
+ const req = msg;
167
+ const errorResponse = {
168
+ seq: this.seq++,
169
+ type: "response",
170
+ request_seq: req.seq,
171
+ command: req.command,
172
+ success: false,
173
+ message: `Reverse request '${req.command}' is not supported by this client`,
174
+ };
175
+ try {
176
+ this.process?.stdin?.write(encodeMessage(errorResponse));
177
+ }
178
+ catch {
179
+ // ignore — process may have exited
180
+ }
181
+ }
159
182
  else if (msg.type === "event") {
160
183
  const event = msg;
161
184
  this.emit(event.event, event);
@@ -1 +1 @@
1
- {"version":3,"file":"dap-client.js","sourceRoot":"","sources":["../../src/dap/dap-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dap-client.js","sourceRoot":"","sources":["../../src/dap/dap-client.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,15 @@
20
20
  * SOFTWARE.
21
21
  */
22
22
  export type SessionState = "idle" | "configuring" | "running" | "stopped" | "terminated";
23
+ export interface Variable {
24
+ name: string;
25
+ value: string;
26
+ type?: string;
27
+ hasChildren: boolean;
28
+ variablesReference: number;
29
+ /** Populated when getVariables is called with depth > 1 and this variable has children. */
30
+ children?: Variable[];
31
+ }
23
32
  export interface StoppedState {
24
33
  status: "stopped";
25
34
  reason: string;
@@ -43,13 +52,7 @@ export interface StoppedState {
43
52
  }>;
44
53
  scopes: Array<{
45
54
  name: string;
46
- variables: Array<{
47
- name: string;
48
- value: string;
49
- type?: string;
50
- hasChildren: boolean;
51
- variablesReference: number;
52
- }>;
55
+ variables: Variable[];
53
56
  }>;
54
57
  output?: string[];
55
58
  }
@@ -68,6 +71,8 @@ export interface AdapterConfig {
68
71
  installHint?: string;
69
72
  }
70
73
  export interface OutputEntry {
74
+ /** Monotonic per-session sequence number assigned at push time. Survives ring-buffer eviction. */
75
+ seq: number;
71
76
  category: string;
72
77
  text: string;
73
78
  timestamp: string;