Skip to main content
Glama

Multi-Debugger MCP Server (LLDB and GDB)

A Model Context Protocol server that provides debugging functionality for both GDB and LLDB debuggers, for use with Claude Desktop, VSCode Copilot, or other AI assistants.

Quick Start

uv sync
uv venv
uv run server.py

Related MCP server: LLDB MCP Server

Integration

Note that you can use uv run to run the server.py script or you can use uv venv to create a virtual environment and then run /home/youruser/dev/personal/GDB-MCP/.venv/bin/python /home/youruser/dev/personal/GDB-MCP/server.py.

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "gdb": {
      "command": "uv",
      "args": ["run", "/home/youruser/dev/personal/GDB-MCP/server.py"],
      "disabled": false
    }
  }
}

VSCode Copilot

If you're using WSL:

 "mcp": {
    "servers": {
      "my-mcp-server-4dc36648": {
        "type": "stdio",
        "command": "wsl",
        "args": [
          "/home/youruser/dev/personal/GDB-MCP/.venv/bin/python",
          "/home/youruser/dev/personal/GDB-MCP/server.py"
        ]
      }
    }
  }

If you're not using WSL:

  "mcp": {
    "servers": {
      "my-mcp-server-db89eee1": {
        "type": "stdio",
        "command": "/home/youruser/dev/personal/GDB-MCP/.venv/bin/python",
        "args": ["/home/youruser/dev/personal/GDB-MCP/server.py"]
      }
    }
  }

Windsurf

{
  "mcpServers": {
    "debugger-mcp": {
      "command": "python3",
      "args": ["/Users/youruser/dev/GDB-MCP/server.py"]
    }
  }
}

Experimental LLDB Support (macOS)

This project includes experimental native LLDB support alongside GDB, with automatic debugger selection.

Installation

To enable LLDB support on macOS, install LLVM (which includes LLDB) and python via Homebrew:

# Install LLDB for supporting python3.14 bindings
brew install llvm python3

# Install MCP and debugging dependencies
pip3 install mcp pygdbmi --break-system-packages

Available Tools

Unified Tools

  • debugger_status(): Show available debuggers and their status

  • debugger_start(): Start debugging session with auto-detected debugger

  • debugger_terminate(session_id): Terminate debugging session

  • debugger_list_sessions(): List all active debugging sessions

  • debugger_command(session_id, command): Execute debugger command

LLDB Tools

  • lldb_start(): Start new LLDB debugging session

  • lldb_terminate(session_id): Terminate LLDB debugging session

  • lldb_list_sessions(): List all active LLDB sessions

  • lldb_command(session_id, command): Execute arbitrary LLDB command

GDB Tools

  • gdb_start(gdb_path): Start new GDB debugging session

  • gdb_terminate(session_id): Terminate GDB debugging session

  • gdb_list_sessions(): List all active GDB sessions

  • gdb_command(session_id, command): Execute any GDB command

Use *_command() functions for all advanced debugger operations, your LLM client should already know how to use it, but it doesn't hurt to mention it.

Checking Status

You can verify debugger availability:

from modules.lldb import LLDBSessionManager
from modules.gdb import GDBSessionManager

print("LLDB available:", LLDBSessionManager.is_available())
print("GDB available:", GDBSessionManager.is_available())

Testing

uv run python run-tests.py --check-deps
uv run python run-tests.py --type all

Examples

Check the examples directory for example prompts.

Example binaries are compiled to arm64 and amd64, pick the one that matches your system architecture.

License

This project is licensed under the GNU Version 3.0 License, see the LICENSE file for details.

Available Tools

13 tools
debugger_commandC

Execute an arbitrary debugger command.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
commandYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'Execute' which implies a write/mutation operation, but doesn't specify if this requires an active debugger session, what permissions are needed, potential side effects (e.g., altering program state), or error handling. The description is minimal and lacks critical behavioral context for a tool that likely interacts with debugging systems.

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

Conciseness5/5

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

The description is a single, clear sentence with no wasted words. It's appropriately sized and front-loaded, directly stating the tool's action without unnecessary elaboration, making it easy to parse quickly.

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

Completeness2/5

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

Given the complexity of a debugger command tool (likely involving session management and command execution), the description is incomplete. No annotations exist, and while an output schema is present (which might help with return values), the description doesn't cover essential context like session requirements, command syntax, or behavioral traits. This leaves significant gaps for an AI agent to use the tool effectively.

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

Parameters2/5

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

Schema description coverage is 0%, meaning the schema provides no descriptions for the two parameters (session_id and command). The description adds no meaning beyond the parameter names—it doesn't explain what a 'session_id' refers to (e.g., an active debug session) or what format 'command' should be in (e.g., debugger-specific syntax). This fails to compensate for the low schema coverage.

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

Purpose2/5

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

The description 'Execute an arbitrary debugger command' states a verb ('Execute') and resource ('debugger command'), but it's vague about what constitutes a 'debugger command' and doesn't distinguish this tool from sibling tools like gdb_command or lldb_command. It's slightly better than a tautology but lacks specificity about which debugger context it operates in.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like gdb_command or lldb_command, or when to use it relative to other debugger_* tools (e.g., after starting a session). The description implies usage for executing commands but offers no context about prerequisites or exclusions.

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

debugger_list_sessionsB

List all active debugging sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the basic action without disclosing behavioral traits. It doesn't mention whether this is a read-only operation, what the output format looks like (though an output schema exists), potential rate limits, authentication needs, or how 'active' sessions are defined. The description adds minimal value beyond the tool name.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose with zero wasted words. It's appropriately sized for a simple list operation and front-loads the essential information without unnecessary elaboration.

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 the tool's simplicity (0 parameters, output schema exists), the description is minimally adequate but lacks context about sibling tools and behavioral details. The output schema reduces the need to explain return values, but without annotations, the description should ideally clarify the operation's safety and scope relative to similar tools, which it doesn't do.

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

Parameters4/5

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

The tool has 0 parameters, and schema description coverage is 100% (though trivial since there are no parameters). The description doesn't need to compensate for any parameter documentation gaps, and it correctly implies no inputs are required. A baseline of 4 is appropriate for zero-parameter tools with complete schema coverage.

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 action ('List') and target ('all active debugging sessions'), providing a specific verb+resource combination. However, it doesn't differentiate from its sibling 'gdb_list_sessions' and 'lldb_list_sessions', which appear to serve similar purposes for different debugger types, leaving some ambiguity about scope.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'debugger_status' (which might check a specific session) or the GDB/LLDB-specific list tools. There's no mention of prerequisites, context, or exclusions, leaving usage decisions entirely to the agent's inference.

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

debugger_startC

Start a debugging session with auto-detection or specified debugger type.

ParametersJSON Schema
NameRequiredDescriptionDefault
debugger_type_paramNo
debugger_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Start a debugging session' implies an initialization action, the description doesn't disclose what happens during startup, whether this creates persistent sessions, what permissions are needed, or what the expected outcomes are. The mention of 'auto-detection' hints at some intelligence but doesn't explain how it works or what happens when detection fails.

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

Conciseness4/5

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

The description is appropriately concise at just one sentence. It's front-loaded with the main action ('Start a debugging session') followed by the key capability ('with auto-detection or specified debugger type'). There's no wasted words, though it could benefit from slightly more detail given the complexity of the tool.

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 that there's an output schema (which handles return values) and no annotations, the description is minimally complete for a tool with 2 parameters. However, for a debugging tool that likely has complex behavior and multiple sibling alternatives, the description should provide more context about when to use it, what debuggers it supports, and how it differs from gdb_start/lldb_start. The existence of an output schema helps but doesn't compensate for the lack of usage guidance.

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

Parameters2/5

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

With 0% schema description coverage for both parameters, the description must compensate but fails to do so adequately. It mentions 'specified debugger type' which loosely relates to 'debugger_type_param' but doesn't explain what debugger types are supported or how to specify them. It doesn't mention 'debugger_path' at all. The description adds minimal value beyond what's implied by parameter names.

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

Purpose3/5

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

The description states the tool's purpose as 'Start a debugging session' which is clear but vague. It mentions 'auto-detection or specified debugger type' which adds some specificity, but doesn't distinguish it from sibling tools like gdb_start or lldb_start that also start debugging sessions. The description doesn't clarify what makes this debugger_start tool different from those specific debugger starters.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With multiple debugger-related tools available (debugger_start, gdb_start, lldb_start), there's no indication of when this general debugger_start should be used instead of the specific debugger starters. No prerequisites, context requirements, 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.

debugger_statusB

Get status of available debuggers.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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 states the tool gets status but doesn't disclose behavioral traits such as what 'status' includes (e.g., active sessions, debugger types), whether it's read-only or has side effects, or any rate limits. This leaves significant gaps in understanding how the tool behaves.

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

Conciseness5/5

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

The description is a single, efficient sentence with no wasted words. It's front-loaded and directly states the tool's purpose, making it easy to parse and understand quickly.

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 the tool has 0 parameters, 100% schema coverage, and an output schema exists, the description is minimally adequate. However, with no annotations and multiple sibling tools, it lacks context on what 'status' entails and when to use it, leaving room for improvement in guiding the agent.

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

Parameters4/5

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

The tool has 0 parameters, and schema description coverage is 100%, so no parameter information is needed. The description doesn't add parameter details, but this is appropriate given the lack of parameters, meeting the baseline for such cases.

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 action ('Get status') and target ('available debuggers'), making the purpose understandable. However, it doesn't differentiate from sibling tools like debugger_list_sessions or gdb_list_sessions, which might also provide status-like information about debuggers or sessions.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. With multiple sibling tools like debugger_list_sessions and gdb_list_sessions that might overlap in functionality, the description lacks context on specific use cases, prerequisites, or exclusions.

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

debugger_terminateB

Terminate a debugging session.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Terminate' implies a destructive action, but the description doesn't specify whether this is reversible, what happens to session data, if it requires specific permissions, or what the output contains. With an output schema present, some return details might be covered there, but the description adds minimal behavioral context beyond the basic action.

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

Conciseness5/5

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

The description is a single, clear sentence with zero waste. It's front-loaded with the core action and resource, making it easy to parse. Every word earns its place, and there's no redundancy or unnecessary elaboration.

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 the tool's complexity (simple termination action), one parameter, and the presence of an output schema, the description is minimally complete. It states what the tool does but lacks usage guidelines, behavioral details, or parameter context. With no annotations, it should do more to explain destructive implications, but the output schema may cover return values, keeping it at an adequate baseline.

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 description adds no parameter semantics beyond what the input schema provides. Schema description coverage is 0%, but the single parameter 'session_id' is self-explanatory from its title and required status. The description doesn't explain what a session_id is, how to obtain it, or format requirements. Baseline is 3 since the schema handles the parameter documentation adequately for this simple case.

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 'Terminate a debugging session' clearly states the action (terminate) and resource (debugging session) with a specific verb. It distinguishes from siblings like debugger_start or debugger_status by focusing on ending rather than initiating or checking status. However, it doesn't explicitly differentiate from gdb_terminate or lldb_terminate, which perform similar functions for different debuggers.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an active session), exclusions, or when to choose debugger_terminate over gdb_terminate or lldb_terminate. The agent must infer usage from the name and context alone.

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

gdb_commandC

Execute any arbitrary GDB command. Use this for all GDB operations.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
commandYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states the tool executes commands but doesn't disclose behavioral traits like error handling, output format, session requirements, or side effects. The description is minimal and misses critical details for a command execution tool.

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

Conciseness4/5

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

The description is very concise with two short sentences, front-loaded with the core purpose. However, it's arguably too brief, lacking necessary details for effective use, which slightly reduces its efficiency.

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

Completeness2/5

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

Given the tool's complexity (executing arbitrary debugger commands), no annotations, and an output schema (which helps but isn't described), the description is incomplete. It doesn't cover prerequisites, examples, or integration with sibling tools, leaving significant gaps for an AI agent.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It mentions no parameters explicitly, failing to explain 'session_id' (what session to use) or 'command' (what GDB command to run). The description adds no meaning beyond the bare schema.

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 tool's purpose: 'Execute any arbitrary GDB command' specifies the verb (execute) and resource (GDB commands). It distinguishes from siblings like 'debugger_command' and 'lldb_command' by specifying GDB, but could be more precise about what GDB is (a debugger).

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: 'Use this for all GDB operations' suggests it's the primary tool for GDB, but doesn't explicitly state when to use alternatives like 'gdb_start' or 'gdb_terminate'. It lacks clear exclusions or comparisons with sibling tools.

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

gdb_list_sessionsB

List all active GDB sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/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 states it lists sessions but doesn't specify what 'active' means, whether it requires authentication, if it's read-only or has side effects, or how results are returned. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

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

Conciseness5/5

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

The description is a single, efficient sentence that states the core functionality without any wasted words. It's front-loaded with the main action and resource, making it immediately clear what the tool does. Every word earns its place.

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 the tool has 0 parameters, 100% schema coverage, and an output schema exists, the description is minimally adequate. However, with no annotations and multiple similar sibling tools, it should do more to clarify the GDB-specific context and behavioral aspects. The output schema helps, but the description lacks completeness for a tool in a debugger family with alternatives.

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

Parameters4/5

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

The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the lack of inputs. The description doesn't need to add parameter information, and it correctly doesn't mention any parameters. Baseline 4 is appropriate for zero-parameter tools when the schema coverage is complete.

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 ('List') and resource ('all active GDB sessions'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'debugger_list_sessions' or 'lldb_list_sessions', which would require mentioning it's specifically for GDB debugger sessions.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'debugger_list_sessions' or 'lldb_list_sessions'. It doesn't mention prerequisites, context for when listing sessions is appropriate, or any exclusions. The agent must infer usage from the tool name alone.

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

gdb_startC

Start a new GDB debugging session.

ParametersJSON Schema
NameRequiredDescriptionDefault
gdb_pathNogdb

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('Start') but doesn't explain what this entails—whether it launches a new process, attaches to an existing one, requires specific permissions, has side effects like consuming system resources, or what the expected output looks like. This leaves significant gaps for an agent to understand the tool's behavior.

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

Conciseness5/5

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

The description is a single, clear sentence that directly states the tool's purpose without any unnecessary words. It's front-loaded and efficiently communicates the core action, making it easy to parse quickly.

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

Completeness2/5

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

Given the complexity of starting a debugging session (which involves system interactions and potential side effects), no annotations, and an output schema that exists but isn't detailed here, the description is incomplete. It lacks crucial context like what the tool returns, error conditions, or how it integrates with sibling tools, making it inadequate for safe and effective use by an agent.

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 1 parameter with 0% description coverage, and the tool description adds no information about parameters. Since there's only one optional parameter ('gdb_path'), the baseline is 4, but the description doesn't compensate for the lack of schema details (e.g., explaining what 'gdb_path' is for or its default behavior), so it's scored lower at 3.

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 action ('Start') and the resource ('a new GDB debugging session'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'debugger_start' or 'lldb_start', which appear to serve similar functions for different debuggers, leaving some ambiguity about when to choose this specific tool.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'debugger_start' and 'lldb_start' available, it's unclear whether this tool is for GDB specifically, when it should be preferred over generic debugger tools, or what prerequisites might be needed (e.g., an existing process to debug).

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

gdb_terminateB

Terminate a GDB debugging session.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Terminate' implies a destructive action, it does not specify effects like ending the session irreversibly, potential data loss, or required permissions. This leaves critical behavioral traits unclear for safe operation.

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

Conciseness5/5

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

The description is a single, clear sentence with no wasted words, making it highly concise and front-loaded. It efficiently communicates the core action without unnecessary elaboration.

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 the tool's complexity (a destructive operation with no annotations), the description is minimal but adequate for basic understanding. The presence of an output schema reduces the need to explain return values, but more context on behavior and usage would improve completeness for safe agent operation.

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 0% description coverage, but the description adds no parameter semantics beyond what the schema implies (e.g., it does not explain what 'session_id' represents or its format). With one parameter and no schema details, the baseline is 3, as the description does not compensate for the coverage gap but doesn't worsen it.

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 action ('Terminate') and resource ('a GDB debugging session'), making the purpose evident. However, it does not explicitly differentiate from its sibling 'debugger_terminate' or 'lldb_terminate', which might cause confusion in tool selection without additional context.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'debugger_terminate' or 'lldb_terminate', nor does it mention prerequisites such as requiring an active session. This lack of context could lead to incorrect tool invocation in a multi-debugger environment.

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

lldb_commandC

Execute an arbitrary LLDB command.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
commandYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/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 executing a command but doesn't specify whether this is read-only or destructive, what permissions are needed, how errors are handled, or any rate limits. This is a significant gap for a tool that interacts with a debugger, where such details are critical.

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—a single sentence with no wasted words. It's front-loaded and gets straight to the point, making it easy to parse quickly. This efficiency is appropriate for a simple tool, though it sacrifices detail for brevity.

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

Completeness2/5

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

Given the complexity of executing debugger commands, the lack of annotations, and 0% schema coverage, the description is incomplete. It doesn't cover behavioral aspects like safety, error handling, or prerequisites, and while an output schema exists, the description doesn't hint at return values or usage context. This leaves significant gaps for an AI agent to operate 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?

The schema description coverage is 0%, so the description must compensate, but it adds no information about the parameters beyond what's implied by the tool name. It doesn't explain what 'session_id' or 'command' represent, their formats, or examples. However, with only 2 parameters and an output schema present, the baseline is slightly higher, but the description fails to add meaningful semantics.

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 action ('Execute') and resource ('an arbitrary LLDB command'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'gdb_command' or 'debugger_command' beyond the LLDB specificity, which is why it's not a perfect 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'gdb_command' or 'debugger_command', nor does it mention prerequisites such as requiring an active session. It simply states what it does without context, leaving the agent to infer usage from the tool name alone.

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

lldb_list_sessionsB

List all active LLDB sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/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 only states what the tool does ('List all active LLDB sessions') without mentioning any behavioral traits like whether it requires authentication, has rate limits, returns structured data, or what 'active' specifically means in this 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 a single, efficient sentence that states exactly what the tool does with zero wasted words. It's appropriately sized for a simple listing tool and front-loads the core functionality immediately.

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 the tool has zero parameters, 100% schema coverage, and an output schema exists, the description is reasonably complete for a simple listing operation. However, for a tool with no annotations, it could provide more behavioral context about what constitutes 'active' sessions or the format of returned data.

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

Parameters4/5

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

The tool has zero parameters with 100% schema description coverage, so the schema already fully documents the lack of parameters. The description appropriately doesn't add parameter information beyond what the schema provides, which is correct for a parameterless tool.

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 ('List') and resource ('all active LLDB sessions'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'debugger_list_sessions' or 'gdb_list_sessions', which perform similar functions for different debuggers.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives. The description doesn't mention sibling tools like 'debugger_list_sessions' or 'gdb_list_sessions', nor does it explain when this LLDB-specific tool is appropriate versus other debugger session listing tools.

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

lldb_startB

Start a new LLDB debugging session.

ParametersJSON Schema
NameRequiredDescriptionDefault
lldb_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. 'Start a new LLDB debugging session' implies creation/mutation but doesn't disclose what happens during startup, whether it requires specific permissions or dependencies, what the session entails, or how it interacts with existing sessions. For a tool that likely initiates a complex debugging environment, this is insufficient behavioral 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 a single, clear sentence that communicates the core purpose without unnecessary words. It's appropriately sized for a simple startup operation and front-loads the essential information efficiently.

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 the tool's apparent complexity (starting a debugging session), the lack of annotations, and the existence of an output schema (which reduces need to describe return values), the description is minimally adequate but has significant gaps. It states what the tool does but provides no context about behavior, parameters, or differentiation from similar tools, making it incomplete for effective agent 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 description mentions no parameters at all. With 1 parameter (lldb_path) and 0% schema description coverage, the schema provides only the parameter name and type with no semantic context. The description doesn't compensate for this gap by explaining what lldb_path represents or when it should be provided versus using a default. Baseline 3 is appropriate given the single parameter.

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 action ('Start') and resource ('a new LLDB debugging session'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'debugger_start' or 'gdb_start' which appear to serve similar functions for different debuggers, leaving some ambiguity about when to choose this specific tool.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With multiple sibling tools for different debuggers (LLDB, GDB, generic debugger) and related operations (command, list_sessions, terminate), there's no indication of prerequisites, context, or differentiation from tools like 'debugger_start' which might serve a similar purpose.

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

lldb_terminateB

Terminate an LLDB debugging session.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/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 implies a destructive action ('Terminate') but doesn't specify if this ends debugging abruptly, cleans up resources, or has irreversible effects. No details on permissions, side effects, or error handling are included, leaving significant 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 a single, clear sentence with no wasted words, making it highly concise and front-loaded. It efficiently communicates the core action without unnecessary elaboration.

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 the tool's complexity (a destructive operation with no annotations) and the presence of an output schema (which likely handles return values), the description is minimally adequate. However, it lacks crucial context like behavioral risks or usage guidelines, making it incomplete for safe and effective 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 description adds no parameter information beyond what the input schema provides (a single 'session_id' parameter with 0% schema description coverage). Since there's only one parameter and the description doesn't explain its format or source (e.g., from 'lldb_list_sessions'), it meets the baseline but doesn't compensate for the lack of schema details.

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 action ('Terminate') and resource ('an LLDB debugging session'), making the purpose immediately understandable. However, it doesn't differentiate from the sibling 'debugger_terminate' tool, which appears to be a more general version, so it doesn't reach the highest score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'debugger_terminate' or 'gdb_terminate', nor does it mention prerequisites such as needing an active session. It only states what the tool does, not when to apply it.

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

TDQS

C2.9/5.0
Disambiguation2/5

There is significant ambiguity between the generic debugger_* tools and the specific gdb_* and lldb_* tools. For example, debugger_start and gdb_start/lldb_start appear to serve overlapping purposes, and the descriptions don't clarify when to use which. This creates confusion about tool selection boundaries.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with snake_case throughout. The naming is predictable and organized, with clear prefixes (debugger_, gdb_, lldb_) for different tool groups.

Tool Count3/5

13 tools is a reasonable count for a debugger server, but it feels borderline due to redundancy. The duplication between generic and specific tools makes the set feel heavier than necessary, suggesting the count could be optimized.

Completeness4/5

The tool set covers essential debugger operations: starting, listing, terminating sessions, and executing commands for both GDB and LLDB. Minor gaps might include session-specific status queries or more granular control, but core debugging workflows are well-supported.

Maintenance

ActivityInactive
ResponsivenessSyncing

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
    B
    quality
    C
    maintenance
    Provides GDB debugging functionality for use with Claude or other AI assistants, allowing users to manage debugging sessions, set breakpoints, examine variables, and execute GDB commands through natural language.
    16
    86
    158
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides structured debugging capabilities through LLDB, enabling AI assistants to set breakpoints, inspect variables, analyze crashes, disassemble code, and evaluate expressions in C/C++ programs.
    17
    3
    Apache 2.0
  • F
    license
    A
    quality
    D
    maintenance
    Enables AI agents to debug embedded systems by providing a comprehensive interface for GDB operations across multiple architectures like ARM and x86. It supports remote debugging via gdbserver or QEMU, allowing for detailed inspection of memory, registers, stack frames, and variables.
    31
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables dynamic debugging with GDB via the MCP protocol, allowing LLMs to execute GDB commands, manage breakpoints, control execution, and inspect program state.
    4

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/smadi0x86/MDB-MCP'

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