Skip to main content
Glama
luischang07

Debugging MCP Server

by luischang07

Debugging MCP Server

A Model Context Protocol (MCP) server for structured debugging assistance. This server exposes tools, resources, and prompts that help an LLM host automatically diagnose errors, search the codebase, and correlate failures.

Features

This server provides a strict, safe, and context-rich environment for an LLM to investigate coding issues.

πŸ› οΈ Tools (Actions)

  • initialize_session: Auto-detects the framework, log paths, test runners, and tech stack.

  • search_codebase: Fast search using ripgrep (fallback to fs walk).

  • run_tests: Executes the workspace's test suite (requires explicit confirm=true flag for safety).

  • get_recent_commits: Wraps git for contextual history.

  • Debugger Integration (DAP & V8 CDP):

    • connect_dap: Connects to a running debugger. Automatically detects and switches between DAP (TCP) and V8 Inspector (WebSocket) protocols!

    • inspect_runtime_state: Retrieves live threads, call stack, scopes, and variables.

    • step_debugger: Controls execution flow (continue, next, stepIn, stepOut) while preserving safe execution synchronization.

    • evaluate_expression: Evaluates expressions safely (restricted to hover and watch contexts).

    • disconnect_dap: Cleanly disconnects from the remote session.

πŸ“ Resources (Context)

  • workspace://structure: A dynamic map of the repository structure.

  • workspace://logs: Tail common workspace log files.

πŸ’¬ Prompts (Workflows)

  • debug-error: Orchestrates the LLM to use the tools to find root causes of an error.

  • explain-stacktrace: Analyzes a provided stack trace using codebase search.

  • correlate-failure: Links recent commits to a current failure state.

Related MCP server: Advanced MCP Server

Installation & Build

# Install dependencies
npm install

# Build the TypeScript code
npm run build

Usage

You can run the server directly via stdio:

npm start

Using the MCP Inspector

To test the server locally, use the official MCP Inspector:

npm run inspect

Security & Architecture

This server is built with safety in mind. All command execution (like run_tests) is gated by a Policy Layer (src/server/policy.ts) that guarantees:

  1. No destructive shell commands can be run.

  2. File access is strictly locked to the workspace root.

  3. DAP code evaluation is restricted from executing arbitrary mutations (no Repl context).

  4. Safety flags (like confirm: true) are required for active agents.

For deeper technical details and usage examples, refer to the GUIDE.md.

Available Tools

9 tools
connect_dapConnect to Debug AdapterA

Establishes a TCP connection to a running Debug Adapter Protocol (DAP) server. This must be called before inspect_runtime_state or evaluate_expression. The debug adapter must already be listening on the specified host and port (e.g., a Node.js app started with --inspect-brk, or a VS Code debug adapter in server mode).

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoThe host where the debug adapter is listening.127.0.0.1
portYesThe TCP port where the debug adapter is listening.
adapter_idNoIdentifier for the type of debug adapter (e.g., "node", "python", "go", "cppdbg"). Used during the DAP initialize handshake.node
protocolNoThe protocol to use. "auto" will try to detect if it is a V8 inspector first.auto
timeout_msNoTimeout in milliseconds for individual DAP requests.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It effectively describes the tool's behavior as establishing a TCP connection and mentions prerequisites (debug adapter must already be listening). However, it doesn't specify what happens on failure, whether the connection persists, or any authentication requirements, leaving some behavioral aspects unclear.

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 efficiently structured with three sentences that each serve distinct purposes: stating the core function, specifying prerequisite relationships with sibling tools, and providing concrete usage examples. There's no wasted language, and the most critical information (what the tool does and when to use it) 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 connection-establishing tool with 5 parameters (1 required) and no annotations or output schema, the description provides good context about purpose, prerequisites, and sibling relationships. However, it doesn't describe what happens after connection (e.g., connection state management, error handling, or what the tool returns), which would be helpful given the lack of output schema.

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%, so the schema already fully documents all 5 parameters. The description doesn't add any parameter-specific information beyond what's in the schema. It mentions 'specified host and port' generically but provides no additional syntax, format, or usage details about parameters. This meets the baseline expectation when schema 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 clearly states the specific action ('Establishes a TCP connection') and target resource ('to a running Debug Adapter Protocol server'). It explicitly distinguishes this tool from sibling tools like 'inspect_runtime_state' and 'evaluate_expression' by stating it must be called before those tools, establishing a clear hierarchy and purpose differentiation.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool ('before `inspect_runtime_state` or `evaluate_expression`') and prerequisites ('The debug adapter must already be listening on the specified host and port'). It gives concrete examples of when the debug adapter would be listening (Node.js app with `--inspect-brk`, VS Code debug adapter in server mode), offering clear 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.

disconnect_dapDisconnect from Debug AdapterA

Cleanly disconnects from the current DAP session. The debuggee continues running β€” this does NOT terminate it. Idempotent: safe to call even if not connected.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: the debuggee continues running (non-destructive), the tool is idempotent (safe for repeated calls), and it handles disconnection cleanly. This provides clear context beyond basic functionality.

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 extremely concise and front-loaded: the first sentence states the core purpose, followed by clarifying sentences that add critical behavioral context. Every sentence earns its place with no wasted words, making it highly efficient.

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 complexity (simple disconnection with no parameters), no annotations, and no output schema, the description is complete. It covers purpose, usage guidelines, behavioral traits (non-termination, idempotency), and confirms no parameters needed, providing all necessary context for an AI 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 input schema has 0 parameters with 100% coverage, so the baseline is 4. The description doesn't need to explain parameters, but it implicitly confirms no parameters are needed by describing the action without mentioning any inputs, which aligns perfectly with 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 clearly states the specific action ('cleanly disconnects') and resource ('current DAP session'), distinguishing it from sibling tools like 'connect_dap' or 'terminate' operations. It precisely defines what the tool does without being tautological.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool ('cleanly disconnects from the current DAP session') and when not to use it ('The debuggee continues running β€” this does NOT terminate it'). It also provides an alternative context by mentioning idempotency, which helps differentiate from tools that might terminate sessions.

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

evaluate_expressionEvaluate ExpressionA

Evaluates an expression in the context of the debuggee's current state. Requires an active DAP connection and typically works best when the debuggee is stopped. The context parameter restricts what kind of evaluation is performed: "hover" (default, safe, no side effects) or "watch".

ParametersJSON Schema
NameRequiredDescriptionDefault
expressionYesThe expression to evaluate (e.g. "user.name", "arr.length", "x + y").
frame_idNoThe stack frame ID in which to evaluate the expression. If omitted, uses the top frame of the last stopped thread.
contextNoThe evaluation context. "hover" is safe and read-only. "watch" is also read-only but may format results differently.hover

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well. It discloses that the tool requires an active DAP connection and works best when debuggee is stopped. It explains the behavioral difference between 'hover' (safe, no side effects) and 'watch' (read-only but different formatting). However, it doesn't mention potential limitations like expression complexity constraints or error handling.

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?

Three sentences with zero waste. First sentence states purpose, second provides prerequisites and optimal conditions, third explains the key parameter distinction. Every sentence earns its place and information is front-loaded appropriately.

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 debug expression evaluation tool with no annotations and no output schema, the description does well. It covers prerequisites, optimal conditions, and key parameter semantics. However, without an output schema, it doesn't describe what the evaluation returns (values, errors, formats), which would be helpful for completeness.

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%, so the baseline is 3. The description adds some value by explaining that 'context' restricts evaluation type and distinguishing between 'hover' and 'watch', but doesn't provide additional semantic context beyond what's already in the schema descriptions. The schema already documents all parameters thoroughly.

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

Purpose4/5

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

The description clearly states the verb 'evaluates' and resource 'expression' with context 'in the context of the debuggee's current state'. It distinguishes from siblings like 'step_debugger' or 'inspect_runtime_state' by focusing specifically on expression evaluation rather than debugging control or state inspection. However, it doesn't explicitly contrast with all possible alternatives.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use guidance: 'Requires an active DAP connection and typically works best when the debuggee is stopped.' It also distinguishes between 'hover' (default, safe) and 'watch' contexts, giving clear operational context. The prerequisites are clearly stated.

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

get_recent_commitsGet Recent CommitsA

Retrieves recent git commits for the workspace. Useful for correlating code changes with failures. Returns commit hash, author, date, and message.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of recent commits to retrieve.
fileNoOptional file path to filter commits by.
sinceNoOnly show commits after this date (e.g. "2025-01-01", "3 days ago").
show_diffNoInclude the diff (stat) for each commit.

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the return format (commit hash, author, date, message) and hints at a use case, but lacks details on permissions, rate limits, error handling, or pagination. It adds some value but does not fully compensate for the absence of 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 front-loaded with the core purpose, followed by a use case hint and return details in just two sentences. Every sentence adds value without redundancy, making it efficient and well-structured for quick understanding.

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

Completeness3/5

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

Given no annotations and no output schema, the description provides basic purpose and return fields but lacks details on behavioral aspects like error handling or performance. It is adequate for a read-only tool but could be more complete to fully guide an agent in complex scenarios.

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 has 100% description coverage, so the schema already documents all parameters thoroughly. The description does not add any parameter-specific semantics beyond what the schema provides, such as explaining the format of 'since' or the implications of 'show_diff'. Baseline 3 is appropriate when the schema does the heavy lifting.

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 verb ('retrieves') and resource ('recent git commits for the workspace'), and distinguishes this from siblings by specifying it's about git commits rather than debugging, testing, or code search. It also mentions the specific return fields (commit hash, author, date, message), making the purpose highly specific.

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 provides implied usage guidance by stating it's 'useful for correlating code changes with failures,' which suggests a context for when to use it. However, it does not explicitly state when to use this tool versus alternatives like 'search_codebase' or provide any exclusions or prerequisites, leaving some ambiguity.

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

initialize_sessionInitialize Debug SessionA

Auto-detects the workspace's technology stack, package manager, test runner, log paths, and entry points. Call this first to establish context before debugging.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspace_pathNoOverride path for the workspace root. Defaults to the server's configured workspace.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior ('auto-detects' multiple workspace aspects) and its role in establishing context, though it lacks details on potential errors, performance, or output format, which would be beneficial given the absence of annotations and output schema.

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 appropriately sized and front-loaded, with two sentences that efficiently convey the tool's purpose and usage without any wasted words, making it easy for an AI agent to parse and apply.

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 complexity (context establishment with auto-detection), no annotations, and no output schema, the description is largely complete for its purpose. It clearly states what the tool does and when to use it, though it could benefit from mentioning output expectations or error handling to fully compensate for the lack of structured data.

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%, so the schema already documents the single parameter ('workspace_path'). The description does not add any parameter-specific information beyond what the schema provides, resulting in a baseline score of 3 as the schema handles the heavy lifting.

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 explicitly states the tool's purpose with specific verbs ('auto-detects') and resources ('technology stack, package manager, test runner, log paths, and entry points'), clearly distinguishing it from sibling tools like 'connect_dap' or 'run_tests' by focusing on initial context establishment rather than debugging actions.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool ('Call this first to establish context before debugging'), including a clear alternative context (use before debugging) and an implicit exclusion (not for ongoing debugging tasks like 'step_debugger').

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

inspect_runtime_stateInspect Runtime StateA

Retrieves the live debugging snapshot from a connected DAP session: threads, call stack, scopes, and local variables with their current values. Requires an active DAP connection (call connect_dap first). Most useful when the debuggee is stopped at a breakpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
thread_idNoThe thread to inspect. Defaults to the thread that last stopped (hit a breakpoint). Use `inspect_runtime_state` once without this to see all threads.
frame_indexNoThe stack frame index to inspect (0 = top of stack, i.e., current frame).
max_variablesNoMaximum number of variables to retrieve per scope.
variable_depthNoHow many levels deep to expand nested objects/arrays. 1 = top-level only, 2 = one level of nesting, etc.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does well by disclosing prerequisites (active DAP connection), optimal usage context (debuggee stopped at breakpoint), and scope of data retrieved. It doesn't mention rate limits, error handling, or performance impacts, but covers key behavioral aspects for a debugging tool.

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?

Three sentences, each earning its place: first states purpose and data scope, second gives prerequisites, third provides usage context. Front-loaded with core functionality, no wasted words, and structured logically from general to specific.

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 debugging tool with no annotations and no output schema, the description is quite completeβ€”it covers purpose, prerequisites, optimal usage, and data scope. It doesn't describe the return format or error cases, but given the context and sibling tools, it provides sufficient guidance for an agent to use it effectively.

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%, so the schema already documents all parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema, but the baseline is 3 since the schema does the heavy lifting. No compensation is needed given high coverage.

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 verb ('Retrieves') and resource ('live debugging snapshot from a connected DAP session'), specifying what data is obtained (threads, call stack, scopes, local variables with values). It distinguishes from siblings like 'connect_dap' (prerequisite) and 'step_debugger' (action vs. inspection).

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

Usage Guidelines5/5

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

Explicitly states when to use ('Most useful when the debuggee is stopped at a breakpoint') and prerequisites ('Requires an active DAP connection (call `connect_dap` first)'). It also implies alternatives by naming a sibling tool for the prerequisite, providing clear context for usage.

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

run_testsRun TestsA

Executes the workspace's test suite. Auto-detects the appropriate test runner. The confirm flag MUST be set to true to actually execute β€” this is a safety measure.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true to execute tests. Safety gate to prevent accidental runs.
commandNoOverride the auto-detected test command.
timeout_msNoMaximum execution time in milliseconds.

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It successfully describes key behavioral traits: the auto-detection capability, the safety gate mechanism requiring confirmation, and the fact that it executes tests. It doesn't mention rate limits, authentication needs, or what happens on failure, but provides substantial operational context.

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 perfectly concise with just two sentences that each earn their place. The first sentence establishes the core purpose, and the second adds crucial safety information. No wasted words, and the most important information (the safety requirement) is appropriately emphasized.

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

Completeness3/5

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

For a tool with 3 parameters, no annotations, and no output schema, the description provides adequate but incomplete context. It covers the main purpose and safety mechanism well, but doesn't explain what the tool returns, how errors are handled, or provide guidance on when to use command overrides versus auto-detection. Given the complexity, more completeness would be beneficial.

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?

With 100% schema description coverage, the baseline is 3. The description adds some value by emphasizing the critical safety requirement for the 'confirm' parameter ('MUST be set to true to actually execute'), but doesn't provide additional meaning beyond what's already documented in the schema descriptions for the other parameters.

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 specific action ('Executes') and resource ('workspace's test suite'), and distinguishes from siblings by specifying it's about running tests rather than debugging, connecting, or searching. It goes beyond just restating the name/title by adding context about auto-detection.

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 provides clear context about when to use this tool (to run tests in the workspace) and includes an important safety requirement (confirm flag must be true). However, it doesn't explicitly state when NOT to use it or mention alternatives among the sibling tools, which prevents a perfect score.

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

search_codebaseSearch CodebaseA

Fast text search across the workspace files. Uses ripgrep when available, falls back to a recursive file walk. Returns matching file paths, line numbers, and line content.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe text pattern to search for.
case_sensitiveNoWhether the search should be case-sensitive.
max_resultsNoMaximum number of results to return.
pathNoOptional subdirectory to scope the search to (relative to workspace root).

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds valuable context beyond basic functionality: it describes the implementation ('Uses ripgrep when available, falls back to a recursive file walk'), which helps set performance expectations. However, it doesn't cover aspects like rate limits, error handling, or authentication needs, leaving some behavioral gaps.

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 appropriately sized and front-loaded, with the first sentence stating the core functionality and subsequent sentences adding implementation details and return values. Every sentence earns its place by providing essential information without redundancy, making it efficient and easy to parse.

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 moderate complexity (4 parameters, no output schema, no annotations), the description is mostly complete. It covers purpose, behavior, and return values, but lacks details on error cases or output format specifics. Since there's no output schema, more clarity on the return structure would be beneficial, though the current description is adequate for basic use.

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 has 100% description coverage, providing clear documentation for all parameters. The description adds no additional parameter semantics beyond what the schema already covers, such as explaining the 'query' pattern format or 'path' scoping in more detail. This meets the baseline score of 3 since the schema does the heavy lifting.

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's purpose with specific verbs ('search across workspace files') and resources ('codebase'), distinguishing it from sibling tools like get_recent_commits or run_tests. It specifies what type of search it performs ('fast text search') and what it returns ('matching file paths, line numbers, and line content'), 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 usage for text searching in code files but provides no explicit guidance on when to use this tool versus alternatives. There are no sibling tools with similar search functionality listed, so no differentiation is needed, but it lacks context about prerequisites or scenarios where this tool is preferred over other methods.

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

step_debuggerStep DebuggerA

Controls execution flow of the debuggee. Use this to resume, step over, step into, or step out. Requires an established debugging connection which is currently paused. This command will mutate the state of the debuggee and wait up to 3 seconds for it to pause again.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesThe execution action to perform. next = Step Over, continue = Resume.
thread_idNoThe thread to step. If omitted, uses the last stopped thread.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: it 'mutates the state of the debuggee' (indicating a write operation), specifies a prerequisite ('established debugging connection which is currently paused'), and mentions a timeout behavior ('wait up to 3 seconds for it to pause again'). This covers critical aspects like mutation, preconditions, and timing, though it doesn't address potential errors 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.

Conciseness5/5

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

The description is appropriately sized and front-loaded, with the first sentence stating the core purpose and the second adding crucial behavioral context. Every sentence earns its place by providing essential information without redundancy, making it efficient and easy to parse for an AI agent.

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 complexity (mutating debuggee state with timing constraints), no annotations, and no output schema, the description does a good job of covering key aspects like purpose, prerequisites, and behavior. However, it lacks details on return values or error conditions, which would be helpful for a mutation tool with no structured output documentation.

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 schema description coverage is 100%, providing complete documentation for both parameters. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't explain 'thread_id' usage further or provide examples). Given the high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but also doesn't detract.

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's purpose with specific verbs ('controls execution flow', 'resume, step over, step into, or step out') and identifies the resource ('debuggee'). It distinguishes itself from sibling tools like 'connect_dap', 'disconnect_dap', and 'evaluate_expression' by focusing on execution control rather than connection management or expression evaluation.

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 provides explicit context for when to use this tool ('Requires an established debugging connection which is currently paused'), which clearly differentiates it from tools like 'connect_dap' or 'initialize_session'. However, it doesn't specify when NOT to use it or mention alternatives for similar actions, such as how 'run_tests' might relate to execution flow.

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.

  1. 9 tool updatesv1.0.0
    • First observedconnect_dap
    • First observeddisconnect_dap
    • First observedevaluate_expression
    • First observedget_recent_commits
    • First observedinitialize_session
    • First observedinspect_runtime_state
    • First observedrun_tests
    • First observedsearch_codebase
    • First observedstep_debugger

TDQS

A4.1/5.0
Disambiguation3/5

The tools have clear purposes but some overlap exists. For example, 'initialize_session' and 'connect_dap' both establish debugging context, and 'evaluate_expression' and 'inspect_runtime_state' both retrieve debuggee state information. The descriptions help differentiate them, but an agent might occasionally misselect between related tools.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern (e.g., 'connect_dap', 'evaluate_expression', 'run_tests'), with clear and descriptive names. However, 'get_recent_commits' and 'search_codebase' slightly deviate by using 'get' and 'search' instead of more action-oriented verbs, but overall the naming is highly readable and predictable.

Tool Count5/5

With 9 tools, the count is well-scoped for a debugging server. Each tool serves a distinct role in the debugging workflow, from setup and connection to runtime inspection and code analysis, without feeling excessive or insufficient for the domain.

Completeness4/5

The toolset covers core debugging operations effectively, including session initialization, DAP connection, runtime inspection, expression evaluation, and test execution. Minor gaps exist, such as no explicit tool for setting breakpoints or managing breakpoint lists, but agents can work around this using existing tools like 'step_debugger' and 'search_codebase'.

Maintenance

ActivityInactive
ResponsivenessNo issues

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
    F
    maintenance
    Unleashes LLM-powered agents to autonomously execute and debug web apps directly in your code editor, with features like webapp navigation, network traffic capture, and console error collection.
    2
    1,240
    Apache 2.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides AI coding agents with a secure, sandboxed environment for executing coding tasks including file operations, command execution, and testing. Features session management, policy enforcement, and Docker-based sandboxing for safe code execution and development workflows.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to analyze Windows crash dumps by providing structured data on exceptions, threads, modules, and source context, with safe patch, build, and test execution.
    5
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Enables LLM-driven agents to autonomously detect, diagnose, repair, verify, and prevent software and hardware failures on local and remote systems. Includes built-in safety checks and automatic rollbacks.
    15
    -

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/luischang07/debugging-mcp'

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