Skip to main content
Glama

python-dap-mcp

python-dap-mcp is an MCP server that exposes Python debugging tools backed by debugpy.

It gives an MCP client a focused Python debugging surface for local scripts:

  • Launch a Python script under debugpy

  • Set and clear breakpoints by file and line

  • Continue execution or step over, into, and out

  • Inspect the active stack trace

  • Evaluate expressions in the top frame

  • Read variable details from the active frame

  • End the debug session cleanly

The server is intentionally narrow. It runs over stdio, uses debugpy as the underlying adapter, and is designed for local trusted development environments.

What This Server Does

This repository packages a single MCP server command, python-dap-mcp.

When an MCP client connects to it, the server exposes these tools:

  • launch_debugger

  • set_breakpoint

  • clear_breakpoint

  • continue_execution

  • step_over

  • step_into

  • step_out

  • get_stack_trace

  • evaluate_expression

  • get_variable_details

  • end_session

The server resolves relative paths from its project root and launches the debug target with debugpy.adapter.

Related MCP server: agentic-debugger

When To Use It

This server is useful when an MCP client needs to inspect or control a real Python process instead of only reading source code.

Common use cases:

  • Reproducing a bug and stopping at a specific line

  • Inspecting locals at a breakpoint

  • Evaluating expressions against a live frame

  • Stepping through control flow in a small script or test fixture

  • Building agent workflows that need real debugger feedback

Install from GitHub

Run it directly from GitHub with uvx:

uvx --from git+https://github.com/MikeWinkelmannXL2/python-dap-mcp@v0.1.0 python-dap-mcp

Install it persistently with uv tool install:

uv tool install git+https://github.com/MikeWinkelmannXL2/python-dap-mcp@v0.1.0

If you want the latest branch state instead of a tag, replace @v0.1.0 with @main.

To run from a private fork or private repository, use the SSH form:

uvx --from git+ssh://git@github.com/MikeWinkelmannXL2/python-dap-mcp.git@v0.1.0 python-dap-mcp

Integration

Codex

Codex supports local stdio MCP servers through the CLI and ~/.codex/config.toml.

Add this server with the Codex CLI:

codex mcp add python-debugger -- \
  uvx --from git+https://github.com/MikeWinkelmannXL2/python-dap-mcp@v0.1.0 python-dap-mcp

Verify that Codex sees it:

codex mcp list

Equivalent ~/.codex/config.toml entry:

[mcp_servers.python-debugger]
command = "uvx"
args = ["--from", "git+https://github.com/MikeWinkelmannXL2/python-dap-mcp@v0.1.0", "python-dap-mcp"]

GitHub Copilot CLI

Copilot CLI can add MCP servers interactively with /mcp add, or you can edit ~/.copilot/mcp-config.json directly.

Recommended ~/.copilot/mcp-config.json entry:

{
  "mcpServers": {
    "python-debugger": {
      "type": "local",
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/MikeWinkelmannXL2/python-dap-mcp@v0.1.0",
        "python-dap-mcp"
      ],
      "env": {},
      "tools": ["*"]
    }
  }
}

If you prefer the interactive flow, run /mcp add inside Copilot CLI and use:

  • Server name: python-debugger

  • Server type: Local or STDIO

  • Command: uvx

  • Args: --from git+https://github.com/MikeWinkelmannXL2/python-dap-mcp@v0.1.0 python-dap-mcp

  • Tools: *

Claude Code

Claude Code supports local stdio MCP servers directly from its CLI.

Add this server with:

claude mcp add python-debugger -- \
  uvx --from git+https://github.com/MikeWinkelmannXL2/python-dap-mcp@v0.1.0 python-dap-mcp

Verify it:

claude mcp get python-debugger

If you prefer JSON-based setup, the equivalent server definition is:

{
  "type": "stdio",
  "command": "uvx",
  "args": [
    "--from",
    "git+https://github.com/MikeWinkelmannXL2/python-dap-mcp@v0.1.0",
    "python-dap-mcp"
  ],
  "env": {}
}

If You Install The Tool Globally

If python-dap-mcp is already installed on the machine, each client can point directly to the executable instead of uvx:

command: python-dap-mcp
args: []

Typical Workflow

A normal debugger flow through MCP looks like this:

  1. Call set_breakpoint with a source file and 1-based line number.

  2. Call launch_debugger with the script path and optional arguments.

  3. When execution stops, call get_stack_trace, evaluate_expression, or get_variable_details.

  4. Call continue_execution or one of the step tools.

  5. Call end_session when you are done.

Example sequence:

set_breakpoint("app.py", 42)
launch_debugger("app.py", stop_on_entry=false)
get_stack_trace()
evaluate_expression("user_id")
continue_execution()
end_session()

Tool Semantics

  • launch_debugger starts one active session at a time. A second launch is rejected until the first session ends.

  • console is intentionally limited to internalConsole.

  • Breakpoints can be set before launch. They are synchronized when the debug session starts.

  • Expression evaluation runs in the top stack frame of the currently stopped thread.

  • Relative paths are resolved from the server project root.

Requirements

  • Python 3.13+

  • A local environment where the server is allowed to launch Python processes

  • A trusted workspace. This server can execute code and evaluate expressions inside the debuggee context

Development

Run the full test suite:

env UV_CACHE_DIR=/tmp/uv-cache uv run --extra dev pytest

Build distributable artifacts with the uv build backend:

env UV_CACHE_DIR=/tmp/uv-cache uv build

Run the server from the repository:

uv run python -m debug_server

Run it through the installed package entrypoint:

uv run python -m python_dap_mcp

Security

This server can:

  • Launch local Python programs

  • Pause and resume execution

  • Evaluate expressions in a live frame

  • Expose runtime state from the debuggee process

That makes it useful, but also high-trust. Only install and run it in environments you control and only connect trusted MCP clients to it.

Available Tools

11 tools
clear_breakpointA
Idempotent

Clear a breakpoint for a file and line number.

ParametersJSON Schema
NameRequiredDescriptionDefault
lineYes1-based source line number for the breakpoint.
filepathYesSource file for the breakpoint. Relative paths resolve from the project root.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare idempotentHint=true and destructiveHint=false, and the description is consistent with these. However, the description adds no additional behavioral context such as what happens if the breakpoint does not exist, or whether the session must be active. Given the annotation coverage, this is a minimal but acceptable disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, unambiguous sentence that directly states the action and target. There is no wasted wording, and the most important information appears first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with annotations and an output schema, the description is largely sufficient. However, it lacks usage context (e.g., it is the inverse of set_breakpoint) and does not explain behavior for edge cases, which keeps it from being fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with both 'filepath' and 'line' fully described in the schema. The description merely restates these inputs without adding format, defaults, or edge-case information, so it adds no value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'clear' and resource 'breakpoint', clearly distinguishing from sibling tools like set_breakpoint and step_over. The scope (file and line number) matches the required parameters.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites (e.g., breakpoint must exist), no exclusions, and no alternative tools mentioned. The description consists solely of the operation statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

continue_executionA

Resume execution and wait for the next stop or exit event.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds behavioral detail beyond the annotations: it signals that execution resumes and that the tool blocks until a stop or exit event occurs. This is useful context that matters for an agent deciding whether to call it. Annotations already indicate non-destructive and non-open-world behavior, so the added value is the 'wait' semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tightly crafted sentence that front-loads the core action ('Resume execution') and then adds the outcome ('wait for the next stop or exit event'). Every word earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, clear annotations, existing output schema), the description fully covers the essential behavior. The sibling context (debugger controls) provides enough surrounding context to make the tool's role unambiguous, and nothing seems missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters and a fully described (empty) schema, there is no parameter information to embellish. The description correctly omits parameter details, and the baseline for a parameterless tool is high. The description's focus on behavior is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Resume execution and wait for the next stop or exit event' uses a specific verb ('Resume') and clearly identifies the resource ('execution') and the expected outcome (waiting for a stop/exit). This distinguishes it from sibling stepping commands like step_over or step_into, which involve single-step operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage—after a pause, continue running until the next breakpoint or termination—but does not explicitly state when to choose this over alternatives. In the context of debugger sibling tools, the intended use is fairly clear, yet there is no explicit 'use this instead of X' guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

end_sessionA

End the active debug session and terminate the debuggee.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explicitly discloses the side effect of terminating the debuggee, which is not captured in the annotations. This is valuable behavioral information beyond the structured metadata. There is no contradiction with the annotations since neither openWorldHint nor destructiveHint directly conflicts with ending a debug session.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with a front-loaded verb and no filler or redundant detail. Every word earns its place, making it optimally concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless tool with an output schema present, the description fully defines the tool's purpose and the primary side effect (terminating the debuggee). No further elaboration is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so the description correctly avoids parameter explanation. With no parameters to document, the baseline of 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'End' with the resource 'active debug session' and further clarifies 'terminate the debuggee'. This unambiguously states what the tool does and distinguishes it from sibling tools that focus on breakpoints, stepping, or continuation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'active debug session' implies this tool should be used when a session is running and needs to be stopped. No sibling tool provides an alternative termination mechanism, so the context is clear, though explicit exclusions or alternative guidance are not provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

evaluate_expressionA
Read-only

Evaluate an expression in the top stack frame.

ParametersJSON Schema
NameRequiredDescriptionDefault
expressionYesPython expression evaluated in the top frame of the active stack.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is known. The description adds the behavioral context that evaluation occurs in the 'top stack frame,' but it does not disclose error handling, return format, or potential side effects of the evaluated expression beyond what the annotations imply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no unnecessary words, front-loading the core purpose immediately. It is appropriately sized for the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, one parameter, read-only annotation, and presence of an output schema, the description is mostly complete. It clearly names the action and context, and the schema covers the parameter. The only gap is the lack of usage guidance, but that is accounted for in the usage_guidelines dimension.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes the single parameter `expression` as 'Python expression evaluated in the top frame of the active stack,' which fully covers its semantics. The description repeats the same concept without adding examples, syntax details, or edge-case behavior, so it adds no value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Evaluate' and identifies the resource as 'an expression in the top stack frame,' clearly distinguishing it from sibling debugging tools like step_* and get_*. It unambiguously states what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is provided on when to use this tool versus alternatives. The description simply states what it does, with no mention of prerequisites, exclusions, or alternatives such as get_variable_details for inspecting specific variables. Usage must be inferred from context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stack_traceA
Read-onlyIdempotent

Return the current stack trace for the active thread.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only and idempotent. The description adds 'active thread' scoping, which clarifies which thread's stack trace is returned, adding behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single clear sentence, no superfluous information. Perfectly front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and output schema present, the one-sentence description adequately covers the tool's function for the debugger context. No missing critical information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has zero parameters, so schema coverage is complete. The description needs no parameter explanation; baseline of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'Return' and identifies the exact resource 'current stack trace for the active thread.' It clearly distinguishes from sibling debugger control tools like step_over or evaluate_expression.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use guidance or alternatives are mentioned. The description implies a debugging context but does not clarify when it should be preferred over get_variable_details or other inspection tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_variable_detailsA
Read-only

Evaluate a variable name in the top stack frame.

ParametersJSON Schema
NameRequiredDescriptionDefault
variable_nameYesVariable or attribute expression evaluated in the top frame of the active stack.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds the scoping constraint of 'top stack frame', which is useful context. However, it does not disclose additional behavioral traits such as error behavior, side effects, or dependencies on a debugger session, which could be relevant.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no unnecessary words. It states the action and scope clearly, earning a perfect score for conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter), the presence of an output schema, and annotations covering safety, the description is sufficiently complete. It correctly identifies the evaluation context (top stack frame), which is the key information an agent needs. Minor gap: it doesn't explicitly mention that the tool is read-only, but annotations cover that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides a thorough description of the parameter ('Variable or attribute expression evaluated in the top frame of the active stack') with 100% coverage. The description's mention of 'variable name' adds little beyond the schema, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'evaluate[s] a variable name' in a specific context ('top stack frame'), using a specific verb and resource. This differentiates it from sibling tools like evaluate_expression, which likely handles more general expressions, and get_stack_trace, which retrieves stack frames.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any guidance on when to use this tool versus alternatives. It lacks explicit when-to-use or when-not-to-use instructions and does not mention sibling tools or conditions that would steer an agent toward this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

launch_debuggerA

Launch a Python script under debugpy and wait until execution pauses.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNoWorking directory for the debuggee. Defaults to the server project root.
argsNoCommand-line arguments passed to the debuggee script.
consoleNoConsole mode for the debuggee. This server currently supports only internalConsole.internalConsole
script_pathYesPath to the Python script to debug. Relative paths resolve from the project root.
just_my_codeNoIf true, stepping stays within user code when debugpy can determine that.
stop_on_entryNoIf true, pause before executing the first user line.
python_executableNoPython interpreter used to run the debuggee. Defaults to the server interpreter.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the key blocking behavior ('wait until execution pauses'), which is valuable. However, given minimal annotations (no readOnlyHint), the description carries the full burden and doesn't mention other behavioral aspects like session lifecycle or error handling. It adds some context but is not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that states the action, target, and result with no superfluous words. It's concise while conveying the essential semantics.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for a complex tool because the schema fully documents parameters and an output schema exists. It clearly communicates the core purpose and the pause behavior. It could have elaborated on what happens after the pause, but the sibling tools and schema cover that context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with all seven parameters described (cwd, args, console, script_path, just_my_code, stop_on_entry, python_executable). The description adds no parameter-specific information beyond 'a Python script,' so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Launch), the resource (a Python script under debugpy), and the outcome (wait until execution pauses). This distinguishes it from sibling tools like set_breakpoint and step_over, which operate on an already-launched session.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description positions this as the entry point for initiating a debug session, with clear context. It doesn't explicitly name alternatives or exclusions, but the sibling list and the tool's name make when-to-use unambiguous. I didn't deduct further because no alternatives exist for launching.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_breakpointB
Idempotent

Set a breakpoint for a file and line number.

ParametersJSON Schema
NameRequiredDescriptionDefault
lineYes1-based source line number for the breakpoint.
filepathYesSource file for the breakpoint. Relative paths resolve from the project root.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds no behavioral context beyond the annotations. It does not mention effect of setting an already existing breakpoint, whether it is associated with a specific debug session, or any other operational details. The annotations already convey idempotency and non-destructiveness, but the description provides nothing extra.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that directly communicates the tool's purpose without unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, and the schema covers parameters, an output schema exists, and annotations provide safety hints. The description is enough for the core operation, though a note on how the breakpoint interacts with the debugger session would be slightly more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% parameter descriptions, so the baseline is 3. The description does not add any further semantic detail, but the schema already fully explains 'filepath' and 'line'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('set') and the resource ('a breakpoint') with scope ('file and line number'). This distinguishes it from sibling tools like clear_breakpoint and step_over, which have different actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives, such as when to set a breakpoint before launching the debugger or how it differs from clear_breakpoint. The description only states the basic operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

step_intoA

Step into the current call and wait for the next stop.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate the tool is non-destructive and not open world. The description adds 'wait for the next stop', which discloses that execution will pause, but it does not mention prerequisites like a paused session or potential side effects on the debugger state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is front-loaded with the action and purpose. Every word earns its place, and there is no unnecessary content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters), the presence of annotations, and an output schema, the one-line description is sufficient. It clearly states the action and result, making the tool's behavior complete for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters (schema is empty), so the baseline is 4. The description adds no parameter information because there are none to document, and the schema description coverage is complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Step into' with the resource 'the current call' and the outcome 'wait for the next stop'. This clearly defines a distinct action from sibling tools like step_over and step_out.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as step_over or step_out. The description only states what it does, leaving the choice of tool to the agent without explicit context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

step_outA

Step out of the current frame and wait for the next stop.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The phrase 'wait for the next stop' adds a behavioral detail beyond the sparse annotations (openWorldHint=false, destructiveHint=false), indicating the command is asynchronous and pauses at the next stop. It does not mention potential breakpoint hits during step-out, but adds value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no redundant words. It is front-loaded with the action and provides the expected outcome efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (0 params, clear action) and the description covers the essential behavior. It could mention edge cases like stepping out of the outermost frame, but given the availability of an output schema and the simple nature, it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters, the schema carries no meaning. The description properly focuses on behavior, and the baseline for zero parameters is 4. No parameter information is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Step out of the current frame and wait for the next stop' clearly states the tool's action and scope. It distinguishes itself from sibling tools step_into and step_over by specifying 'out of the current frame'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a user wants to exit a function and return to the caller, but it does not explicitly state when to use it over alternatives. No when-to-use or exclusions are provided, though the sibling naming gives context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

step_overA

Step over the current line and wait for the next stop.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds behavioral context beyond the annotations by stating that the tool waits for the next stop, implying the debugger pauses. Given the annotations (openWorldHint=false, destructiveHint=false) indicate a safe, non-side-effecting operation, the description effectively communicates the core behavior without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It conveys the action and result efficiently, making it exemplary in conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a simple primitive with no parameters, and the description covers the essential action and expected behavior. The presence of an output schema and sibling tools provides sufficient context; the description is complete for its simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameters, so the description does not need to explain parameter semantics. The baseline of 4 applies because there are no parameters and the schema coverage is trivially complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'step over' with the resource 'current line' and states the outcome ('wait for the next stop'). This clearly distinguishes it from sibling tools like step_into and step_out, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the action is for stepping over a line during debugging, but it does not explicitly state when to use it versus alternatives like step_into or step_out. There is no explicit when/when-not guidance, only the implied usage from the verb.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4/5.0
Disambiguation4/5

Most tools are clearly distinct, but evaluate_expression and get_variable_details both operate on the top stack frame and could be confused (expression vs. variable name). The step commands are well differentiated, and the rest of the tools have unambiguous purposes.

Naming Consistency5/5

All tool names follow a consistent verb_noun or verb_adverb pattern (launch, set, clear, step, get, evaluate, end, continue). The naming is predictable and intuitive, with no mixed conventions.

Tool Count5/5

11 tools is well-scoped for a debugger server. Each tool serves a clear, essential purpose in the debugging workflow without redundancy or bloat.

Completeness4/5

The tool set covers the core debugger lifecycle: launch, breakpoints, stepping, stack inspection, expression evaluation, and termination. Minor gaps exist (e.g., listing all variables, exception breakpoints) but are not critical for typical workflows.

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to perform interactive Python debugging with breakpoints, step execution, and variable inspection using the Debug Adapter Protocol (DAP) through an MCP server interface.
    8
    1
    MIT
  • F
    license
    D
    quality
    D
    maintenance
    An MCP server that enables agents to attach debugpy to running Python processes inside Docker containers for enhanced debugging and inspection. It provides tools for container autodiscovery, process injection, and generating breakpoint plans based on logs and metadata.
    8

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/MikeWinkelmannXL2/python-dap-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server