MCP Debugger
Provides debugging capabilities for JavaScript and TypeScript code using vscode-js-debug, including breakpoints, stepping, variable inspection, and stack trace navigation.
Provides debugging capabilities for Python code using debugpy, including breakpoints, stepping, variable inspection, and stack trace navigation.
Provides debugging capabilities for Rust code using CodeLLDB, including breakpoints, stepping, variable inspection, and stack trace navigation.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Debuggerdebug this Python script and set a breakpoint at line 10"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Debugger
A Claude Code plugin that enables fully autonomous debugging — coding agents pause programs, step through execution, inspect locals, and compare expected vs actual values using real debuggers. No human intervention. No log statements.
This is a game changer for AI-assisted development. Claude autonomously investigates bugs by debugging itself, finding discrepancies between expected and actual runtime state. It works today.
Why This Exists
Traditional AI debugging means:
Stop execution
Edit code to add debug logs
Adjust log levels
Rerun the program
Parse log spam
Repeat
This wastes tokens, time, and iteration cycles.
MCP Debugger eliminates all of that.
No debug logs. No log levels. No reruns. No code edits. Claude pauses your running program, inspects the actual state, and tells you what's wrong — in one shot.
Result: Faster debugging, fewer tokens spent on log spam, and no polluted git diffs from print statements.
Related MCP server: MCP Debugger
What Makes This Different
✓ Fully Autonomous: Claude decides when to debug, sets breakpoints, and investigates without human prompting
✓ Real DAP Backends: Uses production debuggers (debugpy, vscode-js-debug, Delve, CodeLLDB), not mocks or interpreters
✓ Expanded Locals: Inspects full object trees, compares expected vs actual values
✓ Multi-Language: Same autonomous debugging across Python, JavaScript/TypeScript, Go, and Rust
This isn't "AI explains stack traces" or "human-directed debugging" — it's autonomous runtime investigation.
Claude debugs itself. No human intervention required.
Language Support
Fully functional with real debugger backends:
Python — debugpy
JavaScript / TypeScript — vscode-js-debug
Go — Delve
Rust — CodeLLDB
Debug adapters auto-install on first use.
How It Works
Claude Code → MCP Protocol → mcp-debugger → DAP → Runtime Debugger
↓
Your Program (paused)Claude detects something might be wrong (test failure, unexpected behavior, etc.)
Claude autonomously decides to debug instead of guessing
Breakpoints are set, program runs
Claude inspects locals, compares expected vs actual values
Claude identifies the discrepancy and fixes the bug
Fully autonomous — Claude invokes debugging tools on its own when investigating issues.
Installation
In Claude Code:
Use
/pluginto open the plugin managerAdd the registry:
bherbruck/mcp-debuggerInstall the
mcp-debuggerplugin
That's it. Claude autonomously uses it when investigating issues — no commands needed.
Optional: Add to your CLAUDE.md to encourage autonomous debugging over print statements:
## Debugging
Use the mcp-debugger plugin for debugging instead of adding print/log statements.
Set breakpoints and inspect variables using real debuggers.Requirements: Language runtimes for what you want to debug (Python 3.7+, Node.js 18+, Go 1.18+, Rust). Debug adapters install automatically on first use.
Concrete Example
Scenario: A test fails. Expected return value, got None instead.
Claude (autonomously): Test failure detected. Instead of guessing or adding logs, I'll debug this to see what's actually happening at runtime.
[Claude creates debug session, sets breakpoint at process_orders(), runs code]
Paused at line 47 in process_orders()
Stack frame:
process_orders() → validate_items() → calculate_total()
Expanded locals at breakpoint:
orders = [
Order(id=1, items=[...], total=150.00, status='pending'),
Order(id=2, items=[], total=0.00, status='pending'), ← suspicious
Order(id=3, items=[...], total=200.00, status='pending')
]
valid_orders = []
[Claude steps into validate_items(), inspects]
Found it: Order #2 has an empty items list. The function returns None
when items is empty instead of raising an exception or returning an
empty result.
The bug is in line 52 — it returns early without a value when
len(order.items) == 0.
[Claude fixes the bug to return an empty result instead of None]Claude found and fixed this autonomously. No log statements added. No human debugging. Just runtime inspection, expected vs actual comparison, and a fix.
Who This Is For
Autonomous coding agents that need to debug themselves without human intervention
Developers who want agents to investigate and fix bugs independently
Anyone building with AI agents who's tired of log-based debugging cycles
This is agent-first debugging. Claude investigates, debugs, and fixes autonomously.
Scope & Safety
Intended for: Local development and debugging environments Not intended for: Production runtime debugging (yet) Agent capabilities: Inspect state, set breakpoints, evaluate expressions Agent limitations: Cannot modify code through the debugger
MCP Debugger gives agents read-only runtime inspection. It's designed for dev environments where pausing execution is safe.
Known limitations: Rust multithreaded debugging behaves like a regular VS Code debugger — cross-thread symbol resolution can be limited. This is a CodeLLDB/DAP limitation, not specific to MCP Debugger.
Available Tools
Claude has access to these debugging capabilities (invoked automatically):
Session Management: create_debug_session, start_debugging, terminate_session, list_sessions
Breakpoints: set_breakpoint, remove_breakpoint, list_breakpoints
Execution Control: continue, pause, step_in, step_over, step_out
Inspection: get_stack_trace, get_variables, expand_variable, evaluate_expression, get_source_context
You don't call these directly — Claude chooses when to use them.
Development & Architecture
Build: npm install && npm run build
Test: npm test
Watch: npm run dev
Architecture layers:
MCP Server (
src/server.ts) — Routes tool calls from Claude Code to handlersSession Manager (
src/session/) — Manages debug session lifecycle and state machineDAP Client (
src/dap/) — Implements Debug Adapter Protocol, handles message parsingAdapters (
src/adapters/) — Language-specific debugger implementations (Python, JS/TS, Go, Rust)
See CLAUDE.md for detailed architecture notes.
License
MIT
Available Tools
21 toolsclear_tracesB
Clear all collected traces from the session
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Debug session ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It indicates a destructive operation (clear) but does not mention side effects, prerequisites, or whether the session must be active. Minimal disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence with no unnecessary words. It is efficient but could include additional context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, output schema, or rich parameter descriptions, the description is insufficient for a destructive tool. It lacks context about impact on the session, reversibility, or typical workflow when clearing traces.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'sessionId' is fully described in the schema with 'Debug session ID'. Schema coverage is 100%, so the description adds no additional meaning beyond the schema. Baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Clear all collected traces') and the resource ('traces from the session'). It distinguishes from sibling tools like get_traces which retrieves traces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like get_traces or step_and_trace. The agent is not told that this is for resetting the trace collection or that it might invalidate ongoing debugging.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
continueA
Continue execution until the next breakpoint or program end. Use waitForBreakpoint to block until a breakpoint is hit and return variables. Use collectHits to run through multiple breakpoint hits, collecting variables at each, then return all traces.
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | Timeout in ms when waiting for breakpoint (default: 30000) | |
| threadId | No | Optional thread ID (defaults to current thread) | |
| sessionId | Yes | Debug session ID | |
| collectHits | No | Collect this many breakpoint hits before returning. At each hit, variables are captured and execution auto-continues. Returns all traces when done. | |
| waitForBreakpoint | No | Wait for breakpoint hit and return variables (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description adequately explains the tool's behavior: it continues execution until a breakpoint or program end, and clarifies the optional modes. However, it does not discuss default return values or side effects, leaving some uncertainty about what happens when no breakpoint is encountered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences, front-loading the primary purpose. Every sentence adds value, and there is no redundant or extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema, the description does not explain the return value when no breakpoint is hit (e.g., program ends) or when neither waitForBreakpoint nor collectHits is used. It also omits error conditions, which lowers completeness for a tool with five parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameter meanings are already defined. The description adds context for the waitForBreakpoint and collectHits parameters by explaining their effects, but does not add new information for timeout, threadId, or sessionId beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool continues execution until the next breakpoint or program end. It distinguishes between the default behavior and the specialized modes (waitForBreakpoint and collectHits), which differentiates it from other step-related sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidance on when to use the tool (continue execution) and mentions two specific sub-behaviors (waitForBreakpoint, collectHits). However, it does not explicitly contrast with sibling tools like step_in or step_over, which might be needed for precise step-by-step control.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_debug_sessionB
Create a new debug session for a specific programming language. Returns a session ID to use with other tools.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional human-readable name for the session | |
| language | Yes | Programming language to debug | |
| executablePath | No | Optional path to the language runtime (e.g., /usr/bin/python3) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description does not disclose behavioral traits beyond creating a session, such as side effects, authentication needs, or whether session creation is idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, front-loaded with purpose. Efficient and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description hints at returned session ID. However, it lacks details on exact return format and does not fully contextualize use among 21 sibling tools. Could mention that session ID is used with step/evaluate tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds no additional meaning beyond what the schema provides for parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool creates a debug session for a specific language and returns a session ID. It is a specific verb+resource, but does not differentiate from sibling 'start_debugging'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives like 'start_debugging'. Usage context is only implicit (before using other debug tools).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evaluate_expressionC
Evaluate an expression in the current context
| Name | Required | Description | Default |
|---|---|---|---|
| context | No | Evaluation context | |
| frameId | No | Optional stack frame ID for context | |
| sessionId | Yes | Debug session ID | |
| expression | Yes | Expression to evaluate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits, but it only states the action. No mention of side effects, permissions, errors, or return value format is given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no unnecessary words. It is front-loaded and efficiently states the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, debug context options, no output schema), the description is insufficient. It does not explain the role of 'context' or 'frameId', nor what the result looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add further meaning beyond the schema, but that is acceptable since the schema already documents parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Evaluate an expression in the current context' clearly states the verb and resource, but it does not differentiate from sibling tools like expand_variable or get_variables. The phrase 'current context' is ambiguous and could be interpreted differently.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 like expand_variable or get_variables. No conditions, prerequisites, or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
expand_variableC
Expand a complex variable to see its properties/children
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Debug session ID | |
| variablesReference | Yes | Variables reference from get_variables result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden but only states the basic action. It does not disclose whether the tool is read-only, what happens with invalid references, or any side effects. Behavioral traits are largely missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core purpose. It is appropriately brief, though could include more useful detail without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no output schema), the description is incomplete. It does not mention return value structure or prerequisites (e.g., requiring a prior get_variables call). More context is needed for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description adds minor context ('complex variable', 'its properties/children') but does not significantly enhance understanding beyond the schema. Baseline 3 is appropriate as the schema already describes the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool expands a complex variable to show its properties/children, which distinguishes it from siblings like get_variables and evaluate_expression. However, it could be more specific about the action of retrieving nested structure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as after get_variables to inspect nested properties. No prerequisites, exclusions, or when-not-to-use context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_source_contextB
Get source code around the current execution point
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Optional source file path | |
| line | No | Optional center line number | |
| sessionId | Yes | Debug session ID | |
| linesContext | No | Lines of context above and below (default 5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry behavioral disclosure. It does not mention that the tool is read-only, what happens if file or line are omitted (e.g., uses session's current position), or any error conditions. This leaves the agent uncertain about side effects and defaults.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence that conveys the core purpose efficiently. No extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is too brief given the tool's complexity (4 parameters, no output schema). It fails to explain what 'current execution point' refers to (implicitly session-dependent) or the format of returned source code. For a debug context tool, more detail is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with inline descriptions for all 4 parameters. The tool description does not add extra meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'source code around the current execution point'. It is distinct from sibling tools like get_stack_trace or get_variables, which focus on different debug information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool or when to avoid it. No mention of alternatives (e.g., get_stack_trace for frame context). The description simply states what it does without context on appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stack_traceC
Get the current call stack
| Name | Required | Description | Default |
|---|---|---|---|
| threadId | No | Optional thread ID | |
| sessionId | Yes | Debug session ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavior (e.g., returns call stack frames, side effects). It only says 'Get the current call stack' without specifying output format, required session state, or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no superfluous words. Front-loaded with the core purpose. Could include more context without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given two parameters, no output schema, and a rich set of sibling tools, the description is too sparse. It lacks details on thread behavior, return value structure, and usage prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters (sessionId, threadId). The description adds no extra meaning beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get the current call stack' clearly states the action and resource. It distinguishes from siblings like get_threads and get_traces, though it could specify thread context for better differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like get_traces or step_into. The description does not mention context or prerequisites (e.g., a running debug session).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_threadsB
Get all threads in the debugged program
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Debug session ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It fails to disclose any behavioral traits such as error handling, performance implications, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence front-loaded with the key action and context. No redundancy or unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided, and the description does not specify the format or content of the returned threads. For a retrieval tool, this is incomplete given the complexity of sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter, and the description adds no additional meaning beyond what is in the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get all threads') and context ('in the debugged program'), distinguishing it from other getter tools like get_stack_trace or get_variables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives or prerequisites like an active debug session. The required sessionId parameter is mentioned in schema but not explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tracesB
Get collected traces from tracepoints. Traces are stored in session state and can be queried with filtering and pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Filter by file path (partial match supported) | |
| line | No | Filter by line number | |
| limit | No | Max number of traces to return (default: 100) | |
| offset | No | Number of traces to skip (for pagination) | |
| function | No | Filter by function name (partial match) | |
| sessionId | Yes | Debug session ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes traces as stored in session state with filtering/pagination, but no annotations to indicate side effects; mutability not stated, though implied read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, no fluff; efficiently conveys core purpose and features.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, description omits return format; an agent would need to infer response structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and description adds minimal value beyond schema; baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly specifies verb 'Get', resource 'traces', and mentions filtering/pagination, distinguishing it from sibling debugging tools like 'clear_traces' or 'step_and_trace'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives; lacks context on prerequisites or scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_variablesC
Get variables in the current scope
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Optional scope filter | |
| frameId | No | Optional stack frame ID (defaults to top frame) | |
| sessionId | Yes | Debug session ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits. It fails to mention side effects, authentication requirements, or what 'current scope' precisely means.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise and immediately conveys the core purpose. However, it is a phrase rather than a complete sentence, which limits structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is too brief for a tool with no output schema and many siblings. It does not explain what variables are returned or how scope filtering interacts with the parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters are described in the schema. The tool description adds no additional parameter semantics beyond what is already provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get variables in the current scope' clearly indicates the tool's action and resource, matching the name. However, it does not distinguish it from sibling tools like expand_variable 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.
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. The description gives no context about appropriate scenarios or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_breakpointsC
List all breakpoints in the session
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Debug session ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only states the action without revealing side effects, required session state, or whether it is a read-only operation. This minimal information leaves significant ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence that is front-loaded and contains no extraneous words. Every word contributes to conveying the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 parameter, no output schema), the description is minimal. It lacks details on output format, error handling, and prerequisite conditions like session state, which are important for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter 'sessionId', so the baseline is 3. The description does not add any additional meaning beyond the schema's 'Debug session ID', which is sufficient but not enhanced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List all breakpoints in the session' uses the specific verb 'List' and identifies the resource 'breakpoints in the session', making the tool's purpose clear. However, it does not differentiate from sibling tools like 'get_traces' or 'list_sessions' which might have overlapping semantics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'set_breakpoint' or 'remove_breakpoint'. There is no mention of prerequisites or context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sessionsB
List all active debug sessions
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description only states 'list all active debug sessions' without disclosing any additional behavioral traits like whether sessions are sorted, paginated, or what 'active' means.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no wasted words, but could be slightly expanded for clarity. Efficient but not perfectly structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description is adequate but could be more complete by explaining what a session contains or what 'active' means.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so schema description coverage is 100%. The description adds no additional meaning beyond the empty schema, but no extra is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool lists all active debug sessions, with a specific verb and resource, and distinguishes from sibling tools like create_debug_session or terminate_session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, such as get_traces or list_breakpoints. Only states the basic function without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pauseC
Pause program execution
| Name | Required | Description | Default |
|---|---|---|---|
| threadId | No | Optional thread ID | |
| sessionId | Yes | Debug session ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. 'Pause program execution' only hints at halting execution, but does not explain effects on threads, whether it requires a running session, or how to resume. This is insufficient for an agent to understand side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
At three words, the description is too brief and omits essential context such as scope and effect, trading conciseness for adequacy. It does not earn its place due to lack of informative content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and presence of sibling debug tools, the description should mention that it is part of a debugging session, that sessionId must be valid, and what state the program enters after pausing. No output schema exists, so return behavior should be clarified. The description is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are documented there. The description adds no extra meaning beyond what the input schema already provides (e.g., that sessionId is required and threadId is optional). Thus baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Pause program execution' clearly states the action and resource, distinguishing it from siblings like 'continue' or 'step_over' that have different actions. However, it does not specify whether it pauses all threads or a specific one, which is relevant given the optional threadId parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. Siblings like 'step_in', 'step_over', and 'continue' serve related but distinct purposes, and without usage context, the agent cannot determine the appropriate scenario for 'pause'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_breakpointC
Remove a breakpoint from a source file
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Absolute path to the source file | |
| line | Yes | Line number of the breakpoint to remove | |
| sessionId | Yes | Debug session ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description fails to disclose important behaviors like failure cases, idempotency, or dependencies on active 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise and front-loaded with the action, though it could benefit from additional context without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks explanation of return value, prerequisites, and when to use this tool; with 20 sibling tools and no output schema, the description is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, fully describing all three parameters; description adds no additional semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action 'Remove' and the resource 'a breakpoint from a source file', distinguishing it from sibling tools like set_breakpoint and list_breakpoints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, such as listing breakpoints first or ensuring a valid session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_breakpointB
Set a breakpoint at a specific line in a source file. Use dumpFile to create a tracepoint that dumps variables to a file and auto-continues.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Absolute path to the source file | |
| line | Yes | Line number (1-based) | |
| trace | No | Enable tracepoint mode: collect variables to session state and auto-continue | |
| dumpFile | No | Also dump variables to this file (JSONL format). Implies trace=true. | |
| maxDumps | No | Max number of traces before stopping at this breakpoint. Default: unlimited. | |
| condition | No | Optional conditional expression (breakpoint only triggers when true) | |
| sessionId | Yes | Debug session ID | |
| hitCondition | No | Optional hit count condition (e.g., ">5", "==10") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses that tracepoints auto-continue and dump variables to a file, but does not discuss permissions, side effects, or what happens on breakpoint hit (pause vs continue).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The primary action is front-loaded. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite full schema coverage, the description lacks guidance on key parameters (condition, maxDumps, hitCondition) and their interactions. It focuses narrowly on dumpFile, leaving the tool's full behavior under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema_description_coverage is 100%, so baseline is 3. The description adds minimal extra semantics by mentioning dumpFile usage, but does not elaborate on other parameters like condition or hitCondition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets a breakpoint at a specific line, and mentions the tracepoint variant via dumpFile. It is specific but does not explicitly distinguish from siblings like list_breakpoints or remove_breakpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It hints at using dumpFile for tracepoints but provides no when-to-use or when-not-to-use guidance, and no alternatives are mentioned. The usage context is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_debuggingB
Start debugging a script file. The program will run until it hits a breakpoint or completes.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Working directory for script execution | |
| env | No | Environment variables | |
| args | No | Command line arguments for the script | |
| sessionId | Yes | Debug session ID from create_debug_session | |
| scriptPath | Yes | Absolute path to the script file to debug | |
| stopOnEntry | No | Pause at the first line of code |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the input schema by stating the program runs until a breakpoint or completion. However, no annotations are provided, and it lacks disclosure of side effects, required permissions, or what happens if no breakpoints are set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two short sentences that convey the core purpose and behavior. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters (including a session ID) and no output schema, the description is too minimal. It fails to explain the required workflow (e.g., session must be created first, breakpoints set), prerequisites, or what the return value indicates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add any parameter-specific details beyond what the schema provides. It does not explain the relationship between 'sessionId' and 'scriptPath' or the purpose of optional parameters like 'stopOnEntry'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool starts debugging a script file and specifies the behavior until breakpoint or completion. It distinguishes from sibling tools like 'set_breakpoint' or 'continue', but does not explicitly differentiate from 'create_debug_session', which is a prerequisite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'continue', 'step_over', etc. It does not mention that a debug session must first be created via 'create_debug_session', nor that breakpoints should be set prior to starting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
step_and_traceA
Step through code N times, collecting variables at each step. Returns all traces or writes to a file. Useful for tracing execution flow.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of steps to take (default: 100) | |
| timeout | No | Maximum time in ms (default: 30000) | |
| dumpFile | No | If set, write traces to this file (JSONL format) instead of returning in response | |
| stepType | No | Type of step: in (step into functions), over (step over), out (step out). Default: over | |
| sessionId | Yes | Debug session ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It mentions stepping and collecting traces but fails to state that the tool advances the debug session (mutation), does not describe the return format of traces, and omits prerequisites like having an active 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action and key options. Every sentence earns its place with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given five parameters, no output schema, and no annotations, the description is somewhat incomplete. It covers the main functionality but lacks details about return structure, error handling, and state mutation. The description is adequate for basic use but has notable gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All five parameters are described in the input schema (100% coverage). The description adds no new parameter details beyond the schema, so it meets the baseline but does not enhance semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool steps through code N times while collecting variables, distinguishing it from sibling single-step tools (step_in, step_out, step_over). It also clarifies the two output modes: returning traces or writing to file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'useful for tracing execution flow' but does not explicitly specify when to use this tool over alternatives like step_in, step_out, or step_over. The context is clear but lacks exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
step_inB
Step into the next function call
| Name | Required | Description | Default |
|---|---|---|---|
| threadId | No | Optional thread ID | |
| sessionId | Yes | Debug session ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description caries full burden but only states the action without explaining side effects (e.g., what happens when no function call exists) or prerequisites (e.g., active session).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no redundant words, though it could be slightly expanded for context without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and 20 sibling debug tools, the description lacks details about preconditions (e.g., paused state), return values, or differentiators, making it incomplete for effective selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with adequate descriptions ('Optional thread ID', 'Debug session ID'), but the description adds no additional meaning beyond what the schema provides, earning a baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Step into the next function call' uses a specific verb ('step into') and resource ('function call') that clearly distinguishes it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use step_in versus alternatives like step_over (skip function) or step_out (return to caller), leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
step_outB
Step out of the current function
| Name | Required | Description | Default |
|---|---|---|---|
| threadId | No | Optional thread ID | |
| sessionId | Yes | Debug session ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries all responsibility for behavioral disclosure. It fails to mention what happens during the step (e.g., execution continues until the function returns, or if breakpoints are hit). This leaves the agent with incomplete expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and direct. However, it is overly sparse and could benefit from additional context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of debugging tools and lack of output schema, the description is insufficient. It does not explain the tool's impact on execution state or how it differs from step_in/step_over, leaving the agent under-informed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds no extra meaning beyond identifying the function. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Step out of the current function' uses a specific verb and resource, clearly distinguishing the tool from siblings like step_in and step_over. It conveys exactly what the tool does in a debugging context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., step_over vs step_out). It lacks any mention of context such as being inside a function call, making it hard for an agent to decide correctly.
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 to the next line (execute function calls without entering)
| Name | Required | Description | Default |
|---|---|---|---|
| threadId | No | Optional thread ID | |
| sessionId | Yes | Debug session ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only states basic behavior; does not disclose prerequisites (e.g., must be paused), side effects, or execution impact. Adequate for simple debugger step but misses some context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no redundancy. Efficiently conveys core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema needed. Description is adequate for a standard debugger step, but could mention paused state requirement for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters with descriptions (sessionId required, threadId optional). Description adds no extra meaning beyond schema, which is acceptable given full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states action: step over to next line without entering functions. Matches tool name and distinguishes from step_in 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for skipping function calls, but does not explicitly contrast with step_in or step_out. Context from sibling tools helps, but description lacks direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
terminate_sessionB
Terminate a debug session and clean up resources
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Debug session ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It states termination and cleanup but omits details like whether the action is reversible, what specific resources are cleaned (e.g., traces, breakpoints), or any side effects. This is insufficient for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence contains all essential information with no redundancy. It is front-loaded and concise, meeting the criteria for minimal effective description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, no output schema), the description covers the core action but lacks specifics on post-termination state or relationship to sibling tools like clear_traces. It is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with sessionId already documented. The description adds the purpose 'terminate and clean up' but does not provide additional semantics beyond what the schema offers. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb ('Terminate') and resource ('a debug session'), and adds 'clean up resources' to distinguish it from other session-related actions like pause or step. This is specific and distinct from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., remove_breakpoint, clear_traces). It does not specify prerequisites or context, leaving the agent to infer usage without explicit criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
21 tool updates
v1.2.0- First observed
clear_traces - First observed
continue - First observed
create_debug_session - First observed
evaluate_expression - First observed
expand_variable - First observed
get_source_context - First observed
get_stack_trace - First observed
get_threads - First observed
get_traces - First observed
get_variables - First observed
list_breakpoints - First observed
list_sessions - First observed
pause - First observed
remove_breakpoint - First observed
set_breakpoint - First observed
start_debugging - First observed
step_and_trace - First observed
step_in - First observed
step_out - First observed
step_over - First observed
terminate_session
TDQS
Tools have largely distinct purposes, but trace collection is distributed across multiple tools (set_breakpoint with dumpFile, continue with collectHits, step_and_trace, get_traces) which could cause confusion about which to use.
All tool names follow a consistent verb_noun pattern with clear verbs (create, get, set, remove, step_*, etc.) and no mixing of naming conventions.
With 21 tools, the server covers debugger functionality comprehensively. While slightly on the higher side, each tool serves a specific purpose and the count is reasonable for a full-featured debugger.
The tool set covers session management, breakpoints, stepping, state inspection, and tracing. Minor gaps exist (e.g., no explicit watch expressions or variable modification), but core debugging workflows are well-supported.
Maintenance
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
Live browser debugging for AI assistants — DOM, console, network via MCP.
Deep security scans of repos you own from your editor: dependency CVEs, SAST, git-history secrets.
The Cortex MCP server provides read-only access to real-time engineering context from the Cortex developer portal, allowing AI coding assistants to answer natural language questions about your organization's catalog (microservices, libraries, domains, teams, infrastructure), scorecards (engineering standards and best practices), initiatives (goals and deadlines), and Engineering Intelligence metrics. It includes tools for querying documentation, tracking personal entities, and accessing AI-assisted insights across the entire Cortex ecosystem.
Get up-to-date, version-specific documentation and code examples from official sources directly in…
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables 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.81MIT
- AlicenseCqualityAmaintenanceEnables AI agents to perform step-through debugging of Python, JavaScript/Node.js, and Rust programs using the Debug Adapter Protocol, with support for breakpoints, variable inspection, and stack traces.21160MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to debug code inside VS Code by setting breakpoints, stepping through execution, inspecting variables, and evaluating expressions across multiple languages.491MIT

Debugger MCPofficial
AlicenseNot gradedqualityDmaintenanceEnables AI agents like Claude to control VS Code's debugger, supporting any language with a Debug Adapter Protocol implementation.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/bherbruck/mcp-debugger'
If you have feedback or need assistance with the MCP directory API, please join our Discord server